{"id":5052,"name":"cffi","ecosystem":"pip","repository_url":"https://github.com/python-cffi/cffi","issues_count":482,"created_at":"2025-06-06T17:08:27.493Z","updated_at":"2025-06-06T17:08:27.493Z","purl":"pkg:pypi/cffi","metadata":{"id":2667492,"name":"cffi","ecosystem":"pypi","description":"Foreign Function Interface for Python calling C code.","homepage":"http://cffi.readthedocs.org","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/python-cffi/cffi","keywords_array":[],"namespace":null,"versions_count":76,"first_release_published_at":"2012-06-18T14:53:58.000Z","latest_release_published_at":"2024-09-04T20:43:30.000Z","latest_release_number":"1.17.1","last_synced_at":"2025-01-14T13:12:38.767Z","created_at":"2022-04-10T10:19:13.480Z","updated_at":"2025-01-14T13:58:49.255Z","registry_url":"https://pypi.org/project/cffi/","install_command":"pip install cffi --index-url https://pypi.org/simple","documentation_url":"http://cffi.readthedocs.org/","metadata":{"funding":null,"documentation":"http://cffi.readthedocs.org/","classifiers":["License :: OSI Approved :: MIT License","Programming Language :: Python","Programming Language :: Python :: 3","Programming Language :: Python :: 3.10","Programming Language :: Python :: 3.11","Programming Language :: Python :: 3.12","Programming Language :: Python :: 3.13","Programming Language :: Python :: 3.8","Programming Language :: Python :: 3.9","Programming Language :: Python :: Implementation :: CPython","Programming Language :: Python :: Implementation :: PyPy"],"normalized_name":"cffi"},"repo_metadata":{"id":196586171,"uuid":"696427398","full_name":"python-cffi/cffi","owner":"python-cffi","description":"A Foreign Function Interface package for calling C libraries from Python.","archived":false,"fork":false,"pushed_at":"2025-01-03T12:20:38.000Z","size":51718,"stargazers_count":150,"open_issues_count":32,"forks_count":43,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-01-04T12:15:51.440Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://cffi.readthedocs.io/en/latest/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/python-cffi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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":"AUTHORS","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-09-25T18:11:06.000Z","updated_at":"2025-01-03T12:20:42.000Z","dependencies_parsed_at":null,"dependency_job_id":"a86c544f-c08d-4109-a1e7-f7fa7c381764","html_url":"https://github.com/python-cffi/cffi","commit_stats":{"total_commits":3229,"total_committers":86,"mean_commits":37.54651162790697,"dds":"0.11861257355218335","last_synced_commit":"b57a92c03eb2078a99c900519a37d18b4d52324f"},"previous_names":["python-cffi/cffi"],"tags_count":29,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/python-cffi","download_url":"https://codeload.github.com/python-cffi/cffi/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":233904355,"owners_count":18748573,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"},"owner_record":{"login":"python-cffi","name":"CFFI, Python's C Foreign Function Interface","uuid":"66461314","kind":"organization","description":"A Foreign Function Interface package for calling C libraries from Python.","email":null,"website":"https://cffi.readthedocs.io/en/latest/","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/66461314?v=4","repositories_count":2,"last_synced_at":"2023-09-26T09:33:09.964Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/python-cffi","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2023-09-26T09:33:10.007Z","updated_at":"2023-09-26T09:33:10.007Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/python-cffi","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/python-cffi/repositories"},"tags":[{"name":"v1.17.1","sha":"38bd6be6b94a65182f4bffb45c78e230e9290f51","kind":"commit","published_at":"2024-09-04T19:15:13.000Z","download_url":"https://codeload.github.com/python-cffi/cffi/tar.gz/v1.17.1","html_url":"https://github.com/python-cffi/cffi/releases/tag/v1.17.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.17.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.17.1/manifests"},{"name":"v1.17.0","sha":"74731f941cf464ad3be5e13708a0a0183b32b3b7","kind":"commit","published_at":"2024-08-06T01:21:55.000Z","download_url":"https://codeload.github.com/python-cffi/cffi/tar.gz/v1.17.0","html_url":"https://github.com/python-cffi/cffi/releases/tag/v1.17.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.17.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.17.0/manifests"},{"name":"v1.17.0rc1","sha":"181fa00648f09f80970e9c669c3d61cca40b2a09","kind":"commit","published_at":"2024-05-23T22:24:40.000Z","download_url":"https://codeload.github.com/python-cffi/cffi/tar.gz/v1.17.0rc1","html_url":"https://github.com/python-cffi/cffi/releases/tag/v1.17.0rc1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.17.0rc1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.17.0rc1/manifests"},{"name":"v1.16.0","sha":"ba44abd69cf6f0f1cc90db34cd067275dc10fc71","kind":"commit","published_at":"2023-09-28T17:38:45.000Z","download_url":"https://codeload.github.com/python-cffi/cffi/tar.gz/v1.16.0","html_url":"https://github.com/python-cffi/cffi/releases/tag/v1.16.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.16.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.16.0/manifests"},{"name":"v1.16.0rc2","sha":"e20c65d938842f82ce63983150b286956081cb27","kind":"commit","published_at":"2023-09-26T05:25:53.000Z","download_url":"https://codeload.github.com/python-cffi/cffi/tar.gz/v1.16.0rc2","html_url":"https://github.com/python-cffi/cffi/releases/tag/v1.16.0rc2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.16.0rc2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.16.0rc2/manifests"},{"name":"v1.16.0rc1","sha":"e84703322be5f62692389741703900991f2503ef","kind":"commit","published_at":"2023-09-25T21:14:31.000Z","download_url":"https://codeload.github.com/python-cffi/cffi/tar.gz/v1.16.0rc1","html_url":"https://github.com/python-cffi/cffi/releases/tag/v1.16.0rc1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.16.0rc1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.16.0rc1/manifests"},{"name":"v1.15.1","sha":"ec9e0af363fa9a80fd37fdb6312174eea39c95da","kind":"commit","published_at":"2022-06-30T18:00:59.000Z","download_url":"https://codeload.github.com/python-cffi/cffi/tar.gz/v1.15.1","html_url":"https://github.com/python-cffi/cffi/releases/tag/v1.15.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.15.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.15.1/manifests"},{"name":"v1.15.0","sha":"ac6b9aa5d8579de0d13f2458d4368162d3e7b96a","kind":"commit","published_at":"2021-10-13T15:59:41.000Z","download_url":"https://codeload.github.com/python-cffi/cffi/tar.gz/v1.15.0","html_url":"https://github.com/python-cffi/cffi/releases/tag/v1.15.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.15.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.15.0/manifests"},{"name":"v1.15.0rc1","sha":"4d207fdd867934abb1601a2d373f00596f3ce0a7","kind":"commit","published_at":"2021-09-27T17:55:52.000Z","download_url":"https://codeload.github.com/python-cffi/cffi/tar.gz/v1.15.0rc1","html_url":"https://github.com/python-cffi/cffi/releases/tag/v1.15.0rc1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.15.0rc1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.15.0rc1/manifests"},{"name":"v1.14.6","sha":"3bd975f57fb3caabc7a0452eb155bfc6f445a65a","kind":"commit","published_at":"2021-07-09T03:57:05.000Z","download_url":"https://codeload.github.com/python-cffi/cffi/tar.gz/v1.14.6","html_url":"https://github.com/python-cffi/cffi/releases/tag/v1.14.6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.14.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.14.6/manifests"},{"name":"v1.14.5","sha":"413714e3a85f79afaa8e35247950df1b59d9d9e9","kind":"commit","published_at":"2021-02-12T00:14:46.000Z","download_url":"https://codeload.github.com/python-cffi/cffi/tar.gz/v1.14.5","html_url":"https://github.com/python-cffi/cffi/releases/tag/v1.14.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.14.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.14.5/manifests"},{"name":"v1.14.4-1","sha":"eb27337da523ca0e0192721aa0338ee68296c8e6","kind":"commit","published_at":"2020-11-29T13:45:23.000Z","download_url":"https://codeload.github.com/python-cffi/cffi/tar.gz/v1.14.4-1","html_url":"https://github.com/python-cffi/cffi/releases/tag/v1.14.4-1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.14.4-1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.14.4-1/manifests"},{"name":"v1.14.4","sha":"51a8f8eaae2a0bba13cc1b4fad2d2b6cd614757c","kind":"commit","published_at":"2020-11-24T14:10:58.000Z","download_url":"https://codeload.github.com/python-cffi/cffi/tar.gz/v1.14.4","html_url":"https://github.com/python-cffi/cffi/releases/tag/v1.14.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.14.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.14.4/manifests"},{"name":"v1.14.3","sha":"981ee2f20044f5cc34cf7592f9e16d9128009c1b","kind":"commit","published_at":"2020-09-15T06:09:21.000Z","download_url":"https://codeload.github.com/python-cffi/cffi/tar.gz/v1.14.3","html_url":"https://github.com/python-cffi/cffi/releases/tag/v1.14.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.14.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.14.3/manifests"},{"name":"v1.14.2","sha":"67743bd892ff463de2fd2c6e50070d08f4a065ff","kind":"commit","published_at":"2020-08-15T16:45:29.000Z","download_url":"https://codeload.github.com/python-cffi/cffi/tar.gz/v1.14.2","html_url":"https://github.com/python-cffi/cffi/releases/tag/v1.14.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.14.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.14.2/manifests"},{"name":"v1.14.1","sha":"267c0379908fdb675da726856262777eea90877d","kind":"commit","published_at":"2020-07-26T16:48:37.000Z","download_url":"https://codeload.github.com/python-cffi/cffi/tar.gz/v1.14.1","html_url":"https://github.com/python-cffi/cffi/releases/tag/v1.14.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.14.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.14.1/manifests"},{"name":"v1.14.0","sha":"5eedc95f68eb599832c2958e5416e231536ad792","kind":"commit","published_at":"2020-02-07T15:49:18.000Z","download_url":"https://codeload.github.com/python-cffi/cffi/tar.gz/v1.14.0","html_url":"https://github.com/python-cffi/cffi/releases/tag/v1.14.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.14.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.14.0/manifests"},{"name":"v1.13.2","sha":"75e5e71351930566d2f2fc5c288cdf97bc5348d1","kind":"commit","published_at":"2019-11-03T14:29:02.000Z","download_url":"https://codeload.github.com/python-cffi/cffi/tar.gz/v1.13.2","html_url":"https://github.com/python-cffi/cffi/releases/tag/v1.13.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.13.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.13.2/manifests"},{"name":"v1.13.1","sha":"553fe786411d9713e5f5ba5733c2dcb2a2dbbc08","kind":"commit","published_at":"2019-10-21T14:57:08.000Z","download_url":"https://codeload.github.com/python-cffi/cffi/tar.gz/v1.13.1","html_url":"https://github.com/python-cffi/cffi/releases/tag/v1.13.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.13.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.13.1/manifests"},{"name":"v1.13.0","sha":"299b68a53aecaf3a8872502ec138eda8b1226b0c","kind":"commit","published_at":"2019-10-15T12:26:25.000Z","download_url":"https://codeload.github.com/python-cffi/cffi/tar.gz/v1.13.0","html_url":"https://github.com/python-cffi/cffi/releases/tag/v1.13.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.13.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.13.0/manifests"},{"name":"v1.12.3","sha":"d98b50fd3f102c79bf0025e8c80cf5ae623da507","kind":"commit","published_at":"2019-04-19T16:29:59.000Z","download_url":"https://codeload.github.com/python-cffi/cffi/tar.gz/v1.12.3","html_url":"https://github.com/python-cffi/cffi/releases/tag/v1.12.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.12.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.12.3/manifests"},{"name":"v1.12.2","sha":"671058ddcce1154220b2a9fce897d5be47e77d94","kind":"commit","published_at":"2019-02-26T15:08:43.000Z","download_url":"https://codeload.github.com/python-cffi/cffi/tar.gz/v1.12.2","html_url":"https://github.com/python-cffi/cffi/releases/tag/v1.12.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.12.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.12.2/manifests"},{"name":"v1.12.1","sha":"8339347946ce3f639ca328ffc1b98b8193779c2a","kind":"commit","published_at":"2019-02-16T16:29:55.000Z","download_url":"https://codeload.github.com/python-cffi/cffi/tar.gz/v1.12.1","html_url":"https://github.com/python-cffi/cffi/releases/tag/v1.12.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.12.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.12.1/manifests"},{"name":"v1.12.0","sha":"541a03b900e1e6ed4fdd2bc5aefe676b17428e89","kind":"commit","published_at":"2019-02-13T13:42:00.000Z","download_url":"https://codeload.github.com/python-cffi/cffi/tar.gz/v1.12.0","html_url":"https://github.com/python-cffi/cffi/releases/tag/v1.12.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.12.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.12.0/manifests"},{"name":"v1.11.5","sha":"292e0278a6a96d95f286a187cfc719257f100f53","kind":"commit","published_at":"2018-02-27T18:17:02.000Z","download_url":"https://codeload.github.com/python-cffi/cffi/tar.gz/v1.11.5","html_url":"https://github.com/python-cffi/cffi/releases/tag/v1.11.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.11.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.11.5/manifests"},{"name":"v1.11.4","sha":"ee7ea0ce8a418ece499b492f6b4cb8ed945e0da3","kind":"commit","published_at":"2018-01-13T19:30:34.000Z","download_url":"https://codeload.github.com/python-cffi/cffi/tar.gz/v1.11.4","html_url":"https://github.com/python-cffi/cffi/releases/tag/v1.11.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.11.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.11.4/manifests"},{"name":"v1.11.3","sha":"a565bcd04d148feb2d08155d8ce657e4dcec556f","kind":"commit","published_at":"2018-01-11T20:48:16.000Z","download_url":"https://codeload.github.com/python-cffi/cffi/tar.gz/v1.11.3","html_url":"https://github.com/python-cffi/cffi/releases/tag/v1.11.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.11.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.11.3/manifests"},{"name":"v1.11.2","sha":"f1f00632944ffdf7696d6335c0cf71bf57e66526","kind":"commit","published_at":"2017-10-09T12:35:15.000Z","download_url":"https://codeload.github.com/python-cffi/cffi/tar.gz/v1.11.2","html_url":"https://github.com/python-cffi/cffi/releases/tag/v1.11.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.11.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.11.2/manifests"},{"name":"v1.11.1","sha":"8b90b406dc745db48ba5ed7048638403cb254e0d","kind":"commit","published_at":"2017-10-04T07:15:26.000Z","download_url":"https://codeload.github.com/python-cffi/cffi/tar.gz/v1.11.1","html_url":"https://github.com/python-cffi/cffi/releases/tag/v1.11.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.11.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/python-cffi%2Fcffi/tags/v1.11.1/manifests"}]},"repo_metadata_updated_at":"2025-01-14T13:58:49.255Z","dependent_packages_count":1188,"downloads":241917803,"downloads_period":"last-month","dependent_repos_count":166881,"rankings":{"downloads":0.004585414347211243,"dependent_repos_count":0.004035164625545894,"dependent_packages_count":0.022009988866613962,"stargazers_count":11.454548455907574,"forks_count":10.336807854631362,"docker_downloads_count":0.0022009988866613967,"average":3.6373646462108282},"purl":"pkg:pypi/cffi","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/cffi","docker_dependents_count":17846,"docker_downloads_count":13717872392,"usage_url":"https://repos.ecosyste.ms/usage/pypi/cffi","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/cffi/dependencies","status":null,"funding_links":[],"critical":true,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/cffi/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/cffi/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/cffi/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/cffi/related_packages","maintainers":[{"uuid":"mattclay","login":"mattclay","name":null,"email":null,"url":null,"packages_count":21,"html_url":"https://pypi.org/user/mattclay/","role":null,"created_at":"2022-12-05T10:14:09.138Z","updated_at":"2022-12-05T10:14:09.138Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/mattclay/packages"},{"uuid":"nitzmahone","login":"nitzmahone","name":null,"email":null,"url":null,"packages_count":35,"html_url":"https://pypi.org/user/nitzmahone/","role":null,"created_at":"2022-12-05T10:14:09.143Z","updated_at":"2022-12-05T10:14:09.143Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/nitzmahone/packages"},{"uuid":"alexgaynor","login":"alexgaynor","name":null,"email":null,"url":null,"packages_count":13,"html_url":"https://pypi.org/user/alexgaynor/","role":null,"created_at":"2022-12-05T10:14:09.147Z","updated_at":"2022-12-05T10:14:09.147Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/alexgaynor/packages"},{"uuid":"glyph","login":"glyph","name":null,"email":null,"url":null,"packages_count":37,"html_url":"https://pypi.org/user/glyph/","role":null,"created_at":"2022-12-05T10:14:09.152Z","updated_at":"2022-12-05T10:14:09.152Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/glyph/packages"},{"uuid":"reaperhulk","login":"reaperhulk","name":null,"email":null,"url":null,"packages_count":7,"html_url":"https://pypi.org/user/reaperhulk/","role":null,"created_at":"2022-12-05T10:14:09.160Z","updated_at":"2022-12-05T10:14:09.160Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/reaperhulk/packages"},{"uuid":"Armin.Rigo","login":"Armin.Rigo","name":null,"email":null,"url":null,"packages_count":2,"html_url":"https://pypi.org/user/Armin.Rigo/","role":null,"created_at":"2022-12-05T10:14:09.107Z","updated_at":"2022-12-05T10:14:09.107Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/Armin.Rigo/packages"},{"uuid":"fijal","login":"fijal","name":null,"email":null,"url":null,"packages_count":8,"html_url":"https://pypi.org/user/fijal/","role":null,"created_at":"2022-12-05T10:14:09.122Z","updated_at":"2022-12-05T10:14:09.122Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/fijal/packages"},{"uuid":"odidev","login":"odidev","name":null,"email":null,"url":null,"packages_count":1,"html_url":"https://pypi.org/user/odidev/","role":null,"created_at":"2022-12-05T10:14:09.156Z","updated_at":"2022-12-05T10:14:09.156Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/odidev/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":690055,"maintainers_count":292646,"namespaces_count":0,"keywords_count":228482,"github":"pypi","metadata":{"funded_packages_count":48953},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2025-06-05T05:19:27.498Z","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":298,"unique_repositories_count_past_30_days":1,"recent_issues":[{"uuid":"4162088608","node_id":"PR_kwDONnmdmc7OVDSr","number":11,"state":"open","title":"chore(deps): bump the dependencies group across 1 directory with 42 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-29T00:49:15.000Z","updated_at":"2026-04-10T06:08:07.938Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"dependencies","update_count":42,"packages":[{"name":"setuptools","old_version":"75.8.0","new_version":"82.0.1","repository_url":"https://github.com/pypa/setuptools"},{"name":"ansible-runner","old_version":"2.4.0","new_version":"2.4.3","repository_url":"https://github.com/ansible/ansible-runner"},{"name":"babel","old_version":"2.17.0","new_version":"2.18.0","repository_url":"https://github.com/python-babel/babel"},{"name":"backrefs","old_version":"6.1","new_version":"6.2","repository_url":"https://github.com/facelessuser/backrefs"},{"name":"bcrypt","old_version":"4.2.1","new_version":"5.0.0","repository_url":"https://github.com/pyca/bcrypt"},{"name":"build","old_version":"1.4.0","new_version":"1.4.2","repository_url":"https://github.com/pypa/build"},{"name":"certifi","old_version":"2024.12.14","new_version":"2026.2.25","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.6","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"cryptography","old_version":"44.0.0","new_version":"46.0.6","repository_url":"https://github.com/pyca/cryptography"},{"name":"docutils","old_version":"0.21.2","new_version":"0.22.4","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"jaraco-context","old_version":"6.0.1","new_version":"6.1.1","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":"jinja2","old_version":"3.1.5","new_version":"3.1.6","repository_url":"https://github.com/pallets/jinja"},{"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":"mkdocs-autorefs","old_version":"1.4.3","new_version":"1.4.4","repository_url":"https://github.com/mkdocstrings/autorefs"},{"name":"mkdocs-get-deps","old_version":"0.2.0","new_version":"0.2.2","repository_url":"https://github.com/mkdocs/get-deps"},{"name":"mkdocs-material","old_version":"9.7.1","new_version":"9.7.6","repository_url":"https://github.com/squidfunk/mkdocs-material"},{"name":"more-itertools","old_version":"10.5.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"nh3","old_version":"0.2.20","new_version":"0.3.4","repository_url":"https://github.com/messense/nh3"},{"name":"packaging","old_version":"24.2","new_version":"26.0","repository_url":"https://github.com/pypa/packaging"},{"name":"paramiko","old_version":"3.5.0","new_version":"4.0.0","repository_url":"https://github.com/paramiko/paramiko"},{"name":"pathspec","old_version":"1.0.3","new_version":"1.0.4","repository_url":"https://github.com/cpburnz/python-pathspec"},{"name":"pkginfo","old_version":"1.12.0","new_version":"1.12.1.2"},{"name":"pycparser","old_version":"2.22","new_version":"2.23","repository_url":"https://github.com/eliben/pycparser"},{"name":"pydantic","old_version":"2.11.7","new_version":"2.12.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-core","old_version":"2.33.2","new_version":"2.44.0","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":"pymdown-extensions","old_version":"10.20","new_version":"10.21","repository_url":"https://github.com/facelessuser/pymdown-extensions"},{"name":"pynacl","old_version":"1.5.0","new_version":"1.6.2","repository_url":"https://github.com/pyca/pynacl"},{"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":"resolvelib","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/sarugaku/resolvelib"},{"name":"rich","old_version":"13.9.4","new_version":"14.3.3","repository_url":"https://github.com/Textualize/rich"},{"name":"twine","old_version":"6.0.1","new_version":"6.2.0","repository_url":"https://github.com/pypa/twine"},{"name":"typing-inspection","old_version":"0.4.1","new_version":"0.4.2","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"typing-extensions","old_version":"4.14.0","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":"virtualenv","old_version":"20.36.1","new_version":"21.2.0","repository_url":"https://github.com/pypa/virtualenv"},{"name":"wheel","old_version":"0.45.1","new_version":"0.46.3","repository_url":"https://github.com/pypa/wheel"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dependencies group with 42 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [setuptools](https://github.com/pypa/setuptools) | `75.8.0` | `82.0.1` |\n| [ansible-runner](https://github.com/ansible/ansible-runner) | `2.4.0` | `2.4.3` |\n| [babel](https://github.com/python-babel/babel) | `2.17.0` | `2.18.0` |\n| [backrefs](https://github.com/facelessuser/backrefs) | `6.1` | `6.2` |\n| [bcrypt](https://github.com/pyca/bcrypt) | `4.2.1` | `5.0.0` |\n| [build](https://github.com/pypa/build) | `1.4.0` | `1.4.2` |\n| [certifi](https://github.com/certifi/python-certifi) | `2024.12.14` | `2026.2.25` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.1` | `2.0.0` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.6` |\n| [cryptography](https://github.com/pyca/cryptography) | `44.0.0` | `46.0.6` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.21.2` | `0.22.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [jaraco-context](https://github.com/jaraco/jaraco.context) | `6.0.1` | `6.1.1` |\n| [jaraco-functools](https://github.com/jaraco/jaraco.functools) | `4.1.0` | `4.4.0` |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.5` | `3.1.6` |\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| [mkdocs-autorefs](https://github.com/mkdocstrings/autorefs) | `1.4.3` | `1.4.4` |\n| [mkdocs-get-deps](https://github.com/mkdocs/get-deps) | `0.2.0` | `0.2.2` |\n| [mkdocs-material](https://github.com/squidfunk/mkdocs-material) | `9.7.1` | `9.7.6` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.5.0` | `10.8.0` |\n| [nh3](https://github.com/messense/nh3) | `0.2.20` | `0.3.4` |\n| [packaging](https://github.com/pypa/packaging) | `24.2` | `26.0` |\n| [paramiko](https://github.com/paramiko/paramiko) | `3.5.0` | `4.0.0` |\n| [pathspec](https://github.com/cpburnz/python-pathspec) | `1.0.3` | `1.0.4` |\n| [pkginfo](https://code.launchpad.net/~tseaver/pkginfo/trunk) | `1.12.0` | `1.12.1.2` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `2.23` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.7` | `2.12.5` |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.33.2` | `2.44.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) | `10.20` | `10.21` |\n| [pynacl](https://github.com/pyca/pynacl) | `1.5.0` | `1.6.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| [resolvelib](https://github.com/sarugaku/resolvelib) | `1.0.1` | `1.2.1` |\n| [rich](https://github.com/Textualize/rich) | `13.9.4` | `14.3.3` |\n| [twine](https://github.com/pypa/twine) | `6.0.1` | `6.2.0` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.1` | `0.4.2` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.14.0` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.6.3` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.36.1` | `21.2.0` |\n| [wheel](https://github.com/pypa/wheel) | `0.45.1` | `0.46.3` |\n\n\nUpdates `setuptools` from 75.8.0 to 82.0.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/setuptools/blob/main/NEWS.rst\"\u003esetuptools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev82.0.1\u003c/h1\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix the loading of \u003ccode\u003elauncher manifest.xml\u003c/code\u003e file. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5047\"\u003e#5047\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReplaced deprecated \u003ccode\u003ejson.__version__\u003c/code\u003e with fixture in tests. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5186\"\u003e#5186\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImproved Documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd advice about how to improve predictability when installing sdists. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5168\"\u003e#5168\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMisc\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/4941\"\u003e#4941\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5157\"\u003e#5157\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5169\"\u003e#5169\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5175\"\u003e#5175\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev82.0.0\u003c/h1\u003e\n\u003ch2\u003eDeprecations and Removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epkg_resources\u003c/code\u003e has been removed from Setuptools. Most common uses of \u003ccode\u003epkg_resources\u003c/code\u003e have been superseded by the \u003ccode\u003eimportlib.resources \u0026lt;https://docs.python.org/3/library/importlib.resources.html\u0026gt;\u003c/code\u003e_ and \u003ccode\u003eimportlib.metadata \u0026lt;https://docs.python.org/3/library/importlib.metadata.html\u0026gt;\u003c/code\u003e_ projects. Projects and environments relying on \u003ccode\u003epkg_resources\u003c/code\u003e for namespace packages or other behavior should depend on older versions of \u003ccode\u003esetuptools\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/3085\"\u003e#3085\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev81.0.0\u003c/h1\u003e\n\u003ch2\u003eDeprecations and Removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved support for the --dry-run parameter to setup.py. This one feature by its nature threads through lots of core and ancillary functionality, adding complexity and friction. Removal of this parameter will help decouple the compiler functionality from distutils and thus the eventual full integration of distutils. These changes do affect some class and function signatures, so any derivative functionality may require some compatibility shims to support their expected interface. Please report any issues to the Setuptools project for investigation. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/4872\"\u003e#4872\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev80.10.2\u003c/h1\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate vendored dependencies. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5159\"\u003e#5159\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMisc\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/pypa/setuptools/commit/5a13876673a41e3cd21d4d6e587f53d0fb4fd8e5\"\u003e\u003ccode\u003e5a13876\u003c/code\u003e\u003c/a\u003e Bump version: 82.0.0 → 82.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/51ab8f183f1c4112675d8d6ec6b004406d518ee8\"\u003e\u003ccode\u003e51ab8f1\u003c/code\u003e\u003c/a\u003e Avoid using (deprecated) 'json.\u003cstrong\u003eversion\u003c/strong\u003e' in tests (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5194\"\u003e#5194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/f9c37b20bb0ed11203f676f9683452a4c3ace6f6\"\u003e\u003ccode\u003ef9c37b2\u003c/code\u003e\u003c/a\u003e Docs/CI: Fix intersphinx references (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5195\"\u003e#5195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/8173db2a4fc0f6cb28926b3dba59116b79f435c8\"\u003e\u003ccode\u003e8173db2\u003c/code\u003e\u003c/a\u003e Docs: Fix intersphinx references\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/09bafbc74923f2a3591b5b098be75d6af6ca5141\"\u003e\u003ccode\u003e09bafbc\u003c/code\u003e\u003c/a\u003e Fix past tense on newsfragment\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/461ea56c8e629819a23920f44d9298d4f041abde\"\u003e\u003ccode\u003e461ea56\u003c/code\u003e\u003c/a\u003e Add news fragment\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/c4ffe535b58235ff9f9ebe90d24a2cffb57e70ae\"\u003e\u003ccode\u003ec4ffe53\u003c/code\u003e\u003c/a\u003e Avoid using (deprecated) 'json.\u003cstrong\u003eversion\u003c/strong\u003e' in tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/749258b1a96c7accc05ea7d842fb19fc378866fe\"\u003e\u003ccode\u003e749258b\u003c/code\u003e\u003c/a\u003e Cleanup \u003ccode\u003epkg_resources\u003c/code\u003e dependencies and configuration (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5175\"\u003e#5175\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/2019c16701667db1010c62ec11c6ef78c2e58206\"\u003e\u003ccode\u003e2019c16\u003c/code\u003e\u003c/a\u003e Parse \u003ccode\u003eext-module.define-macros\u003c/code\u003e from \u003ccode\u003epyproject.toml\u003c/code\u003e as list of tuples (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5169\"\u003e#5169\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/b809c86a37d97fcce290d5f51d4c293ab40bc685\"\u003e\u003ccode\u003eb809c86\u003c/code\u003e\u003c/a\u003e Sync setuptools schema with validate-pyproject (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5157\"\u003e#5157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/setuptools/compare/v75.8.0...v82.0.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ansible-runner` from 2.4.0 to 2.4.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ansible/ansible-runner/releases\"\u003eansible-runner's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003eget_option\u003c/code\u003e api from callback plugins (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/pull/1488\"\u003eansible/ansible-runner#1488\u003c/a\u003e). This fixes some problems around using custom callback plugins.\u003c/li\u003e\n\u003cli\u003eFix container --tty detection in subprocess mode (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/pull/1489\"\u003eansible/ansible-runner#1489\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/ansible/ansible-runner/compare/2.4.2...2.4.3\"\u003ehttps://github.com/ansible/ansible-runner/compare/2.4.2...2.4.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.4.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eShort circuit display wrapper of the callback plugin within forks (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/pull/1414\"\u003eansible/ansible-runner#1414\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove EOF log messages when streaming (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/pull/1458\"\u003eansible/ansible-runner#1458\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/ansible/ansible-runner/compare/2.4.1...2.4.2\"\u003ehttps://github.com/ansible/ansible-runner/compare/2.4.1...2.4.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.4.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eModify volume mount behavior when source does not exist (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1408\"\u003e#1408\u003c/a\u003e). Volumes specified using the \u003ccode\u003econtainer-volume-mount\u003c/code\u003e option will now be passed through to the underlying container engine unverified and unmodified. This now allows you to mount individual files (vs. the parent directory) and non-existing source volumes. The behavior encountered with a non-existing source volume depends on which container engine is in use (\u003ccode\u003edocker\u003c/code\u003e creates the volume, \u003ccode\u003epodman\u003c/code\u003e will error).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eVarious documentation updates.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/ansible/ansible-runner/compare/2.4.0...2.4.1\"\u003ehttps://github.com/ansible/ansible-runner/compare/2.4.0...2.4.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/ansible/ansible-runner/commit/dafa5b56fdcb89b379e4d276155d8a79cfc2ad2a\"\u003e\u003ccode\u003edafa5b5\u003c/code\u003e\u003c/a\u003e 📦 Fix \u003ccode\u003esetuptools-scm\u003c/code\u003e warnings on git archival (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1492\"\u003e#1492\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1493\"\u003e#1493\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/27d5fa622408ab5d81d898ce2f36ed5d441ac9b3\"\u003e\u003ccode\u003e27d5fa6\u003c/code\u003e\u003c/a\u003e Fix container --tty detection in subprocess mode (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1306\"\u003e#1306\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1489\"\u003e#1489\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/92d751dd18672e6c7f8d38e54aaf1267c02fd68f\"\u003e\u003ccode\u003e92d751d\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003eget_option\u003c/code\u003e api from callback plugins (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1142\"\u003e#1142\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1488\"\u003e#1488\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/f9b33f3bac874204bb26dbfedc8d4921fb07d8bb\"\u003e\u003ccode\u003ef9b33f3\u003c/code\u003e\u003c/a\u003e Fix GH issue templates (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1430\"\u003e#1430\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1487\"\u003e#1487\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/5e9f56bea23ccc88375830ac95f921ef74b25b07\"\u003e\u003ccode\u003e5e9f56b\u003c/code\u003e\u003c/a\u003e Fix test_invalid_registry_host() integration test (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1485\"\u003e#1485\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1486\"\u003e#1486\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/a098dccae910b118f140e8ab8927e608618a91ee\"\u003e\u003ccode\u003ea098dcc\u003c/code\u003e\u003c/a\u003e Clarify automount of SSH dir in docs (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1462\"\u003e#1462\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1463\"\u003e#1463\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/aa1d85044c197f8bd03ba1824c6de4510bab30ee\"\u003e\u003ccode\u003eaa1d850\u003c/code\u003e\u003c/a\u003e Improve EOF log messages when streaming (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1454\"\u003e#1454\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1458\"\u003e#1458\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/23d1720a2f29ef2518e4bede106e88545ad2625f\"\u003e\u003ccode\u003e23d1720\u003c/code\u003e\u003c/a\u003e Fix container build cache issue (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1449\"\u003e#1449\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1450\"\u003e#1450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/342cfc58f46c6bf0b6b6f23d91b726fa27091637\"\u003e\u003ccode\u003e342cfc5\u003c/code\u003e\u003c/a\u003e Remove wheel building from CI (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1443\"\u003e#1443\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1445\"\u003e#1445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/3dde1ffdeec743b07c9d3ef90c587db40bea8d62\"\u003e\u003ccode\u003e3dde1ff\u003c/code\u003e\u003c/a\u003e Change keepalive test boundary to 15\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ansible/ansible-runner/compare/2.4.0...2.4.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `babel` from 2.17.0 to 2.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-babel/babel/releases\"\u003ebabel's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.18.0\u003c/h2\u003e\n\u003cp\u003eHappy 2026! Like last year's release (ahem...), this one too is being made from FOSDEM 2026, in Brussels, Belgium. 🇧🇪\nWe'll aspire for a less glacial release cycle for 2.19. 😁\u003c/p\u003e\n\u003cp\u003ePlease see \u003ca href=\"https://github.com/python-babel/babel/blob/56c63caf50b18b152541b5dcafd51f645d867074/CHANGES.rst\"\u003eCHANGELOG.rst\u003c/a\u003e for the detailed change log.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-babel/babel/compare/v2.17.0...v2.18.0\"\u003ehttps://github.com/python-babel/babel/compare/v2.17.0...v2.18.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-babel/babel/blob/master/CHANGES.rst\"\u003ebabel's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.18.0\u003c/h2\u003e\n\u003cp\u003eHappy 2026! This release is, coincidentally, also being made from FOSDEM.\u003c/p\u003e\n\u003cp\u003eWe will aspire for a slightly less glacial release cadence in this year;\nthere are interesting features in the pipeline.\u003c/p\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Core: Add `babel.core.get_cldr_version()` by @akx in :gh:`1242`\n* Core: Use CLDR 47 by @tomasr8 in :gh:`1210`\n* Core: Use canonical IANA zone names in zone_territories by @akx in :gh:`1220`\n* Messages: Improve extract performance via ignoring directories early during os.walk by @akx in :gh:`968`\n* Messages: Merge in per-format keywords and auto_comments by @akx in :gh:`1243`\n* Messages: Update keywords for extraction of dpgettext and dnpgettext by @mardiros in :gh:`1235`\n* Messages: Validate all plurals in Python format checker by @tomasr8 in :gh:`1188`\n* Time: Use standard library `timezone` instead of `FixedOffsetTimezone` by @akx in :gh:`1203`\n\u003cp\u003eBugfixes\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCore: Fix formatting for \u0026quot;Empty locale identifier\u0026quot; exception added in \u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1164\"\u003e#1164\u003c/a\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1184\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCore: Improve handling of no-inheritance-marker in timezone data by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1194\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCore: Make the number pattern regular expression more efficient by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1213\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMessages: Keep translator comments next to the translation function call by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1196\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eNumbers: Fix KeyError that occurred when formatting compact currencies of exactly one thousand in several locales  by \u003ca href=\"https://github.com/bartbroere\"\u003e\u003ccode\u003e@​bartbroere\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1246\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther improvements\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Core: Avoid unnecessary uses of `map()` by @akx in :gh:`1180`\n* Messages: Have init-catalog create directories too by @akx in :gh:`1244`\n* Messages: Optimizations for read_po by @akx in :gh:`1200`\n* Messages: Use pathlib.Path() in catalog frontend; improve test coverage by @akx in :gh:`1204`\n\u003cp\u003eInfrastructure and documentation\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCI: Renovate CI \u0026amp; lint tools by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1228\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCI: Tighten up CI with Zizmor by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1230\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCI: make job permissions explicit by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1227\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Add SECURITY.md by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1229\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Remove u string prefix from docs by \u003ca href=\"https://github.com/verhovsky\"\u003e\u003ccode\u003e@​verhovsky\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1174\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Update dates.rst with current unicode.org tr35 link by \u003ca href=\"https://github.com/clach04\"\u003e\u003ccode\u003e@​clach04\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1189\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Add some PyPI classifiers by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1186\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Apply reformatting by hand and with Ruff by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1202\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Test on and declare support for Python 3.14 by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1233\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/python-babel/babel/commit/56c63caf50b18b152541b5dcafd51f645d867074\"\u003e\u003ccode\u003e56c63ca\u003c/code\u003e\u003c/a\u003e Prepare for 2.18.0 (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1248\"\u003e#1248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/73015a1217b90398fe76dcdc3b6e110ce26eb6d3\"\u003e\u003ccode\u003e73015a1\u003c/code\u003e\u003c/a\u003e Add user-agent to CLDR downloader (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1247\"\u003e#1247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/29bd3624463f9b8694d09a308f67f353373c76af\"\u003e\u003ccode\u003e29bd362\u003c/code\u003e\u003c/a\u003e Fix formatting compact currencies of exactly one thousand in several locales ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/851db43b2b175c6bdf69ae6977cd6ad642506046\"\u003e\u003ccode\u003e851db43\u003c/code\u003e\u003c/a\u003e Reuse InitCatalog's guts in UpdateCatalog (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1244\"\u003e#1244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/fd00e60adf7e0c74821a77ff2a8b564e9985fd8e\"\u003e\u003ccode\u003efd00e60\u003c/code\u003e\u003c/a\u003e Extract: Merge in per-format keywords and auto_comments (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1243\"\u003e#1243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/12a14b6b3f09b6f5c8c745791dd4928f1d58fda0\"\u003e\u003ccode\u003e12a14b6\u003c/code\u003e\u003c/a\u003e Add dpgettext and dnpgettext support (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1235\"\u003e#1235\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/7110e6206fd5ddc66db9613935fea8b8c668b7d5\"\u003e\u003ccode\u003e7110e62\u003c/code\u003e\u003c/a\u003e Use canonical IANA zone names in zone_territories (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1220\"\u003e#1220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/e91c3467b0f3bdc4433eab6820819fe69784c2bf\"\u003e\u003ccode\u003ee91c346\u003c/code\u003e\u003c/a\u003e Improve extract performance via ignoring directories early during os.walk (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/968\"\u003e#968\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/0c4f37838c3cb34cf527dd9890c1b69e98db1354\"\u003e\u003ccode\u003e0c4f378\u003c/code\u003e\u003c/a\u003e Convert Unittest testcases with setup/teardown to fixtures (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1240\"\u003e#1240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/218c96ee305aad95bccb6402af4b4be60ad17ab1\"\u003e\u003ccode\u003e218c96e\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003ebabel.core.get_cldr_version()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1242\"\u003e#1242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-babel/babel/compare/v2.17.0...v2.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `backrefs` from 6.1 to 6.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facelessuser/backrefs/releases\"\u003ebackrefs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e Add alias \u003ccode\u003eprefixmatch\u003c/code\u003e for \u003ccode\u003ematch\u003c/code\u003e in both \u003ccode\u003ebre\u003c/code\u003e and \u003ccode\u003ebregex\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/facelessuser/backrefs/commit/6f9d90d4876e22ca1e928bd2d125804f2381e5ff\"\u003e\u003ccode\u003e6f9d90d\u003c/code\u003e\u003c/a\u003e Add alias \u003ccode\u003eprefixmatch\u003c/code\u003e for \u003ccode\u003ematch\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/facelessuser/backrefs/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/220132ee39102b383048bbeb79b54f773c02bc1c\"\u003e\u003ccode\u003e220132e\u003c/code\u003e\u003c/a\u003e Update to a more common syntax for admonitions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/56c24eb6e593c266aafc695e5114ff2c6932ced8\"\u003e\u003ccode\u003e56c24eb\u003c/code\u003e\u003c/a\u003e Update doc theme and copyright\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/facelessuser/backrefs/compare/6.1...6.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bcrypt` from 4.2.1 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\u003ch2\u003e4.3.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.7.\u003c/li\u003e\n\u003cli\u003eWe now support free-threaded Python 3.13.\u003c/li\u003e\n\u003cli\u003eWe now support PyPy 3.11.\u003c/li\u003e\n\u003cli\u003eWe now publish wheels for free-threaded Python 3.13, for PyPy 3.11 on\n\u003ccode\u003emanylinux\u003c/code\u003e, and for ARMv7l on \u003ccode\u003emanylinux\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/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.2.1...5.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `build` from 1.4.0 to 1.4.2\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.4.2\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix(uv): always pass the python to use by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/996\"\u003epypa/build#996\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(release): detect pre-commit environment inconsistencies by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1001\"\u003epypa/build#1001\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 fix(towncrier): match docstrfmt RST formatting expectations by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1002\"\u003epypa/build#1002\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix _has_valid_outer_pip when pip is missing 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/build/pull/1003\"\u003epypa/build#1003\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: release changelog issue by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1006\"\u003epypa/build#1006\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/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1003\"\u003epypa/build#1003\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.1...1.4.2\"\u003ehttps://github.com/pypa/build/compare/1.4.1...1.4.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.4.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix documentation grammar and typos by \u003ca href=\"https://github.com/DimitriPapadopoulos\"\u003e\u003ccode\u003e@​DimitriPapadopoulos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/979\"\u003epypa/build#979\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow setting build constraints by \u003ca href=\"https://github.com/layday\"\u003e\u003ccode\u003e@​layday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/963\"\u003epypa/build#963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: pip hack workaround by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/980\"\u003epypa/build#980\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 docs: reorganize using Diataxis framework by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/988\"\u003epypa/build#988\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ feat(ci): automate releases and harden workflows by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/991\"\u003epypa/build#991\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: avoid template injection zizmor issue by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/994\"\u003epypa/build#994\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: fix PR template by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/995\"\u003epypa/build#995\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: fix fix job by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/997\"\u003epypa/build#997\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(ci): resolve pre-release auth failure and change detection by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/999\"\u003epypa/build#999\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(deps): add pre-commit to release dependency group by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1000\"\u003epypa/build#1000\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.0...1.4.1\"\u003ehttps://github.com/pypa/build/compare/1.4.0...1.4.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/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003chr /\u003e\n\u003cp\u003e1.4.2 (2026-03-25)\u003c/p\u003e\n\u003chr /\u003e\n\u003ch1\u003e==========\nBugfixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure the \u003ccode\u003euv\u003c/code\u003e installer uses the current version of Python, avoiding an issue if \u003ccode\u003eUV_PYTHON\u003c/code\u003e is set, for example. (:issue:\u003ccode\u003e977\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e_has_valid_outer_pip\u003c/code\u003e returning \u003ccode\u003eTrue\u003c/code\u003e when pip is missing, causing build to try using a non-existent pip\ninstead of falling back to virtualenv. (:issue:\u003ccode\u003e1003\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.1 (2026-03-24)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eAllow setting build constraints - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e (:issue:\u003ccode\u003e963\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAutomate releases with pre-release workflow and trusted publishing - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e (:issue:\u003ccode\u003e991\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eDocumentation\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eFix documentation grammar and typos (:issue:\u003ccode\u003e979\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eReorganize documentation using Diataxis framework - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e (:issue:\u003ccode\u003e988\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDocument release process and workflow security practices in contributing guide (:issue:\u003ccode\u003e991\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e991\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eFix pip hack workaround - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e (:issue:\u003ccode\u003e980\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003cp\u003e####################\n1.4.0 (2026-01-08)\n####################\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/pypa/build/commit/7b7ae078aa1dabff33ea72d07ed15dd298acf80a\"\u003e\u003ccode\u003e7b7ae07\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.4.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/17f3b57c7cde11a9785b3164d7b92237846c56ce\"\u003e\u003ccode\u003e17f3b57\u003c/code\u003e\u003c/a\u003e fix: release changelog issue (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1006\"\u003e#1006\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b9457525a02bb4de40c59a39a092306a03e3a24d\"\u003e\u003ccode\u003eb945752\u003c/code\u003e\u003c/a\u003e fix: _has_valid_outer_pip when pip is missing (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1003\"\u003e#1003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/74ae997a9a227303f7d02bf4b226922c7ba4efd1\"\u003e\u003ccode\u003e74ae997\u003c/code\u003e\u003c/a\u003e 🔧 fix(towncrier): match docstrfmt RST formatting expectations (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1002\"\u003e#1002\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/378692921af6501596572bfc068420391c744ca8\"\u003e\u003ccode\u003e3786929\u003c/code\u003e\u003c/a\u003e 🐛 fix(release): detect pre-commit environment inconsistencies (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1001\"\u003e#1001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/737bdb784406ab966ba666446e79c9e19bdfe237\"\u003e\u003ccode\u003e737bdb7\u003c/code\u003e\u003c/a\u003e fix(uv): always pass the python to use (\u003ca href=\"https://redirect.github.com/pypa/build/issues/996\"\u003e#996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/bd889569a1b9e2e7722682378c2d0cec469166a2\"\u003e\u003ccode\u003ebd88956\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/062e7e2caa1a33cfad8b6fe4740c5aa41d384bdc\"\u003e\u003ccode\u003e062e7e2\u003c/code\u003e\u003c/a\u003e 🐛 fix(deps): add pre-commit to release dependency group (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1000\"\u003e#1000\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/3d8e260f635febc10b5e9cd0e5402746deeb6dcd\"\u003e\u003ccode\u003e3d8e260\u003c/code\u003e\u003c/a\u003e 🐛 fix(ci): resolve pre-release auth failure and change detection (\u003ca href=\"https://redirect.github.com/pypa/build/issues/999\"\u003e#999\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/f2a26104d4fd6d13fdb75a29fd067ee80271f497\"\u003e\u003ccode\u003ef2a2610\u003c/code\u003e\u003c/a\u003e chore: fix fix job (\u003ca href=\"https://redirect.github.com/pypa/build/issues/997\"\u003e#997\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.4.0...1.4.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2024.12.14 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/2024.12.14...2026.02.25\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cffi` from 1.17.1 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only) - huge thanks to the folks at Quansight Labs for all the work to get this one sorted!\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.0.0b1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only).\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/6366c01d84e9a78e7e85f12ebe9760ba5d19b6d3\"\u003e\u003ccode\u003e6366c01\u003c/code\u003e\u003c/a\u003e release 2.0.0 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/95c847663aec401e4003927a274e4de9b8595f4f\"\u003e\u003ccode\u003e95c8476\u003c/code\u003e\u003c/a\u003e 2.0.0 post beta backports (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/195cbda66b6be9297ef6d584644e50cfdcca4e8a\"\u003e\u003ccode\u003e195cbda\u003c/code\u003e\u003c/a\u003e Release 2.0.0b1 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b4bbe7940d3f76027534db1aecbae9b61c35221a\"\u003e\u003ccode\u003eb4bbe79\u003c/code\u003e\u003c/a\u003e fix version test to support beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/7ed073de66e713cf791b6fdfa23685c81fdfd6ad\"\u003e\u003ccode\u003e7ed073d\u003c/code\u003e\u003c/a\u003e Add support for the free-threaded build (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/178\"\u003e#178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/67a170dc7972dc9361743690b38da3d963b200ef\"\u003e\u003ccode\u003e67a170d\u003c/code\u003e\u003c/a\u003e Change the license from MIT to MIT-no-attribution, which is the same without ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/92645ec9329feb03e3fa86240b40fe0fc37469d1\"\u003e\u003ccode\u003e92645ec\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support/testing (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/177\"\u003e#177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/2b81170583a898478a6996c9705d8c38ab7f73a1\"\u003e\u003ccode\u003e2b81170\u003c/code\u003e\u003c/a\u003e doc: update test commands in Section Testing/development tips (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/25172b84cf51cf58241f074ccd1efd9c7648cb43\"\u003e\u003ccode\u003e25172b8\u003c/code\u003e\u003c/a\u003e doc: update year (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b57a92c03eb2078a99c900519a37d18b4d52324f\"\u003e\u003ccode\u003eb57a92c\u003c/code\u003e\u003c/a\u003e issue 147: force-compute nested structs before parent structs.  Occurs mainly...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.1 to 3.4.6\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.6\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.5...3.4.6\"\u003e3.4.6\u003c/a\u003e (2026-03-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFlattened the logic in \u003ccode\u003echarset_normalizer.md\u003c/code\u003e for higher performance. Removed \u003ccode\u003eeligible(..)\u003c/code\u003e and \u003ccode\u003efeed(...)\u003c/code\u003e\nin favor of \u003ccode\u003efeed_info(...)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound for mypy[c] to 1.20, for our optimized version.\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eUNICODE_RANGES_COMBINED\u003c/code\u003e using Unicode blocks v17.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEdge case where noise difference between two candidates can be almost insignificant. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/672\"\u003e#672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCLI \u003ccode\u003e--normalize\u003c/code\u003e writing to wrong path when passing multiple files in. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/702\"\u003e#702\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFreethreaded pre-built wheels now shipped in PyPI starting with 3.14t. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/616\"\u003e#616\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.5\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.4...3.4.5\"\u003e3.4.5\u003c/a\u003e (2026-03-06)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003esetuptools\u003c/code\u003e constraint to \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=82\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.19.1\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd explicit link to lib math in our optimized build. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/692\"\u003e#692\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLogger level not restored correctly for empty byte sequences. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/701\"\u003e#701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTypeError when passing bytearray to from_bytes. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/703\"\u003e#703\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eApplied safe micro-optimizations in both our noise detector and language detector.\u003c/li\u003e\n\u003cli\u003eRewrote the \u003ccode\u003equery_yes_no\u003c/code\u003e function (inside CLI) to avoid using ambiguous licensed code.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ecd.py\u003c/code\u003e submodule into mypyc optional compilation to reduce further the performance impact.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003cbr /\u003e\nmypyc changed the usual binary output for the optimized wheel. Beware, especially if using PyInstaller or alike. See \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/714\"\u003ejawah/charset_normalizer#714\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\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\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.5...3.4.6\"\u003e3.4.6\u003c/a\u003e (2026-03-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFlattened the logic in \u003ccode\u003echarset_normalizer.md\u003c/code\u003e for higher performance. Removed \u003ccode\u003eeligible(..)\u003c/code\u003e and \u003ccode\u003efeed(...)\u003c/code\u003e\nin favor of \u003ccode\u003efeed_info(...)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound for mypy[c] to 1.20, for our optimized version.\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eUNICODE_RANGES_COMBINED\u003c/code\u003e using Unicode blocks v17.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEdge case where noise difference between two candidates can be almost insignificant. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/672\"\u003e#672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCLI \u003ccode\u003e--normalize\u003c/code\u003e writing to wrong path when passing multiple files in. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/702\"\u003e#702\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFreethreaded pre-built wheels now shipped in PyPI starting with 3.14t. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/616\"\u003e#616\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.4...3.4.5\"\u003e3.4.5\u003c/a\u003e (2026-03-06)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003esetuptools\u003c/code\u003e constraint to \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=82\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.19.1\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd explicit link to lib math in our optimized build. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/692\"\u003e#692\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLogger level not restored correctly for empty byte sequences. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/701\"\u003e#701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTypeError when passing bytearray to from_bytes. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/703\"\u003e#703\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eApplied safe micro-optimizations in both our noise detector and language detector.\u003c/li\u003e\n\u003cli\u003eRewrote the \u003ccode\u003equery_yes_no\u003c/code\u003e function (inside CLI) to avoid using ambiguous licensed code.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ecd.py\u003c/code\u003e submodule into mypyc optional compilation to reduce further the performance impact.\u003c/li\u003e\n\u003c/ul\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\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/5478b84058a2a04e2d67a5dabbe0a273706707aa\"\u003e\u003ccode\u003e5478b84\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/715\"\u003e#715\u003c/a\u003e from jawah/release-3.4.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/5c0a09e2caf1b3977df691916e949e1de4b8a738\"\u003e\u003ccode\u003e5c0a09e\u003c/code\u003e\u003c/a\u003e :heavy_check_mark: add confidence for threading usage, mostly due to lru_cach...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ef826b28d9f21e0059c93acc69a8bf364126c179\"\u003e\u003ccode\u003eef826b2\u003c/code\u003e\u003c/a\u003e :pencil: update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/5564f1aebe56584150a988f565ff69ee316dcefe\"\u003e\u003ccode\u003e5564f1a\u003c/code\u003e\u003c/a\u003e :pencil: update docs accordingly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0f2cf7d86e7c3ef4b77790a754b048bfada4fd09\"\u003e\u003ccode\u003e0f2cf7d\u003c/code\u003e\u003c/a\u003e :pencil: update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/54a189446becf4f2b42772f0dce89a5ef79fe8cc\"\u003e\u003ccode\u003e54a1894\u003c/code\u003e\u003c/a\u003e :bug: fix --normalize writing to wrong path with multiple files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/2177e28828bb7fcc2f1bed2a2d4463161a180812\"\u003e\u003ccode\u003e2177e28\u003c/code\u003e\u003c/a\u003e :pencil: update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b2497a54ba545dae84be01649d66fd52a7fcfc2d\"\u003e\u003ccode\u003eb2497a5\u003c/code\u003e\u003c/a\u003e :bug: edge case where noise difference between two candidates can be almost i...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/13a5d0b471cfb9b60b8cda84c78b7874c0267123\"\u003e\u003ccode\u003e13a5d0b\u003c/code\u003e\u003c/a\u003e :wrench: upgrade ci requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b9ffbd4e8314b0f733ddb34eef32d80490eb947c\"\u003e\u003ccode\u003eb9ffbd4\u003c/code\u003e\u003c/a\u003e :wrench: enable 3.14t nox mypyc session\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.1...3.4.6\"\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 46.0.6\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\u003e46.0.6 - 2026-03-25\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* **SECURITY ISSUE**: Fixed a bug where name constraints were not applied\n  to peer names during verification when the leaf certificate contains a\n  wildcard DNS SAN. Ordinary X.509 topologies are not affected by this bug,\n  including those used by the Web PKI. Credit to **Oleh Konko (1seal)** for\n  reporting the issue. **CVE-2026-34073**\n\u003cp\u003e.. _v46-0-5:\u003c/p\u003e\n\u003cp\u003e46.0.5 - 2026-02-10\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAn attacker could create a malicious public key that reveals portions of your\nprivate key when using certain uncommon elliptic curves (binary curves).\nThis version now includes additional security checks to prevent this attack.\nThis issue only affects binary elliptic curves, which are rarely used in\nreal-world applications. Credit to \u003cstrong\u003eXlabAI Team of Tencent Xuanwu Lab and\nAtuin Automated Vulnerability Discovery Engine\u003c/strong\u003e for reporting the issue.\n\u003cstrong\u003eCVE-2026-26007\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003eSupport for \u003ccode\u003eSECT*\u003c/code\u003e binary elliptic curves is deprecated and will be\nremoved in the next release.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. v46-0-4:\u003c/p\u003e\n\u003cp\u003e46.0.4 - 2026-01-27\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* `Dropped support for win_arm64 wheels`_.\n* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.5.\n\u003cp\u003e.. _v46-0-3:\u003c/p\u003e\n\u003cp\u003e46.0.3 - 2025-10-15\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed compilation when using LibreSSL 4.2.0.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v46-0-2:\u003c/p\u003e\n\u003cp\u003e46.0.2 - 2025-09-30\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.4.\n\u003cp\u003e.. _v46-0-1:\u003c/p\u003e\n\u003cp\u003e46.0.1 - 2025-09-16\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/91d728897bdad30cd5c79a2b23e207f1f050d587\"\u003e\u003ccode\u003e91d7288\u003c/code\u003e\u003c/a\u003e Cherry-pick \u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14542\"\u003e#14542\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14543\"\u003e#14543\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/06e120e682cb200e3f7050c02f0bcdac90c4c6ad\"\u003e\u003ccode\u003e06e120e\u003c/code\u003e\u003c/a\u003e bump version for 46.0.5 release (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14289\"\u003e#14289\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/0eebb9dbb6343d9bc1d91e5a2482ed4e054a6d8c\"\u003e\u003ccode\u003e0eebb9d\u003c/code\u003e\u003c/a\u003e EC check key on cofactor \u0026gt; 1 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14287\"\u003e#14287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/bedf6e186b814f69a3f54f51252c23a71d44ed2e\"\u003e\u003ccode\u003ebedf6e1\u003c/code\u003e\u003c/a\u003e fix openssl version on 46 branch (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14220\"\u003e#14220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e6f44fc8e6391f05d719fb9d369692325b87a471\"\u003e\u003ccode\u003ee6f44fc\u003c/code\u003e\u003c/a\u003e bump for 46.0.4 and drop win arm64 due to CI issues (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14217\"\u003e#14217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/c0af4dd7b75921bbe9f1d41a03dbd4b64a9e3403\"\u003e\u003ccode\u003ec0af4dd\u003c/code\u003e\u003c/a\u003e release 46.0.3 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13681\"\u003e#13681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/99efe5ad150a56efadafacaffd0e3ee319373904\"\u003e\u003ccode\u003e99efe5a\u003c/code\u003e\u003c/a\u003e bump version for 46.0.2 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13531\"\u003e#13531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e735cfc27502320101c130335c556394a125ba52\"\u003e\u003ccode\u003ee735cfc\u003c/code\u003e\u003c/a\u003e release 46.0.1 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13450\"\u003e#13450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/4e457ffba43a6d87efc63c33041e2081438dd8a4\"\u003e\u003ccode\u003e4e457ff\u003c/code\u003e\u003c/a\u003e Explicitly specify python in mac uv build invocation (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13447\"\u003e#13447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/2726efdb6d67f1c90cf9c6062d9fe051965586f8\"\u003e\u003ccode\u003e2726efd\u003c/code\u003e\u003c/a\u003e Depend on CFFI 2.0.0 or newer on Python \u0026gt; 3.8 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13448\"\u003e#13448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/cryptography/compare/44.0.0...46.0.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `docutils` from 0.21.2 to 0.22.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/rtfd/recommonmark/commits\"\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 `jaraco-context` from 6.0.1 to 6.1.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jaraco/jaraco.context/blob/main/NEWS.rst\"\u003ejaraco-context's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev6.1.1\u003c/h1\u003e\n\u003cp\u003eNo significant changes.\u003c/p\u003e\n\u003ch1\u003ev6.1.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eIn tarfile.context, ensure that the default filter honors the data filter to avoid path traversal vulnerabilities.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev6.0.2\u003c/h1\u003e\n\u003cp\u003eNo significant changes.\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/jaraco/jaraco.context/commit/47979d7b6a55353170f61f3e54d17f5973cb8e1c\"\u003e\u003ccode\u003e47979d7\u003c/code\u003e\u003c/a\u003e Finalize\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/35a7a79bf20a94250f2119ab087dd4c6b2c667ea\"\u003e\u003ccode\u003e35a7a79\u003c/code\u003e\u003c/a\u003e Remove Python 3.8 compatibility in the doc tests.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/675aaf5bfb926bdafcded1b0e08ca011d6e0f599\"\u003e\u003ccode\u003e675aaf5\u003c/code\u003e\u003c/a\u003e Finalize\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/7b26a42b525735e4085d2e994e13802ea339d5f9\"\u003e\u003ccode\u003e7b26a42\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jaraco/jaraco.context/issues/18\"\u003e#18\u003c/a\u003e from jaraco/security/extraction-safety\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/398390e0ac4faf43e6449374964bbe76f0663bc1\"\u003e\u003ccode\u003e398390e\u003c/code\u003e\u003c/a\u003e Suppress failure (missed expectation) on Python 3.12.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/54a1bc6028838c102ed2c3c27dfca65afbedd326\"\u003e\u003ccode\u003e54a1bc6\u003c/code\u003e\u003c/a\u003e Use the filter argument to tarfile.extract to avoid the deprecation warning.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/7eb62b11d7071d3873facfab7361b2d2bf8a8f44\"\u003e\u003ccode\u003e7eb62b1\u003c/code\u003e\u003c/a\u003e Also extract the member, for completeness.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/3b5ac92dbc7fc13bfe89087c2ae80653314f845b\"\u003e\u003ccode\u003e3b5ac92\u003c/code\u003e\u003c/a\u003e Add another case, demonstrating legitimate use of parent dir.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/3b16eec9f80db260bd072acdb85d0bd2d530a563\"\u003e\u003ccode\u003e3b16eec\u003c/code\u003e\u003c/a\u003e In tarfile.context, ensure that the default filter honors the data filter to ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/52602fa4dceb8cb0b79f7be98b3c698626eb00bb\"\u003e\u003ccode\u003e52602fa\u003c/code\u003e\u003c/a\u003e Update implementation to have different expectations for different cases.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jaraco/jaraco.context/compare/v6.0.1...v6.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jaraco-functools` from 4.1.0 to 4.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jaraco/jaraco.functools/blob/main/NEWS.rst\"\u003ejaraco-functools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev4.4.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd noop.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev4.3.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd none_as function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev4.2.1\u003c/h1\u003e\n\u003cp\u003eNo significant changes.\u003c/p\u003e\n\u003ch1\u003ev4.2.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd 'passthrough' function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded missing \u003ccode\u003esplat\u003c/code\u003e in stubs -- by :user:\u003ccode\u003eAvasam\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/jaraco/jaraco.functools/issues/29\"\u003e#29\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/jaraco/jaraco.functools/commit/b57bb859e09f10f1e2ad7e64e9d71723793517f2\"\u003e\u003ccode\u003eb57bb85\u003c/code\u003e\u003c/a\u003e Finalize\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/21bcec01fb9104296737b6ab2a7ac61d5ed68cb0\"\u003e\u003ccode\u003e21bcec0\u003c/code\u003e\u003c/a\u003e Add noop.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/105d8ca2a61e703881d60302c45a31706f441453\"\u003e\u003ccode\u003e105d8ca\u003c/code\u003e\u003c/a\u003e 👹 Feed the hobgoblins (delint).\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/7f0b09aebbffd846374b2dd886035bb780d9ab20\"\u003e\u003ccode\u003e7f0b09a\u003c/code\u003e\u003c/a\u003e Merge \u003ca href=\"https://github.com/jaraco/skeleton\"\u003ehttps://github.com/jaraco/skeleton\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/8f3d95e7db0114e26e57dd95932b141ead74f7c5\"\u003e\u003ccode\u003e8f3d95e\u003c/code\u003e\u003c/a\u003e Pin mypy on PyPy.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/d47a969ed4567bbdee26034ccaaa8b8169f44fcf\"\u003e\u003ccode\u003ed47a969\u003c/code\u003e\u003c/a\u003e Specify the directory for news fragments.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/9f4e0e2849659969577f40be40cabe026dd5fb0f\"\u003e\u003ccode\u003e9f4e0e2\u003c/code\u003e\u003c/a\u003e Finalize\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/680b9aeed7c2f22f7a662b8c87af013d6ec4a076\"\u003e\u003ccode\u003e680b9ae\u003c/code\u003e\u003c/a\u003e Add none_as function.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/8c5810ed39f431598f8498499e7e8fa38a8ed455\"\u003e\u003ccode\u003e8c5810e\u003c/code\u003e\u003c/a\u003e\u003ccode\u003ejaraco/skeleton#177\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/04ff5549ee93f907bcebb1db570ad291ae55fd29\"\u003e\u003ccode\u003e04ff554\u003c/code\u003e\u003c/a\u003e\u003ccode\u003ejaraco/skeleton#181\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jaraco/jaraco.functools/compare/v4.1.0...v4.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jinja2` from 3.1.5 to 3.1.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/jinja/releases\"\u003ejinja2's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.6\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.6 security release, which fixes security issues 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/Jinja2/3.1.6/\"\u003ehttps://pypi.org/project/Jinja2/3.1.6/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\"\u003ehttps://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup, allowing the sandbox to apply its checks. \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\"\u003ehttps://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\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/jinja/blob/main/CHANGES.rst\"\u003ejinja2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.6\u003c/h2\u003e\n\u003cp\u003eReleased 2025-03-05\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup,\nallowing the sandbox to apply its checks. :ghsa:\u003ccode\u003ecpwx-vrp4-4pq7\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/jinja/commit/15206881c006c79667fe5154fe80c01c65410679\"\u003e\u003ccode\u003e1520688\u003c/code\u003e\u003c/a\u003e release version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/90457bbf33b8662926ae65cdde4c4c32e756e403\"\u003e\u003ccode\u003e90457bb\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/065334d1ee5b7210e1a0a93c37238c86858f2af7\"\u003e\u003ccode\u003e065334d\u003c/code\u003e\u003c/a\u003e attr filter uses env.getattr\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/033c20015c7ca899ab52eb921bb0f08e6d3dd145\"\u003e\u003ccode\u003e033c200\u003c/code\u003e\u003c/a\u003e start version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/bc68d4efa99c5f77334f0e519628558059ae8c35\"\u003e\u003ccode\u003ebc68d4e\u003c/code\u003e\u003c/a\u003e use global contributing guide (\u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2070\"\u003e#2070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/247de5e0c5062a792eb378e50e13e692885ee486\"\u003e\u003ccode\u003e247de5e\u003c/code\u003e\u003c/a\u003e use global contributing guide\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/ab8218c7a1b66b62e0ad6b941bd514e3a64a358f\"\u003e\u003ccode\u003eab8218c\u003c/code\u003e\u003c/a\u003e use project advisory link instead of global\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://g...\n\n_Description has been truncated_","html_url":"https://github.com/thesunnysinha/vm_tool/pull/11","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/thesunnysinha%2Fvm_tool/issues/11","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/11/packages"},{"uuid":"4043582019","node_id":"PR_kwDOPWL5l87I-DBX","number":14,"state":"open","title":"deps-dev(deps-dev): bump cffi from 1.17.1 to 2.0.0","user":"dependabot[bot]","labels":[],"assignees":["SatvikPraveen"],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-09T06:14:34.000Z","updated_at":"2026-03-09T06:14:35.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps-dev(deps-dev)","packages":[{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"}],"path":null,"ecosystem":"pip"},"body":"Bumps [cffi](https://github.com/python-cffi/cffi) from 1.17.1 to 2.0.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only) - huge thanks to the folks at Quansight Labs for all the work to get this one sorted!\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.0.0b1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only).\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/6366c01d84e9a78e7e85f12ebe9760ba5d19b6d3\"\u003e\u003ccode\u003e6366c01\u003c/code\u003e\u003c/a\u003e release 2.0.0 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/95c847663aec401e4003927a274e4de9b8595f4f\"\u003e\u003ccode\u003e95c8476\u003c/code\u003e\u003c/a\u003e 2.0.0 post beta backports (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/195cbda66b6be9297ef6d584644e50cfdcca4e8a\"\u003e\u003ccode\u003e195cbda\u003c/code\u003e\u003c/a\u003e Release 2.0.0b1 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b4bbe7940d3f76027534db1aecbae9b61c35221a\"\u003e\u003ccode\u003eb4bbe79\u003c/code\u003e\u003c/a\u003e fix version test to support beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/7ed073de66e713cf791b6fdfa23685c81fdfd6ad\"\u003e\u003ccode\u003e7ed073d\u003c/code\u003e\u003c/a\u003e Add support for the free-threaded build (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/178\"\u003e#178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/67a170dc7972dc9361743690b38da3d963b200ef\"\u003e\u003ccode\u003e67a170d\u003c/code\u003e\u003c/a\u003e Change the license from MIT to MIT-no-attribution, which is the same without ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/92645ec9329feb03e3fa86240b40fe0fc37469d1\"\u003e\u003ccode\u003e92645ec\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support/testing (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/177\"\u003e#177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/2b81170583a898478a6996c9705d8c38ab7f73a1\"\u003e\u003ccode\u003e2b81170\u003c/code\u003e\u003c/a\u003e doc: update test commands in Section Testing/development tips (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/25172b84cf51cf58241f074ccd1efd9c7648cb43\"\u003e\u003ccode\u003e25172b8\u003c/code\u003e\u003c/a\u003e doc: update year (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b57a92c03eb2078a99c900519a37d18b4d52324f\"\u003e\u003ccode\u003eb57a92c\u003c/code\u003e\u003c/a\u003e issue 147: force-compute nested structs before parent structs.  Occurs mainly...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=cffi\u0026package-manager=pip\u0026previous-version=1.17.1\u0026new-version=2.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/SatvikPraveen/ScipyMasterPro/pull/14","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/SatvikPraveen%2FScipyMasterPro/issues/14","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/14/packages"},{"uuid":"4000829233","node_id":"PR_kwDOMiUinc7G0JyV","number":25,"state":"closed","title":"Bump cffi from 2.0.0b1 to 2.0.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-02-27T12:52:33.000Z","author_association":null,"state_reason":null,"created_at":"2026-02-27T12:35:30.000Z","updated_at":"2026-02-27T12:52:35.000Z","time_to_close":1023,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"cffi","old_version":"2.0.0b1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"}],"path":null,"ecosystem":"pip"},"body":"Bumps [cffi](https://github.com/python-cffi/cffi) from 2.0.0b1 to 2.0.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only) - huge thanks to the folks at Quansight Labs for all the work to get this one sorted!\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/6366c01d84e9a78e7e85f12ebe9760ba5d19b6d3\"\u003e\u003ccode\u003e6366c01\u003c/code\u003e\u003c/a\u003e release 2.0.0 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/95c847663aec401e4003927a274e4de9b8595f4f\"\u003e\u003ccode\u003e95c8476\u003c/code\u003e\u003c/a\u003e 2.0.0 post beta backports (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v2.0.0b1...v2.0.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=cffi\u0026package-manager=pip\u0026previous-version=2.0.0b1\u0026new-version=2.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/Infineon/StreamGen/pull/25","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Infineon%2FStreamGen/issues/25","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/25/packages"},{"uuid":"3970559722","node_id":"PR_kwDOQaAaZ87FRPAD","number":56,"state":"open","title":"Bump cffi from 1.17.1 to 2.0.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-02-20T22:02:47.000Z","updated_at":"2026-02-21T00:01:09.444Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"}],"path":null,"ecosystem":"pip"},"body":"Bumps [cffi](https://github.com/python-cffi/cffi) from 1.17.1 to 2.0.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only) - huge thanks to the folks at Quansight Labs for all the work to get this one sorted!\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.0.0b1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only).\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/6366c01d84e9a78e7e85f12ebe9760ba5d19b6d3\"\u003e\u003ccode\u003e6366c01\u003c/code\u003e\u003c/a\u003e release 2.0.0 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/95c847663aec401e4003927a274e4de9b8595f4f\"\u003e\u003ccode\u003e95c8476\u003c/code\u003e\u003c/a\u003e 2.0.0 post beta backports (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/195cbda66b6be9297ef6d584644e50cfdcca4e8a\"\u003e\u003ccode\u003e195cbda\u003c/code\u003e\u003c/a\u003e Release 2.0.0b1 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b4bbe7940d3f76027534db1aecbae9b61c35221a\"\u003e\u003ccode\u003eb4bbe79\u003c/code\u003e\u003c/a\u003e fix version test to support beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/7ed073de66e713cf791b6fdfa23685c81fdfd6ad\"\u003e\u003ccode\u003e7ed073d\u003c/code\u003e\u003c/a\u003e Add support for the free-threaded build (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/178\"\u003e#178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/67a170dc7972dc9361743690b38da3d963b200ef\"\u003e\u003ccode\u003e67a170d\u003c/code\u003e\u003c/a\u003e Change the license from MIT to MIT-no-attribution, which is the same without ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/92645ec9329feb03e3fa86240b40fe0fc37469d1\"\u003e\u003ccode\u003e92645ec\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support/testing (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/177\"\u003e#177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/2b81170583a898478a6996c9705d8c38ab7f73a1\"\u003e\u003ccode\u003e2b81170\u003c/code\u003e\u003c/a\u003e doc: update test commands in Section Testing/development tips (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/25172b84cf51cf58241f074ccd1efd9c7648cb43\"\u003e\u003ccode\u003e25172b8\u003c/code\u003e\u003c/a\u003e doc: update year (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b57a92c03eb2078a99c900519a37d18b4d52324f\"\u003e\u003ccode\u003eb57a92c\u003c/code\u003e\u003c/a\u003e issue 147: force-compute nested structs before parent structs.  Occurs mainly...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=cffi\u0026package-manager=pip\u0026previous-version=1.17.1\u0026new-version=2.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/muditsinha01/multi-lang-minimal/pull/56","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/muditsinha01%2Fmulti-lang-minimal/issues/56","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/56/packages"},{"uuid":"3942720280","node_id":"PR_kwDONnmdmc7D2BhW","number":8,"state":"open","title":"chore(deps): bump the dependencies group across 1 directory with 37 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-02-15T00:49:22.000Z","updated_at":"2026-02-15T00:49:38.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"dependencies","update_count":37,"packages":[{"name":"setuptools","old_version":"75.8.0","new_version":"82.0.0","repository_url":"https://github.com/pypa/setuptools"},{"name":"ansible-runner","old_version":"2.4.0","new_version":"2.4.2","repository_url":"https://github.com/ansible/ansible-runner"},{"name":"babel","old_version":"2.17.0","new_version":"2.18.0","repository_url":"https://github.com/python-babel/babel"},{"name":"bcrypt","old_version":"4.2.1","new_version":"5.0.0","repository_url":"https://github.com/pyca/bcrypt"},{"name":"certifi","old_version":"2024.12.14","new_version":"2026.1.4","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"cryptography","old_version":"44.0.0","new_version":"46.0.5","repository_url":"https://github.com/pyca/cryptography"},{"name":"docutils","old_version":"0.21.2","new_version":"0.22.4","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"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":"jinja2","old_version":"3.1.5","new_version":"3.1.6","repository_url":"https://github.com/pallets/jinja"},{"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":"mkdocs-autorefs","old_version":"1.4.3","new_version":"1.4.4","repository_url":"https://github.com/mkdocstrings/autorefs"},{"name":"more-itertools","old_version":"10.5.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"nh3","old_version":"0.2.20","new_version":"0.3.3","repository_url":"https://github.com/messense/nh3"},{"name":"packaging","old_version":"24.2","new_version":"26.0","repository_url":"https://github.com/pypa/packaging"},{"name":"paramiko","old_version":"3.5.0","new_version":"4.0.0","repository_url":"https://github.com/paramiko/paramiko"},{"name":"pathspec","old_version":"1.0.3","new_version":"1.0.4","repository_url":"https://github.com/cpburnz/python-pathspec"},{"name":"pkginfo","old_version":"1.12.0","new_version":"1.12.1.2"},{"name":"pycparser","old_version":"2.22","new_version":"2.23","repository_url":"https://github.com/eliben/pycparser"},{"name":"pydantic","old_version":"2.11.7","new_version":"2.12.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-core","old_version":"2.33.2","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":"pymdown-extensions","old_version":"10.20","new_version":"10.20.1","repository_url":"https://github.com/facelessuser/pymdown-extensions"},{"name":"pynacl","old_version":"1.5.0","new_version":"1.6.2","repository_url":"https://github.com/pyca/pynacl"},{"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":"resolvelib","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/sarugaku/resolvelib"},{"name":"rich","old_version":"13.9.4","new_version":"14.3.2","repository_url":"https://github.com/Textualize/rich"},{"name":"twine","old_version":"6.0.1","new_version":"6.2.0","repository_url":"https://github.com/pypa/twine"},{"name":"typing-inspection","old_version":"0.4.1","new_version":"0.4.2","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"typing-extensions","old_version":"4.14.0","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":"wheel","old_version":"0.45.1","new_version":"0.46.3","repository_url":"https://github.com/pypa/wheel"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dependencies group with 37 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [setuptools](https://github.com/pypa/setuptools) | `75.8.0` | `82.0.0` |\n| [ansible-runner](https://github.com/ansible/ansible-runner) | `2.4.0` | `2.4.2` |\n| [babel](https://github.com/python-babel/babel) | `2.17.0` | `2.18.0` |\n| [bcrypt](https://github.com/pyca/bcrypt) | `4.2.1` | `5.0.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2024.12.14` | `2026.1.4` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.1` | `2.0.0` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [cryptography](https://github.com/pyca/cryptography) | `44.0.0` | `46.0.5` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.21.2` | `0.22.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\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| [jinja2](https://github.com/pallets/jinja) | `3.1.5` | `3.1.6` |\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| [mkdocs-autorefs](https://github.com/mkdocstrings/autorefs) | `1.4.3` | `1.4.4` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.5.0` | `10.8.0` |\n| [nh3](https://github.com/messense/nh3) | `0.2.20` | `0.3.3` |\n| [packaging](https://github.com/pypa/packaging) | `24.2` | `26.0` |\n| [paramiko](https://github.com/paramiko/paramiko) | `3.5.0` | `4.0.0` |\n| [pathspec](https://github.com/cpburnz/python-pathspec) | `1.0.3` | `1.0.4` |\n| [pkginfo](https://code.launchpad.net/~tseaver/pkginfo/trunk) | `1.12.0` | `1.12.1.2` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `2.23` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.7` | `2.12.5` |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.33.2` | `2.41.5` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) | `10.20` | `10.20.1` |\n| [pynacl](https://github.com/pyca/pynacl) | `1.5.0` | `1.6.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| [resolvelib](https://github.com/sarugaku/resolvelib) | `1.0.1` | `1.2.1` |\n| [rich](https://github.com/Textualize/rich) | `13.9.4` | `14.3.2` |\n| [twine](https://github.com/pypa/twine) | `6.0.1` | `6.2.0` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.1` | `0.4.2` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.14.0` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.6.3` |\n| [wheel](https://github.com/pypa/wheel) | `0.45.1` | `0.46.3` |\n\n\nUpdates `setuptools` from 75.8.0 to 82.0.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/setuptools/blob/main/NEWS.rst\"\u003esetuptools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev82.0.0\u003c/h1\u003e\n\u003ch2\u003eDeprecations and Removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epkg_resources\u003c/code\u003e has been removed from Setuptools. Most common uses of \u003ccode\u003epkg_resources\u003c/code\u003e have been superseded by the \u003ccode\u003eimportlib.resources \u0026lt;https://docs.python.org/3/library/importlib.resources.html\u0026gt;\u003c/code\u003e_ and \u003ccode\u003eimportlib.metadata \u0026lt;https://docs.python.org/3/library/importlib.metadata.html\u0026gt;\u003c/code\u003e_ projects. Projects and environments relying on \u003ccode\u003epkg_resources\u003c/code\u003e for namespace packages or other behavior should depend on older versions of \u003ccode\u003esetuptools\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/3085\"\u003e#3085\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev81.0.0\u003c/h1\u003e\n\u003ch2\u003eDeprecations and Removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved support for the --dry-run parameter to setup.py. This one feature by its nature threads through lots of core and ancillary functionality, adding complexity and friction. Removal of this parameter will help decouple the compiler functionality from distutils and thus the eventual full integration of distutils. These changes do affect some class and function signatures, so any derivative functionality may require some compatibility shims to support their expected interface. Please report any issues to the Setuptools project for investigation. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/4872\"\u003e#4872\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev80.10.2\u003c/h1\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate vendored dependencies. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5159\"\u003e#5159\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMisc\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5115\"\u003e#5115\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5128\"\u003e#5128\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev80.10.1\u003c/h1\u003e\n\u003ch2\u003eMisc\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5152\"\u003e#5152\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev80.10.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove post-release tags on setuptools' own build. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/4530\"\u003e#4530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRefreshed vendored dependencies. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5139\"\u003e#5139\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/03f3615362c4eb19c770b71be5bd58e38f235528\"\u003e\u003ccode\u003e03f3615\u003c/code\u003e\u003c/a\u003e Bump version: 81.0.0 → 82.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/530d11498af526c4210d8eeaa1ed6c63f44a390f\"\u003e\u003ccode\u003e530d114\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5007\"\u003e#5007\u003c/a\u003e from pypa/feature/remove-more-pkg_resources\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/11efe9f552290bf536515d458aa85752a0606aa8\"\u003e\u003ccode\u003e11efe9f\u003c/code\u003e\u003c/a\u003e Merge branch 'maint/75.3'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/118f129dd0fb319058bd05f382c50188fd60a60e\"\u003e\u003ccode\u003e118f129\u003c/code\u003e\u003c/a\u003e Bump version: 75.3.3 → 75.3.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/90561ffde1220a590b7644745f48b5837b1a130d\"\u003e\u003ccode\u003e90561ff\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5150\"\u003e#5150\u003c/a\u003e from UladzimirTrehubenka/backport_cve_47273\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/4595034db8aab4ea33035a47a068b04fd8aa00cc\"\u003e\u003ccode\u003e4595034\u003c/code\u003e\u003c/a\u003e Add news fragment.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/fc008006fc072af02eb7e0b601172c67eba395e3\"\u003e\u003ccode\u003efc00800\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5171\"\u003e#5171\u003c/a\u003e from cclauss/ruff-v0.15.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/127e561362a2b4e560faabe9e979ed848106b62d\"\u003e\u003ccode\u003e127e561\u003c/code\u003e\u003c/a\u003e Remove tests reliant on pkg_resources, rather than xfailing them.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/64bc21e10b5d749b1b75fa334caedb67cc7414c4\"\u003e\u003ccode\u003e64bc21e\u003c/code\u003e\u003c/a\u003e Reference the superseding libraries.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/cf1ff459ea997b615a75d99304f6c9aa1fc94c06\"\u003e\u003ccode\u003ecf1ff45\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into debt/pbr-without-pkg_resources\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/setuptools/compare/v75.8.0...v82.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ansible-runner` from 2.4.0 to 2.4.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ansible/ansible-runner/releases\"\u003eansible-runner's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eShort circuit display wrapper of the callback plugin within forks (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/pull/1414\"\u003eansible/ansible-runner#1414\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove EOF log messages when streaming (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/pull/1458\"\u003eansible/ansible-runner#1458\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/ansible/ansible-runner/compare/2.4.1...2.4.2\"\u003ehttps://github.com/ansible/ansible-runner/compare/2.4.1...2.4.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.4.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eModify volume mount behavior when source does not exist (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1408\"\u003e#1408\u003c/a\u003e). Volumes specified using the \u003ccode\u003econtainer-volume-mount\u003c/code\u003e option will now be passed through to the underlying container engine unverified and unmodified. This now allows you to mount individual files (vs. the parent directory) and non-existing source volumes. The behavior encountered with a non-existing source volume depends on which container engine is in use (\u003ccode\u003edocker\u003c/code\u003e creates the volume, \u003ccode\u003epodman\u003c/code\u003e will error).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eVarious documentation updates.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/ansible/ansible-runner/compare/2.4.0...2.4.1\"\u003ehttps://github.com/ansible/ansible-runner/compare/2.4.0...2.4.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/ansible/ansible-runner/commit/aa1d85044c197f8bd03ba1824c6de4510bab30ee\"\u003e\u003ccode\u003eaa1d850\u003c/code\u003e\u003c/a\u003e Improve EOF log messages when streaming (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1454\"\u003e#1454\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1458\"\u003e#1458\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/23d1720a2f29ef2518e4bede106e88545ad2625f\"\u003e\u003ccode\u003e23d1720\u003c/code\u003e\u003c/a\u003e Fix container build cache issue (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1449\"\u003e#1449\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1450\"\u003e#1450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/342cfc58f46c6bf0b6b6f23d91b726fa27091637\"\u003e\u003ccode\u003e342cfc5\u003c/code\u003e\u003c/a\u003e Remove wheel building from CI (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1443\"\u003e#1443\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1445\"\u003e#1445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/3dde1ffdeec743b07c9d3ef90c587db40bea8d62\"\u003e\u003ccode\u003e3dde1ff\u003c/code\u003e\u003c/a\u003e Change keepalive test boundary to 15\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/823bba55e5905fc3d9408464a62efa244fc0b579\"\u003e\u003ccode\u003e823bba5\u003c/code\u003e\u003c/a\u003e Fix CI for core 2.19.0 (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1435\"\u003e#1435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/d9bcdd514bbe6e28b950c40b542c1fe2c37cdf00\"\u003e\u003ccode\u003ed9bcdd5\u003c/code\u003e\u003c/a\u003e Remove outdated skipif fixtures\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/d72b2ee9d2951b8eb06100a101500d4267b5e690\"\u003e\u003ccode\u003ed72b2ee\u003c/code\u003e\u003c/a\u003e Short circuit display wrapper in forks (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1414\"\u003e#1414\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/388135bcf6b7e786d197315e02d042d246388d4f\"\u003e\u003ccode\u003e388135b\u003c/code\u003e\u003c/a\u003e [PR \u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1425\"\u003e#1425\u003c/a\u003e/827f5f65 backport][release_2.4] 🧪 Use \u003ccode\u003ereusable-tox.yml\u003c/code\u003e @ `tox-dev...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/ac1a759d95e1953549bc9af46bf46285bec99b70\"\u003e\u003ccode\u003eac1a759\u003c/code\u003e\u003c/a\u003e Bump core integration tests for core 2.18 release (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1401\"\u003e#1401\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/4ff8ce3af4ace1fb1dc488bfe93e1257deedacf4\"\u003e\u003ccode\u003e4ff8ce3\u003c/code\u003e\u003c/a\u003e Modify volume mount behavior when source does not exist (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1408\"\u003e#1408\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ansible/ansible-runner/compare/2.4.0...2.4.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `babel` from 2.17.0 to 2.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-babel/babel/releases\"\u003ebabel's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.18.0\u003c/h2\u003e\n\u003cp\u003eHappy 2026! Like last year's release (ahem...), this one too is being made from FOSDEM 2026, in Brussels, Belgium. 🇧🇪\nWe'll aspire for a less glacial release cycle for 2.19. 😁\u003c/p\u003e\n\u003cp\u003ePlease see \u003ca href=\"https://github.com/python-babel/babel/blob/56c63caf50b18b152541b5dcafd51f645d867074/CHANGES.rst\"\u003eCHANGELOG.rst\u003c/a\u003e for the detailed change log.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-babel/babel/compare/v2.17.0...v2.18.0\"\u003ehttps://github.com/python-babel/babel/compare/v2.17.0...v2.18.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-babel/babel/blob/master/CHANGES.rst\"\u003ebabel's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.18.0\u003c/h2\u003e\n\u003cp\u003eHappy 2026! This release is, coincidentally, also being made from FOSDEM.\u003c/p\u003e\n\u003cp\u003eWe will aspire for a slightly less glacial release cadence in this year;\nthere are interesting features in the pipeline.\u003c/p\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Core: Add `babel.core.get_cldr_version()` by @akx in :gh:`1242`\n* Core: Use CLDR 47 by @tomasr8 in :gh:`1210`\n* Core: Use canonical IANA zone names in zone_territories by @akx in :gh:`1220`\n* Messages: Improve extract performance via ignoring directories early during os.walk by @akx in :gh:`968`\n* Messages: Merge in per-format keywords and auto_comments by @akx in :gh:`1243`\n* Messages: Update keywords for extraction of dpgettext and dnpgettext by @mardiros in :gh:`1235`\n* Messages: Validate all plurals in Python format checker by @tomasr8 in :gh:`1188`\n* Time: Use standard library `timezone` instead of `FixedOffsetTimezone` by @akx in :gh:`1203`\n\u003cp\u003eBugfixes\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCore: Fix formatting for \u0026quot;Empty locale identifier\u0026quot; exception added in \u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1164\"\u003e#1164\u003c/a\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1184\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCore: Improve handling of no-inheritance-marker in timezone data by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1194\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCore: Make the number pattern regular expression more efficient by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1213\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMessages: Keep translator comments next to the translation function call by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1196\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eNumbers: Fix KeyError that occurred when formatting compact currencies of exactly one thousand in several locales  by \u003ca href=\"https://github.com/bartbroere\"\u003e\u003ccode\u003e@​bartbroere\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1246\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther improvements\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Core: Avoid unnecessary uses of `map()` by @akx in :gh:`1180`\n* Messages: Have init-catalog create directories too by @akx in :gh:`1244`\n* Messages: Optimizations for read_po by @akx in :gh:`1200`\n* Messages: Use pathlib.Path() in catalog frontend; improve test coverage by @akx in :gh:`1204`\n\u003cp\u003eInfrastructure and documentation\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCI: Renovate CI \u0026amp; lint tools by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1228\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCI: Tighten up CI with Zizmor by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1230\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCI: make job permissions explicit by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1227\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Add SECURITY.md by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1229\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Remove u string prefix from docs by \u003ca href=\"https://github.com/verhovsky\"\u003e\u003ccode\u003e@​verhovsky\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1174\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Update dates.rst with current unicode.org tr35 link by \u003ca href=\"https://github.com/clach04\"\u003e\u003ccode\u003e@​clach04\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1189\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Add some PyPI classifiers by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1186\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Apply reformatting by hand and with Ruff by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1202\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Test on and declare support for Python 3.14 by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1233\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/python-babel/babel/commit/56c63caf50b18b152541b5dcafd51f645d867074\"\u003e\u003ccode\u003e56c63ca\u003c/code\u003e\u003c/a\u003e Prepare for 2.18.0 (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1248\"\u003e#1248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/73015a1217b90398fe76dcdc3b6e110ce26eb6d3\"\u003e\u003ccode\u003e73015a1\u003c/code\u003e\u003c/a\u003e Add user-agent to CLDR downloader (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1247\"\u003e#1247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/29bd3624463f9b8694d09a308f67f353373c76af\"\u003e\u003ccode\u003e29bd362\u003c/code\u003e\u003c/a\u003e Fix formatting compact currencies of exactly one thousand in several locales ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/851db43b2b175c6bdf69ae6977cd6ad642506046\"\u003e\u003ccode\u003e851db43\u003c/code\u003e\u003c/a\u003e Reuse InitCatalog's guts in UpdateCatalog (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1244\"\u003e#1244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/fd00e60adf7e0c74821a77ff2a8b564e9985fd8e\"\u003e\u003ccode\u003efd00e60\u003c/code\u003e\u003c/a\u003e Extract: Merge in per-format keywords and auto_comments (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1243\"\u003e#1243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/12a14b6b3f09b6f5c8c745791dd4928f1d58fda0\"\u003e\u003ccode\u003e12a14b6\u003c/code\u003e\u003c/a\u003e Add dpgettext and dnpgettext support (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1235\"\u003e#1235\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/7110e6206fd5ddc66db9613935fea8b8c668b7d5\"\u003e\u003ccode\u003e7110e62\u003c/code\u003e\u003c/a\u003e Use canonical IANA zone names in zone_territories (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1220\"\u003e#1220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/e91c3467b0f3bdc4433eab6820819fe69784c2bf\"\u003e\u003ccode\u003ee91c346\u003c/code\u003e\u003c/a\u003e Improve extract performance via ignoring directories early during os.walk (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/968\"\u003e#968\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/0c4f37838c3cb34cf527dd9890c1b69e98db1354\"\u003e\u003ccode\u003e0c4f378\u003c/code\u003e\u003c/a\u003e Convert Unittest testcases with setup/teardown to fixtures (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1240\"\u003e#1240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/218c96ee305aad95bccb6402af4b4be60ad17ab1\"\u003e\u003ccode\u003e218c96e\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003ebabel.core.get_cldr_version()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1242\"\u003e#1242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-babel/babel/compare/v2.17.0...v2.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bcrypt` from 4.2.1 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\u003ch2\u003e4.3.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.7.\u003c/li\u003e\n\u003cli\u003eWe now support free-threaded Python 3.13.\u003c/li\u003e\n\u003cli\u003eWe now support PyPy 3.11.\u003c/li\u003e\n\u003cli\u003eWe now publish wheels for free-threaded Python 3.13, for PyPy 3.11 on\n\u003ccode\u003emanylinux\u003c/code\u003e, and for ARMv7l on \u003ccode\u003emanylinux\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/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.2.1...5.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2024.12.14 to 2026.1.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\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\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/27ca98ad845ee6d130a88301622c137893f71620\"\u003e\u003ccode\u003e27ca98a\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7.0.9 to 7.0.11 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/56c59a63909cfd3162b37e7bc16956e64df0f737\"\u003e\u003ccode\u003e56c59a6\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.0 to 6.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ae0021cd43a77bfba67d20a041469cdf6996570e\"\u003e\u003ccode\u003eae0021c\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.0.0 to 6.1.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/380\"\u003e#380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddf5d0b5d2a3d55fd92a79f141dbb5e074caf924\"\u003e\u003ccode\u003eddf5d0b\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5.0.1 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2024.12.14...2026.01.04\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cffi` from 1.17.1 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only) - huge thanks to the folks at Quansight Labs for all the work to get this one sorted!\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.0.0b1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only).\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/6366c01d84e9a78e7e85f12ebe9760ba5d19b6d3\"\u003e\u003ccode\u003e6366c01\u003c/code\u003e\u003c/a\u003e release 2.0.0 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/95c847663aec401e4003927a274e4de9b8595f4f\"\u003e\u003ccode\u003e95c8476\u003c/code\u003e\u003c/a\u003e 2.0.0 post beta backports (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/195cbda66b6be9297ef6d584644e50cfdcca4e8a\"\u003e\u003ccode\u003e195cbda\u003c/code\u003e\u003c/a\u003e Release 2.0.0b1 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b4bbe7940d3f76027534db1aecbae9b61c35221a\"\u003e\u003ccode\u003eb4bbe79\u003c/code\u003e\u003c/a\u003e fix version test to support beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/7ed073de66e713cf791b6fdfa23685c81fdfd6ad\"\u003e\u003ccode\u003e7ed073d\u003c/code\u003e\u003c/a\u003e Add support for the free-threaded build (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/178\"\u003e#178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/67a170dc7972dc9361743690b38da3d963b200ef\"\u003e\u003ccode\u003e67a170d\u003c/code\u003e\u003c/a\u003e Change the license from MIT to MIT-no-attribution, which is the same without ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/92645ec9329feb03e3fa86240b40fe0fc37469d1\"\u003e\u003ccode\u003e92645ec\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support/testing (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/177\"\u003e#177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/2b81170583a898478a6996c9705d8c38ab7f73a1\"\u003e\u003ccode\u003e2b81170\u003c/code\u003e\u003c/a\u003e doc: update test commands in Section Testing/development tips (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/25172b84cf51cf58241f074ccd1efd9c7648cb43\"\u003e\u003ccode\u003e25172b8\u003c/code\u003e\u003c/a\u003e doc: update year (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b57a92c03eb2078a99c900519a37d18b4d52324f\"\u003e\u003ccode\u003eb57a92c\u003c/code\u003e\u003c/a\u003e issue 147: force-compute nested structs before parent structs.  Occurs mainly...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.1 to 3.4.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 `cryptography` from 44.0.0 to 46.0.5\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\u003e46.0.5 - 2026-02-10\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* An attacker could create a malicious public key that reveals portions of your\n  private key when using certain uncommon elliptic curves (binary curves).\n  This version now includes additional security checks to prevent this attack.\n  This issue only affects binary elliptic curves, which are rarely used in\n  real-world applications. Credit to **XlabAI Team of Tencent Xuanwu Lab and\n  Atuin Automated Vulnerability Discovery Engine** for reporting the issue.\n  **CVE-2026-26007**\n* Support for ``SECT*`` binary elliptic curves is deprecated and will be\n  removed in the next release.\n\u003cp\u003e.. v46-0-4:\u003c/p\u003e\n\u003cp\u003e46.0.4 - 2026-01-27\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eDropped support for win_arm64 wheels\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eUpdated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.5.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v46-0-3:\u003c/p\u003e\n\u003cp\u003e46.0.3 - 2025-10-15\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Fixed compilation when using LibreSSL 4.2.0.\n\u003cp\u003e.. _v46-0-2:\u003c/p\u003e\n\u003cp\u003e46.0.2 - 2025-09-30\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.4.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v46-0-1:\u003c/p\u003e\n\u003cp\u003e46.0.1 - 2025-09-16\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Fixed an issue where users installing via ``pip`` on Python 3.14 development\n  versions would not properly install a dependency.\n* Fixed an issue building the free-threaded macOS 3.14 wheels.\n\u003cp\u003e.. _v46-0-0:\u003c/p\u003e\n\u003cp\u003e46.0.0 - 2025-09-16\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Support for Python 3.7 has been removed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/06e120e682cb200e3f7050c02f0bcdac90c4c6ad\"\u003e\u003ccode\u003e06e120e\u003c/code\u003e\u003c/a\u003e bump version for 46.0.5 release (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14289\"\u003e#14289\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/0eebb9dbb6343d9bc1d91e5a2482ed4e054a6d8c\"\u003e\u003ccode\u003e0eebb9d\u003c/code\u003e\u003c/a\u003e EC check key on cofactor \u0026gt; 1 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14287\"\u003e#14287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/bedf6e186b814f69a3f54f51252c23a71d44ed2e\"\u003e\u003ccode\u003ebedf6e1\u003c/code\u003e\u003c/a\u003e fix openssl version on 46 branch (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14220\"\u003e#14220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e6f44fc8e6391f05d719fb9d369692325b87a471\"\u003e\u003ccode\u003ee6f44fc\u003c/code\u003e\u003c/a\u003e bump for 46.0.4 and drop win arm64 due to CI issues (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14217\"\u003e#14217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/c0af4dd7b75921bbe9f1d41a03dbd4b64a9e3403\"\u003e\u003ccode\u003ec0af4dd\u003c/code\u003e\u003c/a\u003e release 46.0.3 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13681\"\u003e#13681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/99efe5ad150a56efadafacaffd0e3ee319373904\"\u003e\u003ccode\u003e99efe5a\u003c/code\u003e\u003c/a\u003e bump version for 46.0.2 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13531\"\u003e#13531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e735cfc27502320101c130335c556394a125ba52\"\u003e\u003ccode\u003ee735cfc\u003c/code\u003e\u003c/a\u003e release 46.0.1 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13450\"\u003e#13450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/4e457ffba43a6d87efc63c33041e2081438dd8a4\"\u003e\u003ccode\u003e4e457ff\u003c/code\u003e\u003c/a\u003e Explicitly specify python in mac uv build invocation (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13447\"\u003e#13447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/2726efdb6d67f1c90cf9c6062d9fe051965586f8\"\u003e\u003ccode\u003e2726efd\u003c/code\u003e\u003c/a\u003e Depend on CFFI 2.0.0 or newer on Python \u0026gt; 3.8 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13448\"\u003e#13448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/62230623d183706632c0eb7822c96ac95e3710a8\"\u003e\u003ccode\u003e6223062\u003c/code\u003e\u003c/a\u003e release 46.0.0 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13446\"\u003e#13446\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/cryptography/compare/44.0.0...46.0.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `docutils` from 0.21.2 to 0.22.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/rtfd/recommonmark/commits\"\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 `jaraco-context` from 6.0.1 to 6.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jaraco/jaraco.context/blob/main/NEWS.rst\"\u003ejaraco-context's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev6.1.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eIn tarfile.context, ensure that the default filter honors the data filter to avoid path traversal vulnerabilities.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev6.0.2\u003c/h1\u003e\n\u003cp\u003eNo significant changes.\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/jaraco/jaraco.context/commit/675aaf5bfb926bdafcded1b0e08ca011d6e0f599\"\u003e\u003ccode\u003e675aaf5\u003c/code\u003e\u003c/a\u003e Finalize\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/7b26a42b525735e4085d2e994e13802ea339d5f9\"\u003e\u003ccode\u003e7b26a42\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jaraco/jaraco.context/issues/18\"\u003e#18\u003c/a\u003e from jaraco/security/extraction-safety\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/398390e0ac4faf43e6449374964bbe76f0663bc1\"\u003e\u003ccode\u003e398390e\u003c/code\u003e\u003c/a\u003e Suppress failure (missed expectation) on Python 3.12.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/54a1bc6028838c102ed2c3c27dfca65afbedd326\"\u003e\u003ccode\u003e54a1bc6\u003c/code\u003e\u003c/a\u003e Use the filter argument to tarfile.extract to avoid the deprecation warning.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/7eb62b11d7071d3873facfab7361b2d2bf8a8f44\"\u003e\u003ccode\u003e7eb62b1\u003c/code\u003e\u003c/a\u003e Also extract the member, for completeness.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/3b5ac92dbc7fc13bfe89087c2ae80653314f845b\"\u003e\u003ccode\u003e3b5ac92\u003c/code\u003e\u003c/a\u003e Add another case, demonstrating legitimate use of parent dir.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/3b16eec9f80db260bd072acdb85d0bd2d530a563\"\u003e\u003ccode\u003e3b16eec\u003c/code\u003e\u003c/a\u003e In tarfile.context, ensure that the default filter honors the data filter to ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/52602fa4dceb8cb0b79f7be98b3c698626eb00bb\"\u003e\u003ccode\u003e52602fa\u003c/code\u003e\u003c/a\u003e Update implementation to have different expectations for different cases.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/e066131ed7a882351a42499c9f72a1313a572c55\"\u003e\u003ccode\u003ee066131\u003c/code\u003e\u003c/a\u003e Convert the repro to a parameterized unit test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/d4c5567280aaba7fef8521dccedc49e2cb06ebc6\"\u003e\u003ccode\u003ed4c5567\u003c/code\u003e\u003c/a\u003e 👹 Feed the hobgoblins (delint).\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jaraco/jaraco.context/compare/v6.0.1...v6.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jaraco-functools` from 4.1.0 to 4.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jaraco/jaraco.functools/blob/main/NEWS.rst\"\u003ejaraco-functools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev4.4.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd noop.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev4.3.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd none_as function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev4.2.1\u003c/h1\u003e\n\u003cp\u003eNo significant changes.\u003c/p\u003e\n\u003ch1\u003ev4.2.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd 'passthrough' function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded missing \u003ccode\u003esplat\u003c/code\u003e in stubs -- by :user:\u003ccode\u003eAvasam\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/jaraco/jaraco.functools/issues/29\"\u003e#29\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/jaraco/jaraco.functools/commit/b57bb859e09f10f1e2ad7e64e9d71723793517f2\"\u003e\u003ccode\u003eb57bb85\u003c/code\u003e\u003c/a\u003e Finalize\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/21bcec01fb9104296737b6ab2a7ac61d5ed68cb0\"\u003e\u003ccode\u003e21bcec0\u003c/code\u003e\u003c/a\u003e Add noop.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/105d8ca2a61e703881d60302c45a31706f441453\"\u003e\u003ccode\u003e105d8ca\u003c/code\u003e\u003c/a\u003e 👹 Feed the hobgoblins (delint).\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/7f0b09aebbffd846374b2dd886035bb780d9ab20\"\u003e\u003ccode\u003e7f0b09a\u003c/code\u003e\u003c/a\u003e Merge \u003ca href=\"https://github.com/jaraco/skeleton\"\u003ehttps://github.com/jaraco/skeleton\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/8f3d95e7db0114e26e57dd95932b141ead74f7c5\"\u003e\u003ccode\u003e8f3d95e\u003c/code\u003e\u003c/a\u003e Pin mypy on PyPy.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/d47a969ed4567bbdee26034ccaaa8b8169f44fcf\"\u003e\u003ccode\u003ed47a969\u003c/code\u003e\u003c/a\u003e Specify the directory for news fragments.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/9f4e0e2849659969577f40be40cabe026dd5fb0f\"\u003e\u003ccode\u003e9f4e0e2\u003c/code\u003e\u003c/a\u003e Finalize\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/680b9aeed7c2f22f7a662b8c87af013d6ec4a076\"\u003e\u003ccode\u003e680b9ae\u003c/code\u003e\u003c/a\u003e Add none_as function.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/8c5810ed39f431598f8498499e7e8fa38a8ed455\"\u003e\u003ccode\u003e8c5810e\u003c/code\u003e\u003c/a\u003e\u003ccode\u003ejaraco/skeleton#177\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/04ff5549ee93f907bcebb1db570ad291ae55fd29\"\u003e\u003ccode\u003e04ff554\u003c/code\u003e\u003c/a\u003e\u003ccode\u003ejaraco/skeleton#181\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jaraco/jaraco.functools/compare/v4.1.0...v4.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jinja2` from 3.1.5 to 3.1.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/jinja/releases\"\u003ejinja2's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.6\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.6 security release, which fixes security issues 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/Jinja2/3.1.6/\"\u003ehttps://pypi.org/project/Jinja2/3.1.6/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\"\u003ehttps://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup, allowing the sandbox to apply its checks. \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\"\u003ehttps://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\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/jinja/blob/main/CHANGES.rst\"\u003ejinja2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.6\u003c/h2\u003e\n\u003cp\u003eReleased 2025-03-05\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup,\nallowing the sandbox to apply its checks. :ghsa:\u003ccode\u003ecpwx-vrp4-4pq7\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/jinja/commit/15206881c006c79667fe5154fe80c01c65410679\"\u003e\u003ccode\u003e1520688\u003c/code\u003e\u003c/a\u003e release version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/90457bbf33b8662926ae65cdde4c4c32e756e403\"\u003e\u003ccode\u003e90457bb\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/065334d1ee5b7210e1a0a93c37238c86858f2af7\"\u003e\u003ccode\u003e065334d\u003c/code\u003e\u003c/a\u003e attr filter uses env.getattr\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/033c20015c7ca899ab52eb921bb0f08e6d3dd145\"\u003e\u003ccode\u003e033c200\u003c/code\u003e\u003c/a\u003e start version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/bc68d4efa99c5f77334f0e519628558059ae8c35\"\u003e\u003ccode\u003ebc68d4e\u003c/code\u003e\u003c/a\u003e use global contributing guide (\u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2070\"\u003e#2070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/247de5e0c5062a792eb378e50e13e692885ee486\"\u003e\u003ccode\u003e247de5e\u003c/code\u003e\u003c/a\u003e use global contributing guide\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/ab8218c7a1b66b62e0ad6b941bd514e3a64a358f\"\u003e\u003ccode\u003eab8218c\u003c/code\u003e\u003c/a\u003e use project advisory link instead of global\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/b4ffc8ff299dfd360064bea4cd2f862364601ad2\"\u003e\u003ccode\u003eb4ffc8f\u003c/code\u003e\u003c/a\u003e release version 3.1.5 (\u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2066\"\u003e#2066\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pallets/jinja/compare/3.1.5...3.1.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `keyring` from 25.6.0 to 25.7.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jaraco/keyring/blob/main/NEWS.rst\"\u003ekeyring's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev25.7.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImproved support for KWallet 6. (\u003ca href=\"https://redirect.github.com/jaraco/keyring/issues/728\"\u003e#728\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved cruft from Python 3.8. (\u003ca href=\"https://redirect.github.com/jaraco/keyring/issues/722\"\u003e#722\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/jaraco/keyring/commit/38c040133559682902f25fe96496756ee6849820\"\u003e\u003ccode\u003e38c0401\u003c/code\u003e\u003c/a\u003e Finalize\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/keyring/commit/e5b7d2a20931fa7f4d53e28eb5dffceb2e82ba6b\"\u003e\u003ccode\u003ee5b7d2a\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Disable type checking on filter call. Fixes \u003ca href=\"https://redirect.github.com/jaraco/keyring/issues/659\"\u003e#659\u003c/a\u003e.\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/keyring/commit/2ce2d465050d73db8b1b7662c4e53c7b6fa7aafc\"\u003e\u003ccode\u003e2ce2d46\u003c/code\u003e\u003c/a\u003e Add news fragment.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/keyring/commit/4bb5ece9a6959ee71ec464595f64e88951d00fb6\"\u003e\u003ccode\u003e4bb5ece\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jaraco/keyring/issues/722\"\u003e#722\u003c/a\u003e from hugovk/rm-3.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/keyring/commit/d7c0aa4e1dbfcde3064c1448dc1fd09c76e93d1d\"\u003e\u003ccode\u003ed7c0aa4\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into rm-3.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/keyring/commit/ea1d763bfd80bf7cedd95fb040d38fc1d29c3e87\"\u003e\u003ccode\u003eea1d763\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jaraco/keyring/issues/721\"\u003e#721\u003c/a\u003e from hugovk/fix-tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/keyring/commit/30eea9d7769b167be0667ea3aa3722c762e20659\"\u003e\u003ccode\u003e30eea9d\u003c/code\u003e\u003c/a\u003e Merge \u003ca href=\"https://github.com/jaraco/skeleton\"\u003ehttps://github.com/jaraco/skeleton\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/keyring/commit/fb6e52cf3f511242f0a9ff2441eb7e29c67f7268\"\u003e\u003ccode\u003efb6e52c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jaraco/keyring/issues/724\"\u003e#724\u003c/a\u003e from dachucky/patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/keyring/commit/9ff845920c4c72031343b17c6a3d605e6247f081\"\u003e\u003ccode\u003e9ff8459\u003c/code\u003e\u003c/a\u003e Generalize the guidance around tox.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/keyring/commit/e7fbfa76a1f675bede0f5654e99add3a0cd66370\"\u003e\u003ccode\u003ee7fbfa7\u003c/code\u003e\u003c/a\u003e Prefer imperative third-person voice.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jaraco/keyring/compare/v25.6.0...v25.7.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 `mkdocs-autorefs` from 1.4.3 to 1.4.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mkdocstrings/autorefs/releases\"\u003emkdocs-autorefs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/mkdocstrings/autorefs/releases/tag/1.4.4\"\u003e1.4.4\u003c/a\u003e - 2026-02-10\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/mkdocstrings/autorefs/compare/1.4.3...1.4.4\"\u003eCompare with 1.4.3\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eCode Refactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRegister headings with a Markdown processor rather than the \u003ccode\u003eon_page_content\u003c/code\u003e hook and the table of contents (\u003ca href=\"https://github.com/mkdocstrings/autorefs/commit/17665e2b2bd265e1029e36597fce11b3f78f2ae0\"\u003e17665e2\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mkdocstrings/autorefs/blob/main/CHANGELOG.md\"\u003emkdocs-autorefs's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/mkdocstrings/autorefs/releases/tag/1.4.4\"\u003e1.4.4\u003c/a\u003e - 2026-02-10\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/mkdocstrings/autorefs/compare/1.4.3...1.4.4\"\u003eCompare with 1.4.3\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eCode Refactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRegister headings with a Markdown processor rather than the \u003ccode\u003eon_page_content\u003c/code\u003e hook and the table of contents (\u003ca href=\"https://github.com/mkdocstrings/autorefs/commit/17665e2b2bd265e1029e36597fce11b3f78f2ae0\"\u003e17665e2\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/autorefs/commit/73c897a0d486d84d54b460b86f9a0a3d435f62f8\"\u003e\u003ccode\u003e73c897a\u003c/code\u003e\u003c/a\u003e chore: Prepare release 1.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/autorefs/commit/1753b0a9e0bd5e26a153875c8f96004a1288dd7e\"\u003e\u003ccode\u003e1753b0a\u003c/code\u003e\u003c/a\u003e ci: Ignore unused type ignore comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/autorefs/commit/62cfc22dc2a7b518d3685183faadbb1a66e11bd8\"\u003e\u003ccode\u003e62cfc22\u003c/code\u003e\u003c/a\u003e chore: Symbol reorganization\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/autorefs/commit/17665e2b2bd265e1029e36597fce11b3f78f2ae0\"\u003e\u003ccode\u003e17665e2\u003c/code\u003e\u003c/a\u003e refactor: Register headings with a Markdown processor rather than the `on_pag...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/autorefs/commit/4664b97da4d686cb2814e74bcfa3e011477f3fd1\"\u003e\u003ccode\u003e4664b97\u003c/code\u003e\u003c/a\u003e ci: Ignore type warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/autorefs/commit/632d8e9ea79d71dc9e45e00b9bbb1bcc4db3e6c2\"\u003e\u003ccode\u003e632d8e9\u003c/code\u003e\u003c/a\u003e chore: Update YORE comment\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/autorefs/commit/3e9bc2fe5f7778a40a6b8752f5bd9f8a8a40aea1\"\u003e\u003ccode\u003e3e9bc2f\u003c/code\u003e\u003c/a\u003e docs: Explain how to find out the anchor of a heading\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/mkdocstrings/autorefs/compare/1.4.3...1.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `more-itertools` from 10.5.0 to 10.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/more-itertools/more-itertools/releases\"\u003emore-itertools's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 10.8.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix typo in version history for 10.7.0 by bbayles in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/981\"\u003emore-itertools/more-itertools#981\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIssue 980: Fix variable names: iterable vs iterator by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/982\"\u003emore-itertools/more-itertools#982\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove docstrings for dft, idft, and multinomial by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/983\"\u003emore-itertools/more-itertools#983\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a note about polynomial endianness by bbayles in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/984\"\u003emore-itertools/more-itertools#984\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SPDX license identifier by cdce8p in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/978\"\u003emore-itertools/more-itertools#978\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove setup.py file by cdce8p in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/979\"\u003emore-itertools/more-itertools#979\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude \u003ccode\u003ederangements\u003c/code\u003e by itself by bbayles in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/985\"\u003emore-itertools/more-itertools#985\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd derangements by debruijn in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/946\"\u003emore-itertools/more-itertools#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIssue 986: argmin and argmax by bbayles in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/988\"\u003emore-itertools/more-itertools#988\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSplit-out the integer math functions by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/990\"\u003emore-itertools/more-itertools#990\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSpelling, grammar, punctuation, and usage by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/991\"\u003emore-itertools/more-itertools#991\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix the return type of more_itertools.batched by qobilidop in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertool...\n\n_Description has been truncated_","html_url":"https://github.com/thesunnysinha/vm_tool/pull/8","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/thesunnysinha%2Fvm_tool/issues/8","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/8/packages"},{"uuid":"3917033024","node_id":"PR_kwDOObAYC87ChDKj","number":412,"state":"closed","title":"chore(deps): bump the python-dependencies group with 26 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-02-16T15:00:59.000Z","author_association":null,"state_reason":null,"created_at":"2026-02-09T15:45:38.000Z","updated_at":"2026-02-16T15:01:01.000Z","time_to_close":602121,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-dependencies","update_count":26,"packages":[{"name":"django-allauth","old_version":"65.14.0","new_version":"65.14.1","repository_url":"https://github.com/sponsors/pennersr"},{"name":"django-crispy-forms","old_version":"2.4","new_version":"2.5","repository_url":"https://github.com/django-crispy-forms/django-crispy-forms"},{"name":"markdown","old_version":"3.10.1","new_version":"3.10.2","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"django-tinymce","old_version":"4.1.0","new_version":"5.0.0","repository_url":"https://github.com/jazzband/django-tinymce"},{"name":"asgiref","old_version":"3.8.1","new_version":"3.11.1","repository_url":"https://github.com/django/asgiref"},{"name":"asttokens","old_version":"3.0.0","new_version":"3.0.1","repository_url":"https://github.com/gristlabs/asttokens"},{"name":"billiard","old_version":"4.2.2","new_version":"4.2.4","repository_url":"https://github.com/celery/billiard"},{"name":"certifi","old_version":"2025.4.26","new_version":"2026.1.4","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.4.2","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.2.1","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"cryptography","old_version":"44.0.3","new_version":"46.0.4","repository_url":"https://github.com/pyca/cryptography"},{"name":"django-appconf","old_version":"1.1.0","new_version":"1.2.0","repository_url":"https://github.com/django-compressor/django-appconf"},{"name":"executing","old_version":"2.2.0","new_version":"2.2.1","repository_url":"https://github.com/alexmojaki/executing"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"matplotlib-inline","old_version":"0.1.7","new_version":"0.2.1","repository_url":"https://github.com/ipython/matplotlib-inline"},{"name":"packaging","old_version":"25.0","new_version":"26.0","repository_url":"https://github.com/pypa/packaging"},{"name":"parso","old_version":"0.8.4","new_version":"0.8.5","repository_url":"https://github.com/davidhalter/parso"},{"name":"prompt-toolkit","old_version":"3.0.51","new_version":"3.0.52","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"pycparser","old_version":"2.22","new_version":"3.0","repository_url":"https://github.com/eliben/pycparser"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"python-fsutil","old_version":"0.15.0","new_version":"0.16.0","repository_url":"https://github.com/fabiocaccamo/python-fsutil"},{"name":"redis","old_version":"6.0.0","new_version":"7.1.0","repository_url":"https://github.com/redis/redis-py"},{"name":"sqlparse","old_version":"0.5.3","new_version":"0.5.5","repository_url":"https://github.com/andialbrecht/sqlparse"},{"name":"tzdata","old_version":"2025.2","new_version":"2025.3","repository_url":"https://github.com/python/tzdata"},{"name":"wcwidth","old_version":"0.2.13","new_version":"0.6.0","repository_url":"https://github.com/jquast/wcwidth"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 26 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [django-allauth](https://github.com/sponsors/pennersr) | `65.14.0` | `65.14.1` |\n| [django-crispy-forms](https://github.com/django-crispy-forms/django-crispy-forms) | `2.4` | `2.5` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.10.1` | `3.10.2` |\n| [django-tinymce](https://github.com/jazzband/django-tinymce) | `4.1.0` | `5.0.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.8.1` | `3.11.1` |\n| [asttokens](https://github.com/gristlabs/asttokens) | `3.0.0` | `3.0.1` |\n| [billiard](https://github.com/celery/billiard) | `4.2.2` | `4.2.4` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.4.26` | `2026.1.4` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.1` | `2.0.0` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.2.1` | `8.3.1` |\n| [cryptography](https://github.com/pyca/cryptography) | `44.0.3` | `46.0.4` |\n| [django-appconf](https://github.com/django-compressor/django-appconf) | `1.1.0` | `1.2.0` |\n| [executing](https://github.com/alexmojaki/executing) | `2.2.0` | `2.2.1` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [matplotlib-inline](https://github.com/ipython/matplotlib-inline) | `0.1.7` | `0.2.1` |\n| [packaging](https://github.com/pypa/packaging) | `25.0` | `26.0` |\n| [parso](https://github.com/davidhalter/parso) | `0.8.4` | `0.8.5` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.51` | `3.0.52` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `3.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [python-fsutil](https://github.com/fabiocaccamo/python-fsutil) | `0.15.0` | `0.16.0` |\n| [redis](https://github.com/redis/redis-py) | `6.0.0` | `7.1.0` |\n| [sqlparse](https://github.com/andialbrecht/sqlparse) | `0.5.3` | `0.5.5` |\n| [tzdata](https://github.com/python/tzdata) | `2025.2` | `2025.3` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.2.13` | `0.6.0` |\n\nUpdates `django-allauth` from 65.14.0 to 65.14.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/pennersr/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-crispy-forms` from 2.4 to 2.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/releases\"\u003edjango-crispy-forms's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.5\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eConfirmed support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eConfirmed support for Django 6.0.\u003c/li\u003e\n\u003cli\u003eDropped 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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/blob/main/CHANGELOG.md\"\u003edjango-crispy-forms's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.5 (2025-11-06)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eConfirmed support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eConfirmed support for Django 6.0.\u003c/li\u003e\n\u003cli\u003eDropped 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/django-crispy-forms/django-crispy-forms/commit/65fa8ae065638da101851807937bb89ae1b5687e\"\u003e\u003ccode\u003e65fa8ae\u003c/code\u003e\u003c/a\u003e 2.5 Release. (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1424\"\u003e#1424\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/ca4ca14da2aeac3ce934b83861f1b2a558b736fd\"\u003e\u003ccode\u003eca4ca14\u003c/code\u003e\u003c/a\u003e PEP 639 licenses  (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1413\"\u003e#1413\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/aaabe68c0d5a2eee98101ff661b2c5cab28a0777\"\u003e\u003ccode\u003eaaabe68\u003c/code\u003e\u003c/a\u003e Updated pre-commit hook versions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/125dd1632a460b4dd7b1c8ab0738863d0470c2cb\"\u003e\u003ccode\u003e125dd16\u003c/code\u003e\u003c/a\u003e Pyupgrade 3.9+\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/1f9c8ecc24a3159c86219403ae26e7d0c67e15b7\"\u003e\u003ccode\u003e1f9c8ec\u003c/code\u003e\u003c/a\u003e Confirmed support for Python 3.14, Django. Drop support for Python 3.8.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/93cb8c8e817870e19a6c426a3e5716ae748a6535\"\u003e\u003ccode\u003e93cb8c8\u003c/code\u003e\u003c/a\u003e Correct names in special thanks section (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1421\"\u003e#1421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/e327548f80a531bba5ac1049b73108a0681eebf4\"\u003e\u003ccode\u003ee327548\u003c/code\u003e\u003c/a\u003e Added security policy. (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1419\"\u003e#1419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/64813429d54b39c10d7bb7ad2db4ab0e0e2c418f\"\u003e\u003ccode\u003e6481342\u003c/code\u003e\u003c/a\u003e Enabled GitHub code of conduct (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1416\"\u003e#1416\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/dabd719113c8e7e43fa8d5e254bfa938d169e6e8\"\u003e\u003ccode\u003edabd719\u003c/code\u003e\u003c/a\u003e Add Project Logo. (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1415\"\u003e#1415\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/compare/2.4...2.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `markdown` from 3.10.1 to 3.10.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Python-Markdown/markdown/releases\"\u003emarkdown's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 3.10.2\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a regression related to comment handling (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1590\"\u003e#1590\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMore reliable fix for \u003ccode\u003e\u0026lt;/\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1593\"\u003e#1593\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/Python-Markdown/markdown/blob/master/docs/changelog.md\"\u003emarkdown's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.10.2] - 2026-02-09\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a regression related to comment handling (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1590\"\u003e#1590\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMore reliable fix for \u003ccode\u003e\u0026lt;/\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1593\"\u003e#1593\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-Markdown/markdown/commit/e7a0efb3a7c36d6b8005403122705662bc17c904\"\u003e\u003ccode\u003ee7a0efb\u003c/code\u003e\u003c/a\u003e Bump version to 3.10.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/630183336bda57c258becc3ed229105481876a7e\"\u003e\u003ccode\u003e6301833\u003c/code\u003e\u003c/a\u003e Document HTML sanitation policy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/7f29f1a69d236f5bb11645c2fa03fcf701487c8c\"\u003e\u003ccode\u003e7f29f1a\u003c/code\u003e\u003c/a\u003e More reliable fix for \u003ccode\u003e\u0026lt;/\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/c4386475a6b6daea43b7d7717add4271adc9a3c1\"\u003e\u003ccode\u003ec438647\u003c/code\u003e\u003c/a\u003e Fix regression of special comments\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Python-Markdown/markdown/compare/3.10.1...3.10.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-tinymce` from 4.1.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/jazzband/django-tinymce/blob/master/CHANGELOG.rst\"\u003edjango-tinymce's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e5.0.0 (2025-10-21)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade embedded TinyMCE from 6.8.4 to 7.8.0.\u003c/li\u003e\n\u003cli\u003eDrop support for Django \u0026lt; 4.2.\u003c/li\u003e\n\u003cli\u003eAdd support for Django 5.1 and 5.2.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.8 and add support for Python 3.13.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003etemplate\u003c/code\u003e plugin has been removed in TinyMCE 7.\u003c/li\u003e\n\u003cli\u003eImproved styling of textareas with the AdminTinyMCE widget.\u003c/li\u003e\n\u003cli\u003eIf present, a \u003ccode\u003emedia_url_resolver\u003c/code\u003e function is evaluated during the JS setup\nphase.\u003c/li\u003e\n\u003cli\u003eDocumentation for \u003ccode\u003eimage_list\u003c/code\u003e and \u003ccode\u003elink_list\u003c/code\u003e was improved.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e4.0.1 (2024-06-21)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade embedded TinyMCE from 6.8.3 to 6.8.4\u003c/li\u003e\n\u003cli\u003eRenamed toolbar elements (namely \u003ccode\u003eformatselect\u003c/code\u003e is now \u003ccode\u003eblocks\u003c/code\u003e) to follow\nTinyMCE 6 renames. Also removed from the docs examples some buttons only\navailable through paid subscriptions (\u003ca href=\"https://redirect.github.com/jazzband/django-tinymce/issues/470\"\u003e#470\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e4.0.0 (2024-03-27)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade embedded TinyMCE from 5.10.7 to 6.8.3\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe spellchecker plugin is gone (including \u003ccode\u003eUSE_SPELLCHECKER\u003c/code\u003e setting). Use\nthe \u003ccode\u003ebrowser_spellcheck\u003c/code\u003e TinyMCE option (activated by default) to enable\nbrowser-based spellchecking.\u003c/p\u003e\n\u003ch1\u003e3.7.1 (2024-02-06)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eReintroduce the \u003ccode\u003eMANIFEST.in\u003c/code\u003e file to properly build the package.\nRelease 3.7.0 on PyPI was unusable (\u003ca href=\"https://redirect.github.com/jazzband/django-tinymce/issues/454\"\u003e#454\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.7.0 (2024-02-06)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Django 2.2, 4.0, and 4.1.\u003c/li\u003e\n\u003cli\u003eAdd support for Django 4.2 and 5.0.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.7 and add support for Python 3.11 and 3.12.\u003c/li\u003e\n\u003cli\u003eNew \u003ccode\u003epyproject.toml\u003c/code\u003e replaces the legacy \u003ccode\u003esetup.py\u003c/code\u003e project config.\u003c/li\u003e\n\u003cli\u003eUse staticfiles storage API to find tinymce location (\u003ca href=\"https://redirect.github.com/jazzband/django-tinymce/issues/420\"\u003e#420\u003c/a\u003e). It was already\ndone in 3.6.0, but had to be reverted in 3.6.1 (see \u003ca href=\"https://redirect.github.com/jazzband/django-tinymce/issues/430\"\u003e#430\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed selector usage for elements with \u003ccode\u003e__prefix__\u003c/code\u003e (typically inlines).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eTINYMCE_JS_ROOT\u003c/code\u003e setting has been removed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e3.6.1 (2023-03-20)\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/django-tinymce/commit/6b413f4e9bdedb9268c8ef25886fdfc994780097\"\u003e\u003ccode\u003e6b413f4\u003c/code\u003e\u003c/a\u003e Prepare release for 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/django-tinymce/commit/a5dd6ff70cc76586d42c364456163b6a3082e42e\"\u003e\u003ccode\u003ea5dd6ff\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jazzband/django-tinymce/issues/498\"\u003e#498\u003c/a\u003e from jazzband/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/django-tinymce/commit/daf55516f0d5801dd731b1f581f812b6dd9d74ee\"\u003e\u003ccode\u003edaf5551\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/django-tinymce/commit/0e5987de48110e89e788a7f5e3eee710f1f78e45\"\u003e\u003ccode\u003e0e5987d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/django-tinymce/commit/fb9785137833640a089a84bbfd25446b16dc0399\"\u003e\u003ccode\u003efb97851\u003c/code\u003e\u003c/a\u003e Update TinyMCE image_list and link_list documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/django-tinymce/commit/685236d36af37afbb8e069099879b3489bbe8216\"\u003e\u003ccode\u003e685236d\u003c/code\u003e\u003c/a\u003e Add changelog notes for TinyMCE 7 upgrade.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/django-tinymce/commit/7e7f11d43227e5cdcbdbee289c15b85739d37a73\"\u003e\u003ccode\u003e7e7f11d\u003c/code\u003e\u003c/a\u003e Update TinyMCE version number in README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/django-tinymce/commit/2ef037cca2736753de709c106722eef612b75db7\"\u003e\u003ccode\u003e2ef037c\u003c/code\u003e\u003c/a\u003e Update package license information\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/django-tinymce/commit/d0822830a7e6171b82960b7eb5155f1579bb8aac\"\u003e\u003ccode\u003ed082283\u003c/code\u003e\u003c/a\u003e Import latest language pack for TinyMCE 7.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/django-tinymce/commit/44ab9a710b359d8b204ae1d69cb7f16d0d24b72c\"\u003e\u003ccode\u003e44ab9a7\u003c/code\u003e\u003c/a\u003e Import TinyMCE 7.8.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jazzband/django-tinymce/compare/4.1.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 `asgiref` from 3.8.1 to 3.11.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django/asgiref/blob/main/CHANGELOG.txt\"\u003easgiref's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.11.1 (2026-02-03)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSECURITY FIX CVE-2025-14550: There was a potential DoS vector for users of\nthe \u003ccode\u003easgiref.wsgi.WsgiToAsgi\u003c/code\u003e adapter. Malicious requests, including an unreasonably\nlarge number of values for the same header, could lead to resource exhaustion\nwhen building the WSGI environment.\u003c/p\u003e\n\u003cp\u003eTo mitigate this, the algorithm is changed to be more efficient, and\n\u003ccode\u003eWsgiToAsgi\u003c/code\u003e gains a new optional \u003ccode\u003eduplicate_header_limit\u003c/code\u003e parameter,\nwhich defaults to 100. This specifies the number of times a single header may\nbe repeated before the request is rejected as malformed.\u003c/p\u003e\n\u003cp\u003eYou may override \u003ccode\u003eduplicate_header_limit\u003c/code\u003e when configuring your application::\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eapplication = WsgiToAsgi(wsgi_app, duplicate_header_limit=200)\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSet \u003ccode\u003eduplicate_header_limit=None\u003c/code\u003e if you wish to disable this check.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed a regression in 3.11.0 in \u003ccode\u003esync_to_async\u003c/code\u003e when wrapping a callable\nwith an attribute named \u003ccode\u003econtext\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/537\"\u003e#537\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\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\u003eFixed deletion of Local values affecting other contexts. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/523\"\u003e#523\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/d97a7339524c89798c510de6c142b663fe40400c\"\u003e\u003ccode\u003ed97a733\u003c/code\u003e\u003c/a\u003e Releasing 3.11.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/a50968a52a50a0bcb0f339ba41e8b52cbf74c604\"\u003e\u003ccode\u003ea50968a\u003c/code\u003e\u003c/a\u003e CVE-2025-14550: Fixed duplicate header handling in WsgiToAsgi.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/0fb85a4352b079ab8191cc593865bd99c987141f\"\u003e\u003ccode\u003e0fb85a4\u003c/code\u003e\u003c/a\u003e Fixed sync_to_async wrapping callables with attribute named \u003ccode\u003econtext\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/2b28409ab83b3e4cf6fed9019403b71f8d7d1c51\"\u003e\u003ccode\u003e2b28409\u003c/code\u003e\u003c/a\u003e Updated Hypercorn homepage URL (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/539\"\u003e#539\u003c/a\u003e)\u003c/li\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\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/asgiref/compare/3.8.1...3.11.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asttokens` from 3.0.0 to 3.0.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/bdbf396fc0e006912ba82f1137dfd6b2d5aa9af2\"\u003e\u003ccode\u003ebdbf396\u003c/code\u003e\u003c/a\u003e Update mypy; add 3.14 to the CI; drop python 3.8 support (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/167\"\u003e#167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/f859c055e8453650e1987c5aefaaec36582d3a07\"\u003e\u003ccode\u003ef859c05\u003c/code\u003e\u003c/a\u003e Add tests for astroid v2, v3, and v4 to the CI (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/166\"\u003e#166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/84ef059ba28d08816d3d881e363b9ed42bbeae3a\"\u003e\u003ccode\u003e84ef059\u003c/code\u003e\u003c/a\u003e Adapt asttokens for astroid 4.x (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/165\"\u003e#165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/9db9335648659520c7c8453bc39550fa4f95d539\"\u003e\u003ccode\u003e9db9335\u003c/code\u003e\u003c/a\u003e Various links improvements (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3371ebf7f48f6a731d409fffd6ba235e6a95d85b\"\u003e\u003ccode\u003e3371ebf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/161\"\u003e#161\u003c/a\u003e from gristlabs/dependabot/pip/docs/requests-2.32.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3a60115d3efdb01efc8a6442b59fdd0071518e70\"\u003e\u003ccode\u003e3a60115\u003c/code\u003e\u003c/a\u003e Bump requests from 2.32.2 to 2.32.4 in /docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/584b51c6c084455ad4597886657783d1b661ddfa\"\u003e\u003ccode\u003e584b51c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/160\"\u003e#160\u003c/a\u003e from gristlabs/dependabot/pip/docs/urllib3-2.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3e9d703323ce94987bf9e030bd010eae13fa15b4\"\u003e\u003ccode\u003e3e9d703\u003c/code\u003e\u003c/a\u003e Bump urllib3 from 2.2.2 to 2.5.0 in /docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/64d3f7c3637775fef832a9a9cdb78ec02da494e6\"\u003e\u003ccode\u003e64d3f7c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/158\"\u003e#158\u003c/a\u003e from gristlabs/dependabot/pip/docs/jinja2-3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/9b5fb1abfb171cfb1f01c2d996cbd31e9d1f0660\"\u003e\u003ccode\u003e9b5fb1a\u003c/code\u003e\u003c/a\u003e Bump jinja2 from 3.1.4 to 3.1.6 in /docs\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gristlabs/asttokens/compare/v3.0.0...v3.0.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `billiard` from 4.2.2 to 4.2.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/celery/billiard/releases\"\u003ebilliard's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.2.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEliminate usage of 'return' in 'finally' blocks by \u003ca href=\"https://github.com/torarvid\"\u003e\u003ccode\u003e@​torarvid\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/438\"\u003ecelery/billiard#438\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for release: v4.2.4 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/billiard/pull/439\"\u003ecelery/billiard#439\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/torarvid\"\u003e\u003ccode\u003e@​torarvid\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/438\"\u003ecelery/billiard#438\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/billiard/compare/v4.2.3...v4.2.4\"\u003ehttps://github.com/celery/billiard/compare/v4.2.3...v4.2.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.2.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure that task results are delivered during pool 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/billiard/pull/435\"\u003ecelery/billiard#435\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for release: v4.2.3 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/billiard/pull/436\"\u003ecelery/billiard#436\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/weetster\"\u003e\u003ccode\u003e@​weetster\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/435\"\u003ecelery/billiard#435\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/billiard/compare/v4.2.2...v4.2.3\"\u003ehttps://github.com/celery/billiard/compare/v4.2.2...v4.2.3\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/celery/billiard/blob/main/CHANGES.txt\"\u003ebilliard's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.2.4 - 2025-11-30\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEliminate usage of 'return' in 'finally' blocks (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/438\"\u003e#438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrepare for release: v4.2.4 (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/439\"\u003e#439\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.2.3 - 2025-11-16\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure that task results are delivered during pool shutdown (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/435\"\u003e#435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrepare for release: v4.2.3 (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/436\"\u003e#436\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/celery/billiard/commit/69c2f296c2b36622a90c548f26c940712cb9a1df\"\u003e\u003ccode\u003e69c2f29\u003c/code\u003e\u003c/a\u003e Prepare for release: v4.2.4 (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/439\"\u003e#439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/billiard/commit/973c773fee4ccd1ab1151d0801905176b284075d\"\u003e\u003ccode\u003e973c773\u003c/code\u003e\u003c/a\u003e Eliminate usage of 'return' in 'finally' blocks (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/438\"\u003e#438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/billiard/commit/51153949934c247ac23de990eee4073adcf08083\"\u003e\u003ccode\u003e5115394\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/437\"\u003e#437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/billiard/commit/e8f51d1995cf251787001683dbf443098d8b0ed7\"\u003e\u003ccode\u003ee8f51d1\u003c/code\u003e\u003c/a\u003e Prepare for release: v4.2.3 (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/436\"\u003e#436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/billiard/commit/8603172ab818f5069dd191dfaa3eb0a7653c6dda\"\u003e\u003ccode\u003e8603172\u003c/code\u003e\u003c/a\u003e Ensure that task results are delivered during pool shutdown (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/435\"\u003e#435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/billiard/commit/849a3e8414cae0ba953d7c164129c1320e2a241d\"\u003e\u003ccode\u003e849a3e8\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action from 3 to 4 in the github-actions group\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/celery/billiard/compare/v4.2.2...v4.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 2026.1.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\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\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/27ca98ad845ee6d130a88301622c137893f71620\"\u003e\u003ccode\u003e27ca98a\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7.0.9 to 7.0.11 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/56c59a63909cfd3162b37e7bc16956e64df0f737\"\u003e\u003ccode\u003e56c59a6\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.0 to 6.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ae0021cd43a77bfba67d20a041469cdf6996570e\"\u003e\u003ccode\u003eae0021c\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.0.0 to 6.1.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/380\"\u003e#380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddf5d0b5d2a3d55fd92a79f141dbb5e074caf924\"\u003e\u003ccode\u003eddf5d0b\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5.0.1 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.04.26...2026.01.04\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cffi` from 1.17.1 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only) - huge thanks to the folks at Quansight Labs for all the work to get this one sorted!\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.0.0b1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only).\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/6366c01d84e9a78e7e85f12ebe9760ba5d19b6d3\"\u003e\u003ccode\u003e6366c01\u003c/code\u003e\u003c/a\u003e release 2.0.0 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/95c847663aec401e4003927a274e4de9b8595f4f\"\u003e\u003ccode\u003e95c8476\u003c/code\u003e\u003c/a\u003e 2.0.0 post beta backports (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/195cbda66b6be9297ef6d584644e50cfdcca4e8a\"\u003e\u003ccode\u003e195cbda\u003c/code\u003e\u003c/a\u003e Release 2.0.0b1 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b4bbe7940d3f76027534db1aecbae9b61c35221a\"\u003e\u003ccode\u003eb4bbe79\u003c/code\u003e\u003c/a\u003e fix version test to support beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/7ed073de66e713cf791b6fdfa23685c81fdfd6ad\"\u003e\u003ccode\u003e7ed073d\u003c/code\u003e\u003c/a\u003e Add support for the free-threaded build (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/178\"\u003e#178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/67a170dc7972dc9361743690b38da3d963b200ef\"\u003e\u003ccode\u003e67a170d\u003c/code\u003e\u003c/a\u003e Change the license from MIT to MIT-no-attribution, which is the same without ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/92645ec9329feb03e3fa86240b40fe0fc37469d1\"\u003e\u003ccode\u003e92645ec\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support/testing (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/177\"\u003e#177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/2b81170583a898478a6996c9705d8c38ab7f73a1\"\u003e\u003ccode\u003e2b81170\u003c/code\u003e\u003c/a\u003e doc: update test commands in Section Testing/development tips (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/25172b84cf51cf58241f074ccd1efd9c7648cb43\"\u003e\u003ccode\u003e25172b8\u003c/code\u003e\u003c/a\u003e doc: update year (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b57a92c03eb2078a99c900519a37d18b4d52324f\"\u003e\u003ccode\u003eb57a92c\u003c/code\u003e\u003c/a\u003e issue 147: force-compute nested structs before parent structs.  Occurs mainly...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.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 `click` from 8.2.1 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.2.1...8.3.1\"\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.3 to 46.0.4\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\u003e46.0.4 - 2026-01-27\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* `Dropped support for win_arm64 wheels`_.\n* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.5.\n\u003cp\u003e.. _v46-0-3:\u003c/p\u003e\n\u003cp\u003e46.0.3 - 2025-10-15\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed compilation when using LibreSSL 4.2.0.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v46-0-2:\u003c/p\u003e\n\u003cp\u003e46.0.2 - 2025-09-30\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.4.\n\u003cp\u003e.. _v46-0-1:\u003c/p\u003e\n\u003cp\u003e46.0.1 - 2025-09-16\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed an issue where users installing via \u003ccode\u003epip\u003c/code\u003e on Python 3.14 development\nversions would not properly install a dependency.\u003c/li\u003e\n\u003cli\u003eFixed an issue building the free-threaded macOS 3.14 wheels.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v46-0-0:\u003c/p\u003e\n\u003cp\u003e46.0.0 - 2025-09-16\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* **BACKWARDS INCOMPATIBLE:** Support for Python 3.7 has been removed.\n* Support for OpenSSL \u0026lt; 3.0 is deprecated and will be removed in the next\n  release.\n* Support for ``x86_64`` macOS (including publishing wheels) is deprecated\n  and will be removed in two releases. We will switch to publishing an\n  ``arm64`` only wheel for macOS.\n* Support for 32-bit Windows (including publishing wheels) is deprecated\n  and will be removed in two releases. Users should move to a 64-bit\n  Python installation.\n* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.3.\n* We now build ``ppc64le`` ``manylinux`` wheels and publish them to PyPI.\n* We now build ``win_arm64`` (Windows on Arm) wheels and publish them to PyPI.\n* Added support for free-threaded Python 3.14.\n* Removed the deprecated ``get_attribute_for_oid`` method on\n  :class:`~cryptography.x509.CertificateSigningRequest`. Users should use\n  :meth:`~cryptography.x509.Attributes.get_attribute_for_oid` instead.\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/pyca/cryptography/commit/e6f44fc8e6391f05d719fb9d369692325b87a471\"\u003e\u003ccode\u003ee6f44fc\u003c/code\u003e\u003c/a\u003e bump for 46.0.4 and drop win arm64 due to CI issues (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14217\"\u003e#14217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/c0af4dd7b75921bbe9f1d41a03dbd4b64a9e3403\"\u003e\u003ccode\u003ec0af4dd\u003c/code\u003e\u003c/a\u003e release 46.0.3 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13681\"\u003e#13681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/99efe5ad150a56efadafacaffd0e3ee319373904\"\u003e\u003ccode\u003e99efe5a\u003c/code\u003e\u003c/a\u003e bump version for 46.0.2 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13531\"\u003e#13531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e735cfc27502320101c130335c556394a125ba52\"\u003e\u003ccode\u003ee735cfc\u003c/code\u003e\u003c/a\u003e release 46.0.1 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13450\"\u003e#13450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/4e457ffba43a6d87efc63c33041e2081438dd8a4\"\u003e\u003ccode\u003e4e457ff\u003c/code\u003e\u003c/a\u003e Explicitly specify python in mac uv build invocation (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13447\"\u003e#13447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/2726efdb6d67f1c90cf9c6062d9fe051965586f8\"\u003e\u003ccode\u003e2726efd\u003c/code\u003e\u003c/a\u003e Depend on CFFI 2.0.0 or newer on Python \u0026gt; 3.8 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13448\"\u003e#13448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/62230623d183706632c0eb7822c96ac95e3710a8\"\u003e\u003ccode\u003e6223062\u003c/code\u003e\u003c/a\u003e release 46.0.0 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13446\"\u003e#13446\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/563c4915b0931455706f761a4579c26698824eae\"\u003e\u003ccode\u003e563c491\u003c/code\u003e\u003c/a\u003e Update comment for pyopenssl-release tag (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13445\"\u003e#13445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/d2f6f7faced35b73277bc624ff496f8af696b172\"\u003e\u003ccode\u003ed2f6f7f\u003c/code\u003e\u003c/a\u003e Bump downstream dependencies in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13439\"\u003e#13439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e7ab02bd679d0b4f55d93486fe27e62554ef15d4\"\u003e\u003ccode\u003ee7ab02b\u003c/code\u003e\u003c/a\u003e we'll ship this with 3.5.3 why not (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13442\"\u003e#13442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/cryptography/compare/44.0.3...46.0.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-appconf` from 1.1.0 to 1.2.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-compressor/django-appconf/blob/develop/docs/changelog.rst\"\u003edjango-appconf's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.2.0 (2025-11-08)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14 and Django 6.0\u003c/li\u003e\n\u003cli\u003eDropped support for EOL Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-compressor/django-appconf/commit/0329fd859713ad14a54ad8c92de4e0ac51f30835\"\u003e\u003ccode\u003e0329fd8\u003c/code\u003e\u003c/a\u003e Added support for Python 3.14 and Django 6.0. (\u003ca href=\"https://redirect.github.com/django-compressor/django-appconf/issues/106\"\u003e#106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-compressor/django-appconf/commit/cda368cce42ae3eb9c108494808ead3212c325b8\"\u003e\u003ccode\u003ecda368c\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/django-compressor/django-appconf/issues/105\"\u003e#105\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-compressor/django-appconf/commit/7cad097eb8c05915f7682e431df22895a733bdf7\"\u003e\u003ccode\u003e7cad097\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 in the github-actions group (\u003ca href=\"https://redirect.github.com/django-compressor/django-appconf/issues/104\"\u003e#104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/django-compressor/django-appconf/compare/v1.1.0...v1.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `executing` from 2.2.0 to 2.2.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/bafb305d96572bc8fb668b6564787bbb4fff2809\"\u003e\u003ccode\u003ebafb305\u003c/code\u003e\u003c/a\u003e Add 3.14 to classifiers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/5ed2ba36c2df94c91fefabd919880ffe061dc0f2\"\u003e\u003ccode\u003e5ed2ba3\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/alexmojaki/executing/issues/97\"\u003e#97\u003c/a\u003e from alexmojaki/3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/28095d447af50c49e154de5a27b9423611462f3d\"\u003e\u003ccode\u003e28095d4\u003c/code\u003e\u003c/a\u003e refactor: review changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/bb09dc677da7988a2c9555878b3727afa995b2c0\"\u003e\u003ccode\u003ebb09dc6\u003c/code\u003e\u003c/a\u003e refactor: some cleanup\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/dabc70ef5cc9a45eb57432822cdcf674af2e1db8\"\u003e\u003ccode\u003edabc70e\u003c/code\u003e\u003c/a\u003e fix: inst.argval can be a tuple for sometimes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/0772f918c432d6451594bcb6ffccba62e32e794c\"\u003e\u003ccode\u003e0772f91\u003c/code\u003e\u003c/a\u003e fix: removed comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/bacc5b699405e6f27d882dd2a71bb0ec30167f37\"\u003e\u003ccode\u003ebacc5b6\u003c/code\u003e\u003c/a\u003e fix: moved verification for CALL_INTRINSIC_2 back to 3.13\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/ec090751a1645cd14bfcb20a79b02371ffd6172b\"\u003e\u003ccode\u003eec09075\u003c/code\u003e\u003c/a\u003e test: added sample_results for 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/9405fed0769af3ee22dd4f433249f6494688638e\"\u003e\u003ccode\u003e9405fed\u003c/code\u003e\u003c/a\u003e fix: handle synthetic code to store annotation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/f09e4cd194aa3480c12a9f5afab3524d2a7222f2\"\u003e\u003ccode\u003ef09e4cd\u003c/code\u003e\u003c/a\u003e fix: TypeVar defaults\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/alexmojaki/executing/compare/v2.2.0...v2.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 `matplotlib-inline` from 0.1.7 to 0.2.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/matplotlib-inline/commit/30bf01b0774d92bbff91a7738b9eef3ba4a55fa6\"\u003e\u003ccode\u003e30bf01b\u003c/code\u003e\u003c/a\u003e Release version 0.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/matplotlib-inline/commit/0237ddd89ab410c49a7b08d4535ad6ce817decd7\"\u003e\u003ccode\u003e0237ddd\u003c/code\u003e\u003c/a\u003e Fix Misc Building issues. (\u003ca href=\"https://redirect.github.com/ipython/matplotlib-inline/issues/52\"\u003e#52\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/matplotlib-inline/commit/6673aa631ccdf68ac52012da43c5d56ea15ffe66\"\u003e\u003ccode\u003e6673aa6\u003c/code\u003e\u003c/a\u003e Docstring of set_matplotlib_formats (\u003ca href=\"https://redirect.github.com/ipython/matplotlib-inline/issues/51\"\u003e#51\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/matplotlib-inline/commit/20f78c4483350eb8fcd71d7a29d91a061ed284ab\"\u003e\u003ccode\u003e20f78c4\u003c/code\u003e\u003c/a\u003e Help string of %config InlineBackend\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/matplotlib-inline/commit/9caad5b890ca79b4a6c11be90ae6573099432748\"\u003e\u003ccode\u003e9caad5b\u003c/code\u003e\u003c/a\u003e test building wheel works\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/matplotlib-inline/commit/251a8c81702ebd1b0cde5c36377a318bb28c74a6\"\u003e\u003ccode\u003e251a8c8\u003c/code\u003e\u003c/a\u003e remove problematic License-expression\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/matplotlib-inline/commit/45ec4f11963f34ef6fe92298cc691eea569d62f5\"\u003e\u003ccode\u003e45ec4f1\u003c/code\u003e\u003c/a\u003e Correcting by Carreau reviewe\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/matplotlib-inline/commit/c91c036723dd58a37c0f46a6662a9a837d611553\"\u003e\u003ccode\u003ec91c036\u003c/code\u003e\u003c/a\u003e Correcting for docstring of set_matplotlib_formats\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/matplotlib-inline/commit/9390396c7a775576a83278807cca7dbd1195793a\"\u003e\u003ccode\u003e9390396\u003c/code\u003e\u003c/a\u003e Docstring of set_matplotlib_formats\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/matplotlib-inline/commit/011561d372b5a4ac8414e22a771275e7993c74d6\"\u003e\u003ccode\u003e011561d\u003c/code\u003e\u003c/a\u003e Release version 0.2.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ipython/matplotlib-inline/compare/0.1.7...0.2.1\"\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...\n\n_Description has been truncated_","html_url":"https://github.com/EngageMedia-video/cinematacms/pull/412","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/EngageMedia-video%2Fcinematacms/issues/412","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/412/packages"},{"uuid":"3914615887","node_id":"PR_kwDOPjXchc7CY_Fy","number":17,"state":"closed","title":"Bump the dependencies group across 1 directory with 41 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-03-09T05:51:03.000Z","author_association":null,"state_reason":null,"created_at":"2026-02-09T05:57:37.000Z","updated_at":"2026-03-09T05:51:05.000Z","time_to_close":2418806,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"dependencies","update_count":41,"packages":[{"name":"cryptography","old_version":"43.0.3","new_version":"46.0.4","repository_url":"https://github.com/pyca/cryptography"},{"name":"sigstore","old_version":"3.6.1","new_version":"4.1.0","repository_url":"https://github.com/sigstore/sigstore-python"},{"name":"pykcs11","old_version":"1.5.17","new_version":"1.5.18","repository_url":"https://github.com/LudovicRousseau/PyKCS11"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"pycparser","old_version":"2.22","new_version":"2.23","repository_url":"https://github.com/eliben/pycparser"},{"name":"anyio","old_version":"4.9.0","new_version":"4.12.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"betterproto","old_version":"2.0.0b6","new_version":"2.0.0b7","repository_url":"https://github.com/danielgtaylor/python-betterproto"},{"name":"certifi","old_version":"2025.1.31","new_version":"2026.1.4","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"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [cryptography](https://github.com/pyca/cryptography), [sigstore](https://github.com/sigstore/sigstore-python), [pykcs11](https://github.com/LudovicRousseau/PyKCS11), [cffi](https://github.com/python-cffi/cffi), [pycparser](https://github.com/eliben/pycparser), [anyio](https://github.com/agronholm/anyio), [betterproto](https://github.com/danielgtaylor/python-betterproto), [certifi](https://github.com/certifi/python-certifi), [charset-normalizer](https://github.com/jawah/charset_normalizer), [email-validator](https://github.com/JoshData/python-email-validator), [fastapi](https://github.com/fastapi/fastapi), [fonttools](https://github.com/fonttools/fonttools), [grpclib](https://github.com/vmagamedov/grpclib), [h11](https://github.com/python-hyper/h11), [h2](https://github.com/python-hyper/h2), [id](https://github.com/di/id), [idna](https://github.com/kjd/idna), [multidict](https://github.com/aio-libs/multidict), [packaging](https://github.com/pypa/packaging), [pandas](https://github.com/pandas-dev/pandas), [pillow](https://github.com/python-pillow/Pillow), [platformdirs](https://github.com/tox-dev/platformdirs), [pyasn1](https://github.com/pyasn1/pyasn1), [pydantic](https://github.com/pydantic/pydantic), [pydantic-core](https://github.com/pydantic/pydantic-core), [pygments](https://github.com/pygments/pygments), [pyjwt](https://github.com/jpadilla/pyjwt), [pyopenssl](https://github.com/pyca/pyopenssl), [pyparsing](https://github.com/pyparsing/pyparsing), [requests](https://github.com/psf/requests), [rfc3161-client](https://github.com/trailofbits/rfc3161-client), [rich](https://github.com/Textualize/rich), [sigstore-protobuf-specs](https://github.com/sigstore/protobuf-specs), [starlette](https://github.com/Kludex/starlette), [typing-extensions](https://github.com/python/typing_extensions), [tzdata](https://github.com/python/tzdata), [urllib3](https://github.com/urllib3/urllib3), [uvicorn](https://github.com/Kludex/uvicorn), [hvac](https://github.com/hvac/hvac), [boto3](https://github.com/boto/boto3) and [botocore](https://github.com/boto/botocore) to permit the latest version.\nUpdates `cryptography` from 43.0.3 to 46.0.4\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\u003e46.0.4 - 2026-01-27\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* `Dropped support for win_arm64 wheels`_.\n* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.5.\n\u003cp\u003e.. _v46-0-3:\u003c/p\u003e\n\u003cp\u003e46.0.3 - 2025-10-15\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed compilation when using LibreSSL 4.2.0.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v46-0-2:\u003c/p\u003e\n\u003cp\u003e46.0.2 - 2025-09-30\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.4.\n\u003cp\u003e.. _v46-0-1:\u003c/p\u003e\n\u003cp\u003e46.0.1 - 2025-09-16\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed an issue where users installing via \u003ccode\u003epip\u003c/code\u003e on Python 3.14 development\nversions would not properly install a dependency.\u003c/li\u003e\n\u003cli\u003eFixed an issue building the free-threaded macOS 3.14 wheels.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v46-0-0:\u003c/p\u003e\n\u003cp\u003e46.0.0 - 2025-09-16\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* **BACKWARDS INCOMPATIBLE:** Support for Python 3.7 has been removed.\n* Support for OpenSSL \u0026lt; 3.0 is deprecated and will be removed in the next\n  release.\n* Support for ``x86_64`` macOS (including publishing wheels) is deprecated\n  and will be removed in two releases. We will switch to publishing an\n  ``arm64`` only wheel for macOS.\n* Support for 32-bit Windows (including publishing wheels) is deprecated\n  and will be removed in two releases. Users should move to a 64-bit\n  Python installation.\n* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.3.\n* We now build ``ppc64le`` ``manylinux`` wheels and publish them to PyPI.\n* We now build ``win_arm64`` (Windows on Arm) wheels and publish them to PyPI.\n* Added support for free-threaded Python 3.14.\n* Removed the deprecated ``get_attribute_for_oid`` method on\n  :class:`~cryptography.x509.CertificateSigningRequest`. Users should use\n  :meth:`~cryptography.x509.Attributes.get_attribute_for_oid` instead.\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/pyca/cryptography/commit/e6f44fc8e6391f05d719fb9d369692325b87a471\"\u003e\u003ccode\u003ee6f44fc\u003c/code\u003e\u003c/a\u003e bump for 46.0.4 and drop win arm64 due to CI issues (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14217\"\u003e#14217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/c0af4dd7b75921bbe9f1d41a03dbd4b64a9e3403\"\u003e\u003ccode\u003ec0af4dd\u003c/code\u003e\u003c/a\u003e release 46.0.3 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13681\"\u003e#13681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/99efe5ad150a56efadafacaffd0e3ee319373904\"\u003e\u003ccode\u003e99efe5a\u003c/code\u003e\u003c/a\u003e bump version for 46.0.2 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13531\"\u003e#13531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e735cfc27502320101c130335c556394a125ba52\"\u003e\u003ccode\u003ee735cfc\u003c/code\u003e\u003c/a\u003e release 46.0.1 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13450\"\u003e#13450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/4e457ffba43a6d87efc63c33041e2081438dd8a4\"\u003e\u003ccode\u003e4e457ff\u003c/code\u003e\u003c/a\u003e Explicitly specify python in mac uv build invocation (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13447\"\u003e#13447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/2726efdb6d67f1c90cf9c6062d9fe051965586f8\"\u003e\u003ccode\u003e2726efd\u003c/code\u003e\u003c/a\u003e Depend on CFFI 2.0.0 or newer on Python \u0026gt; 3.8 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13448\"\u003e#13448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/62230623d183706632c0eb7822c96ac95e3710a8\"\u003e\u003ccode\u003e6223062\u003c/code\u003e\u003c/a\u003e release 46.0.0 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13446\"\u003e#13446\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/563c4915b0931455706f761a4579c26698824eae\"\u003e\u003ccode\u003e563c491\u003c/code\u003e\u003c/a\u003e Update comment for pyopenssl-release tag (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13445\"\u003e#13445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/d2f6f7faced35b73277bc624ff496f8af696b172\"\u003e\u003ccode\u003ed2f6f7f\u003c/code\u003e\u003c/a\u003e Bump downstream dependencies in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13439\"\u003e#13439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e7ab02bd679d0b4f55d93486fe27e62554ef15d4\"\u003e\u003ccode\u003ee7ab02b\u003c/code\u003e\u003c/a\u003e we'll ship this with 3.5.3 why not (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13442\"\u003e#13442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/cryptography/compare/43.0.3...46.0.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sigstore` from 3.6.1 to 4.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sigstore/sigstore-python/releases\"\u003esigstore's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.1.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecli: Support using other Sigstore instances with \u003ccode\u003e--instance URL\u003c/code\u003e.\nNew instances are trusted with new top level command \u003ccode\u003etrust-instance ROOTFILE\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1548\"\u003e#1548\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded cryptography 46 to list of compatible cryptography releases\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1544\"\u003e#1544\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved error message when verifying bundles with unsupported log entry versions\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1569\"\u003e#1569\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecli: Always read/write UTF-8. This fixes an issue on Windows where the platform\ndefault encoding was used: the issue has existed for a while, but became more visible\nwith signature bundles that contain rekor2 entries.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1553\"\u003e#1553\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev4.0.0\u003c/h2\u003e\n\u003cp\u003eThis is a major release with a host of API and functionality changes. The major new feature\nis Rekor v2 support but many other changes are also included, see list below.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecli: Add \u003ccode\u003e--rekor-version\u003c/code\u003e to \u003ccode\u003esign\u003c/code\u003e command arguments: This can be useful\nif Sigstore instance provides multiple Rekor versions and user wants to\noverride the default choice\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1471\"\u003e#1471\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecli: Support parallel signing. When multiple artifacts are signed, the Rekor\nrequests are submitted in parallel: this is especially useful with Rekor v2.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1468\"\u003e#1468\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1478\"\u003e#1478\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1485\"\u003e#1485\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eoidc (API): Allow custom audience claims via API\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1402\"\u003e#1402\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erekor (API): Support Rekor v2 (aka rekor-tiles) in both verification and signing.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1370\"\u003e#1370\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1422\"\u003e#1422\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1432\"\u003e#1432\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etrust (API): Make TrustedRoot, SigningConfig and ClientTrustConfig public API\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1496\"\u003e#1496\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecli: Improve verify UX when wrong instance is used\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1510\"\u003e#1510\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edeps: replace sigstore_protobuf_specs dependency with sigstore-models\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1470\"\u003e#1470\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- 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/sigstore/sigstore-python/blob/main/CHANGELOG.md\"\u003esigstore's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[4.1.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecli: Support using other Sigstore instances with \u003ccode\u003e--instance URL\u003c/code\u003e.\nNew instances are trusted with new top level command \u003ccode\u003etrust-instance ROOTFILE\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1548\"\u003e#1548\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded cryptography 46 to list of compatible cryptography releases\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1544\"\u003e#1544\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved error message when verifying bundles with unsupported log entry versions\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1569\"\u003e#1569\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecli: Always read/write UTF-8. This fixes an issue on Windows where the platform\ndefault encoding was used: the issue has existed for a while, but became more visible\nwith signature bundles that contain rekor2 entries.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1553\"\u003e#1553\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.0.0]\u003c/h2\u003e\n\u003cp\u003eThis is a major release with a host of API and functionality changes. The major new feature\nis Rekor v2 support but many other changes are also included, see list below.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecli: Add \u003ccode\u003e--rekor-version\u003c/code\u003e to \u003ccode\u003esign\u003c/code\u003e command arguments: This can be useful\nif Sigstore instance provides multiple Rekor versions and user wants to\noverride the default choice\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1471\"\u003e#1471\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecli: Support parallel signing. When multiple artifacts are signed, the Rekor\nrequests are submitted in parallel: this is especially useful with Rekor v2.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1468\"\u003e#1468\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1478\"\u003e#1478\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1485\"\u003e#1485\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eoidc (API): Allow custom audience claims via API\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1402\"\u003e#1402\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erekor (API): Support Rekor v2 (aka rekor-tiles) in both verification and signing.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1370\"\u003e#1370\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1422\"\u003e#1422\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1432\"\u003e#1432\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etrust (API): Make TrustedRoot, SigningConfig and ClientTrustConfig public API\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1496\"\u003e#1496\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecli: Improve verify UX when wrong instance is used\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1510\"\u003e#1510\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edeps: replace sigstore_protobuf_specs dependency with sigstore-models\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/3447f9603cfa0e9fe9d9c83d5bd5fb0bfe08a598\"\u003e\u003ccode\u003e3447f96\u003c/code\u003e\u003c/a\u003e Forward port entry kindversion error improvement, bump version to 4.1.0 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1569\"\u003e#1569\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/2dbe03ae34c36e7d04bec7e63822ebcbbed362aa\"\u003e\u003ccode\u003e2dbe03a\u003c/code\u003e\u003c/a\u003e build(deps): bump github/codeql-action in the actions group (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1572\"\u003e#1572\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/02daa6970d0eaff526fd846efd6af46067206618\"\u003e\u003ccode\u003e02daa69\u003c/code\u003e\u003c/a\u003e build(deps): bump rich from 14.1.0 to 14.2.0 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1571\"\u003e#1571\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/16159399b18178aa87001b1e13b7c730be6d36b6\"\u003e\u003ccode\u003e1615939\u003c/code\u003e\u003c/a\u003e build(deps): bump the actions group with 2 updates (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1568\"\u003e#1568\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/72b658140bd3718aa9bba955d2ec87a8de6cb7bb\"\u003e\u003ccode\u003e72b6581\u003c/code\u003e\u003c/a\u003e build(deps): update ruff requirement from \u0026lt;0.13.4 to \u0026lt;0.14.1 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1567\"\u003e#1567\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/64dbeba7394b028ac6e75ddf5f4b1875b4571631\"\u003e\u003ccode\u003e64dbeba\u003c/code\u003e\u003c/a\u003e cli: Support using other Sigstore instances (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1548\"\u003e#1548\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/508b0e77ec9e04e6aecc09b8b476ff4937bed538\"\u003e\u003ccode\u003e508b0e7\u003c/code\u003e\u003c/a\u003e build(deps): bump softprops/action-gh-release in the actions group (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1563\"\u003e#1563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/e31f481006755785e0fffc8a040e81e31aeee5b1\"\u003e\u003ccode\u003ee31f481\u003c/code\u003e\u003c/a\u003e build(deps): update ruff requirement from \u0026lt;0.13.3 to \u0026lt;0.13.4 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1562\"\u003e#1562\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/dec897bbda882b0d9f694da60047044c0f649468\"\u003e\u003ccode\u003edec897b\u003c/code\u003e\u003c/a\u003e build(deps): bump github/codeql-action in the actions group (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1561\"\u003e#1561\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/0a54b4fce6a26150954c9eea8ed3720af27f06bf\"\u003e\u003ccode\u003e0a54b4f\u003c/code\u003e\u003c/a\u003e build(deps): bump cryptography from 46.0.1 to 46.0.2 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1558\"\u003e#1558\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sigstore/sigstore-python/compare/v3.6.1...v4.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pykcs11` from 1.5.17 to 1.5.18\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/releases\"\u003epykcs11's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e1.5.18 - August 2025, Ludovic Rousseau\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eadd \u003ccode\u003eCKM_EXTRACT_KEY_FROM_KEY\u003c/code\u003e mechanism\u003c/li\u003e\n\u003cli\u003eadd \u003ccode\u003eCKM_EDDSA\u003c/code\u003e and \u003ccode\u003eCK_EDDSA_PARAMS\u003c/code\u003e support\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eC_Initialize()\u003c/code\u003e: allow OS locking\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePyKCS11.load()\u003c/code\u003e \u0026amp; \u003ccode\u003e.unload()\u003c/code\u003e: make the methods tread-safe\u003c/li\u003e\n\u003cli\u003ebugfix: store \u003ccode\u003eCKM_CONCATENATE_BASE_AND_KEY\u003c/code\u003e parameter in mechanism context\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eIsNum()\u003c/code\u003e: \u003ccode\u003eCKA_HW_FEATURE_TYPE\u003c/code\u003e is also a numeric value\u003c/li\u003e\n\u003cli\u003eimprove support for multi-part encryption/decryption\u003c/li\u003e\n\u003cli\u003efix some Python typing issues\u003c/li\u003e\n\u003cli\u003eFix issue with vendor defined (\u003ccode\u003eCKM_VENDOR_DEFINED\u003c/code\u003e) mechanisms\u003c/li\u003e\n\u003cli\u003efix/ignore all pylint warnings\u003c/li\u003e\n\u003cli\u003euse pytest for running tests\u003c/li\u003e\n\u003cli\u003eminor improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/upload-artifact 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/LudovicRousseau/PyKCS11/pull/125\"\u003eLudovicRousseau/PyKCS11#125\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd CKM_EXTRACT_KEY_FROM_KEY mechanism by \u003ca href=\"https://github.com/fuzzykat\"\u003e\u003ccode\u003e@​fuzzykat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/LudovicRousseau/PyKCS11/pull/128\"\u003eLudovicRousseau/PyKCS11#128\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/LudovicRousseau/PyKCS11/pull/132\"\u003eLudovicRousseau/PyKCS11#132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eimprove support for multi-part encryption/decryption by \u003ca href=\"https://github.com/fuzzykat\"\u003e\u003ccode\u003e@​fuzzykat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/LudovicRousseau/PyKCS11/pull/135\"\u003eLudovicRousseau/PyKCS11#135\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003euse ckbytelist as return type by \u003ca href=\"https://github.com/andreastedile\"\u003e\u003ccode\u003e@​andreastedile\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/LudovicRousseau/PyKCS11/pull/136\"\u003eLudovicRousseau/PyKCS11#136\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003euse CK_OBJECT_HANDLE as parameter type by \u003ca href=\"https://github.com/andreastedile\"\u003e\u003ccode\u003e@​andreastedile\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/LudovicRousseau/PyKCS11/pull/137\"\u003eLudovicRousseau/PyKCS11#137\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003euse CK_OBJECT_HANDLE as return type by \u003ca href=\"https://github.com/andreastedile\"\u003e\u003ccode\u003e@​andreastedile\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/LudovicRousseau/PyKCS11/pull/138\"\u003eLudovicRousseau/PyKCS11#138\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/LudovicRousseau/PyKCS11/pull/139\"\u003eLudovicRousseau/PyKCS11#139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd CKM_EDDSA and CK_EDDSA_PARAMS support by \u003ca href=\"https://github.com/fuzzykat\"\u003e\u003ccode\u003e@​fuzzykat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/LudovicRousseau/PyKCS11/pull/141\"\u003eLudovicRousseau/PyKCS11#141\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/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] made their first contribution in \u003ca href=\"https://redirect.github.com/LudovicRousseau/PyKCS11/pull/125\"\u003eLudovicRousseau/PyKCS11#125\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] made their first contribution in \u003ca href=\"https://redirect.github.com/LudovicRousseau/PyKCS11/pull/132\"\u003eLudovicRousseau/PyKCS11#132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/andreastedile\"\u003e\u003ccode\u003e@​andreastedile\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/LudovicRousseau/PyKCS11/pull/136\"\u003eLudovicRousseau/PyKCS11#136\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/compare/1.5.17...1.5.18\"\u003ehttps://github.com/LudovicRousseau/PyKCS11/compare/1.5.17...1.5.18\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/LudovicRousseau/PyKCS11/blob/master/Changes.txt\"\u003epykcs11's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e1.5.18 - August 2025, Ludovic Rousseau\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eadd CKM_EXTRACT_KEY_FROM_KEY mechanism\u003c/li\u003e\n\u003cli\u003eadd CKM_EDDSA and CK_EDDSA_PARAMS support\u003c/li\u003e\n\u003cli\u003eC_Initialize(): allow OS locking\u003c/li\u003e\n\u003cli\u003ePyKCS11.load() \u0026amp; .unload(): make the methods tread-safe\u003c/li\u003e\n\u003cli\u003ebugfix: store CKM_CONCATENATE_BASE_AND_KEY parameter in mechanism context\u003c/li\u003e\n\u003cli\u003eIsNum(): CKA_HW_FEATURE_TYPE is also a numeric value\u003c/li\u003e\n\u003cli\u003eimprove support for multi-part encryption/decryption\u003c/li\u003e\n\u003cli\u003efix some Python typing issues\u003c/li\u003e\n\u003cli\u003eFix issue with vendor defined (CKM_VENDOR_DEFINED) mechanisms\u003c/li\u003e\n\u003cli\u003efix/ignore all pylint warnings\u003c/li\u003e\n\u003cli\u003euse pytest for running tests\u003c/li\u003e\n\u003cli\u003eminor improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/commit/1f34853e9fb42bc4eedd7f3bc5057b5c4f2dffa7\"\u003e\u003ccode\u003e1f34853\u003c/code\u003e\u003c/a\u003e Release 1.5.18\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/commit/abea61f5261b6e206883307736f2d67a57524ee8\"\u003e\u003ccode\u003eabea61f\u003c/code\u003e\u003c/a\u003e fix load(): move os.getenv() outside of the _lock scope\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/commit/be5f5e31c90c6dd782c30eb570130fd1792a2eaf\"\u003e\u003ccode\u003ebe5f5e3\u003c/code\u003e\u003c/a\u003e fix: use self.assertRaises() in test_sign_integer\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/commit/2177a59dd7aa4522ba75a2dad2f55731d03c41dd\"\u003e\u003ccode\u003e2177a59\u003c/code\u003e\u003c/a\u003e add CKM_EDDSA and CK_EDDSA_PARAMS support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/commit/2094a494b27b618ca7dd6800af49bb026a812ccc\"\u003e\u003ccode\u003e2094a49\u003c/code\u003e\u003c/a\u003e IsNum(): CKA_HW_FEATURE_TYPE is also a numeric value\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/commit/383425ed17c362c4463bbb6d5d300ca64d55b441\"\u003e\u003ccode\u003e383425e\u003c/code\u003e\u003c/a\u003e Add information in PyKCS11Error(-2)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/commit/1a1bab33b4c2b7f9bd63f28119e57515d2b08151\"\u003e\u003ccode\u003e1a1bab3\u003c/code\u003e\u003c/a\u003e dev-requirements.txt: add pytest\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/commit/62e8b7eb8638bf3f88705f61deb83d2b248748da\"\u003e\u003ccode\u003e62e8b7e\u003c/code\u003e\u003c/a\u003e Makefile: use pytest to run tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/commit/8eec8e34bc051a62d8a0b2af34d7eb47f2537436\"\u003e\u003ccode\u003e8eec8e3\u003c/code\u003e\u003c/a\u003e Add run_pytest.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/commit/f7a962879f82017ac9217f64a53219873ba4fb55\"\u003e\u003ccode\u003ef7a9628\u003c/code\u003e\u003c/a\u003e PyKCS11.unload(): make the method thread safe\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/compare/1.5.17...1.5.18\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cffi` from 1.17.1 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only) - huge thanks to the folks at Quansight Labs for all the work to get this one sorted!\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.0.0b1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only).\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/6366c01d84e9a78e7e85f12ebe9760ba5d19b6d3\"\u003e\u003ccode\u003e6366c01\u003c/code\u003e\u003c/a\u003e release 2.0.0 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/95c847663aec401e4003927a274e4de9b8595f4f\"\u003e\u003ccode\u003e95c8476\u003c/code\u003e\u003c/a\u003e 2.0.0 post beta backports (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/195cbda66b6be9297ef6d584644e50cfdcca4e8a\"\u003e\u003ccode\u003e195cbda\u003c/code\u003e\u003c/a\u003e Release 2.0.0b1 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b4bbe7940d3f76027534db1aecbae9b61c35221a\"\u003e\u003ccode\u003eb4bbe79\u003c/code\u003e\u003c/a\u003e fix version test to support beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/7ed073de66e713cf791b6fdfa23685c81fdfd6ad\"\u003e\u003ccode\u003e7ed073d\u003c/code\u003e\u003c/a\u003e Add support for the free-threaded build (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/178\"\u003e#178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/67a170dc7972dc9361743690b38da3d963b200ef\"\u003e\u003ccode\u003e67a170d\u003c/code\u003e\u003c/a\u003e Change the license from MIT to MIT-no-attribution, which is the same without ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/92645ec9329feb03e3fa86240b40fe0fc37469d1\"\u003e\u003ccode\u003e92645ec\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support/testing (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/177\"\u003e#177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/2b81170583a898478a6996c9705d8c38ab7f73a1\"\u003e\u003ccode\u003e2b81170\u003c/code\u003e\u003c/a\u003e doc: update test commands in Section Testing/development tips (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/25172b84cf51cf58241f074ccd1efd9c7648cb43\"\u003e\u003ccode\u003e25172b8\u003c/code\u003e\u003c/a\u003e doc: update year (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b57a92c03eb2078a99c900519a37d18b4d52324f\"\u003e\u003ccode\u003eb57a92c\u003c/code\u003e\u003c/a\u003e issue 147: force-compute nested structs before parent structs.  Occurs mainly...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pycparser` from 2.22 to 2.23\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/eliben/pycparser/releases\"\u003epycparser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003erelease_v2.23\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow abstract declarator \u0026quot;static\u0026quot; (GH issue \u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/539\"\u003e#539\u003c/a\u003e) by \u003ca href=\"https://github.com/gperciva\"\u003e\u003ccode\u003e@​gperciva\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/545\"\u003eeliben/pycparser#545\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/550\"\u003eeliben/pycparser#550\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd dirent and socket typedefs. by \u003ca href=\"https://github.com/MegaManSec\"\u003e\u003ccode\u003e@​MegaManSec\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/558\"\u003eeliben/pycparser#558\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport for labels with no statement by \u003ca href=\"https://github.com/ignatirabo\"\u003e\u003ccode\u003e@​ignatirabo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/562\"\u003eeliben/pycparser#562\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept empty 'case' or 'default' labels by \u003ca href=\"https://github.com/ignatirabo\"\u003e\u003ccode\u003e@​ignatirabo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/564\"\u003eeliben/pycparser#564\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: preserve parentheses for statement exprs by \u003ca href=\"https://github.com/zawan-ila\"\u003e\u003ccode\u003e@​zawan-ila\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/566\"\u003eeliben/pycparser#566\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: hex float types by \u003ca href=\"https://github.com/zawan-ila\"\u003e\u003ccode\u003e@​zawan-ila\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/567\"\u003eeliben/pycparser#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExplicit error for comments, with README link by \u003ca href=\"https://github.com/cellularmitosis\"\u003e\u003ccode\u003e@​cellularmitosis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/569\"\u003eeliben/pycparser#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eshowemptyattrs option on Node.show() by \u003ca href=\"https://github.com/cellularmitosis\"\u003e\u003ccode\u003e@​cellularmitosis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/570\"\u003eeliben/pycparser#570\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd fake typedefs for GNU Extension 128-bit integers. by \u003ca href=\"https://github.com/dj-wednesday\"\u003e\u003ccode\u003e@​dj-wednesday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/577\"\u003eeliben/pycparser#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTypedef for __kernel_sa_family_t in linux/socket.h by \u003ca href=\"https://github.com/crosser\"\u003e\u003ccode\u003e@​crosser\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/578\"\u003eeliben/pycparser#578\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/gperciva\"\u003e\u003ccode\u003e@​gperciva\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/545\"\u003eeliben/pycparser#545\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MegaManSec\"\u003e\u003ccode\u003e@​MegaManSec\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/558\"\u003eeliben/pycparser#558\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ignatirabo\"\u003e\u003ccode\u003e@​ignatirabo\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/562\"\u003eeliben/pycparser#562\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zawan-ila\"\u003e\u003ccode\u003e@​zawan-ila\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/566\"\u003eeliben/pycparser#566\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cellularmitosis\"\u003e\u003ccode\u003e@​cellularmitosis\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/569\"\u003eeliben/pycparser#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dj-wednesday\"\u003e\u003ccode\u003e@​dj-wednesday\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/577\"\u003eeliben/pycparser#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crosser\"\u003e\u003ccode\u003e@​crosser\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/578\"\u003eeliben/pycparser#578\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/eliben/pycparser/compare/release_v2.22...release_v2.23\"\u003ehttps://github.com/eliben/pycparser/compare/release_v2.22...release_v2.23\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/5b60167602e7914139b3e277266ccdff5c24dbf2\"\u003e\u003ccode\u003e5b60167\u003c/code\u003e\u003c/a\u003e Prepare for release 2.23\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/7b24736bbb875a5c6c6f0520412f03aace75d0ee\"\u003e\u003ccode\u003e7b24736\u003c/code\u003e\u003c/a\u003e Typedef for __kernel_sa_family_t in _fake_typedefs.h (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/578\"\u003e#578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/90184f1f4eb1234fb9e7ae0c8b74eab9ea963482\"\u003e\u003ccode\u003e90184f1\u003c/code\u003e\u003c/a\u003e Add fake typedefs for GNU Extension 128-bit integers. (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/577\"\u003e#577\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/f04fdcde3d95be4a632948718d0c46eac09c50ce\"\u003e\u003ccode\u003ef04fdcd\u003c/code\u003e\u003c/a\u003e showemptyattrs option on Node.show() (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/570\"\u003e#570\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/156eae7f42843d8a3e78a68995d9cc7485577e38\"\u003e\u003ccode\u003e156eae7\u003c/code\u003e\u003c/a\u003e Explicit error for comments, with README link (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/569\"\u003e#569\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/2215299261306df71e2cec23bb3acd7b8f31f8db\"\u003e\u003ccode\u003e2215299\u003c/code\u003e\u003c/a\u003e fix: hex float types (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/567\"\u003e#567\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/037bd31d4e0e69e8c4d80e45311ae46abc15dd4e\"\u003e\u003ccode\u003e037bd31\u003c/code\u003e\u003c/a\u003e fix: preserve parentheses for statement exprs (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/566\"\u003e#566\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/9cecc090151b31d8821786bca3b25851a4a33272\"\u003e\u003ccode\u003e9cecc09\u003c/code\u003e\u003c/a\u003e Accept empty 'case' or 'default' labels (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/564\"\u003e#564\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/7ae671d3ac44e1000bcbe7108b24bdb9187443ac\"\u003e\u003ccode\u003e7ae671d\u003c/code\u003e\u003c/a\u003e Support for labels with no statement (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/562\"\u003e#562\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/42b542324859a108f2cf35bcfe21fe5877ceb091\"\u003e\u003ccode\u003e42b5423\u003c/code\u003e\u003c/a\u003e Add dirent and socket typedefs. (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/558\"\u003e#558\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/eliben/pycparser/compare/release_v2.22...release_v2.23\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\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 `betterproto` from 2.0.0b6 to 2.0.0b7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/danielgtaylor/python-betterproto/releases\"\u003ebetterproto's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0-beta7\u003c/h2\u003e\n\u003ch2\u003eEnhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eBreaking\u003c/strong\u003e: Support \u003ccode\u003ePydantic\u003c/code\u003e v2 and dropping support for v1 \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/588\"\u003e#588\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBreaking\u003c/strong\u003e: The attempting to access an unset \u003ccode\u003eoneof\u003c/code\u003e now raises an \u003ccode\u003eAttributeError\u003c/code\u003e field. To see how to access \u003ccode\u003eoneof\u003c/code\u003e fields now, refer to \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/558\"\u003e#558\u003c/a\u003e and \u003ca href=\"https://github.com/danielgtaylor/python-betterproto#one-of-support\"\u003eREADME.md\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBreaking\u003c/strong\u003e: A custom \u003ccode\u003eEnum\u003c/code\u003e has been implemented to match the behaviour of being an open set. Any checks for \u003ccode\u003eisinstance(enum_member, enum.Enum)\u003c/code\u003e and \u003ccode\u003eissubclass(EnumSubclass, enum.Enum)\u003c/code\u003e will now return \u003ccode\u003eFalse\u003c/code\u003e. This change also has the side effect of preventing any passthrough of \u003ccode\u003eEnum\u003c/code\u003e members (i.e. \u003ccode\u003eFoo.RED.GREEN\u003c/code\u003e doesn't work any more). See \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/293\"\u003e#293\u003c/a\u003e for more info, this fixed many bugs related to \u003ccode\u003eEnum\u003c/code\u003e handling.\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003epickle\u003c/code\u003e methods \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/535\"\u003e#535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eStruct\u003c/code\u003e and \u003ccode\u003eValue\u003c/code\u003e types \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/551\"\u003e#551\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ca href=\"https://rich.readthedocs.io/en/latest/index.html\"\u003e\u003ccode\u003eRich\u003c/code\u003e package\u003c/a\u003e for pretty printing \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/508\"\u003e#508\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove support for streaming messages \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/518\"\u003e#518\u003c/a\u003e \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/529\"\u003e#529\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove performance of serializing / de-serializing messages \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/545\"\u003e#545\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove the handling of message name collisions with typing by allowing the method / type of imports to be configured.\nRefer to \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/582\"\u003e#582\u003c/a\u003e and \u003ca href=\"https://github.com/danielgtaylor/python-betterproto#configuration-typing-imports\"\u003eREADME.md\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd a warning when calling a deprecated message \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/596\"\u003e#596\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix roundtrip parsing of \u003ccode\u003edatetime\u003c/code\u003es \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/534\"\u003e#534\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix accessing unset optional fields \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/523\"\u003e#523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eMessage\u003c/code\u003e equality comparison \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/513\"\u003e#513\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix behaviour with long comment messages \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/532\"\u003e#532\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/atomicflag\"\u003e\u003ccode\u003e@​atomicflag\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/513\"\u003edanielgtaylor/python-betterproto#513\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshuaLeivers\"\u003e\u003ccode\u003e@​JoshuaLeivers\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/518\"\u003edanielgtaylor/python-betterproto#518\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MicaelJarniac\"\u003e\u003ccode\u003e@​MicaelJarniac\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/508\"\u003edanielgtaylor/python-betterproto#508\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/124C41p\"\u003e\u003ccode\u003e@​124C41p\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/528\"\u003edanielgtaylor/python-betterproto#528\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/girtsf\"\u003e\u003ccode\u003e@​girtsf\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/306\"\u003edanielgtaylor/python-betterproto#306\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/spietras\"\u003e\u003ccode\u003e@​spietras\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/422\"\u003edanielgtaylor/python-betterproto#422\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lukasbindreiter\"\u003e\u003ccode\u003e@​lukasbindreiter\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/534\"\u003edanielgtaylor/python-betterproto#534\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cartesian-theatrics\"\u003e\u003ccode\u003e@​cartesian-theatrics\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/532\"\u003edanielgtaylor/python-betterproto#532\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/550\"\u003edanielgtaylor/python-betterproto#550\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/woodruffw\"\u003e\u003ccode\u003e@​woodruffw\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/551\"\u003edanielgtaylor/python-betterproto#551\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/atomicmac\"\u003e\u003ccode\u003e@​atomicmac\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/560\"\u003edanielgtaylor/python-betterproto#560\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arunsathiya\"\u003e\u003ccode\u003e@​arunsathiya\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/553\"\u003edanielgtaylor/python-betterproto#553\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ii64\"\u003e\u003ccode\u003e@​ii64\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/568\"\u003edanielgtaylor/python-betterproto#568\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/imcdo\"\u003e\u003ccode\u003e@​imcdo\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/587\"\u003edanielgtaylor/python-betterproto#587\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gatesn\"\u003e\u003ccode\u003e@​gatesn\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/588\"\u003edanielgtaylor/python-betterproto#588\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AdrienVannson\"\u003e\u003ccode\u003e@​AdrienVannson\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/596\"\u003edanielgtaylor/python-betterproto#596\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JitPackJoyride\"\u003e\u003ccode\u003e@​JitPackJoyride\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/593\"\u003edanielgtaylor/python-betterproto#593\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/danielgtaylor/python-betterproto/compare/v.2.0.0b6...v.2.0.0b7\"\u003ehttps://github.com/danielgtaylor/python-betterproto/compare/v.2.0.0b6...v.2.0.0b7\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/danielgtaylor/python-betterproto/blob/master/CHANGELOG.md\"\u003ebetterproto's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[2.0.0b7] - 2024-08-11\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eBreaking\u003c/strong\u003e: Support \u003ccode\u003ePydantic\u003c/code\u003e v2 and dropping support for v1 \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/588\"\u003e#588\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eBreaking\u003c/strong\u003e: The attempting to access an unset \u003ccode\u003eoneof\u003c/code\u003e now raises an \u003ccode\u003eAttributeError\u003c/code\u003e\nfield. To see how to access \u003ccode\u003eoneof\u003c/code\u003e fields now, refer to \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/558\"\u003e#558\u003c/a\u003e\nand \u003ca href=\"https://github.com/danielgtaylor/python-betterproto#one-of-support\"\u003eREADME.md\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eBreaking\u003c/strong\u003e: A custom \u003ccode\u003eEnum\u003c/code\u003e has been implemented to match the behaviour of being an open set. Any checks for \u003ccode\u003eisinstance(enum_member, enum.Enum)\u003c/code\u003e and \u003ccode\u003eissubclass(EnumSubclass, enum.Enum)\u003c/code\u003e will now return \u003ccode\u003eFalse\u003c/code\u003e. This change also has the side effect of\npreventing any passthrough of \u003ccode\u003eEnum\u003c/code\u003e members (i.e. \u003ccode\u003eFoo.RED.GREEN\u003c/code\u003e doesn't work any more). See \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/293\"\u003e#293\u003c/a\u003e for more info, this fixed many bugs related to \u003ccode\u003eEnum\u003c/code\u003e handling.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd support for \u003ccode\u003epickle\u003c/code\u003e methods \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/535\"\u003e#535\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd support for \u003ccode\u003eStruct\u003c/code\u003e and \u003ccode\u003eValue\u003c/code\u003e types \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/551\"\u003e#551\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd support for \u003ca href=\"https://rich.readthedocs.io/en/latest/index.html\"\u003e\u003ccode\u003eRich\u003c/code\u003e package\u003c/a\u003e for pretty printing \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/508\"\u003e#508\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove support for streaming messages \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/518\"\u003e#518\u003c/a\u003e \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/529\"\u003e#529\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove performance of serializing / de-serializing messages \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/545\"\u003e#545\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove the handling of message name collisions with typing by allowing the method / type of imports to be configured.\nRefer to \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/582\"\u003e#582\u003c/a\u003e\nand \u003ca href=\"https://github.com/danielgtaylor/python-betterproto#configuration-typing-imports\"\u003eREADME.md\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix roundtrip parsing of \u003ccode\u003edatetime\u003c/code\u003es \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/534\"\u003e#534\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix accessing unset optional fields \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/523\"\u003e#523\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003eMessage\u003c/code\u003e equality comparison \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/513\"\u003e#513\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix behaviour with long comment messages \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/532\"\u003e#532\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd a warning when calling a deprecated message \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/596\"\u003e#596\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/danielgtaylor/python-betterproto/commit/1538e156a1eadb88799eca009a238093d6bb40df\"\u003e\u003ccode\u003e1538e15\u003c/code\u003e\u003c/a\u003e Bump version to 2.0.0b7 (\u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/issues/593\"\u003e#593\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielgtaylor/python-betterproto/commit/4e9a17c227c1454a08a46ad41dbca0478aa46830\"\u003e\u003ccode\u003e4e9a17c\u003c/code\u003e\u003c/a\u003e Add warnings when calling deprecated method (\u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/issues/596\"\u003e#596\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielgtaylor/python-betterproto/commit/f96f51650ca28412640b3e93724f123d4f0d7b31\"\u003e\u003ccode\u003ef96f516\u003c/code\u003e\u003c/a\u003e fix: 3.10 style imports not resolving correctly (\u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/issues/594\"\u003e#594\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielgtaylor/python-betterproto/commit/5fdd0bb24fc43091599a2284a948fc06e1a55edb\"\u003e\u003ccode\u003e5fdd0bb\u003c/code\u003e\u003c/a\u003e Update to Pydantic V2 (\u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielgtaylor/python-betterproto/commit/8b5923485624fc9fe77df343fef9cca5c04ee45f\"\u003e\u003ccode\u003e8b59234\u003c/code\u003e\u003c/a\u003e Handle typing collisions and add validation to a files module for overlaping ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielgtaylor/python-betterproto/commit/7c6c6279382218fbe7f8e1ce85933e06221fc07f\"\u003e\u003ccode\u003e7c6c627\u003c/code\u003e\u003c/a\u003e Drop 3.7 from ci (\u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielgtaylor/python-betterproto/commit/1f88b67eeb9871d33da154fd2c859b9d1aed62c1\"\u003e\u003ccode\u003e1f88b67\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ebetterproto-rust-codec\u003c/code\u003e updated (\u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/issues/571\"\u003e#571\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielgtaylor/python-betterproto/commit/c3c20556e0d29e07abee05c7e3d2d6c481d26389\"\u003e\u003ccode\u003ec3c2055\u003c/code\u003e\u003c/a\u003e fix: support pydantic-version google pb (\u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/issues/568\"\u003e#568\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielgtaylor/python-betterproto/commit/df1ba911b75da04eec56b6b39bd93a3779d51b24\"\u003e\u003ccode\u003edf1ba91\u003c/code\u003e\u003c/a\u003e Add betterproto.Enum \u003cstrong\u003ecopy\u003c/strong\u003e and \u003cstrong\u003edeepcopy\u003c/strong\u003e implementations (\u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/issues/566\"\u003e#566\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielgtaylor/python-betterproto/commit/126b256b4c541832e1e5a5f898c1263dd4b06995\"\u003e\u003ccode\u003e126b256\u003c/code\u003e\u003c/a\u003e ci: Use GITHUB_OUTPUT envvar instead of set-output command (\u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/issues/553\"\u003e#553\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/danielgtaylor/python-betterproto/compare/v.2.0.0b6...v.2.0.0b7\"\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 2026.1.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\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\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/27ca98ad845ee6d130a88301622c137893f71620\"\u003e\u003ccode\u003e27ca98a\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7.0.9 to 7.0.11 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/56c59a63909cfd3162b37e7bc16956e64df0f737\"\u003e\u003ccode\u003e56c59a6\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.0 to 6.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ae0021cd43a77bfba67d20a041469cdf6996570e\"\u003e\u003ccode\u003eae0021c\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.0.0 to 6.1.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/380\"\u003e#380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddf5d0b5d2a3d55fd92a79f141dbb5e074caf924\"\u003e\u003ccode\u003eddf5d0b\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5.0.1 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.01.31...2026.01.04\"\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\u003eC...\n\n_Description has been truncated_","html_url":"https://github.com/openreview-bot7/securesystemslib/pull/17","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/openreview-bot7%2Fsecuresystemslib/issues/17","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/17/packages"},{"uuid":"3898648370","node_id":"PR_kwDOIn5GJc7Bk1FF","number":291,"state":"closed","title":"Bump the pip-updates group across 1 directory with 27 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-02-11T22:13:01.000Z","author_association":null,"state_reason":null,"created_at":"2026-02-04T22:11:40.000Z","updated_at":"2026-02-11T22:13:03.000Z","time_to_close":604881,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"pip-updates","update_count":27,"packages":[{"name":"beautifulsoup4","old_version":"4.11.1","new_version":"4.14.3"},{"name":"black","old_version":"25.1.0","new_version":"26.1.0","repository_url":"https://github.com/psf/black"},{"name":"cachetools","old_version":"5.2.0","new_version":"7.0.0","repository_url":"https://github.com/tkem/cachetools"},{"name":"celery","old_version":"5.5.3","new_version":"5.6.2"},{"name":"cffi","old_version":"1.15.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"click-datetime","old_version":"0.2","new_version":"0.4.0"},{"name":"cryptography","old_version":"44.0.3","new_version":"46.0.4","repository_url":"https://github.com/pyca/cryptography"},{"name":"flake8","old_version":"7.1.1","new_version":"7.3.0","repository_url":"https://github.com/pycqa/flake8"},{"name":"flake8-bugbear","old_version":"22.9.23","new_version":"25.11.29","repository_url":"https://github.com/PyCQA/flake8-bugbear"},{"name":"flask","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/flask"},{"name":"flask-marshmallow","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/marshmallow-code/flask-marshmallow"},{"name":"flask-migrate","old_version":"3.1.0","new_version":"4.1.0","repository_url":"https://github.com/miguelgrinberg/flask-migrate"},{"name":"freezegun","old_version":"1.2.2","new_version":"1.5.5","repository_url":"https://github.com/spulec/freezegun"},{"name":"iso8601","old_version":"1.1.0","new_version":"2.1.0","repository_url":"https://github.com/micktwomey/pyiso8601"},{"name":"isort","old_version":"5.12.0","new_version":"7.0.0","repository_url":"https://github.com/PyCQA/isort"},{"name":"itsdangerous","old_version":"2.1.2","new_version":"2.2.0","repository_url":"https://github.com/pallets/itsdangerous"},{"name":"jsonschema","old_version":"4.16.0","new_version":"4.26.0"},{"name":"lxml","old_version":"5.4.0","new_version":"6.0.2","repository_url":"https://github.com/lxml/lxml"},{"name":"marshmallow","old_version":"3.18.0","new_version":"4.2.2","repository_url":"https://github.com/marshmallow-code/marshmallow"},{"name":"marshmallow-sqlalchemy","old_version":"0.28.1","new_version":"1.4.2","repository_url":"https://github.com/marshmallow-code/marshmallow-sqlalchemy"},{"name":"moto","old_version":"5.1.3","new_version":"5.1.20","repository_url":"https://github.com/getmoto/moto"},{"name":"notifications-python-client","old_version":"8.0.0","new_version":"10.0.1","repository_url":"https://github.com/alphagov/notifications-python-client"},{"name":"psycopg2-binary","old_version":"2.9.10","new_version":"2.9.11","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"pyjwt","old_version":"2.5.0","new_version":"2.11.0","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"pytest","old_version":"9.0.1","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"requests-mock","old_version":"1.10.0","new_version":"1.12.1","repository_url":"https://github.com/jamielennox/requests-mock"},{"name":"sqlalchemy","old_version":"1.4.41","new_version":"2.0.46","repository_url":"https://github.com/sqlalchemy/sqlalchemy"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-updates group with 27 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.11.1` | `4.14.3` |\n| [black](https://github.com/psf/black) | `25.1.0` | `26.1.0` |\n| [cachetools](https://github.com/tkem/cachetools) | `5.2.0` | `7.0.0` |\n| [celery[sqs]](https://github.com/celery/celery) | `5.5.3` | `5.6.2` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.15.1` | `2.0.0` |\n| click-datetime | `0.2` | `0.4.0` |\n| [cryptography](https://github.com/pyca/cryptography) | `44.0.3` | `46.0.4` |\n| [flake8](https://github.com/pycqa/flake8) | `7.1.1` | `7.3.0` |\n| [flake8-bugbear](https://github.com/PyCQA/flake8-bugbear) | `22.9.23` | `25.11.29` |\n| [flask](https://github.com/pallets/flask) | `3.0.2` | `3.0.3` |\n| [flask-marshmallow](https://github.com/marshmallow-code/flask-marshmallow) | `1.3.0` | `1.4.0` |\n| [flask-migrate](https://github.com/miguelgrinberg/flask-migrate) | `3.1.0` | `4.1.0` |\n| [freezegun](https://github.com/spulec/freezegun) | `1.2.2` | `1.5.5` |\n| [iso8601](https://github.com/micktwomey/pyiso8601) | `1.1.0` | `2.1.0` |\n| [isort](https://github.com/PyCQA/isort) | `5.12.0` | `7.0.0` |\n| [itsdangerous](https://github.com/pallets/itsdangerous) | `2.1.2` | `2.2.0` |\n| [jsonschema[format]](https://github.com/python-jsonschema/jsonschema) | `4.16.0` | `4.26.0` |\n| [lxml](https://github.com/lxml/lxml) | `5.4.0` | `6.0.2` |\n| [marshmallow](https://github.com/marshmallow-code/marshmallow) | `3.18.0` | `4.2.2` |\n| [marshmallow-sqlalchemy](https://github.com/marshmallow-code/marshmallow-sqlalchemy) | `0.28.1` | `1.4.2` |\n| [moto](https://github.com/getmoto/moto) | `5.1.3` | `5.1.20` |\n| [notifications-python-client](https://github.com/alphagov/notifications-python-client) | `8.0.0` | `10.0.1` |\n| [psycopg2-binary](https://github.com/psycopg/psycopg2) | `2.9.10` | `2.9.11` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.5.0` | `2.11.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.1` | `9.0.2` |\n| [requests-mock](https://github.com/jamielennox/requests-mock) | `1.10.0` | `1.12.1` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `1.4.41` | `2.0.46` |\n\n\nUpdates `beautifulsoup4` from 4.11.1 to 4.14.3\n\nUpdates `black` from 25.1.0 to 26.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/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.1.0...26.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cachetools` from 5.2.0 to 7.0.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tkem/cachetools/blob/master/CHANGELOG.rst\"\u003ecachetools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev7.0.0 (2026-02-01)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequire Python 3.10 or later (breaking change).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrop support for passing \u003ccode\u003einfo\u003c/code\u003e as fourth positional parameter to\n\u003ccode\u003e@cached\u003c/code\u003e (breaking change).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrop support for \u003ccode\u003ecache(self)\u003c/code\u003e returning \u003ccode\u003eNone\u003c/code\u003e with\n\u003ccode\u003e@cachedmethod\u003c/code\u003e (breaking change).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eConvert the \u003ccode\u003e@cachedmethod\u003c/code\u003e wrappers to descriptors, deprecating\nits use with class methods and instances that do not provide a\nmutable \u003ccode\u003e__dict__\u003c/code\u003e attribute (potentially breaking change).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eConvert the previously undocumented \u003ccode\u003e@cachedmethod\u003c/code\u003e attributes\n(\u003ccode\u003ecache\u003c/code\u003e, \u003ccode\u003ecache_lock\u003c/code\u003e, etc.) to properties for instance\nmethods, providing official support and documentation (potentially\nbreaking change).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd an optional \u003ccode\u003einfo\u003c/code\u003e parameter to the \u003ccode\u003e@cachedmethod\u003c/code\u003e\ndecorator for reporting per-instance cache statistics.  Note that\nthis requires the instance's \u003ccode\u003e__dict__\u003c/code\u003e attribute to be a mutable\nmapping.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev6.2.6 (2026-01-27)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove typedkey performance.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMinor documentation improvements.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMinor testing improvements.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMinor code readability improvements.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev6.2.5 (2026-01-25)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove documentation regarding \u003ccode\u003e@cachedmethod\u003c/code\u003e with \u003ccode\u003elock\u003c/code\u003e\nparameter.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd test cases for cache stampede scenarios.\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\u003cp\u003ev6.2.4 (2025-12-15)\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/tkem/cachetools/commit/28bbcba53fbd939858ed02f52579e362e3b4fce9\"\u003e\u003ccode\u003e28bbcba\u003c/code\u003e\u003c/a\u003e Release v7.0.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/45776b23b1bf33dbad62bd74290f64ed205ce669\"\u003e\u003ccode\u003e45776b2\u003c/code\u003e\u003c/a\u003e Minor code and documentation improvements.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/51a70a9740981883c36bd1812b7cacd707ea264e\"\u003e\u003ccode\u003e51a70a9\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/357\"\u003e#357\u003c/a\u003e: Update documentation.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/bb72c21aab48bdd720fbe173ff1938bd5d923e43\"\u003e\u003ccode\u003ebb72c21\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/357\"\u003e#357\u003c/a\u003e: Add cache_info() support for \u003ca href=\"https://github.com/cachedmethod\"\u003e\u003ccode\u003e@​cachedmethod\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/86352aed2bedb23aa0cc461a58e76bd667617eaa\"\u003e\u003ccode\u003e86352ae\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/357\"\u003e#357\u003c/a\u003e: Convert \u003ca href=\"https://github.com/cachedmethod\"\u003e\u003ccode\u003e@​cachedmethod\u003c/code\u003e\u003c/a\u003e decorators to descriptors.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/263cf3185fcec33aceb93704252e5f34e8f9d3e3\"\u003e\u003ccode\u003e263cf31\u003c/code\u003e\u003c/a\u003e Prepare v7.0.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/59d4db25cd7e75a49886bdf5e1a01665811b935f\"\u003e\u003ccode\u003e59d4db2\u003c/code\u003e\u003c/a\u003e Drop support for cache(self) returning None in \u003ca href=\"https://github.com/cachedmethod\"\u003e\u003ccode\u003e@​cachedmethod\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/c933a9767348d43a570397de47455b98ecd6c191\"\u003e\u003ccode\u003ec933a97\u003c/code\u003e\u003c/a\u003e Drop support for passing \u0026quot;info\u0026quot; as fourth positional parameter of \u003ca href=\"https://github.com/cached\"\u003e\u003ccode\u003e@​cached\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/ae3d6bd7954ed14385501b40af6cfb486750f825\"\u003e\u003ccode\u003eae3d6bd\u003c/code\u003e\u003c/a\u003e Drop support for Python 3.9.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/a12c3b05a179f6d15e926784652935133d376755\"\u003e\u003ccode\u003ea12c3b0\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.1 to 6.0.2\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tkem/cachetools/compare/v5.2.0...v7.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `celery[sqs]` from 5.5.3 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[sqs]'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[sqs]'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.5.3...v5.6.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cffi` from 1.15.1 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only) - huge thanks to the folks at Quansight Labs for all the work to get this one sorted!\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.0.0b1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only).\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.17.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix failing \u003ccode\u003edistutils.msvc9compiler\u003c/code\u003e imports under Windows (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/118\"\u003e#118\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003effibuilder.emit_python_code()\u003c/code\u003e and \u003ccode\u003effibuiler.emit_c_code()\u003c/code\u003e accept file-like objects (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/115\"\u003e#115\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003effiplatform\u003c/code\u003e calls are bypassed by \u003ccode\u003effibuilder.emit_python_code()\u003c/code\u003e and \u003ccode\u003effibuilder.emit_c_code()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/81\"\u003e#81\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.0...v1.17.1\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.0...v1.17.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.17.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.13.\n\u003cul\u003e\n\u003cli\u003eFree-threaded CPython builds (i.e. \u003ccode\u003epython3.13t\u003c/code\u003e and the \u003ccode\u003e3.13t\u003c/code\u003e ABI) are not currently supported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eIn API mode, when you get a function from a C library by writing\n\u003ccode\u003efn = lib.myfunc\u003c/code\u003e, you get an object of a special type for performance\nreasons, instead of a \u003ccode\u003e\u0026lt;cdata 'C-function-type'\u0026gt;\u003c/code\u003e.  Before version 1.17\nyou could only call such objects.  You could write\n\u003ccode\u003effi.addressof(lib, \u0026quot;myfunc\u0026quot;)\u003c/code\u003e in order to get a real \u003ccode\u003e\u0026lt;cdata\u0026gt;\u003c/code\u003e object,\nbased on the idea that in these cases in C you'd usually write \u003ccode\u003e\u0026amp;myfunc\u003c/code\u003e\ninstead of \u003ccode\u003emyfunc\u003c/code\u003e.  In version 1.17, the special object\n\u003ccode\u003elib.myfunc\u003c/code\u003e can now be passed in many places where CFFI expects\na regular \u003ccode\u003e\u0026lt;cdata\u0026gt;\u003c/code\u003e object.  For example, you can now pass\nit as a callback to a C function call, or write it inside a C\nstructure field of the correct pointer-to-function type, or use\n\u003ccode\u003effi.cast()\u003c/code\u003e or \u003ccode\u003effi.typeof()\u003c/code\u003e on it.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.16.0...v1.17.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.16.0...v1.17.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.17.0rc1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.13.\u003c/li\u003e\n\u003cli\u003eIn API mode, when you get a function from a C library by writing fn = lib.myfunc, you get an object of a special type for performance reasons, instead of a \u0026lt;cdata ‘C-function-type’\u0026gt;. Before version 1.17 you could only call such objects. You could write ffi.addressof(lib, “myfunc”) in order to get a real \u003c!-- raw HTML omitted --\u003e object, based on the idea that in these cases in C you’d usually write \u0026amp;myfunc instead of myfunc. In version 1.17, the special object lib.myfunc can now be passed in many places where CFFI expects a regular \u003c!-- raw HTML omitted --\u003e object. For example, you can now pass it as a callback to a C function call, or write it inside a C structure field of the correct pointer-to-function type, or use ffi.cast() or ffi.typeof() on it.\u003c/li\u003e\n\u003cli\u003eBuild wheels for musllinux aarch64.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/6366c01d84e9a78e7e85f12ebe9760ba5d19b6d3\"\u003e\u003ccode\u003e6366c01\u003c/code\u003e\u003c/a\u003e release 2.0.0 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/95c847663aec401e4003927a274e4de9b8595f4f\"\u003e\u003ccode\u003e95c8476\u003c/code\u003e\u003c/a\u003e 2.0.0 post beta backports (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/195cbda66b6be9297ef6d584644e50cfdcca4e8a\"\u003e\u003ccode\u003e195cbda\u003c/code\u003e\u003c/a\u003e Release 2.0.0b1 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b4bbe7940d3f76027534db1aecbae9b61c35221a\"\u003e\u003ccode\u003eb4bbe79\u003c/code\u003e\u003c/a\u003e fix version test to support beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/7ed073de66e713cf791b6fdfa23685c81fdfd6ad\"\u003e\u003ccode\u003e7ed073d\u003c/code\u003e\u003c/a\u003e Add support for the free-threaded build (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/178\"\u003e#178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/67a170dc7972dc9361743690b38da3d963b200ef\"\u003e\u003ccode\u003e67a170d\u003c/code\u003e\u003c/a\u003e Change the license from MIT to MIT-no-attribution, which is the same without ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/92645ec9329feb03e3fa86240b40fe0fc37469d1\"\u003e\u003ccode\u003e92645ec\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support/testing (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/177\"\u003e#177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/2b81170583a898478a6996c9705d8c38ab7f73a1\"\u003e\u003ccode\u003e2b81170\u003c/code\u003e\u003c/a\u003e doc: update test commands in Section Testing/development tips (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/25172b84cf51cf58241f074ccd1efd9c7648cb43\"\u003e\u003ccode\u003e25172b8\u003c/code\u003e\u003c/a\u003e doc: update year (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b57a92c03eb2078a99c900519a37d18b4d52324f\"\u003e\u003ccode\u003eb57a92c\u003c/code\u003e\u003c/a\u003e issue 147: force-compute nested structs before parent structs.  Occurs mainly...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.15.1...v2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click-datetime` from 0.2 to 0.4.0\n\nUpdates `cryptography` from 44.0.3 to 46.0.4\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\u003e46.0.4 - 2026-01-27\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* `Dropped support for win_arm64 wheels`_.\n* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.5.\n\u003cp\u003e.. _v46-0-3:\u003c/p\u003e\n\u003cp\u003e46.0.3 - 2025-10-15\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed compilation when using LibreSSL 4.2.0.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v46-0-2:\u003c/p\u003e\n\u003cp\u003e46.0.2 - 2025-09-30\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.4.\n\u003cp\u003e.. _v46-0-1:\u003c/p\u003e\n\u003cp\u003e46.0.1 - 2025-09-16\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed an issue where users installing via \u003ccode\u003epip\u003c/code\u003e on Python 3.14 development\nversions would not properly install a dependency.\u003c/li\u003e\n\u003cli\u003eFixed an issue building the free-threaded macOS 3.14 wheels.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v46-0-0:\u003c/p\u003e\n\u003cp\u003e46.0.0 - 2025-09-16\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* **BACKWARDS INCOMPATIBLE:** Support for Python 3.7 has been removed.\n* Support for OpenSSL \u0026lt; 3.0 is deprecated and will be removed in the next\n  release.\n* Support for ``x86_64`` macOS (including publishing wheels) is deprecated\n  and will be removed in two releases. We will switch to publishing an\n  ``arm64`` only wheel for macOS.\n* Support for 32-bit Windows (including publishing wheels) is deprecated\n  and will be removed in two releases. Users should move to a 64-bit\n  Python installation.\n* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.3.\n* We now build ``ppc64le`` ``manylinux`` wheels and publish them to PyPI.\n* We now build ``win_arm64`` (Windows on Arm) wheels and publish them to PyPI.\n* Added support for free-threaded Python 3.14.\n* Removed the deprecated ``get_attribute_for_oid`` method on\n  :class:`~cryptography.x509.CertificateSigningRequest`. Users should use\n  :meth:`~cryptography.x509.Attributes.get_attribute_for_oid` instead.\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/pyca/cryptography/commit/e6f44fc8e6391f05d719fb9d369692325b87a471\"\u003e\u003ccode\u003ee6f44fc\u003c/code\u003e\u003c/a\u003e bump for 46.0.4 and drop win arm64 due to CI issues (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14217\"\u003e#14217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/c0af4dd7b75921bbe9f1d41a03dbd4b64a9e3403\"\u003e\u003ccode\u003ec0af4dd\u003c/code\u003e\u003c/a\u003e release 46.0.3 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13681\"\u003e#13681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/99efe5ad150a56efadafacaffd0e3ee319373904\"\u003e\u003ccode\u003e99efe5a\u003c/code\u003e\u003c/a\u003e bump version for 46.0.2 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13531\"\u003e#13531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e735cfc27502320101c130335c556394a125ba52\"\u003e\u003ccode\u003ee735cfc\u003c/code\u003e\u003c/a\u003e release 46.0.1 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13450\"\u003e#13450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/4e457ffba43a6d87efc63c33041e2081438dd8a4\"\u003e\u003ccode\u003e4e457ff\u003c/code\u003e\u003c/a\u003e Explicitly specify python in mac uv build invocation (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13447\"\u003e#13447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/2726efdb6d67f1c90cf9c6062d9fe051965586f8\"\u003e\u003ccode\u003e2726efd\u003c/code\u003e\u003c/a\u003e Depend on CFFI 2.0.0 or newer on Python \u0026gt; 3.8 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13448\"\u003e#13448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/62230623d183706632c0eb7822c96ac95e3710a8\"\u003e\u003ccode\u003e6223062\u003c/code\u003e\u003c/a\u003e release 46.0.0 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13446\"\u003e#13446\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/563c4915b0931455706f761a4579c26698824eae\"\u003e\u003ccode\u003e563c491\u003c/code\u003e\u003c/a\u003e Update comment for pyopenssl-release tag (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13445\"\u003e#13445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/d2f6f7faced35b73277bc624ff496f8af696b172\"\u003e\u003ccode\u003ed2f6f7f\u003c/code\u003e\u003c/a\u003e Bump downstream dependencies in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13439\"\u003e#13439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e7ab02bd679d0b4f55d93486fe27e62554ef15d4\"\u003e\u003ccode\u003ee7ab02b\u003c/code\u003e\u003c/a\u003e we'll ship this with 3.5.3 why not (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13442\"\u003e#13442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/cryptography/compare/44.0.3...46.0.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flake8` from 7.1.1 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.1.1...7.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flake8-bugbear` from 22.9.23 to 25.11.29\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/flake8-bugbear/releases\"\u003eflake8-bugbear's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e25.11.29\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eB043: Add new check to state don't call delattr with constant (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/514\"\u003e#514\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eB042: ignore overloaded init, ignore if str+pickle dunder, improve README\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e25.10.21\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eB042: New check for reminding to call super().\u003cstrong\u003einit\u003c/strong\u003e in custom exceptions\u003c/li\u003e\n\u003cli\u003eB028: Skip if skip_file_prefixes is used (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/503\"\u003e#503\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eB912: New check for \u003ccode\u003emap()\u003c/code\u003e without an explicit \u003ccode\u003estrict=\u003c/code\u003e parameter. (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/516\"\u003e#516\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd python3.14 Support / CI\u003c/li\u003e\n\u003cli\u003eRemove python3.9 support / CI\u003c/li\u003e\n\u003cli\u003eflake8-bugbear now requires at least Python 3.10, like the next release of flake8\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e24.12.12\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eB012 and B025 now also handle try/except* (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/500\"\u003e#500\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSkip B028 if warnings.warn is called with \u003ccode\u003e*args\u003c/code\u003e or \u003ccode\u003e**kwargs\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/501\"\u003e#501\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd B911: itertools.batched without strict= (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/502\"\u003e#502\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReadme has anchors per check (they do not seem to render on GitHub tho)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e24.10.31\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eB041: New dictionary same key AND value check (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/496\"\u003e#496\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eB037: Fix typo in error message\u003c/li\u003e\n\u003cli\u003eB024: No longer treats assigned class variables as abstract (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/471\"\u003e#471\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump required attrs version to 22.2.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e24.8.19\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eB910: implement to suggest using Counter() instead of defaultdict(int) (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/489\"\u003e#489\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eB901: Do not trigger with explicit Generator return type (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/481\"\u003e#481\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eB008: add some comments, rename b008_extend_immutable_calls (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/476\"\u003e#476\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eB040: exception with note added not reraised or used (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/477\"\u003e#477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eB039, Add \u003ccode\u003eContextVar\u003c/code\u003e with mutable literal or function call as default\u003c/li\u003e\n\u003cli\u003eB040: Add Exception with added note not reraised. (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/474\"\u003e#474\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRun tests in Python 3.13\u003c/li\u003e\n\u003cli\u003eType annotated code (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/481\"\u003e#481\u003c/a\u003e + \u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/483\"\u003e#483\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReplace hash with unsafe_hash (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/486\"\u003e#486\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e24.4.26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eB909: Fix false positive affecting containers of mutables (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/469\"\u003e#469\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e24.4.21\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eB950: Add pragma comment to line length ignores (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/463\"\u003e#463\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eB909: Add more cases to detect + more container mutating functions (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/460\"\u003e#460\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e24.2.6\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eB902: Remove decorators named validator and root_validator from B902 checks (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/459\"\u003e#459\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eB038: Change B038 to B909 and make it optional (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/456\"\u003e#456\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e24.1.17\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eB038: Restrict rule to mutation functions only (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/453\"\u003e#453\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e24.1.16\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8-bugbear/commit/a5ace0a2fe0697c42bca1c37cebc3d95e2c10df9\"\u003e\u003ccode\u003ea5ace0a\u003c/code\u003e\u003c/a\u003e Update CHANGES + move to version 25.11.29 to release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8-bugbear/commit/0afdcce2e33cf8fcbfe22d2d6f24e33b2f66eb1a\"\u003e\u003ccode\u003e0afdcce\u003c/code\u003e\u003c/a\u003e b042: ignore overloaded init, ignore if str+pickle dunder, improve README (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8-bugbear/commit/2d2fd4d8abb1e3c5c831253ca8afd1717d4221e2\"\u003e\u003ccode\u003e2d2fd4d\u003c/code\u003e\u003c/a\u003e Add B043: Do not call delattr with constant (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/514\"\u003e#514\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8-bugbear/commit/9677fa878cdb35f82e79a51b37d635256edd84df\"\u003e\u003ccode\u003e9677fa8\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/530\"\u003e#530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8-bugbear/commit/ad43575c1a2cc58efca7148f5036ed3d9cd54cdc\"\u003e\u003ccode\u003ead43575\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/529\"\u003e#529\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8-bugbear/commit/cdd75f1942294a152f864c978376f59b2ec08558\"\u003e\u003ccode\u003ecdd75f1\u003c/code\u003e\u003c/a\u003e Update CHANGES + move to version 25.10.21 to release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8-bugbear/commit/4601fe6e1993d7a8309dd26105a55d8c77aeae0d\"\u003e\u003ccode\u003e4601fe6\u003c/code\u003e\u003c/a\u003e Drop 3.9 support + add 3.14 CI (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/524\"\u003e#524\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8-bugbear/commit/39699611b4b399a6e81d726e76c58cbcdffa25ab\"\u003e\u003ccode\u003e3969961\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/523\"\u003e#523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8-bugbear/commit/6276149b6807114307569d67be8516dae306beab\"\u003e\u003ccode\u003e6276149\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/522\"\u003e#522\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8-bugbear/commit/d264420dec52a034efe05f160c4ac157f053c6e8\"\u003e\u003ccode\u003ed264420\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/520\"\u003e#520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PyCQA/flake8-bugbear/compare/22.9.23...25.11.29\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flask` 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/flask/releases\"\u003eflask'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 a fix release for the 3.0.x feature branch.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.0.3/\"\u003ehttps://pypi.org/project/Flask/3.0.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/en/3.0.x/changes/#version-3-0-3\"\u003ehttps://flask.palletsprojects.com/en/3.0.x/changes/#version-3-0-3\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/35?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/35?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe default \u003ccode\u003ehashlib.sha1\u003c/code\u003e may not be available in FIPS builds. Don't access it at import time so the developer has time to change the default. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5448\"\u003e#5448\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't initialize the \u003ccode\u003ecli\u003c/code\u003e attribute in the sansio scaffold, but rather in the \u003ccode\u003eFlask\u003c/code\u003e concrete class. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5270\"\u003e#5270\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.0.3\u003c/h2\u003e\n\u003cp\u003eReleased 2024-04-07\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe default \u003ccode\u003ehashlib.sha1\u003c/code\u003e may not be available in FIPS builds. Don't\naccess it at import time so the developer has time to change the default.\n:issue:\u003ccode\u003e5448\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDon't initialize the \u003ccode\u003ecli\u003c/code\u003e attribute in the sansio scaffold, but rather in\nthe \u003ccode\u003eFlask\u003c/code\u003e concrete class. :pr:\u003ccode\u003e5270\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c12a5d874c5a014495eb2db8a73f40037bc813ac\"\u003e\u003ccode\u003ec12a5d8\u003c/code\u003e\u003c/a\u003e release version 3.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/5e22cc9eec0d1da2da706ccf724fde702b30d5f2\"\u003e\u003ccode\u003e5e22cc9\u003c/code\u003e\u003c/a\u003e Don't set the cli attribute in the sansio scaffold (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5270\"\u003e#5270\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/5fdce4c331ac530280cc941179d364a07f4a1088\"\u003e\u003ccode\u003e5fdce4c\u003c/code\u003e\u003c/a\u003e Don't set the cli attribute in the sansio scaffold\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/adb7dd99c295a28726c8d818fba54c7b3f958ecc\"\u003e\u003ccode\u003eadb7dd9\u003c/code\u003e\u003c/a\u003e don't access app.logger when configuring app.logger\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/b73939095564ec5c088c53e7595b00d174a018f5\"\u003e\u003ccode\u003eb739390\u003c/code\u003e\u003c/a\u003e support FIPS builds without SHA-1 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5460\"\u003e#5460\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/db461112c70d5f2bf93c7a6ac27eeb665c232dd0\"\u003e\u003ccode\u003edb46111\u003c/code\u003e\u003c/a\u003e access sha1 lazily\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/7320e311a0a3f190351173f8be90cab31dadbf73\"\u003e\u003ccode\u003e7320e31\u003c/code\u003e\u003c/a\u003e start version 3.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/87d5f5b9a9697434e6d972b021201105eabb54e6\"\u003e\u003ccode\u003e87d5f5b\u003c/code\u003e\u003c/a\u003e update project files (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5457\"\u003e#5457\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/d5e321b792cd6f3cd7b072d175f47eacbd5ee14f\"\u003e\u003ccode\u003ed5e321b\u003c/code\u003e\u003c/a\u003e release version 3.0.2 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5403\"\u003e#5403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pallets/flask/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 `flask-marshmallow` from 1.3.0 to 1.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/marshmallow-code/flask-marshmallow/blob/dev/CHANGELOG.rst\"\u003eflask-marshmallow's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e1.4.0 (2026-02-04)\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd missing commas in error message for \u003ccode\u003evalidate.FileType\u003c/code\u003e (:pr:\u003ccode\u003e374\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eSupport:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Python 3.10-3.14 (:pr:\u003ccode\u003e376\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/marshmallow-code/flask-marshmallow/commit/eae69c2504bcd949632cfcf42fbfb64b933e564b\"\u003e\u003ccode\u003eeae69c2\u003c/code\u003e\u003c/a\u003e Bump version and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/flask-marshmallow/commit/e0bf754102a1c973f5416df921b4635133bf9216\"\u003e\u003ccode\u003ee0bf754\u003c/code\u003e\u003c/a\u003e Support Python 3.10-3.14 (\u003ca href=\"https://redirect.github.com/marshmallow-code/flask-marshmallow/issues/376\"\u003e#376\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/flask-marshmallow/commit/e51f8c857eab28c541dde285d3cfab2d9804757b\"\u003e\u003ccode\u003ee51f8c8\u003c/code\u003e\u003c/a\u003e Add missing commas to error message for validate.FileType (\u003ca href=\"https://redirect.github.com/marshmallow-code/flask-marshmallow/issues/374\"\u003e#374\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/flask-marshmallow/commit/b63a02c6a0d1e4ad9923c627c47c4096ebc0f3f7\"\u003e\u003ccode\u003eb63a02c\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/marshmallow-code/flask-marshmallow/issues/375\"\u003e#375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/flask-marshmallow/commit/651969863a670baae611460e59353bdd12b5e85a\"\u003e\u003ccode\u003e6519698\u003c/code\u003e\u003c/a\u003e Update tox.ini to be in line with marshmallow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/flask-marshmallow/commit/d703f74c76afb2f3e8c47f47589bd3b143d44924\"\u003e\u003ccode\u003ed703f74\u003c/code\u003e\u003c/a\u003e build(deps-dev): bump sphinx from 8.2.3 to 9.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/flask-marshmallow/commit/5e7ccf0c04e3a153b96483eb98e9aea744b4c0b0\"\u003e\u003ccode\u003e5e7ccf0\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/marshmallow-code/flask-marshmallow/issues/372\"\u003e#372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/flask-marshmallow/commit/e534f457fab3127ca0430eb198da30be569dc7ce\"\u003e\u003ccode\u003ee534f45\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 5 to 6 (\u003ca href=\"https://redirect.github.com/marshmallow-code/flask-marshmallow/issues/370\"\u003e#370\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/flask-marshmallow/commit/65dbf7fb46e663d4579afccf93a67dc212560b67\"\u003e\u003ccode\u003e65dbf7f\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/marshmallow-code/flask-marshmallow/issues/371\"\u003e#371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/flask-marshmallow/commit/d43651abfdb47b4a86a0300aa330d0e597c3aee7\"\u003e\u003ccode\u003ed43651a\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 (\u003ca href=\"https://redirect.github.com/marshmallow-code/flask-marshmallow/issues/368\"\u003e#368\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/marshmallow-code/flask-marshmallow/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 `flask-migrate` from 3.1.0 to 4.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/releases\"\u003eflask-migrate's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 4.1.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/blob/main/CHANGES.md\"\u003eCHANGES.md\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 4.0.7\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/blob/main/CHANGES.md\"\u003eCHANGES.md\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 4.0.6\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/blob/main/CHANGES.md\"\u003eCHANGES.md\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 4.0.5\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/blob/main/CHANGES.md\"\u003eCHANGES.md\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 4.0.4\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/blob/main/CHANGES.md\"\u003eCHANGE.LOG\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 4.0.3\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/blob/main/CHANGES.md\"\u003eCHANGE.LOG\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 4.0.2\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/blob/main/CHANGES.md\"\u003eCHANGE.LOG\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 4.0.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/blob/main/CHANGES.md\"\u003eCHANGE.LOG\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 4.0.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/blob/main/CHANGES.md\"\u003eCHANGE.LOG\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/miguelgrinberg/Flask-Migrate/blob/main/CHANGES.md\"\u003eflask-migrate's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eFlask-Migrate Change Log\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 4.1.0\u003c/strong\u003e - 2025-01-10\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAccept arguments such as \u003ccode\u003e--directory\u003c/code\u003e in environment variables \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-migrate/issues/553\"\u003e#553\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/commit/12a181ce0542659f10b4ce154a10cfd41fa1f501\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix minor typos in documentation \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-migrate/issues/552\"\u003e#552\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/commit/3b073a2c500303894c495d2e4fa0ef449b6a2833\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eKevin Kirsche\u003c/strong\u003e!)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 4.0.7\u003c/strong\u003e - 2024-03-11\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRegression from \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-migrate/issues/438\"\u003e#438\u003c/a\u003e: check \u003ccode\u003eg.x_arg\u003c/code\u003e exists before accessing it \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-migrate/issues/541\"\u003e#541\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/commit/7e8032c61e5c47f4e50b03dcf98c3b20dd5a8e55\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eSkye Im\u003c/strong\u003e!)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 4.0.6\u003c/strong\u003e - 2024-03-09\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAccept \u003ccode\u003e-x\u003c/code\u003e options for all db commands \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-migrate/issues/438\"\u003e#438\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/commit/6f3f889c36030134f87dc1db327c2385d873a4d6\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--purge\u003c/code\u003e flag to the \u003ccode\u003estamp\u003c/code\u003e command \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-migrate/issues/540\"\u003e#540\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/commit/af67bb093df5652c867b88880c5934bfc68313cc\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eJono N\u003c/strong\u003e!)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 4.0.5\u003c/strong\u003e - 2023-09-12\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCompatibility fixes for Flask-SQLAlchemy \u0026gt;= 3.1 \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-migrate/issues/526\"\u003e#526\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/commit/f562178bbe1912912f3cb6877cbae8b0899c74da\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eDavid Lord\u003c/strong\u003e!)\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eprocess_revision_directives\u003c/code\u003e option to be configurable \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-migrate/issues/523\"\u003e#523\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/commit/821e37fcc4a5e339f197153cdbb4dd2316cbd44b\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003ellc\u003c/strong\u003e!)\u003c/li\u003e\n\u003cli\u003eStop testing Python 3.7, as Flask-SQLAlchemy 3.1 stopped supporting it (\u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/commit/8d175193f00bf4e5578f0142d011093d8cd53d57\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 4.0.4\u003c/strong\u003e - 2023-02-02\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCorrectly obtain database URL with SQLAlchemy 2.0 \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-migrate/issues/505\"\u003e#505\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/commit/c8cd02c5d3d43bbab462b863db5417b5d69228bb\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 4.0.3\u003c/strong\u003e - 2023-01-29\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove legacy \u003cstrong\u003efuture\u003c/strong\u003e import in Alembic templates \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-migrate/issues/504\"\u003e#504\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/commit/7a388cfe320254735f4ed65ac655caaf0cae8b28\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003ePamela Fox\u003c/strong\u003e!)\u003c/li\u003e\n\u003cli\u003eAdd SQLAlchemy 1.4 and 2.0 to the test matrix (\u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/commit/7a725f2e3267f1c3bb4920cd3bff3a9ff1d7eb6e\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSwitch to pytest as test runner (\u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/commit/5acd794048d050f85b5dea93052f96abd8a583f2\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 4.0.2\u003c/strong\u003e - 2023-01-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u0026quot;check\u0026quot; command \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-migrate/issues/502\"\u003e#502\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/commit/1a893b4fca280f82b1aada6458b7c866c6d3c953\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eMasamitsu MURASE\u003c/strong\u003e!)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 4.0.1\u003c/strong\u003e - 2023-01-05\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDo not use deprecated functions in Flask-SQLAlchemy 3.0 (\u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/commit/7cb4236327ea04fc6be8a17bbfadae6de7bfbc8b\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStop building Python 3.6 (\u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/commit/c9534b39df49884e1b62592c486ed0d5565b3321\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove tests from pypi package (\u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/commit/2dd0c25caa5c43b452109f64c8e33ccc048ca210\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 4.0.0\u003c/strong\u003e - 2022-11-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdates for Flask-SQLAlchemy 3.x compatibility (\u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/commit/51752948aabdb68f7c032e1c1fc8317f895e10a6\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnable type comparison and batch mode by default (\u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/commit/a3085b34e5b1865d2b773248b37468764df7c312\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOption to rename \u0026quot;db\u0026quot; command group to a custom name (\u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/commit/b9c9d35744a08f4f62084ce6e3ddf30d21431dc7\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBetter handling of MetaData instances in templates (\u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/commit/c051a000c1518a71e0a5d045c1f8065b9add5122\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSet options correctly when \u003ccode\u003erevision --autogenerate\u003c/code\u003e is used \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-migrate/issues/463\"\u003e#463\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/commit/f7f15e2623866110974fddcdbea87ccbf1d74a40\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eFrazer McLean\u003c/strong\u003e!)\u003c/li\u003e\n\u003cli\u003eDocumentation section on configuring Alembic (\u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/commit/28522143f4e1371f08fa8bac8d3ba1f6b04e0f72\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/Flask-Migrate/commit/dd098cc0057d6fc260e034b897a133cb3ede5902\"\u003e\u003ccode\u003edd098cc\u003c/code\u003e\u003c/a\u003e Release 4.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/Flask-Migrate/commit/12a181ce0542659f10b4ce154a10cfd41fa1f501\"\u003e\u003ccode\u003e12a181c\u003c/code\u003e\u003c/a\u003e Accept arguments such as --directory via environment variables (Fixes \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-migrate/issues/553\"\u003e#553\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/Flask-Migrate/commit/0c0e82814fc3145919c56bac9b014619155d9614\"\u003e\u003ccode\u003e0c0e828\u003c/code\u003e\u003c/a\u003e revert to default funding file #nolog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/Flask-Migrate/commit/3b073a2c500303894c495d2e4fa0ef449b6a2833\"\u003e\u003ccode\u003e3b073a2\u003c/code\u003e\u003c/a\u003e Fix: minor typos (\u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-migrate/issues/552\"\u003e#552\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/Flask-Migrate/commit/f5f70fba7e0b82d666db117b00f368b1b368ded0\"\u003e\u003ccode\u003ef5f70fb\u003c/code\u003e\u003c/a\u003e add a .readthedocs.yml configuration #nolog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/Flask-Migrate/commit/f312c2e31f82bb5319b93c20228ec06c384ff7cd\"\u003e\u003ccode\u003ef312c2e\u003c/code\u003e\u003c/a\u003e Version 4.0.8.dev0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/Flask-Migrate/commit/faf06d1460bc76fe6951e9497352fcd3d3dfce98\"\u003e\u003ccode\u003efaf06d1\u003c/code\u003e\u003c/a\u003e Release 4.0.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/Flask-Migrate/commit/7e8032c61e5c47f4e50b03dcf98c3b20dd5a8e55\"\u003e\u003ccode\u003e7e8032c\u003c/code\u003e\u003c/a\u003e Check g.x_arg exists before working on it (\u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-migrate/issues/541\"\u003e#541\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/Flask-Migrate/commit/9c0adacb973930797544f70578773060f1f854ec\"\u003e\u003ccode\u003e9c0adac\u003c/code\u003e\u003c/a\u003e Version 4.0.7.dev0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/Flask-Migrate/commit/e8689cac888e6781faf1cb7ab83e35390ff0b00c\"\u003e\u003ccode\u003ee8689ca\u003c/code\u003e\u003c/a\u003e Release 4.0.6\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/compare/v3.1.0...v4.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `freezegun` from 1.2.2 to 1.5.5\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/spulec/freezegun/blob/master/CHANGELOG\"\u003efreezegun's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.5\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow parametrized arguments called 'func' (Broken in 1.5.4...\n\n_Description has been truncated_","html_url":"https://github.com/alphagov/emergency-alerts-api/pull/291","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/alphagov%2Femergency-alerts-api/issues/291","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/291/packages"},{"uuid":"3884145371","node_id":"PR_kwDOPjXchc7A0mAr","number":16,"state":"closed","title":"Bump the dependencies group across 1 directory with 40 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-02-09T05:55:20.000Z","author_association":null,"state_reason":null,"created_at":"2026-02-02T05:59:23.000Z","updated_at":"2026-02-09T05:55:21.000Z","time_to_close":604557,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"dependencies","update_count":40,"packages":[{"name":"cryptography","old_version":"43.0.3","new_version":"46.0.4","repository_url":"https://github.com/pyca/cryptography"},{"name":"sigstore","old_version":"3.6.1","new_version":"4.1.0","repository_url":"https://github.com/sigstore/sigstore-python"},{"name":"pykcs11","old_version":"1.5.17","new_version":"1.5.18","repository_url":"https://github.com/LudovicRousseau/PyKCS11"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"pycparser","old_version":"2.22","new_version":"2.23","repository_url":"https://github.com/eliben/pycparser"},{"name":"anyio","old_version":"4.9.0","new_version":"4.12.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"betterproto","old_version":"2.0.0b6","new_version":"2.0.0b7","repository_url":"https://github.com/danielgtaylor/python-betterproto"},{"name":"certifi","old_version":"2025.1.31","new_version":"2026.1.4","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"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [cryptography](https://github.com/pyca/cryptography), [sigstore](https://github.com/sigstore/sigstore-python), [pykcs11](https://github.com/LudovicRousseau/PyKCS11), [cffi](https://github.com/python-cffi/cffi), [pycparser](https://github.com/eliben/pycparser), [anyio](https://github.com/agronholm/anyio), [betterproto](https://github.com/danielgtaylor/python-betterproto), [certifi](https://github.com/certifi/python-certifi), [charset-normalizer](https://github.com/jawah/charset_normalizer), [email-validator](https://github.com/JoshData/python-email-validator), [fastapi](https://github.com/fastapi/fastapi), [fonttools](https://github.com/fonttools/fonttools), [grpclib](https://github.com/vmagamedov/grpclib), [h11](https://github.com/python-hyper/h11), [h2](https://github.com/python-hyper/h2), [idna](https://github.com/kjd/idna), [multidict](https://github.com/aio-libs/multidict), [packaging](https://github.com/pypa/packaging), [pandas](https://github.com/pandas-dev/pandas), [pillow](https://github.com/python-pillow/Pillow), [platformdirs](https://github.com/tox-dev/platformdirs), [pyasn1](https://github.com/pyasn1/pyasn1), [pydantic](https://github.com/pydantic/pydantic), [pydantic-core](https://github.com/pydantic/pydantic-core), [pygments](https://github.com/pygments/pygments), [pyjwt](https://github.com/jpadilla/pyjwt), [pyopenssl](https://github.com/pyca/pyopenssl), [pyparsing](https://github.com/pyparsing/pyparsing), [requests](https://github.com/psf/requests), [rfc3161-client](https://github.com/trailofbits/rfc3161-client), [rich](https://github.com/Textualize/rich), [sigstore-protobuf-specs](https://github.com/sigstore/protobuf-specs), [starlette](https://github.com/Kludex/starlette), [typing-extensions](https://github.com/python/typing_extensions), [tzdata](https://github.com/python/tzdata), [urllib3](https://github.com/urllib3/urllib3), [uvicorn](https://github.com/Kludex/uvicorn), [hvac](https://github.com/hvac/hvac), [boto3](https://github.com/boto/boto3) and [botocore](https://github.com/boto/botocore) to permit the latest version.\nUpdates `cryptography` from 43.0.3 to 46.0.4\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\u003e46.0.4 - 2026-01-27\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* `Dropped support for win_arm64 wheels`_.\n* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.5.\n\u003cp\u003e.. _v46-0-3:\u003c/p\u003e\n\u003cp\u003e46.0.3 - 2025-10-15\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed compilation when using LibreSSL 4.2.0.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v46-0-2:\u003c/p\u003e\n\u003cp\u003e46.0.2 - 2025-09-30\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.4.\n\u003cp\u003e.. _v46-0-1:\u003c/p\u003e\n\u003cp\u003e46.0.1 - 2025-09-16\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed an issue where users installing via \u003ccode\u003epip\u003c/code\u003e on Python 3.14 development\nversions would not properly install a dependency.\u003c/li\u003e\n\u003cli\u003eFixed an issue building the free-threaded macOS 3.14 wheels.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v46-0-0:\u003c/p\u003e\n\u003cp\u003e46.0.0 - 2025-09-16\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* **BACKWARDS INCOMPATIBLE:** Support for Python 3.7 has been removed.\n* Support for OpenSSL \u0026lt; 3.0 is deprecated and will be removed in the next\n  release.\n* Support for ``x86_64`` macOS (including publishing wheels) is deprecated\n  and will be removed in two releases. We will switch to publishing an\n  ``arm64`` only wheel for macOS.\n* Support for 32-bit Windows (including publishing wheels) is deprecated\n  and will be removed in two releases. Users should move to a 64-bit\n  Python installation.\n* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.3.\n* We now build ``ppc64le`` ``manylinux`` wheels and publish them to PyPI.\n* We now build ``win_arm64`` (Windows on Arm) wheels and publish them to PyPI.\n* Added support for free-threaded Python 3.14.\n* Removed the deprecated ``get_attribute_for_oid`` method on\n  :class:`~cryptography.x509.CertificateSigningRequest`. Users should use\n  :meth:`~cryptography.x509.Attributes.get_attribute_for_oid` instead.\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/pyca/cryptography/commit/e6f44fc8e6391f05d719fb9d369692325b87a471\"\u003e\u003ccode\u003ee6f44fc\u003c/code\u003e\u003c/a\u003e bump for 46.0.4 and drop win arm64 due to CI issues (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14217\"\u003e#14217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/c0af4dd7b75921bbe9f1d41a03dbd4b64a9e3403\"\u003e\u003ccode\u003ec0af4dd\u003c/code\u003e\u003c/a\u003e release 46.0.3 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13681\"\u003e#13681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/99efe5ad150a56efadafacaffd0e3ee319373904\"\u003e\u003ccode\u003e99efe5a\u003c/code\u003e\u003c/a\u003e bump version for 46.0.2 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13531\"\u003e#13531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e735cfc27502320101c130335c556394a125ba52\"\u003e\u003ccode\u003ee735cfc\u003c/code\u003e\u003c/a\u003e release 46.0.1 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13450\"\u003e#13450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/4e457ffba43a6d87efc63c33041e2081438dd8a4\"\u003e\u003ccode\u003e4e457ff\u003c/code\u003e\u003c/a\u003e Explicitly specify python in mac uv build invocation (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13447\"\u003e#13447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/2726efdb6d67f1c90cf9c6062d9fe051965586f8\"\u003e\u003ccode\u003e2726efd\u003c/code\u003e\u003c/a\u003e Depend on CFFI 2.0.0 or newer on Python \u0026gt; 3.8 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13448\"\u003e#13448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/62230623d183706632c0eb7822c96ac95e3710a8\"\u003e\u003ccode\u003e6223062\u003c/code\u003e\u003c/a\u003e release 46.0.0 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13446\"\u003e#13446\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/563c4915b0931455706f761a4579c26698824eae\"\u003e\u003ccode\u003e563c491\u003c/code\u003e\u003c/a\u003e Update comment for pyopenssl-release tag (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13445\"\u003e#13445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/d2f6f7faced35b73277bc624ff496f8af696b172\"\u003e\u003ccode\u003ed2f6f7f\u003c/code\u003e\u003c/a\u003e Bump downstream dependencies in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13439\"\u003e#13439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e7ab02bd679d0b4f55d93486fe27e62554ef15d4\"\u003e\u003ccode\u003ee7ab02b\u003c/code\u003e\u003c/a\u003e we'll ship this with 3.5.3 why not (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13442\"\u003e#13442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/cryptography/compare/43.0.3...46.0.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sigstore` from 3.6.1 to 4.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sigstore/sigstore-python/releases\"\u003esigstore's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.1.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecli: Support using other Sigstore instances with \u003ccode\u003e--instance URL\u003c/code\u003e.\nNew instances are trusted with new top level command \u003ccode\u003etrust-instance ROOTFILE\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1548\"\u003e#1548\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded cryptography 46 to list of compatible cryptography releases\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1544\"\u003e#1544\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved error message when verifying bundles with unsupported log entry versions\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1569\"\u003e#1569\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecli: Always read/write UTF-8. This fixes an issue on Windows where the platform\ndefault encoding was used: the issue has existed for a while, but became more visible\nwith signature bundles that contain rekor2 entries.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1553\"\u003e#1553\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev4.0.0\u003c/h2\u003e\n\u003cp\u003eThis is a major release with a host of API and functionality changes. The major new feature\nis Rekor v2 support but many other changes are also included, see list below.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecli: Add \u003ccode\u003e--rekor-version\u003c/code\u003e to \u003ccode\u003esign\u003c/code\u003e command arguments: This can be useful\nif Sigstore instance provides multiple Rekor versions and user wants to\noverride the default choice\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1471\"\u003e#1471\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecli: Support parallel signing. When multiple artifacts are signed, the Rekor\nrequests are submitted in parallel: this is especially useful with Rekor v2.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1468\"\u003e#1468\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1478\"\u003e#1478\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1485\"\u003e#1485\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eoidc (API): Allow custom audience claims via API\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1402\"\u003e#1402\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erekor (API): Support Rekor v2 (aka rekor-tiles) in both verification and signing.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1370\"\u003e#1370\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1422\"\u003e#1422\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1432\"\u003e#1432\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etrust (API): Make TrustedRoot, SigningConfig and ClientTrustConfig public API\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1496\"\u003e#1496\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecli: Improve verify UX when wrong instance is used\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1510\"\u003e#1510\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edeps: replace sigstore_protobuf_specs dependency with sigstore-models\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1470\"\u003e#1470\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- 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/sigstore/sigstore-python/blob/main/CHANGELOG.md\"\u003esigstore's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[4.1.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecli: Support using other Sigstore instances with \u003ccode\u003e--instance URL\u003c/code\u003e.\nNew instances are trusted with new top level command \u003ccode\u003etrust-instance ROOTFILE\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1548\"\u003e#1548\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded cryptography 46 to list of compatible cryptography releases\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1544\"\u003e#1544\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved error message when verifying bundles with unsupported log entry versions\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1569\"\u003e#1569\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecli: Always read/write UTF-8. This fixes an issue on Windows where the platform\ndefault encoding was used: the issue has existed for a while, but became more visible\nwith signature bundles that contain rekor2 entries.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1553\"\u003e#1553\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.0.0]\u003c/h2\u003e\n\u003cp\u003eThis is a major release with a host of API and functionality changes. The major new feature\nis Rekor v2 support but many other changes are also included, see list below.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecli: Add \u003ccode\u003e--rekor-version\u003c/code\u003e to \u003ccode\u003esign\u003c/code\u003e command arguments: This can be useful\nif Sigstore instance provides multiple Rekor versions and user wants to\noverride the default choice\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1471\"\u003e#1471\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecli: Support parallel signing. When multiple artifacts are signed, the Rekor\nrequests are submitted in parallel: this is especially useful with Rekor v2.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1468\"\u003e#1468\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1478\"\u003e#1478\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1485\"\u003e#1485\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eoidc (API): Allow custom audience claims via API\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1402\"\u003e#1402\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erekor (API): Support Rekor v2 (aka rekor-tiles) in both verification and signing.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1370\"\u003e#1370\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1422\"\u003e#1422\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1432\"\u003e#1432\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etrust (API): Make TrustedRoot, SigningConfig and ClientTrustConfig public API\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1496\"\u003e#1496\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecli: Improve verify UX when wrong instance is used\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1510\"\u003e#1510\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edeps: replace sigstore_protobuf_specs dependency with sigstore-models\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/3447f9603cfa0e9fe9d9c83d5bd5fb0bfe08a598\"\u003e\u003ccode\u003e3447f96\u003c/code\u003e\u003c/a\u003e Forward port entry kindversion error improvement, bump version to 4.1.0 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1569\"\u003e#1569\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/2dbe03ae34c36e7d04bec7e63822ebcbbed362aa\"\u003e\u003ccode\u003e2dbe03a\u003c/code\u003e\u003c/a\u003e build(deps): bump github/codeql-action in the actions group (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1572\"\u003e#1572\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/02daa6970d0eaff526fd846efd6af46067206618\"\u003e\u003ccode\u003e02daa69\u003c/code\u003e\u003c/a\u003e build(deps): bump rich from 14.1.0 to 14.2.0 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1571\"\u003e#1571\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/16159399b18178aa87001b1e13b7c730be6d36b6\"\u003e\u003ccode\u003e1615939\u003c/code\u003e\u003c/a\u003e build(deps): bump the actions group with 2 updates (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1568\"\u003e#1568\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/72b658140bd3718aa9bba955d2ec87a8de6cb7bb\"\u003e\u003ccode\u003e72b6581\u003c/code\u003e\u003c/a\u003e build(deps): update ruff requirement from \u0026lt;0.13.4 to \u0026lt;0.14.1 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1567\"\u003e#1567\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/64dbeba7394b028ac6e75ddf5f4b1875b4571631\"\u003e\u003ccode\u003e64dbeba\u003c/code\u003e\u003c/a\u003e cli: Support using other Sigstore instances (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1548\"\u003e#1548\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/508b0e77ec9e04e6aecc09b8b476ff4937bed538\"\u003e\u003ccode\u003e508b0e7\u003c/code\u003e\u003c/a\u003e build(deps): bump softprops/action-gh-release in the actions group (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1563\"\u003e#1563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/e31f481006755785e0fffc8a040e81e31aeee5b1\"\u003e\u003ccode\u003ee31f481\u003c/code\u003e\u003c/a\u003e build(deps): update ruff requirement from \u0026lt;0.13.3 to \u0026lt;0.13.4 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1562\"\u003e#1562\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/dec897bbda882b0d9f694da60047044c0f649468\"\u003e\u003ccode\u003edec897b\u003c/code\u003e\u003c/a\u003e build(deps): bump github/codeql-action in the actions group (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1561\"\u003e#1561\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/0a54b4fce6a26150954c9eea8ed3720af27f06bf\"\u003e\u003ccode\u003e0a54b4f\u003c/code\u003e\u003c/a\u003e build(deps): bump cryptography from 46.0.1 to 46.0.2 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1558\"\u003e#1558\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sigstore/sigstore-python/compare/v3.6.1...v4.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pykcs11` from 1.5.17 to 1.5.18\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/releases\"\u003epykcs11's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e1.5.18 - August 2025, Ludovic Rousseau\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eadd \u003ccode\u003eCKM_EXTRACT_KEY_FROM_KEY\u003c/code\u003e mechanism\u003c/li\u003e\n\u003cli\u003eadd \u003ccode\u003eCKM_EDDSA\u003c/code\u003e and \u003ccode\u003eCK_EDDSA_PARAMS\u003c/code\u003e support\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eC_Initialize()\u003c/code\u003e: allow OS locking\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePyKCS11.load()\u003c/code\u003e \u0026amp; \u003ccode\u003e.unload()\u003c/code\u003e: make the methods tread-safe\u003c/li\u003e\n\u003cli\u003ebugfix: store \u003ccode\u003eCKM_CONCATENATE_BASE_AND_KEY\u003c/code\u003e parameter in mechanism context\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eIsNum()\u003c/code\u003e: \u003ccode\u003eCKA_HW_FEATURE_TYPE\u003c/code\u003e is also a numeric value\u003c/li\u003e\n\u003cli\u003eimprove support for multi-part encryption/decryption\u003c/li\u003e\n\u003cli\u003efix some Python typing issues\u003c/li\u003e\n\u003cli\u003eFix issue with vendor defined (\u003ccode\u003eCKM_VENDOR_DEFINED\u003c/code\u003e) mechanisms\u003c/li\u003e\n\u003cli\u003efix/ignore all pylint warnings\u003c/li\u003e\n\u003cli\u003euse pytest for running tests\u003c/li\u003e\n\u003cli\u003eminor improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/upload-artifact 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/LudovicRousseau/PyKCS11/pull/125\"\u003eLudovicRousseau/PyKCS11#125\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd CKM_EXTRACT_KEY_FROM_KEY mechanism by \u003ca href=\"https://github.com/fuzzykat\"\u003e\u003ccode\u003e@​fuzzykat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/LudovicRousseau/PyKCS11/pull/128\"\u003eLudovicRousseau/PyKCS11#128\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/LudovicRousseau/PyKCS11/pull/132\"\u003eLudovicRousseau/PyKCS11#132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eimprove support for multi-part encryption/decryption by \u003ca href=\"https://github.com/fuzzykat\"\u003e\u003ccode\u003e@​fuzzykat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/LudovicRousseau/PyKCS11/pull/135\"\u003eLudovicRousseau/PyKCS11#135\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003euse ckbytelist as return type by \u003ca href=\"https://github.com/andreastedile\"\u003e\u003ccode\u003e@​andreastedile\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/LudovicRousseau/PyKCS11/pull/136\"\u003eLudovicRousseau/PyKCS11#136\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003euse CK_OBJECT_HANDLE as parameter type by \u003ca href=\"https://github.com/andreastedile\"\u003e\u003ccode\u003e@​andreastedile\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/LudovicRousseau/PyKCS11/pull/137\"\u003eLudovicRousseau/PyKCS11#137\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003euse CK_OBJECT_HANDLE as return type by \u003ca href=\"https://github.com/andreastedile\"\u003e\u003ccode\u003e@​andreastedile\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/LudovicRousseau/PyKCS11/pull/138\"\u003eLudovicRousseau/PyKCS11#138\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/LudovicRousseau/PyKCS11/pull/139\"\u003eLudovicRousseau/PyKCS11#139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd CKM_EDDSA and CK_EDDSA_PARAMS support by \u003ca href=\"https://github.com/fuzzykat\"\u003e\u003ccode\u003e@​fuzzykat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/LudovicRousseau/PyKCS11/pull/141\"\u003eLudovicRousseau/PyKCS11#141\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/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] made their first contribution in \u003ca href=\"https://redirect.github.com/LudovicRousseau/PyKCS11/pull/125\"\u003eLudovicRousseau/PyKCS11#125\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] made their first contribution in \u003ca href=\"https://redirect.github.com/LudovicRousseau/PyKCS11/pull/132\"\u003eLudovicRousseau/PyKCS11#132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/andreastedile\"\u003e\u003ccode\u003e@​andreastedile\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/LudovicRousseau/PyKCS11/pull/136\"\u003eLudovicRousseau/PyKCS11#136\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/compare/1.5.17...1.5.18\"\u003ehttps://github.com/LudovicRousseau/PyKCS11/compare/1.5.17...1.5.18\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/LudovicRousseau/PyKCS11/blob/master/Changes.txt\"\u003epykcs11's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e1.5.18 - August 2025, Ludovic Rousseau\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eadd CKM_EXTRACT_KEY_FROM_KEY mechanism\u003c/li\u003e\n\u003cli\u003eadd CKM_EDDSA and CK_EDDSA_PARAMS support\u003c/li\u003e\n\u003cli\u003eC_Initialize(): allow OS locking\u003c/li\u003e\n\u003cli\u003ePyKCS11.load() \u0026amp; .unload(): make the methods tread-safe\u003c/li\u003e\n\u003cli\u003ebugfix: store CKM_CONCATENATE_BASE_AND_KEY parameter in mechanism context\u003c/li\u003e\n\u003cli\u003eIsNum(): CKA_HW_FEATURE_TYPE is also a numeric value\u003c/li\u003e\n\u003cli\u003eimprove support for multi-part encryption/decryption\u003c/li\u003e\n\u003cli\u003efix some Python typing issues\u003c/li\u003e\n\u003cli\u003eFix issue with vendor defined (CKM_VENDOR_DEFINED) mechanisms\u003c/li\u003e\n\u003cli\u003efix/ignore all pylint warnings\u003c/li\u003e\n\u003cli\u003euse pytest for running tests\u003c/li\u003e\n\u003cli\u003eminor improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/commit/1f34853e9fb42bc4eedd7f3bc5057b5c4f2dffa7\"\u003e\u003ccode\u003e1f34853\u003c/code\u003e\u003c/a\u003e Release 1.5.18\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/commit/abea61f5261b6e206883307736f2d67a57524ee8\"\u003e\u003ccode\u003eabea61f\u003c/code\u003e\u003c/a\u003e fix load(): move os.getenv() outside of the _lock scope\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/commit/be5f5e31c90c6dd782c30eb570130fd1792a2eaf\"\u003e\u003ccode\u003ebe5f5e3\u003c/code\u003e\u003c/a\u003e fix: use self.assertRaises() in test_sign_integer\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/commit/2177a59dd7aa4522ba75a2dad2f55731d03c41dd\"\u003e\u003ccode\u003e2177a59\u003c/code\u003e\u003c/a\u003e add CKM_EDDSA and CK_EDDSA_PARAMS support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/commit/2094a494b27b618ca7dd6800af49bb026a812ccc\"\u003e\u003ccode\u003e2094a49\u003c/code\u003e\u003c/a\u003e IsNum(): CKA_HW_FEATURE_TYPE is also a numeric value\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/commit/383425ed17c362c4463bbb6d5d300ca64d55b441\"\u003e\u003ccode\u003e383425e\u003c/code\u003e\u003c/a\u003e Add information in PyKCS11Error(-2)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/commit/1a1bab33b4c2b7f9bd63f28119e57515d2b08151\"\u003e\u003ccode\u003e1a1bab3\u003c/code\u003e\u003c/a\u003e dev-requirements.txt: add pytest\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/commit/62e8b7eb8638bf3f88705f61deb83d2b248748da\"\u003e\u003ccode\u003e62e8b7e\u003c/code\u003e\u003c/a\u003e Makefile: use pytest to run tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/commit/8eec8e34bc051a62d8a0b2af34d7eb47f2537436\"\u003e\u003ccode\u003e8eec8e3\u003c/code\u003e\u003c/a\u003e Add run_pytest.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/commit/f7a962879f82017ac9217f64a53219873ba4fb55\"\u003e\u003ccode\u003ef7a9628\u003c/code\u003e\u003c/a\u003e PyKCS11.unload(): make the method thread safe\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/compare/1.5.17...1.5.18\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cffi` from 1.17.1 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only) - huge thanks to the folks at Quansight Labs for all the work to get this one sorted!\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.0.0b1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only).\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/6366c01d84e9a78e7e85f12ebe9760ba5d19b6d3\"\u003e\u003ccode\u003e6366c01\u003c/code\u003e\u003c/a\u003e release 2.0.0 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/95c847663aec401e4003927a274e4de9b8595f4f\"\u003e\u003ccode\u003e95c8476\u003c/code\u003e\u003c/a\u003e 2.0.0 post beta backports (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/195cbda66b6be9297ef6d584644e50cfdcca4e8a\"\u003e\u003ccode\u003e195cbda\u003c/code\u003e\u003c/a\u003e Release 2.0.0b1 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b4bbe7940d3f76027534db1aecbae9b61c35221a\"\u003e\u003ccode\u003eb4bbe79\u003c/code\u003e\u003c/a\u003e fix version test to support beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/7ed073de66e713cf791b6fdfa23685c81fdfd6ad\"\u003e\u003ccode\u003e7ed073d\u003c/code\u003e\u003c/a\u003e Add support for the free-threaded build (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/178\"\u003e#178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/67a170dc7972dc9361743690b38da3d963b200ef\"\u003e\u003ccode\u003e67a170d\u003c/code\u003e\u003c/a\u003e Change the license from MIT to MIT-no-attribution, which is the same without ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/92645ec9329feb03e3fa86240b40fe0fc37469d1\"\u003e\u003ccode\u003e92645ec\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support/testing (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/177\"\u003e#177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/2b81170583a898478a6996c9705d8c38ab7f73a1\"\u003e\u003ccode\u003e2b81170\u003c/code\u003e\u003c/a\u003e doc: update test commands in Section Testing/development tips (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/25172b84cf51cf58241f074ccd1efd9c7648cb43\"\u003e\u003ccode\u003e25172b8\u003c/code\u003e\u003c/a\u003e doc: update year (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b57a92c03eb2078a99c900519a37d18b4d52324f\"\u003e\u003ccode\u003eb57a92c\u003c/code\u003e\u003c/a\u003e issue 147: force-compute nested structs before parent structs.  Occurs mainly...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pycparser` from 2.22 to 2.23\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/eliben/pycparser/releases\"\u003epycparser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003erelease_v2.23\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow abstract declarator \u0026quot;static\u0026quot; (GH issue \u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/539\"\u003e#539\u003c/a\u003e) by \u003ca href=\"https://github.com/gperciva\"\u003e\u003ccode\u003e@​gperciva\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/545\"\u003eeliben/pycparser#545\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/550\"\u003eeliben/pycparser#550\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd dirent and socket typedefs. by \u003ca href=\"https://github.com/MegaManSec\"\u003e\u003ccode\u003e@​MegaManSec\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/558\"\u003eeliben/pycparser#558\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport for labels with no statement by \u003ca href=\"https://github.com/ignatirabo\"\u003e\u003ccode\u003e@​ignatirabo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/562\"\u003eeliben/pycparser#562\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept empty 'case' or 'default' labels by \u003ca href=\"https://github.com/ignatirabo\"\u003e\u003ccode\u003e@​ignatirabo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/564\"\u003eeliben/pycparser#564\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: preserve parentheses for statement exprs by \u003ca href=\"https://github.com/zawan-ila\"\u003e\u003ccode\u003e@​zawan-ila\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/566\"\u003eeliben/pycparser#566\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: hex float types by \u003ca href=\"https://github.com/zawan-ila\"\u003e\u003ccode\u003e@​zawan-ila\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/567\"\u003eeliben/pycparser#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExplicit error for comments, with README link by \u003ca href=\"https://github.com/cellularmitosis\"\u003e\u003ccode\u003e@​cellularmitosis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/569\"\u003eeliben/pycparser#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eshowemptyattrs option on Node.show() by \u003ca href=\"https://github.com/cellularmitosis\"\u003e\u003ccode\u003e@​cellularmitosis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/570\"\u003eeliben/pycparser#570\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd fake typedefs for GNU Extension 128-bit integers. by \u003ca href=\"https://github.com/dj-wednesday\"\u003e\u003ccode\u003e@​dj-wednesday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/577\"\u003eeliben/pycparser#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTypedef for __kernel_sa_family_t in linux/socket.h by \u003ca href=\"https://github.com/crosser\"\u003e\u003ccode\u003e@​crosser\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/578\"\u003eeliben/pycparser#578\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/gperciva\"\u003e\u003ccode\u003e@​gperciva\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/545\"\u003eeliben/pycparser#545\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MegaManSec\"\u003e\u003ccode\u003e@​MegaManSec\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/558\"\u003eeliben/pycparser#558\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ignatirabo\"\u003e\u003ccode\u003e@​ignatirabo\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/562\"\u003eeliben/pycparser#562\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zawan-ila\"\u003e\u003ccode\u003e@​zawan-ila\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/566\"\u003eeliben/pycparser#566\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cellularmitosis\"\u003e\u003ccode\u003e@​cellularmitosis\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/569\"\u003eeliben/pycparser#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dj-wednesday\"\u003e\u003ccode\u003e@​dj-wednesday\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/577\"\u003eeliben/pycparser#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crosser\"\u003e\u003ccode\u003e@​crosser\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/578\"\u003eeliben/pycparser#578\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/eliben/pycparser/compare/release_v2.22...release_v2.23\"\u003ehttps://github.com/eliben/pycparser/compare/release_v2.22...release_v2.23\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/5b60167602e7914139b3e277266ccdff5c24dbf2\"\u003e\u003ccode\u003e5b60167\u003c/code\u003e\u003c/a\u003e Prepare for release 2.23\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/7b24736bbb875a5c6c6f0520412f03aace75d0ee\"\u003e\u003ccode\u003e7b24736\u003c/code\u003e\u003c/a\u003e Typedef for __kernel_sa_family_t in _fake_typedefs.h (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/578\"\u003e#578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/90184f1f4eb1234fb9e7ae0c8b74eab9ea963482\"\u003e\u003ccode\u003e90184f1\u003c/code\u003e\u003c/a\u003e Add fake typedefs for GNU Extension 128-bit integers. (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/577\"\u003e#577\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/f04fdcde3d95be4a632948718d0c46eac09c50ce\"\u003e\u003ccode\u003ef04fdcd\u003c/code\u003e\u003c/a\u003e showemptyattrs option on Node.show() (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/570\"\u003e#570\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/156eae7f42843d8a3e78a68995d9cc7485577e38\"\u003e\u003ccode\u003e156eae7\u003c/code\u003e\u003c/a\u003e Explicit error for comments, with README link (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/569\"\u003e#569\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/2215299261306df71e2cec23bb3acd7b8f31f8db\"\u003e\u003ccode\u003e2215299\u003c/code\u003e\u003c/a\u003e fix: hex float types (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/567\"\u003e#567\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/037bd31d4e0e69e8c4d80e45311ae46abc15dd4e\"\u003e\u003ccode\u003e037bd31\u003c/code\u003e\u003c/a\u003e fix: preserve parentheses for statement exprs (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/566\"\u003e#566\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/9cecc090151b31d8821786bca3b25851a4a33272\"\u003e\u003ccode\u003e9cecc09\u003c/code\u003e\u003c/a\u003e Accept empty 'case' or 'default' labels (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/564\"\u003e#564\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/7ae671d3ac44e1000bcbe7108b24bdb9187443ac\"\u003e\u003ccode\u003e7ae671d\u003c/code\u003e\u003c/a\u003e Support for labels with no statement (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/562\"\u003e#562\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/42b542324859a108f2cf35bcfe21fe5877ceb091\"\u003e\u003ccode\u003e42b5423\u003c/code\u003e\u003c/a\u003e Add dirent and socket typedefs. (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/558\"\u003e#558\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/eliben/pycparser/compare/release_v2.22...release_v2.23\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\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 `betterproto` from 2.0.0b6 to 2.0.0b7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/danielgtaylor/python-betterproto/releases\"\u003ebetterproto's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0-beta7\u003c/h2\u003e\n\u003ch2\u003eEnhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eBreaking\u003c/strong\u003e: Support \u003ccode\u003ePydantic\u003c/code\u003e v2 and dropping support for v1 \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/588\"\u003e#588\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBreaking\u003c/strong\u003e: The attempting to access an unset \u003ccode\u003eoneof\u003c/code\u003e now raises an \u003ccode\u003eAttributeError\u003c/code\u003e field. To see how to access \u003ccode\u003eoneof\u003c/code\u003e fields now, refer to \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/558\"\u003e#558\u003c/a\u003e and \u003ca href=\"https://github.com/danielgtaylor/python-betterproto#one-of-support\"\u003eREADME.md\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBreaking\u003c/strong\u003e: A custom \u003ccode\u003eEnum\u003c/code\u003e has been implemented to match the behaviour of being an open set. Any checks for \u003ccode\u003eisinstance(enum_member, enum.Enum)\u003c/code\u003e and \u003ccode\u003eissubclass(EnumSubclass, enum.Enum)\u003c/code\u003e will now return \u003ccode\u003eFalse\u003c/code\u003e. This change also has the side effect of preventing any passthrough of \u003ccode\u003eEnum\u003c/code\u003e members (i.e. \u003ccode\u003eFoo.RED.GREEN\u003c/code\u003e doesn't work any more). See \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/293\"\u003e#293\u003c/a\u003e for more info, this fixed many bugs related to \u003ccode\u003eEnum\u003c/code\u003e handling.\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003epickle\u003c/code\u003e methods \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/535\"\u003e#535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eStruct\u003c/code\u003e and \u003ccode\u003eValue\u003c/code\u003e types \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/551\"\u003e#551\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ca href=\"https://rich.readthedocs.io/en/latest/index.html\"\u003e\u003ccode\u003eRich\u003c/code\u003e package\u003c/a\u003e for pretty printing \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/508\"\u003e#508\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove support for streaming messages \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/518\"\u003e#518\u003c/a\u003e \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/529\"\u003e#529\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove performance of serializing / de-serializing messages \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/545\"\u003e#545\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove the handling of message name collisions with typing by allowing the method / type of imports to be configured.\nRefer to \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/582\"\u003e#582\u003c/a\u003e and \u003ca href=\"https://github.com/danielgtaylor/python-betterproto#configuration-typing-imports\"\u003eREADME.md\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd a warning when calling a deprecated message \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/596\"\u003e#596\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix roundtrip parsing of \u003ccode\u003edatetime\u003c/code\u003es \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/534\"\u003e#534\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix accessing unset optional fields \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/523\"\u003e#523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eMessage\u003c/code\u003e equality comparison \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/513\"\u003e#513\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix behaviour with long comment messages \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/532\"\u003e#532\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/atomicflag\"\u003e\u003ccode\u003e@​atomicflag\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/513\"\u003edanielgtaylor/python-betterproto#513\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshuaLeivers\"\u003e\u003ccode\u003e@​JoshuaLeivers\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/518\"\u003edanielgtaylor/python-betterproto#518\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MicaelJarniac\"\u003e\u003ccode\u003e@​MicaelJarniac\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/508\"\u003edanielgtaylor/python-betterproto#508\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/124C41p\"\u003e\u003ccode\u003e@​124C41p\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/528\"\u003edanielgtaylor/python-betterproto#528\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/girtsf\"\u003e\u003ccode\u003e@​girtsf\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/306\"\u003edanielgtaylor/python-betterproto#306\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/spietras\"\u003e\u003ccode\u003e@​spietras\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/422\"\u003edanielgtaylor/python-betterproto#422\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lukasbindreiter\"\u003e\u003ccode\u003e@​lukasbindreiter\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/534\"\u003edanielgtaylor/python-betterproto#534\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cartesian-theatrics\"\u003e\u003ccode\u003e@​cartesian-theatrics\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/532\"\u003edanielgtaylor/python-betterproto#532\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/550\"\u003edanielgtaylor/python-betterproto#550\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/woodruffw\"\u003e\u003ccode\u003e@​woodruffw\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/551\"\u003edanielgtaylor/python-betterproto#551\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/atomicmac\"\u003e\u003ccode\u003e@​atomicmac\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/560\"\u003edanielgtaylor/python-betterproto#560\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arunsathiya\"\u003e\u003ccode\u003e@​arunsathiya\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/553\"\u003edanielgtaylor/python-betterproto#553\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ii64\"\u003e\u003ccode\u003e@​ii64\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/568\"\u003edanielgtaylor/python-betterproto#568\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/imcdo\"\u003e\u003ccode\u003e@​imcdo\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/587\"\u003edanielgtaylor/python-betterproto#587\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gatesn\"\u003e\u003ccode\u003e@​gatesn\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/588\"\u003edanielgtaylor/python-betterproto#588\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AdrienVannson\"\u003e\u003ccode\u003e@​AdrienVannson\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/596\"\u003edanielgtaylor/python-betterproto#596\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JitPackJoyride\"\u003e\u003ccode\u003e@​JitPackJoyride\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/593\"\u003edanielgtaylor/python-betterproto#593\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/danielgtaylor/python-betterproto/compare/v.2.0.0b6...v.2.0.0b7\"\u003ehttps://github.com/danielgtaylor/python-betterproto/compare/v.2.0.0b6...v.2.0.0b7\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/danielgtaylor/python-betterproto/blob/master/CHANGELOG.md\"\u003ebetterproto's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[2.0.0b7] - 2024-08-11\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eBreaking\u003c/strong\u003e: Support \u003ccode\u003ePydantic\u003c/code\u003e v2 and dropping support for v1 \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/588\"\u003e#588\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eBreaking\u003c/strong\u003e: The attempting to access an unset \u003ccode\u003eoneof\u003c/code\u003e now raises an \u003ccode\u003eAttributeError\u003c/code\u003e\nfield. To see how to access \u003ccode\u003eoneof\u003c/code\u003e fields now, refer to \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/558\"\u003e#558\u003c/a\u003e\nand \u003ca href=\"https://github.com/danielgtaylor/python-betterproto#one-of-support\"\u003eREADME.md\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eBreaking\u003c/strong\u003e: A custom \u003ccode\u003eEnum\u003c/code\u003e has been implemented to match the behaviour of being an open set. Any checks for \u003ccode\u003eisinstance(enum_member, enum.Enum)\u003c/code\u003e and \u003ccode\u003eissubclass(EnumSubclass, enum.Enum)\u003c/code\u003e will now return \u003ccode\u003eFalse\u003c/code\u003e. This change also has the side effect of\npreventing any passthrough of \u003ccode\u003eEnum\u003c/code\u003e members (i.e. \u003ccode\u003eFoo.RED.GREEN\u003c/code\u003e doesn't work any more). See \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/293\"\u003e#293\u003c/a\u003e for more info, this fixed many bugs related to \u003ccode\u003eEnum\u003c/code\u003e handling.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd support for \u003ccode\u003epickle\u003c/code\u003e methods \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/535\"\u003e#535\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd support for \u003ccode\u003eStruct\u003c/code\u003e and \u003ccode\u003eValue\u003c/code\u003e types \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/551\"\u003e#551\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd support for \u003ca href=\"https://rich.readthedocs.io/en/latest/index.html\"\u003e\u003ccode\u003eRich\u003c/code\u003e package\u003c/a\u003e for pretty printing \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/508\"\u003e#508\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove support for streaming messages \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/518\"\u003e#518\u003c/a\u003e \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/529\"\u003e#529\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove performance of serializing / de-serializing messages \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/545\"\u003e#545\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove the handling of message name collisions with typing by allowing the method / type of imports to be configured.\nRefer to \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/582\"\u003e#582\u003c/a\u003e\nand \u003ca href=\"https://github.com/danielgtaylor/python-betterproto#configuration-typing-imports\"\u003eREADME.md\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix roundtrip parsing of \u003ccode\u003edatetime\u003c/code\u003es \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/534\"\u003e#534\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix accessing unset optional fields \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/523\"\u003e#523\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003eMessage\u003c/code\u003e equality comparison \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/513\"\u003e#513\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix behaviour with long comment messages \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/532\"\u003e#532\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd a warning when calling a deprecated message \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/596\"\u003e#596\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/danielgtaylor/python-betterproto/commit/1538e156a1eadb88799eca009a238093d6bb40df\"\u003e\u003ccode\u003e1538e15\u003c/code\u003e\u003c/a\u003e Bump version to 2.0.0b7 (\u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/issues/593\"\u003e#593\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielgtaylor/python-betterproto/commit/4e9a17c227c1454a08a46ad41dbca0478aa46830\"\u003e\u003ccode\u003e4e9a17c\u003c/code\u003e\u003c/a\u003e Add warnings when calling deprecated method (\u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/issues/596\"\u003e#596\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielgtaylor/python-betterproto/commit/f96f51650ca28412640b3e93724f123d4f0d7b31\"\u003e\u003ccode\u003ef96f516\u003c/code\u003e\u003c/a\u003e fix: 3.10 style imports not resolving correctly (\u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/issues/594\"\u003e#594\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielgtaylor/python-betterproto/commit/5fdd0bb24fc43091599a2284a948fc06e1a55edb\"\u003e\u003ccode\u003e5fdd0bb\u003c/code\u003e\u003c/a\u003e Update to Pydantic V2 (\u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielgtaylor/python-betterproto/commit/8b5923485624fc9fe77df343fef9cca5c04ee45f\"\u003e\u003ccode\u003e8b59234\u003c/code\u003e\u003c/a\u003e Handle typing collisions and add validation to a files module for overlaping ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielgtaylor/python-betterproto/commit/7c6c6279382218fbe7f8e1ce85933e06221fc07f\"\u003e\u003ccode\u003e7c6c627\u003c/code\u003e\u003c/a\u003e Drop 3.7 from ci (\u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielgtaylor/python-betterproto/commit/1f88b67eeb9871d33da154fd2c859b9d1aed62c1\"\u003e\u003ccode\u003e1f88b67\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ebetterproto-rust-codec\u003c/code\u003e updated (\u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/issues/571\"\u003e#571\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielgtaylor/python-betterproto/commit/c3c20556e0d29e07abee05c7e3d2d6c481d26389\"\u003e\u003ccode\u003ec3c2055\u003c/code\u003e\u003c/a\u003e fix: support pydantic-version google pb (\u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/issues/568\"\u003e#568\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielgtaylor/python-betterproto/commit/df1ba911b75da04eec56b6b39bd93a3779d51b24\"\u003e\u003ccode\u003edf1ba91\u003c/code\u003e\u003c/a\u003e Add betterproto.Enum \u003cstrong\u003ecopy\u003c/strong\u003e and \u003cstrong\u003edeepcopy\u003c/strong\u003e implementations (\u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/issues/566\"\u003e#566\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielgtaylor/python-betterproto/commit/126b256b4c541832e1e5a5f898c1263dd4b06995\"\u003e\u003ccode\u003e126b256\u003c/code\u003e\u003c/a\u003e ci: Use GITHUB_OUTPUT envvar instead of set-output command (\u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/issues/553\"\u003e#553\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/danielgtaylor/python-betterproto/compare/v.2.0.0b6...v.2.0.0b7\"\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 2026.1.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\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\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/27ca98ad845ee6d130a88301622c137893f71620\"\u003e\u003ccode\u003e27ca98a\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7.0.9 to 7.0.11 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/56c59a63909cfd3162b37e7bc16956e64df0f737\"\u003e\u003ccode\u003e56c59a6\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.0 to 6.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ae0021cd43a77bfba67d20a041469cdf6996570e\"\u003e\u003ccode\u003eae0021c\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.0.0 to 6.1.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/380\"\u003e#380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddf5d0b5d2a3d55fd92a79f141dbb5e074caf924\"\u003e\u003ccode\u003eddf5d0b\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5.0.1 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.01.31...2026.01.04\"\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\u003eSource...\n\n_Description has been truncated_","html_url":"https://github.com/openreview-bot7/securesystemslib/pull/16","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/openreview-bot7%2Fsecuresystemslib/issues/16","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/16/packages"},{"uuid":"3854485334","node_id":"PR_kwDOMftbFc6_Sm3X","number":190,"state":"closed","title":"Bump the py-updates group across 1 directory with 83 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-02-02T04:30:52.000Z","author_association":null,"state_reason":null,"created_at":"2026-01-26T04:37:31.000Z","updated_at":"2026-02-02T04:30:53.000Z","time_to_close":604401,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"py-updates","update_count":83,"packages":[{"name":"awscli","old_version":"1.40.17","new_version":"1.44.24","repository_url":"https://github.com/aws/aws-cli"},{"name":"polars","old_version":"1.28.1","new_version":"1.37.1","repository_url":"https://github.com/pola-rs/polars"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"biopython","old_version":"1.85","new_version":"1.86","repository_url":"https://github.com/biopython/biopython"},{"name":"boto3","old_version":"1.38.18","new_version":"1.42.34","repository_url":"https://github.com/boto/boto3"},{"name":"botocore","old_version":"1.38.18","new_version":"1.42.34","repository_url":"https://github.com/boto/botocore"},{"name":"certifi","old_version":"2025.4.26","new_version":"2026.1.4","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":"cloudpathlib","old_version":"0.21.1","new_version":"0.23.0","repository_url":"https://github.com/drivendataorg/cloudpathlib"},{"name":"docutils","old_version":"0.19","new_version":"0.22.4","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"jellyfish","old_version":"1.2.0","new_version":"1.2.1"},{"name":"jmespath","old_version":"1.0.1","new_version":"1.1.0","repository_url":"https://github.com/jmespath/jmespath.py"},{"name":"markdown-it-py","old_version":"3.0.0","new_version":"4.0.0","repository_url":"https://github.com/executablebooks/markdown-it-py"},{"name":"numpy","old_version":"2.2.5","new_version":"2.4.1","repository_url":"https://github.com/numpy/numpy"},{"name":"pandas","old_version":"2.2.3","new_version":"3.0.0","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"pyarrow","old_version":"20.0.0","new_version":"23.0.0","repository_url":"https://github.com/apache/arrow"},{"name":"pyasn1","old_version":"0.6.1","new_version":"0.6.2","repository_url":"https://github.com/pyasn1/pyasn1"},{"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":"rich","old_version":"14.0.0","new_version":"14.3.1","repository_url":"https://github.com/Textualize/rich"},{"name":"rsa","old_version":"4.7.2","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"s3transfer","old_version":"0.12.0","new_version":"0.16.0","repository_url":"https://github.com/boto/s3transfer"},{"name":"structlog","old_version":"25.3.0","new_version":"25.5.0","repository_url":"https://github.com/hynek/structlog"},{"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.3","repository_url":"https://github.com/urllib3/urllib3"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"boto3-stubs","old_version":"1.38.18","new_version":"1.42.34","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"botocore-stubs","old_version":"1.38.18","new_version":"1.42.34","repository_url":"https://github.com/youtype/botocore-stubs"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"coverage","old_version":"7.8.0","new_version":"7.13.2","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cryptography","old_version":"44.0.3","new_version":"46.0.3","repository_url":"https://github.com/pyca/cryptography"},{"name":"freezegun","old_version":"1.5.1","new_version":"1.5.5","repository_url":"https://github.com/spulec/freezegun"},{"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":"moto","old_version":"5.1.4","new_version":"5.1.20","repository_url":"https://github.com/getmoto/moto"},{"name":"mypy","old_version":"1.15.0","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"mypy-boto3-s3","old_version":"1.38.0","new_version":"1.42.21","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"packaging","old_version":"25.0","new_version":"26.0","repository_url":"https://github.com/pypa/packaging"},{"name":"pycparser","old_version":"2.22","new_version":"3.0","repository_url":"https://github.com/eliben/pycparser"},{"name":"pytest","old_version":"8.3.5","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-mock","old_version":"3.14.0","new_version":"3.15.1","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"responses","old_version":"0.25.7","new_version":"0.25.8","repository_url":"https://github.com/getsentry/responses"},{"name":"ruff","old_version":"0.11.10","new_version":"0.14.14","repository_url":"https://github.com/astral-sh/ruff"},{"name":"types-awscrt","old_version":"0.27.2","new_version":"0.31.1","repository_url":"https://github.com/youtype/types-awscrt"},{"name":"types-requests","old_version":"2.32.0.20250515","new_version":"2.32.4.20260107","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-s3transfer","old_version":"0.12.0","new_version":"0.16.0","repository_url":"https://github.com/youtype/types-s3transfer"},{"name":"typing-extensions","old_version":"4.13.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.5","repository_url":"https://github.com/pallets/werkzeug"},{"name":"xmltodict","old_version":"0.14.2","new_version":"1.0.2","repository_url":"https://github.com/martinblech/xmltodict"},{"name":"alabaster","old_version":"0.7.16","new_version":"1.0.0","repository_url":"https://github.com/sphinx-doc/alabaster"},{"name":"anyio","old_version":"4.9.0","new_version":"4.12.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.14.3"},{"name":"cachecontrol","old_version":"0.14.3","new_version":"0.14.4","repository_url":"https://github.com/psf/cachecontrol"},{"name":"click","old_version":"8.2.0","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"contourpy","old_version":"1.3.2","new_version":"1.3.3","repository_url":"https://github.com/contourpy/contourpy"},{"name":"filelock","old_version":"3.18.0","new_version":"3.20.3","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"fonttools","old_version":"4.58.0","new_version":"4.61.1","repository_url":"https://github.com/fonttools/fonttools"},{"name":"furo","old_version":"2024.8.6","new_version":"2025.12.19","repository_url":"https://github.com/pradyunsg/furo"},{"name":"kiwisolver","old_version":"1.4.8","new_version":"1.4.9","repository_url":"https://github.com/nucleic/kiwi"},{"name":"matplotlib","old_version":"3.10.3","new_version":"3.10.8","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"mdit-py-plugins","old_version":"0.4.2","new_version":"0.5.0","repository_url":"https://github.com/executablebooks/mdit-py-plugins"},{"name":"more-itertools","old_version":"10.7.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"msgpack","old_version":"1.1.0","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"myst-parser","old_version":"4.0.1","new_version":"5.0.0","repository_url":"https://github.com/executablebooks/MyST-Parser"},{"name":"pillow","old_version":"11.2.1","new_version":"12.1.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.3.8","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pyparsing","old_version":"3.2.3","new_version":"3.3.2","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"ruamel-yaml","old_version":"0.18.10","new_version":"0.19.1"},{"name":"ruamel-yaml-clib","old_version":"0.2.12","new_version":"0.2.15"},{"name":"soupsieve","old_version":"2.7","new_version":"2.8.3","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"sphinx","old_version":"7.3.7","new_version":"9.0.4","repository_url":"https://github.com/sphinx-doc/sphinx"},{"name":"sphinx-autobuild","old_version":"2024.10.3","new_version":"2025.8.25","repository_url":"https://github.com/sphinx-doc/sphinx-autobuild"},{"name":"sphinx-autodoc-typehints","old_version":"2.3.0","new_version":"3.6.1","repository_url":"https://github.com/tox-dev/sphinx-autodoc-typehints"},{"name":"sphinx-jinja2-compat","old_version":"0.3.0","new_version":"0.4.1","repository_url":"https://github.com/sphinx-toolbox/sphinx-jinja2-compat"},{"name":"sphinx-prompt","old_version":"1.8.0","new_version":"1.10.2","repository_url":"https://github.com/sbrunner/sphinx-prompt"},{"name":"sphinx-tabs","old_version":"3.4.5","new_version":"3.4.7","repository_url":"https://github.com/executablebooks/sphinx-tabs"},{"name":"sphinx-toolbox","old_version":"4.0.0","new_version":"4.1.2","repository_url":"https://github.com/sphinx-toolbox/sphinx-toolbox"},{"name":"sphinxext-opengraph","old_version":"0.10.0","new_version":"0.13.0","repository_url":"https://github.com/sphinx-doc/sphinxext-opengraph"},{"name":"starlette","old_version":"0.46.2","new_version":"0.52.1","repository_url":"https://github.com/Kludex/starlette"},{"name":"uvicorn","old_version":"0.34.2","new_version":"0.40.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"watchfiles","old_version":"1.0.5","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"websockets","old_version":"15.0.1","new_version":"16.0","repository_url":"https://github.com/python-websockets/websockets"}],"path":null,"ecosystem":"pip"},"body":"Bumps the py-updates group with 83 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [awscli](https://github.com/aws/aws-cli) | `1.40.17` | `1.44.24` |\n| [polars](https://github.com/pola-rs/polars) | `1.28.1` | `1.37.1` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [biopython](https://github.com/biopython/biopython) | `1.85` | `1.86` |\n| [boto3](https://github.com/boto/boto3) | `1.38.18` | `1.42.34` |\n| [botocore](https://github.com/boto/botocore) | `1.38.18` | `1.42.34` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.4.26` | `2026.1.4` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.4` |\n| [cloudpathlib](https://github.com/drivendataorg/cloudpathlib) | `0.21.1` | `0.23.0` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.19` | `0.22.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [jellyfish](https://jellyfish.jpt.sh/) | `1.2.0` | `1.2.1` |\n| [jmespath](https://github.com/jmespath/jmespath.py) | `1.0.1` | `1.1.0` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `3.0.0` | `4.0.0` |\n| [numpy](https://github.com/numpy/numpy) | `2.2.5` | `2.4.1` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `3.0.0` |\n| [pyarrow](https://github.com/apache/arrow) | `20.0.0` | `23.0.0` |\n| [pyasn1](https://github.com/pyasn1/pyasn1) | `0.6.1` | `0.6.2` |\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| [rich](https://github.com/Textualize/rich) | `14.0.0` | `14.3.1` |\n| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.7.2` | `4.9.1` |\n| [s3transfer](https://github.com/boto/s3transfer) | `0.12.0` | `0.16.0` |\n| [structlog](https://github.com/hynek/structlog) | `25.3.0` | `25.5.0` |\n| [tzdata](https://github.com/python/tzdata) | `2025.2` | `2025.3` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.4.0` | `2.6.3` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [boto3-stubs](https://github.com/youtype/mypy_boto3_builder) | `1.38.18` | `1.42.34` |\n| [botocore-stubs](https://github.com/youtype/botocore-stubs) | `1.38.18` | `1.42.34` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.1` | `2.0.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.8.0` | `7.13.2` |\n| [cryptography](https://github.com/pyca/cryptography) | `44.0.3` | `46.0.3` |\n| [freezegun](https://github.com/spulec/freezegun) | `1.5.1` | `1.5.5` |\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| [moto](https://github.com/getmoto/moto) | `5.1.4` | `5.1.20` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.19.1` |\n| [mypy-boto3-s3](https://github.com/youtype/mypy_boto3_builder) | `1.38.0` | `1.42.21` |\n| [packaging](https://github.com/pypa/packaging) | `25.0` | `26.0` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `3.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.5` | `9.0.2` |\n| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.14.0` | `3.15.1` |\n| [responses](https://github.com/getsentry/responses) | `0.25.7` | `0.25.8` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.11.10` | `0.14.14` |\n| [types-awscrt](https://github.com/youtype/types-awscrt) | `0.27.2` | `0.31.1` |\n| [types-requests](https://github.com/typeshed-internal/stub_uploader) | `2.32.0.20250515` | `2.32.4.20260107` |\n| [types-s3transfer](https://github.com/youtype/types-s3transfer) | `0.12.0` | `0.16.0` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.2` | `4.15.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.5` |\n| [xmltodict](https://github.com/martinblech/xmltodict) | `0.14.2` | `1.0.2` |\n| [alabaster](https://github.com/sphinx-doc/alabaster) | `0.7.16` | `1.0.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.12.1` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.14.3` |\n| [cachecontrol](https://github.com/psf/cachecontrol) | `0.14.3` | `0.14.4` |\n| [click](https://github.com/pallets/click) | `8.2.0` | `8.3.1` |\n| [contourpy](https://github.com/contourpy/contourpy) | `1.3.2` | `1.3.3` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.18.0` | `3.20.3` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.58.0` | `4.61.1` |\n| [furo](https://github.com/pradyunsg/furo) | `2024.8.6` | `2025.12.19` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.4.8` | `1.4.9` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.3` | `3.10.8` |\n| [mdit-py-plugins](https://github.com/executablebooks/mdit-py-plugins) | `0.4.2` | `0.5.0` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.7.0` | `10.8.0` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [myst-parser](https://github.com/executablebooks/MyST-Parser) | `4.0.1` | `5.0.0` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `12.1.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.3.8` | `4.5.1` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.3` | `3.3.2` |\n| ruamel-yaml | `0.18.10` | `0.19.1` |\n| ruamel-yaml-clib | `0.2.12` | `0.2.15` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.8.3` |\n| [sphinx](https://github.com/sphinx-doc/sphinx) | `7.3.7` | `9.0.4` |\n| [sphinx-autobuild](https://github.com/sphinx-doc/sphinx-autobuild) | `2024.10.3` | `2025.8.25` |\n| [sphinx-autodoc-typehints](https://github.com/tox-dev/sphinx-autodoc-typehints) | `2.3.0` | `3.6.1` |\n| [sphinx-jinja2-compat](https://github.com/sphinx-toolbox/sphinx-jinja2-compat) | `0.3.0` | `0.4.1` |\n| [sphinx-prompt](https://github.com/sbrunner/sphinx-prompt) | `1.8.0` | `1.10.2` |\n| [sphinx-tabs](https://github.com/executablebooks/sphinx-tabs) | `3.4.5` | `3.4.7` |\n| [sphinx-toolbox](https://github.com/sphinx-toolbox/sphinx-toolbox) | `4.0.0` | `4.1.2` |\n| [sphinxext-opengraph](https://github.com/sphinx-doc/sphinxext-opengraph) | `0.10.0` | `0.13.0` |\n| [starlette](https://github.com/Kludex/starlette) | `0.46.2` | `0.52.1` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.34.2` | `0.40.0` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.0.5` | `1.1.1` |\n| [websockets](https://github.com/python-websockets/websockets) | `15.0.1` | `16.0` |\n\n\nUpdates `awscli` from 1.40.17 to 1.44.24\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/3af1873c23374171e0bc9a6891a361221178fd8d\"\u003e\u003ccode\u003e3af1873\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.24'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/3db4f00603a7e7a76ffc0838593db9656e72799e\"\u003e\u003ccode\u003e3db4f00\u003c/code\u003e\u003c/a\u003e Bumping version to 1.44.24\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/2c19a9fcf0f35398a280868073b4170c02f4ef5a\"\u003e\u003ccode\u003e2c19a9f\u003c/code\u003e\u003c/a\u003e Update changelog based on model updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/80d79654015909384fe93f268867f5dec1e58705\"\u003e\u003ccode\u003e80d7965\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.23'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/75d1e11e5a5e06d8dcc5637ea26091874275eb99\"\u003e\u003ccode\u003e75d1e11\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.23' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/a220ab958493ad5a52289d964546d66538ee7711\"\u003e\u003ccode\u003ea220ab9\u003c/code\u003e\u003c/a\u003e Bumping version to 1.44.23\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/c48c8ab1a19bdf5f8b3510e9948016443eb7d2e0\"\u003e\u003ccode\u003ec48c8ab\u003c/code\u003e\u003c/a\u003e Update changelog based on model updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/39e70dfeaa3a5dad7c8c49d08c64b79bc299c58c\"\u003e\u003ccode\u003e39e70df\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.22'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/094e6fa721d66f284e1466e758e32120b8594ab7\"\u003e\u003ccode\u003e094e6fa\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.22' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/4cd22ade79f67568ad66b6d406882dcd02a6fa6c\"\u003e\u003ccode\u003e4cd22ad\u003c/code\u003e\u003c/a\u003e Bumping version to 1.44.22\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aws/aws-cli/compare/1.40.17...1.44.24\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `polars` from 1.28.1 to 1.37.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pola-rs/polars/releases\"\u003epolars's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePython Polars 1.37.1\u003c/h2\u003e\n\u003ch2\u003e🚀 Performance improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up \u003ccode\u003eSQL\u003c/code\u003e interface \u0026quot;UNION\u0026quot; clauses (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26039\"\u003e#26039\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🐞 Bug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eOptimize slicing support on compressed IPC (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26071\"\u003e#26071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCPU check for musl builds (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26076\"\u003e#26076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePropagate C Stream import errors instead of panicking (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26036\"\u003e#26036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix slicing on compressed IPC (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26066\"\u003e#26066\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e📖 Documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eClarify min_by/max_by behavior on ties (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26077\"\u003e#26077\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🛠️ Other improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMark top slow normal tests as slow (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26080\"\u003e#26080\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate breaking deps (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26055\"\u003e#26055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix for upstream url bug and update deps (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26052\"\u003e#26052\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eProperly pin chrono (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26051\"\u003e#26051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't run rust doctests (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26046\"\u003e#26046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate deps (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26042\"\u003e#26042\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIgnore very slow test (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26041\"\u003e#26041\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThank you to all our contributors for making this release possible!\n\u003ca href=\"https://github.com/Voultapher\"\u003e\u003ccode\u003e@​Voultapher\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/alexander-beedie\"\u003e\u003ccode\u003e@​alexander-beedie\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/kdn36\"\u003e\u003ccode\u003e@​kdn36\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/nameexhaustion\"\u003e\u003ccode\u003e@​nameexhaustion\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/orlp\"\u003e\u003ccode\u003e@​orlp\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/ritchie46\"\u003e\u003ccode\u003e@​ritchie46\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/wtn\"\u003e\u003ccode\u003e@​wtn\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePython Polars 1.37.0\u003c/h2\u003e\n\u003ch2\u003e🚀 Performance improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up \u003ccode\u003eSQL\u003c/code\u003e interface \u0026quot;ORDER BY\u0026quot; clauses (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26037\"\u003e#26037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd fast kernel for is_nan and use it for numpy NaN-\u0026gt;null conversion (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26034\"\u003e#26034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize ArrayFromIter implementations for ObjectArray (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25712\"\u003e#25712\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNew streaming NDJSON sink pipeline (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25948\"\u003e#25948\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNew streaming CSV sink pipeline (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25900\"\u003e#25900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDispatch partitioned usage of \u003ccode\u003esink_*\u003c/code\u003e functions to new-streaming by default (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25910\"\u003e#25910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReplace ryu with faster zmij (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25885\"\u003e#25885\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReduce memory usage for .item() count in grouped first/last (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25787\"\u003e#25787\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSkip schema inference if schema provided for \u003ccode\u003escan_csv/ndjson\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25757\"\u003e#25757\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd width-aware chunking to prevent degradation with wide data (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25764\"\u003e#25764\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse new sink pipeline for write/sink_ipc (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25746\"\u003e#25746\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReduce memory usage when scanning multiple parquet files in streaming (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25747\"\u003e#25747\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't call cluster_with_columns optimization if not needed (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25724\"\u003e#25724\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e✨ Enhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd new \u003ccode\u003epl.PartitionBy\u003c/code\u003e API (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26004\"\u003e#26004\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eArrowStreamExportable and sink_delta (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25994\"\u003e#25994\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/bb79993c3aa91d0db7d20be8f75c8075cad97067\"\u003e\u003ccode\u003ebb79993\u003c/code\u003e\u003c/a\u003e Python Polars 1.37.1 (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26078\"\u003e#26078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/26a9d097af5ea7d35f72bb8514ab990ddbce4796\"\u003e\u003ccode\u003e26a9d09\u003c/code\u003e\u003c/a\u003e chore: Mark top slow normal tests as slow (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26080\"\u003e#26080\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/451f247ba33506c9822478d0409a5075fec5797c\"\u003e\u003ccode\u003e451f247\u003c/code\u003e\u003c/a\u003e refactor(rust): Simplify \u003ccode\u003ePlPath\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26053\"\u003e#26053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/b532aad910b0fe065b9fbe648944f3a580d3d104\"\u003e\u003ccode\u003eb532aad\u003c/code\u003e\u003c/a\u003e docs: Clarify min_by/max_by behavior on ties (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26077\"\u003e#26077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/707796731ab7cf51f296a9b56a0231a5537e4259\"\u003e\u003ccode\u003e7077967\u003c/code\u003e\u003c/a\u003e fix: Optimize slicing support on compressed IPC (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26071\"\u003e#26071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/44c139746390a0b81b3e908a8a6529cc6efdea1e\"\u003e\u003ccode\u003e44c1397\u003c/code\u003e\u003c/a\u003e fix: CPU check for musl builds (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26076\"\u003e#26076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/35ec39865a1952f60f46d17e461974881844b9c1\"\u003e\u003ccode\u003e35ec398\u003c/code\u003e\u003c/a\u003e chore: Update breaking deps (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26055\"\u003e#26055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/84fa66381626dbd826e2d5a663285fb193356d64\"\u003e\u003ccode\u003e84fa663\u003c/code\u003e\u003c/a\u003e fix(python): Propagate C Stream import errors instead of panicking (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26036\"\u003e#26036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/e9e20e468cb84f966eed1e37a7b23afaf842e88f\"\u003e\u003ccode\u003ee9e20e4\u003c/code\u003e\u003c/a\u003e fix: Fix slicing on compressed IPC (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26066\"\u003e#26066\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/b0fdbd34d430d934bda9a4ca3f75e136223bd95b\"\u003e\u003ccode\u003eb0fdbd3\u003c/code\u003e\u003c/a\u003e chore: Fix for upstream url bug and update deps (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26052\"\u003e#26052\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pola-rs/polars/compare/py-1.28.1...py-1.37.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.32.3 to 2.32.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.32.5\u003c/h2\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.32.4\u003c/h2\u003e\n\u003ch2\u003e2.32.4 (2025-06-10)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2024-47081 Fixed an issue where a maliciously crafted URL and trusted\nenvironment will retrieve credentials for the wrong hostname/machine from a\nnetrc file. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6965\"\u003e#6965\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNumerous documentation improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for pypy 3.11 for Linux and macOS. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6926\"\u003e#6926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDropped support for pypy 3.9 following its end of support. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6926\"\u003e#6926\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/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.32.4 (2025-06-10)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2024-47081 Fixed an issue where a maliciously crafted URL and trusted\nenvironment will retrieve credentials for the wrong hostname/machine from a\nnetrc file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNumerous documentation improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for pypy 3.11 for Linux and macOS.\u003c/li\u003e\n\u003cli\u003eDropped support for pypy 3.9 following its end of 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/psf/requests/commit/b25c87d7cb8d6a18a37fa12442b5f883f9e41741\"\u003e\u003ccode\u003eb25c87d\u003c/code\u003e\u003c/a\u003e v2.32.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/131e506079d97606e4214cc4d87b780ac478de7a\"\u003e\u003ccode\u003e131e506\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/7010\"\u003e#7010\u003c/a\u003e from psf/dependabot/github_actions/actions/checkout-...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b336cb2bc616a63a93c6470c558fc1f576b77f90\"\u003e\u003ccode\u003eb336cb2\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/46e939b5525d9c72b677340985582b04b128478a\"\u003e\u003ccode\u003e46e939b\u003c/code\u003e\u003c/a\u003e Update publish workflow to use \u003ccode\u003eartifact-id\u003c/code\u003e instead of \u003ccode\u003ename\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/4b9c546aa3f35fca6ca24945376fe7462bb007c4\"\u003e\u003ccode\u003e4b9c546\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/6999\"\u003e#6999\u003c/a\u003e from psf/dependabot/github_actions/step-security/har...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/7618dbef01d333f23ba4b9c4d97397b06dd89cb6\"\u003e\u003ccode\u003e7618dbe\u003c/code\u003e\u003c/a\u003e Bump step-security/harden-runner from 2.12.0 to 2.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/2edca11103c1c27dd8b572dab544b7f48cf3b446\"\u003e\u003ccode\u003e2edca11\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 and drop support for Python 3.8 (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6993\"\u003e#6993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/fec96cd5976ad763e45bac9a033d62cca1877a00\"\u003e\u003ccode\u003efec96cd\u003c/code\u003e\u003c/a\u003e Update Makefile rules (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6996\"\u003e#6996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/d58d8aa2f45c3575268d6d5250745ef69f9cf8b7\"\u003e\u003ccode\u003ed58d8aa\u003c/code\u003e\u003c/a\u003e docs: clarify timeout parameter uses seconds in Session.request (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6994\"\u003e#6994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/91a3eabd3dcc4d7f36dd8249e4777a90ef9b4305\"\u003e\u003ccode\u003e91a3eab\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action from 3.28.5 to 3.29.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.32.3...v2.32.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `biopython` from 1.85 to 1.86\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/biopython/biopython/blob/master/NEWS.rst\"\u003ebiopython's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e28 October 2025: Biopython 1.86\u003c/h1\u003e\n\u003cp\u003eThis release of Biopython supports Python 3.10, 3.11, 3.12, 3.13 and 3.14.  It\nhas also been tested on PyPy3.10 v7.3.19.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.SearchIO\u003c/code\u003e now supports parsing the tabular and plain text output of\n\u003ccode\u003eInfernal \u0026lt;http://eddylab.org/infernal/\u0026gt;\u003c/code\u003e (v1.0.0+) RNA search tool. The\nformat names are \u003ccode\u003einfernal-tab\u003c/code\u003e and \u003ccode\u003einfernal-text\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThe default value of the gap score of a \u003ccode\u003ePairwiseAligner\u003c/code\u003e object was changed\nin this release.  Previously, for consistency with \u003ccode\u003eBio.pairwise2\u003c/code\u003e, the\ndefault value for gap score was 0.  However, this means that a mismatch, an\ninsertion followed by a deletion, and a deletion followed by an insertion all\nget assigned a score of 0.  The aligner then finds a large number of alignments\nthat are logically the same, but have trivial differences between them.  For\nexample, aligning AAACAAA to AAAGAAA previously yielded the following three\nalignments, all with score 6::\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e AAACAAA        AAAC-AAA        AAA-CAAA\n AAAGAAA        AAA-GAAA        AAAG-AAA\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eWith the new default parameter for the gap score, only the first alignment is\nreturned.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.PDBIO\u003c/code\u003e now ensures that b-factor values are always at most 6 characters to\nensure that we do not violate the wwPDB specification. This should not have an impact\non the majority of uses, as b-factor values are generally small (less than 100). When\n1000 \u0026lt;= b-factor \u0026lt; 10_000, the value is rounded to a single decimal place. When,\n10_000 \u0026lt;= b-factor \u0026lt; 999_999, the value is rounded to zero decimal places. Values\nabove 999_999 are now clamped. The justification for this is the rise in the b-factor\nfield being used for additional metadata, typically from computational tools.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.Align\u003c/code\u003e now provides a method \u003ccode\u003eAlignment.from_alignments_with_same_reference\u003c/code\u003e\nto construct a multiple sequence alignment from a collection of alignments\nthat share the same reference sequence.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.PDBIO\u003c/code\u003e will now raise module specific warnings:\n\u003ccode\u003eBio.PDB.PDBExceptions.PDBIOWarning\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.SCADIO\u003c/code\u003e now supports object selection by color in the OpenSCAD\noutput file.  This enables generation of separate STL files for each color for\nprinting protein structures on multi-material 3D printers.\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003eiplotx\u003c/code\u003e library is mentioned in the Tutorial as an option to visualise\ntrees using complex style options.\u003c/p\u003e\n\u003cp\u003eMany thanks to the Biopython developers and community for making this release\npossible, especially the following contributors:\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\u003eSee full diff in \u003ca href=\"https://github.com/biopython/biopython/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.18 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.18...1.42.34\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `botocore` from 1.38.18 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/botocore/commit/d52e6ce4372810dc3a0d6701b366f54add0aedae\"\u003e\u003ccode\u003ed52e6ce\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.34'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/fce5268f1cd4063f30e3faec44da7efa309cae5f\"\u003e\u003ccode\u003efce5268\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.34\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/45e43f9baa8c57d13eb75d7566f1401366a1a188\"\u003e\u003ccode\u003e45e43f9\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/b9ed58fa2f31170724538f6ed86e8cbf833de8fd\"\u003e\u003ccode\u003eb9ed58f\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.33'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/48062d233b8173af5af60afb85443e04c6520146\"\u003e\u003ccode\u003e48062d2\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/botocore/commit/8eb5ab6cd38ba8d94d938fac2e6086bd918760dc\"\u003e\u003ccode\u003e8eb5ab6\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.33\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/05b651e910c4b59a971a2566afb4b82a51fb00fc\"\u003e\u003ccode\u003e05b651e\u003c/code\u003e\u003c/a\u003e Update endpoints model\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/aba67690e5aa14f58083dfa168d7fc09681c884a\"\u003e\u003ccode\u003eaba6769\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/3549e0136b656df25e985bdb85233f95da5851d3\"\u003e\u003ccode\u003e3549e01\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.32'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/0847d5e023fd0f7d0e19a154ee22a46e8f56bc38\"\u003e\u003ccode\u003e0847d5e\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/botocore/compare/1.38.18...1.42.34\"\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 2026.1.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\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\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/27ca98ad845ee6d130a88301622c137893f71620\"\u003e\u003ccode\u003e27ca98a\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7.0.9 to 7.0.11 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/56c59a63909cfd3162b37e7bc16956e64df0f737\"\u003e\u003ccode\u003e56c59a6\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.0 to 6.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ae0021cd43a77bfba67d20a041469cdf6996570e\"\u003e\u003ccode\u003eae0021c\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.0.0 to 6.1.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/380\"\u003e#380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddf5d0b5d2a3d55fd92a79f141dbb5e074caf924\"\u003e\u003ccode\u003eddf5d0b\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5.0.1 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.04.26...2026.01.04\"\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 `cloudpathlib` from 0.21.1 to 0.23.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/drivendataorg/cloudpathlib/releases\"\u003ecloudpathlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.23.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14 (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/529\"\u003e#529\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/530\"\u003e#530\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eChanged \u003ccode\u003eCloudPath.copy\u003c/code\u003e to have the first parameter named \u003ccode\u003etarget\u003c/code\u003e instead of \u003ccode\u003edestination\u003c/code\u003e and added new \u003ccode\u003efollow_symlinks\u003c/code\u003e and \u003ccode\u003epreserve_metadata\u003c/code\u003e kwargs. \u003cstrong\u003eBreaking change for users that relied on the first parameter being named \u003ccode\u003edestination\u003c/code\u003e instead of \u003ccode\u003etarget\u003c/code\u003e.\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.copy_into\u003c/code\u003e to copy a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move\u003c/code\u003e to move a file or directory to another location.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move_into\u003c/code\u003e to move a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPathInfo\u003c/code\u003e and \u003ccode\u003eCloudPath.info\u003c/code\u003e to get information about a file or directory.\u003c/li\u003e\n\u003cli\u003eAdded additional no-op kwargs to \u003ccode\u003emkdir\u003c/code\u003e, \u003ccode\u003etouch\u003c/code\u003e, \u003ccode\u003eglob\u003c/code\u003e, \u003ccode\u003erglob\u003c/code\u003e, \u003ccode\u003estat\u003c/code\u003e to match pathlib.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.22.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed issue with GS credentials, using default auth enables a wider set of authentication methods in GS (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/390\"\u003e#390\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/514\"\u003e#514\u003c/a\u003e, thanks \u003ca href=\"https://github.com/ljyanesm\"\u003e\u003ccode\u003e@​ljyanesm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for http(s) urls with \u003ccode\u003eHttpClient\u003c/code\u003e, \u003ccode\u003eHttpPath\u003c/code\u003e, \u003ccode\u003eHttpsClient\u003c/code\u003e, and \u003ccode\u003eHttpsPath\u003c/code\u003e. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/455\"\u003e#455\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/468\"\u003e#468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded experimental support for patching the builtins \u003ccode\u003eopen\u003c/code\u003e, \u003ccode\u003eos\u003c/code\u003e, \u003ccode\u003eos.path\u003c/code\u003e, and \u003ccode\u003eglob\u003c/code\u003e to work with \u003ccode\u003eCloudPath\u003c/code\u003e objects. It is off by default; see the new \u0026quot;Compatibility\u0026quot; section in the docs for more information. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/128\"\u003e#128\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003eCloudPath(*parts)\u003c/code\u003e to create a \u003ccode\u003eCloudPath\u003c/code\u003e object from a list of parts (to match \u003ccode\u003epathlib.Path\u003c/code\u003e). \u003cstrong\u003eThis is a potentially breaking change for users that relied on the second arg being the \u003ccode\u003eclient\u003c/code\u003e instead of making it an explicit kwarg.\u003c/strong\u003e (PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\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/drivendataorg/cloudpathlib/blob/master/HISTORY.md\"\u003ecloudpathlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.23.0 (2025-10-07)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14 (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/529\"\u003e#529\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/530\"\u003e#530\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eChanged \u003ccode\u003eCloudPath.copy\u003c/code\u003e to have the first parameter named \u003ccode\u003etarget\u003c/code\u003e instead of \u003ccode\u003edestination\u003c/code\u003e and added new \u003ccode\u003efollow_symlinks\u003c/code\u003e and \u003ccode\u003epreserve_metadata\u003c/code\u003e kwargs. \u003cstrong\u003eBreaking change for users that relied on the first parameter being named \u003ccode\u003edestination\u003c/code\u003e instead of \u003ccode\u003etarget\u003c/code\u003e.\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.copy_into\u003c/code\u003e to copy a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move\u003c/code\u003e to move a file or directory to another location.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move_into\u003c/code\u003e to move a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPathInfo\u003c/code\u003e and \u003ccode\u003eCloudPath.info\u003c/code\u003e to get information about a file or directory.\u003c/li\u003e\n\u003cli\u003eAdded additional no-op kwargs to \u003ccode\u003emkdir\u003c/code\u003e, \u003ccode\u003etouch\u003c/code\u003e, \u003ccode\u003eglob\u003c/code\u003e, \u003ccode\u003erglob\u003c/code\u003e, \u003ccode\u003estat\u003c/code\u003e to match pathlib.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.22.0 (2025-08-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed issue with GS credentials, using default auth enables a wider set of authentication methods in GS (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/390\"\u003e#390\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/514\"\u003e#514\u003c/a\u003e, thanks \u003ca href=\"https://github.com/ljyanesm\"\u003e\u003ccode\u003e@​ljyanesm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for http(s) urls with \u003ccode\u003eHttpClient\u003c/code\u003e, \u003ccode\u003eHttpPath\u003c/code\u003e, \u003ccode\u003eHttpsClient\u003c/code\u003e, and \u003ccode\u003eHttpsPath\u003c/code\u003e. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/455\"\u003e#455\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/468\"\u003e#468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded experimental support for patching the builtins \u003ccode\u003eopen\u003c/code\u003e, \u003ccode\u003eos\u003c/code\u003e, \u003ccode\u003eos.path\u003c/code\u003e, and \u003ccode\u003eglob\u003c/code\u003e to work with \u003ccode\u003eCloudPath\u003c/code\u003e objects. It is off by default; see the new \u0026quot;Compatibility\u0026quot; section in the docs for more information. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/128\"\u003e#128\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003eCloudPath(*parts)\u003c/code\u003e to create a \u003ccode\u003eCloudPath\u003c/code\u003e object from a list of parts (to match \u003ccode\u003epathlib.Path\u003c/code\u003e). \u003cstrong\u003eThis is a potentially breaking change for users that relied on the second arg being the \u003ccode\u003eclient\u003c/code\u003e instead of making it an explicit kwarg.\u003c/strong\u003e (PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\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/drivendataorg/cloudpathlib/commit/28f1d943078517262d045ae50136edf27a5298a1\"\u003e\u003ccode\u003e28f1d94\u003c/code\u003e\u003c/a\u003e WIP Support 3.14 (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/530\"\u003e#530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/fec5918d6725e9f1f52bee003528f4f854454980\"\u003e\u003ccode\u003efec5918\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish in /.github/workflows (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/e7900023bf4b32b70ca5b2d798f9ce52187582f8\"\u003e\u003ccode\u003ee790002\u003c/code\u003e\u003c/a\u003e version bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/bb1f1e4cb5eba0928cec2aaff30cb0f5ace1f108\"\u003e\u003ccode\u003ebb1f1e4\u003c/code\u003e\u003c/a\u003e WIP: Patch open, os and os.path builtins (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/12005505fc29ab4183968022a487416a31b1a1bd\"\u003e\u003ccode\u003e1200550\u003c/code\u003e\u003c/a\u003e Refactor GS authentication to use default credentials (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/526\"\u003e#526\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/b21cac14f0090021594f7e3afae9c48f5d7dbd46\"\u003e\u003ccode\u003eb21cac1\u003c/code\u003e\u003c/a\u003e Implement HTTP(s) support (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/468\"\u003e#468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/863e884cbf1cf141cdf7bf9c0623e0cd3d27841d\"\u003e\u003ccode\u003e863e884\u003c/code\u003e\u003c/a\u003e fix for azure typing differences (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/524\"\u003e#524\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/65c5c012bd4297ce4e812cfb8bbf9827db346e03\"\u003e\u003ccode\u003e65c5c01\u003c/code\u003e\u003c/a\u003e Set pytest-cases\u0026gt;=3.9.1 (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/520\"\u003e#520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/drivendataorg/cloudpathlib/compare/v0.21.1...v0.23.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `docutils` from 0.19 to 0.22.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/rtfd/recommonmark/commits\"\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 `jellyfish` from 1.2.0 to 1.2.1\n\nUpdates `jmespath` from 1.0.1 to 1.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jmespath/jmespath.py/blob/develop/CHANGELOG.rst\"\u003ejmespath's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.1.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix concurrency issue with cache\n(\u003ccode\u003epr [#335](https://github.com/jmespath/jmespath.py/issues/335) \u0026lt;https://github.com/jmespath/jmespath.py/pull/335\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.12-3.14 (\u003ccode\u003epr [#331](https://github.com/jmespath/jmespath.py/issues/331) \u0026lt;https://github.com/jmespath/jmespath.py/pull/331\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eRemoved support for Python 3.7-3.8 (\u003ccode\u003epr [#335](https://github.com/jmespath/jmespath.py/issues/335) \u0026lt;https://github.com/jmespath/jmespath.py/pull/335\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/jmespath/jmespath.py/commit/6ff419a8b171d055a9bfc6904605bceb8b7a80ef\"\u003e\u003ccode\u003e6ff419a\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.1.0'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/17e964f81911b49babb33e8697b34a31f869420f\"\u003e\u003ccode\u003e17e964f\u003c/code\u003e\u003c/a\u003e Bump version to 1.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/5ce13aab582ba08b07e1c615feeb3654a7cd8d62\"\u003e\u003ccode\u003e5ce13aa\u003c/code\u003e\u003c/a\u003e Merge branch 'v1.1.0' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/d8f0457f8f962724b2c1ae12f79d3ba65edf4d82\"\u003e\u003ccode\u003ed8f0457\u003c/code\u003e\u003c/a\u003e Revert versions back to current version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/8cb30825f62675f6018b812faa9e2c9566eba2e3\"\u003e\u003ccode\u003e8cb3082\u003c/code\u003e\u003c/a\u003e 1.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/6e379910c1bc0ec0339b05da73e32cad9d3dddbc\"\u003e\u003ccode\u003e6e37991\u003c/code\u003e\u003c/a\u003e Update permissions in codeql.yml workflow (\u003ca href=\"https://redirect.github.com/jmespath/jmespath.py/issues/338\"\u003e#338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/141734d98ac79c165ec31aa1c18dd29efc45ac49\"\u003e\u003ccode\u003e141734d\u003c/code\u003e\u003c/a\u003e Bring .github settings up-to-date (\u003ca href=\"https://redirect.github.com/jmespath/jmespath.py/issues/336\"\u003e#336\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/07e30cf011056386c3dade2502a53eb2b1d4b3c1\"\u003e\u003ccode\u003e07e30cf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jmespath/jmespath.py/issues/337\"\u003e#337\u003c/a\u003e from nateprewitt/python_changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/9170711017c2be9e3057a384e4a6061ef71bdc6f\"\u003e\u003ccode\u003e9170711\u003c/code\u003e\u003c/a\u003e Add missing changelog entries for Python support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/cdb9327fd597dda1aff703e6e5b98d79503c6f4e\"\u003e\u003ccode\u003ecdb9327\u003c/code\u003e\u003c/a\u003e Fix file encoding for Windows\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jmespath/jmespath.py/compare/1.0.1...1.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `markdown-it-py` from 3.0.0 to 4.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/markdown-it-py/releases\"\u003emarkdown-it-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eThis primarily drops support for Python 3.8 and 3.9, adds support for Python 3.13,\nand updates the parser to comply with Commonmark 0.31.2 and Markdown-It v14.1.0.\u003c/p\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Drop Python 3.8, test 3.13 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/342\"\u003eexecutablebooks/markdown-it-py#342\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Drop support for Python 3.9 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/360\"\u003eexecutablebooks/markdown-it-py#360\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Comply with Commonmark 0.31.2 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/362\"\u003eexecutablebooks/markdown-it-py#362\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👌 Improve performance of \u0026quot;text\u0026quot; inline rule by \u003ca href=\"https://github.com/hukkin\"\u003e\u003ccode\u003e@​hukkin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/347\"\u003eexecutablebooks/markdown-it-py#347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Use \u003ccode\u003estr.removesuffix\u003c/code\u003e by \u003ca href=\"https://github.com/hukkin\"\u003e\u003ccode\u003e@​hukkin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/348\"\u003eexecutablebooks/markdown-it-py#348\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 limit the number of autocompleted cells in a table by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/364\"\u003eexecutablebooks/markdown-it-py#364\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 fix quadratic complexity in reference parser by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/367\"\u003eexecutablebooks/markdown-it-py#367\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix emphasis inside raw links bugs by \u003ca href=\"https://github.com/tsutsu3\"\u003e\u003ccode\u003e@​tsutsu3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/320\"\u003eexecutablebooks/markdown-it-py#320\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔧 Replace black and isort with ruff formatter by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/313\"\u003eexecutablebooks/markdown-it-py#313\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Fixed Code Style paragraph still referring to flake8 by \u003ca href=\"https://github.com/venthur\"\u003e\u003ccode\u003e@​venthur\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/309\"\u003eexecutablebooks/markdown-it-py#309\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Add \u0026quot;store_labels\u0026quot; to OptionsType by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/343\"\u003eexecutablebooks/markdown-it-py#343\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Move \u003ccode\u003ecode_style\u003c/code\u003e to dependency group by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/344\"\u003eexecutablebooks/markdown-it-py#344\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Update codecov action by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/345\"\u003eexecutablebooks/markdown-it-py#345\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Update pre-commit and upload-artifact by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/359\"\u003eexecutablebooks/markdown-it-py#359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Improve spec update script by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/361\"\u003eexecutablebooks/markdown-it-py#361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 simplify logic in scanDelims by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/365\"\u003eexecutablebooks/markdown-it-py#365\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 Add CI testing for Python 3.12 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/303\"\u003eexecutablebooks/markdown-it-py#303\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 Fix codecov by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/332\"\u003eexecutablebooks/markdown-it-py#332\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📚 Fix typo by \u003ca href=\"https://github.com/bwagner\"\u003e\u003ccode\u003e@​bwagner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/315\"\u003eexecutablebooks/markdown-it-py#315\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix RTD build by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/322\"\u003eexecutablebooks/markdown-it-py#322\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Fix a few old URLs by \u003ca href=\"https://github.com/elijahgreenstein\"\u003e\u003ccode\u003e@​elijahgreenstein\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/358\"\u003eexecutablebooks/markdown-it-py#358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Improve README by \u003ca href=\"https://github.com/mrmurilo75\"\u003e\u003ccode\u003e@​mrmurilo75\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/340\"\u003eexecutablebooks/markdown-it-py#340\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix CI badge link by \u003ca href=\"https://github.com/tsutsu3\"\u003e\u003ccode\u003e@​tsutsu3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/291\"\u003eexecutablebooks/markdown-it-py#291\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Update docs by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/292\"\u003eexecutablebooks/markdown-it-py#292\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Add icon to readme by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/293\"\u003eexecutablebooks/markdown-it-py#293\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Update icon by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/294\"\u003eexecutablebooks/markdown-it-py#294\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Clarify docs regarding security configuration by \u003ca href=\"https://github.com/djramones\"\u003e\u003ccode\u003e@​djramones\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/296\"\u003eexecutablebooks/markdown-it-py#296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix the RTD build by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/311\"\u003eexecutablebooks/markdown-it-py#311\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Fix typos by \u003ca href=\"https://github.com/elijahgreenstein\"\u003e\u003ccode\u003e@​elijahgreenstein\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/366\"\u003eexecutablebooks/markdown-it-py#366\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- 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/executablebooks/markdown-it-py/blob/master/CHANGELOG.md\"\u003emarkdown-it-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.0.0 - 2024-08-10\u003c/h2\u003e\n\u003cp\u003eThis primarily drops support for Python 3.9, adds support for Python 3.13,\nand updates the parser to comply with Commonmark 0.31.2 and Markdown-It v14.1.0.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Drop support for Python 3.9 in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/360\"\u003e#360\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Comply with Commonmark 0.31.2 in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/362\"\u003e#362\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Improve performance of \u0026quot;text\u0026quot; inline rule in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/347\"\u003e#347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Use \u003ccode\u003estr.removesuffix\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/348\"\u003e#348\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 limit the number of autocompleted cells in a table in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/364\"\u003e#364\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 fix quadratic complexity in reference parser in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/367\"\u003e#367\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 Fix emphasis inside raw links bugs in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/320\"\u003e#320\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.0\"\u003ehttps://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.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/executablebooks/markdown-it-py/commit/c62983f1554124391b47170180e6c62df4d476ca\"\u003e\u003ccode\u003ec62983f\u003c/code\u003e\u003c/a\u003e 🚀 RELEASE v4.0.0 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/368\"\u003e#368\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/9e93bd554147ffb8582581e14620c7611103d2ff\"\u003e\u003ccode\u003e9e93bd5\u003c/code\u003e\u003c/a\u003e 👌 fix quadratic complexity in reference parser (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/da45c8764b2077425c091fa1811bbb1c5f211bd1\"\u003e\u003ccode\u003eda45c87\u003c/code\u003e\u003c/a\u003e 📚 DOCS: Fix typos (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/87b16e272bf8207182084e07a63253b98fc437d7\"\u003e\u003ccode\u003e87b16e2\u003c/code\u003e\u003c/a\u003e 🔧 simplify logic in scanDelims (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/365\"\u003e#365\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/e4009641db528444b85d384af815e9cad997a016\"\u003e\u003ccode\u003ee400964\u003c/code\u003e\u003c/a\u003e 👌 limit the number of autocompleted cells in a table (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/364\"\u003e#364\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/4535d77edcb5f51450a266135687eeae8bcc5033\"\u003e\u003ccode\u003e4535d77\u003c/code\u003e\u003c/a\u003e ⬆️ Comply with Commonmark 0.31.2 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/8eb20ac1cb63e09dcd78e84a0c71dab8446bb73c\"\u003e\u003ccode\u003e8eb20ac\u003c/code\u003e\u003c/a\u003e 🔧 Improve spec update script (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/361\"\u003e#361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/fb9d3ab646e4f752dc8fd52e1dd7613c350ff190\"\u003e\u003ccode\u003efb9d3ab\u003c/code\u003e\u003c/a\u003e ⬆️ Drop support for Python 3.9 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/360\"\u003e#360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/9ffe841832d33264201aaff120349f001a02953a\"\u003e\u003ccode\u003e9ffe841\u003c/code\u003e\u003c/a\u003e 📚 DOCS: Fix a few old URLs (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/154fe43feb17947e2c933d0bb3e26618129909a8\"\u003e\u003ccode\u003e154fe43\u003c/code\u003e\u003c/a\u003e 🔧 Update pre-commit and upload-artifact (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `numpy` from 2.2.5 to 2.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/numpy/numpy/releases\"\u003enumpy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.1 (Jan 10, 2026)\u003c/h2\u003e\n\u003ch1\u003eNumPy 2.4.1 Release Notes\u003c/h1\u003e\n\u003cp\u003eThe NumPy 2.4.1 is a patch release that fixes bugs discoved after the\n2.4.0 release. In particular, the typo \u003ccode\u003eSeedlessSequence\u003c/code\u003e is preserved to\nenable wheels using the random Cython API and built against NumPy \u0026lt; 2.4.0\nto run without errors.\u003c/p\u003e\n\u003cp\u003eThis release supports Python versions 3.11-3.14\u003c/p\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003eA total of 9 people contributed to this release. People with a \u0026quot;+\u0026quot; by their\nnames contributed a patch for the first time.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAlexander Shadchin\u003c/li\u003e\n\u003cli\u003eBill Tompkins +\u003c/li\u003e\n\u003cli\u003eCharles Harris\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eMarten van Kerkwijk\u003c/li\u003e\n\u003cli\u003eNathan Goldbaum\u003c/li\u003e\n\u003cli\u003eRaghuveer Devulapalli\u003c/li\u003e\n\u003cli\u003eRalf Gommers\u003c/li\u003e\n\u003cli\u003eSebastian Berg\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePull requests merged\u003c/h2\u003e\n\u003cp\u003eA total of 15 pull requests were merged for this release.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30490\"\u003e#30490\u003c/a\u003e: MAINT: Prepare 2.4.x for further development\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30503\"\u003e#30503\u003c/a\u003e: DOC: \u003ccode\u003enumpy.select\u003c/code\u003e: fix \u003ccode\u003edefault\u003c/code\u003e parameter docstring...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30504\"\u003e#30504\u003c/a\u003e: REV: Revert part of \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30164\"\u003e#30164\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30500\"\u003e#30500\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30506\"\u003e#30506\u003c/a\u003e: TYP: \u003ccode\u003enumpy.select\u003c/code\u003e: allow passing array-like \u003ccode\u003edefault\u003c/code\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30507\"\u003e#30507\u003c/a\u003e: MNT: use if constexpr for compile-time branch selection\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30513\"\u003e#30513\u003c/a\u003e: BUG: Fix leak i...\n\n_Description has been truncated_","html_url":"https://github.com/reichlab/cladetime/pull/190","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/reichlab%2Fcladetime/issues/190","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/190/packages"},{"uuid":"3853936727","node_id":"PR_kwDOEkpJIs6_Q62l","number":205,"state":"open","title":"Bump the dependencies group across 1 directory with 65 updates","user":"dependabot[bot]","labels":["skip-changelog","dependabot-deps-updates"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-25T22:13:17.000Z","updated_at":"2026-02-02T00:01:30.944Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"dependencies","update_count":65,"packages":[{"name":"ansible-compat","old_version":"24.10.0","new_version":"25.12.0","repository_url":"https://github.com/ansible/ansible-compat"},{"name":"argparse-manpage","old_version":"4.6","new_version":"4.7","repository_url":"https://github.com/praiskup/argparse-manpage"},{"name":"asttokens","old_version":"3.0.0","new_version":"3.0.1","repository_url":"https://github.com/gristlabs/asttokens"},{"name":"attrs","old_version":"25.3.0","new_version":"25.4.0","repository_url":"https://github.com/sponsors/hynek"},{"name":"backrefs","old_version":"5.8","new_version":"6.1","repository_url":"https://github.com/facelessuser/backrefs"},{"name":"bracex","old_version":"2.5.post1","new_version":"2.6","repository_url":"https://github.com/facelessuser/bracex"},{"name":"cachetools","old_version":"6.0.0","new_version":"6.2.5","repository_url":"https://github.com/tkem/cachetools"},{"name":"certifi","old_version":"2025.6.15","new_version":"2026.1.4","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.4.2","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":"coverage","old_version":"7.9.1","new_version":"7.13.2","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cryptography","old_version":"45.0.4","new_version":"46.0.3","repository_url":"https://github.com/pyca/cryptography"},{"name":"distlib","old_version":"0.3.9","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"exceptiongroup","old_version":"1.3.0","new_version":"1.3.1","repository_url":"https://github.com/agronholm/exceptiongroup"},{"name":"execnet","old_version":"2.1.1","new_version":"2.1.2","repository_url":"https://github.com/pytest-dev/execnet"},{"name":"executing","old_version":"2.2.0","new_version":"2.2.1","repository_url":"https://github.com/alexmojaki/executing"},{"name":"filelock","old_version":"3.18.0","new_version":"3.20.3","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"gitpython","old_version":"3.1.44","new_version":"3.1.46","repository_url":"https://github.com/gitpython-developers/GitPython"},{"name":"griffe","old_version":"1.7.3","new_version":"1.15.0","repository_url":"https://github.com/mkdocstrings/griffe"},{"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":"importlib-resources","old_version":"5.0.7","new_version":"6.5.2","repository_url":"https://github.com/python/importlib_resources"},{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"ipython","old_version":"8.18.1","new_version":"9.9.0","repository_url":"https://github.com/ipython/ipython"},{"name":"jsonschema","old_version":"4.24.0","new_version":"4.26.0","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"jsonschema-specifications","old_version":"2025.4.1","new_version":"2025.9.1","repository_url":"https://github.com/python-jsonschema/jsonschema-specifications"},{"name":"markdown","old_version":"3.8","new_version":"3.10.1","repository_url":"https://github.com/Python-Markdown/markdown"},{"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":"matplotlib-inline","old_version":"0.1.7","new_version":"0.2.1","repository_url":"https://github.com/ipython/matplotlib-inline"},{"name":"mkdocs-autorefs","old_version":"1.4.2","new_version":"1.4.3","repository_url":"https://github.com/mkdocstrings/autorefs"},{"name":"mkdocs-git-revision-date-localized-plugin","old_version":"1.4.7","new_version":"1.5.0","repository_url":"https://github.com/timvink/mkdocs-git-revision-date-localized-plugin"},{"name":"mkdocs-material","old_version":"9.6.14","new_version":"9.7.1","repository_url":"https://github.com/squidfunk/mkdocs-material"},{"name":"mkdocstrings","old_version":"0.29.1","new_version":"1.0.2","repository_url":"https://github.com/mkdocstrings/mkdocstrings"},{"name":"mkdocstrings-python","old_version":"1.16.12","new_version":"2.0.1","repository_url":"https://github.com/mkdocstrings/python"},{"name":"molecule","old_version":"6.0.3","new_version":"25.12.0","repository_url":"https://github.com/ansible-community/molecule"},{"name":"packaging","old_version":"25.0","new_version":"26.0","repository_url":"https://github.com/pypa/packaging"},{"name":"parso","old_version":"0.8.4","new_version":"0.8.5","repository_url":"https://github.com/davidhalter/parso"},{"name":"pathspec","old_version":"0.12.1","new_version":"1.0.3","repository_url":"https://github.com/cpburnz/python-pathspec"},{"name":"pbr","old_version":"6.1.1","new_version":"7.0.3"},{"name":"pillow","old_version":"11.2.1","new_version":"12.1.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.3.8","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"prompt-toolkit","old_version":"3.0.51","new_version":"3.0.52","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"psutil","old_version":"7.0.0","new_version":"7.2.1","repository_url":"https://github.com/giampaolo/psutil"},{"name":"pycparser","old_version":"2.22","new_version":"3.0","repository_url":"https://github.com/eliben/pycparser"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pymdown-extensions","old_version":"10.15","new_version":"10.20.1","repository_url":"https://github.com/facelessuser/pymdown-extensions"},{"name":"pyproject-api","old_version":"1.9.1","new_version":"1.10.0","repository_url":"https://github.com/tox-dev/pyproject-api"},{"name":"pytest","old_version":"8.4.0","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-plus","old_version":"0.7.0","new_version":"0.8.1","repository_url":"https://github.com/pytest-dev/pytest-plus"},{"name":"pytest-sugar","old_version":"1.0.0","new_version":"1.1.1","repository_url":"https://github.com/Teemu/pytest-sugar"},{"name":"pytest-xdist","old_version":"3.7.0","new_version":"3.8.0","repository_url":"https://github.com/pytest-dev/pytest-xdist"},{"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":"requests","old_version":"2.32.4","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"rich","old_version":"14.0.0","new_version":"14.3.1","repository_url":"https://github.com/Textualize/rich"},{"name":"rpds-py","old_version":"0.25.1","new_version":"0.30.0","repository_url":"https://github.com/crate-py/rpds"},{"name":"setproctitle","old_version":"1.3.6","new_version":"1.3.7","repository_url":"https://github.com/dvarrazzo/py-setproctitle"},{"name":"termcolor","old_version":"3.1.0","new_version":"3.3.0","repository_url":"https://github.com/termcolor/termcolor"},{"name":"tinycss2","old_version":"1.4.0","new_version":"1.5.1","repository_url":"https://github.com/Kozea/tinycss2"},{"name":"tomli","old_version":"2.2.1","new_version":"2.4.0","repository_url":"https://github.com/hukkin/tomli"},{"name":"urllib3","old_version":"2.4.0","new_version":"2.6.3","repository_url":"https://github.com/urllib3/urllib3"},{"name":"wcmatch","old_version":"10.0","new_version":"10.1","repository_url":"https://github.com/facelessuser/wcmatch"},{"name":"wcwidth","old_version":"0.2.13","new_version":"0.3.5","repository_url":"https://github.com/jquast/wcwidth"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dependencies group with 65 updates in the /.config directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ansible-compat](https://github.com/ansible/ansible-compat) | `24.10.0` | `25.12.0` |\n| [argparse-manpage](https://github.com/praiskup/argparse-manpage) | `4.6` | `4.7` |\n| [asttokens](https://github.com/gristlabs/asttokens) | `3.0.0` | `3.0.1` |\n| [attrs](https://github.com/sponsors/hynek) | `25.3.0` | `25.4.0` |\n| [backrefs](https://github.com/facelessuser/backrefs) | `5.8` | `6.1` |\n| [bracex](https://github.com/facelessuser/bracex) | `2.5.post1` | `2.6` |\n| [cachetools](https://github.com/tkem/cachetools) | `6.0.0` | `6.2.5` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.6.15` | `2026.1.4` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.1` | `2.0.0` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.9.1` | `7.13.2` |\n| [cryptography](https://github.com/pyca/cryptography) | `45.0.4` | `46.0.3` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.9` | `0.4.0` |\n| [exceptiongroup](https://github.com/agronholm/exceptiongroup) | `1.3.0` | `1.3.1` |\n| [execnet](https://github.com/pytest-dev/execnet) | `2.1.1` | `2.1.2` |\n| [executing](https://github.com/alexmojaki/executing) | `2.2.0` | `2.2.1` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.18.0` | `3.20.3` |\n| [gitpython](https://github.com/gitpython-developers/GitPython) | `3.1.44` | `3.1.46` |\n| [griffe](https://github.com/mkdocstrings/griffe) | `1.7.3` | `1.15.0` |\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| [importlib-resources](https://github.com/python/importlib_resources) | `5.0.7` | `6.5.2` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.0` |\n| [ipython](https://github.com/ipython/ipython) | `8.18.1` | `9.9.0` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.24.0` | `4.26.0` |\n| [jsonschema-specifications](https://github.com/python-jsonschema/jsonschema-specifications) | `2025.4.1` | `2025.9.1` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.8` | `3.10.1` |\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| [matplotlib-inline](https://github.com/ipython/matplotlib-inline) | `0.1.7` | `0.2.1` |\n| [mkdocs-autorefs](https://github.com/mkdocstrings/autorefs) | `1.4.2` | `1.4.3` |\n| [mkdocs-git-revision-date-localized-plugin](https://github.com/timvink/mkdocs-git-revision-date-localized-plugin) | `1.4.7` | `1.5.0` |\n| [mkdocs-material](https://github.com/squidfunk/mkdocs-material) | `9.6.14` | `9.7.1` |\n| [mkdocstrings](https://github.com/mkdocstrings/mkdocstrings) | `0.29.1` | `1.0.2` |\n| [mkdocstrings-python](https://github.com/mkdocstrings/python) | `1.16.12` | `2.0.1` |\n| [molecule](https://github.com/ansible-community/molecule) | `6.0.3` | `25.12.0` |\n| [packaging](https://github.com/pypa/packaging) | `25.0` | `26.0` |\n| [parso](https://github.com/davidhalter/parso) | `0.8.4` | `0.8.5` |\n| [pathspec](https://github.com/cpburnz/python-pathspec) | `0.12.1` | `1.0.3` |\n| [pbr](https://docs.openstack.org/pbr/latest/) | `6.1.1` | `7.0.3` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `12.1.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.3.8` | `4.5.1` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.51` | `3.0.52` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.2.1` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `3.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) | `10.15` | `10.20.1` |\n| [pyproject-api](https://github.com/tox-dev/pyproject-api) | `1.9.1` | `1.10.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.0` | `9.0.2` |\n| [pytest-plus](https://github.com/pytest-dev/pytest-plus) | `0.7.0` | `0.8.1` |\n| [pytest-sugar](https://github.com/Teemu/pytest-sugar) | `1.0.0` | `1.1.1` |\n| [pytest-xdist](https://github.com/pytest-dev/pytest-xdist) | `3.7.0` | `3.8.0` |\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| [requests](https://github.com/psf/requests) | `2.32.4` | `2.32.5` |\n| [rich](https://github.com/Textualize/rich) | `14.0.0` | `14.3.1` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.25.1` | `0.30.0` |\n| [setproctitle](https://github.com/dvarrazzo/py-setproctitle) | `1.3.6` | `1.3.7` |\n| [termcolor](https://github.com/termcolor/termcolor) | `3.1.0` | `3.3.0` |\n| [tinycss2](https://github.com/Kozea/tinycss2) | `1.4.0` | `1.5.1` |\n| [tomli](https://github.com/hukkin/tomli) | `2.2.1` | `2.4.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.4.0` | `2.6.3` |\n| [wcmatch](https://github.com/facelessuser/wcmatch) | `10.0` | `10.1` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.2.13` | `0.3.5` |\n\n\nUpdates `ansible-compat` from 24.10.0 to 25.12.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ansible/ansible-compat/releases\"\u003eansible-compat's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev25.12.0\u003c/h2\u003e\n\u003ch2\u003eMaintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd platform version check (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/548\"\u003e#548\u003c/a\u003e) \u003ca href=\"https://github.com/cidrblock\"\u003e\u003ccode\u003e@​cidrblock\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/547\"\u003e#547\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/546\"\u003e#546\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: Temporarily disable tombi schema.strict for pyproject.toml (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/545\"\u003e#545\u003c/a\u003e) \u003ca href=\"https://github.com/alisonlhart\"\u003e\u003ccode\u003e@​alisonlhart\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/544\"\u003e#544\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev25.11.0\u003c/h2\u003e\n\u003ch2\u003eMaintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/543\"\u003e#543\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/542\"\u003e#542\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/540\"\u003e#540\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/539\"\u003e#539\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd finalize workflow for secure sonarcloud checks (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/538\"\u003e#538\u003c/a\u003e) \u003ca href=\"https://github.com/alisonlhart\"\u003e\u003ccode\u003e@​alisonlhart\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate sonar-project.properties configuration (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/536\"\u003e#536\u003c/a\u003e) \u003ca href=\"https://github.com/alisonlhart\"\u003e\u003ccode\u003e@​alisonlhart\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/537\"\u003e#537\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: tell uv to use unreleased ansible-core when running with py314 (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/535\"\u003e#535\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/534\"\u003e#534\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003epre-commit-ci[bot]\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev25.8.2\u003c/h2\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: add support for python 3.14 (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/533\"\u003e#533\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: remove tox.ini and adopt pep-735 (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/526\"\u003e#526\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMaintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/532\"\u003e#532\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: hooks update (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/531\"\u003e#531\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/530\"\u003e#530\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/529\"\u003e#529\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/527\"\u003e#527\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: configure renovate (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/524\"\u003e#524\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: update hooks (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/525\"\u003e#525\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 to 5 (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/515\"\u003e#515\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev25.8.1\u003c/h2\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRestore \u003ccode\u003eansible-lint\u0026lt;25.8.1\u003c/code\u003e behaviour for \u003ccode\u003eansible-lint\u0026lt;25.8.1\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/520\"\u003e#520\u003c/a\u003e) \u003ca href=\"https://github.com/cidrblock\"\u003e\u003ccode\u003e@​cidrblock\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev25.8.0\u003c/h2\u003e\n\u003ch2\u003eEnhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump the dependencies group in /.config with 5 updates (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/507\"\u003e#507\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump markdown-exec from 1.10.3 to 1.11.0 in /.config in the dependencies group (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/506\"\u003e#506\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the dependencies group across 1 directory with 3 updates (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/505\"\u003e#505\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/601b6905c7c7819efb1f2c820a853827b835ec4f\"\u003e\u003ccode\u003e601b690\u003c/code\u003e\u003c/a\u003e Add platform version check (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/548\"\u003e#548\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/f8de21d2a42ba53679a6baba96773249b5205174\"\u003e\u003ccode\u003ef8de21d\u003c/code\u003e\u003c/a\u003e chore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/547\"\u003e#547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/bc972b8146943335a592600c59f1a03d3979cedf\"\u003e\u003ccode\u003ebc972b8\u003c/code\u003e\u003c/a\u003e chore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/546\"\u003e#546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/2a54adab4035b398a0bba671da981816cbf3b8f9\"\u003e\u003ccode\u003e2a54ada\u003c/code\u003e\u003c/a\u003e chore: Temporarily disable tombi schema.strict for pyproject.toml (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/545\"\u003e#545\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/384ce35dbf27ca74b0f92b751b93c25633e2d8d4\"\u003e\u003ccode\u003e384ce35\u003c/code\u003e\u003c/a\u003e chore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/544\"\u003e#544\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/4900c15e756d60c214fb059cf735f5d34770731c\"\u003e\u003ccode\u003e4900c15\u003c/code\u003e\u003c/a\u003e chore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/543\"\u003e#543\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/523a99d720a809a346a55474fa1deaaaa78ef8da\"\u003e\u003ccode\u003e523a99d\u003c/code\u003e\u003c/a\u003e chore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/542\"\u003e#542\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/77ff6e6bab69662edc408d3fb4e1134c4ce69e81\"\u003e\u003ccode\u003e77ff6e6\u003c/code\u003e\u003c/a\u003e chore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/540\"\u003e#540\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/44a2e5c015c003712b2aea4ee43dde012507c5b1\"\u003e\u003ccode\u003e44a2e5c\u003c/code\u003e\u003c/a\u003e chore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/539\"\u003e#539\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/b4dc1bb2583c23ceb221f906fe3352c943cafd56\"\u003e\u003ccode\u003eb4dc1bb\u003c/code\u003e\u003c/a\u003e Add finalize workflow for secure sonarcloud checks (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/538\"\u003e#538\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ansible/ansible-compat/compare/v24.10.0...v25.12.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `argparse-manpage` from 4.6 to 4.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/praiskup/argparse-manpage/releases\"\u003eargparse-manpage's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eargparse-manpage v4.7\u003c/h2\u003e\n\u003cp\u003eNews in v4.7\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003esys.stdout used instead of /dev/stdout\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003efixed build compatibility with newer setuptools\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003efixed deprecation warnings for datetime and setuptools\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003enew compat method for handling SOURCE_DATE_EPOCH\u003c/p\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/praiskup/argparse-manpage/blob/main/NEWS\"\u003eargparse-manpage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cpre\u003e\u003ccode\u003e\nWARNING: The 'build_manpage' setup.py command will be removed v5\nWARNING: We'll drop the Python 2.7 support in v5\n\u003cp\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eNews in v4.7\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003esys.stdout used instead of /dev/stdout\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003efixed build compatibility with newer setuptools\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003efixed deprecation warnings for datetime and setuptools\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003enew compat method for handling SOURCE_DATE_EPOCH\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre\u003e\u003ccode\u003e\nNews in v4.6\n\u003cul\u003e\n\u003cli\u003eFix the build against Python 3.13\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eNews in v4.5\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWe newly provide \u003ccode\u003ebuild_manpages.build_py\u003c/code\u003e and \u003ccode\u003ebuild_manpages.install\u003c/code\u003e\ncommand classes that are re-usable from \u003ccode\u003epyproject.toml\u003c/code\u003e.  No need to\nprovide \u003ccode\u003esetup.py\u003c/code\u003e because of \u003ccode\u003eargparse-manpage\u003c/code\u003e.  Solved issue#85.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre\u003e\u003ccode\u003e\nNews in v4.4\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003eprog=\u003c/code\u003e specifier (in setup.py/setup.cfg/pyproject.toml) is now\u003cbr /\u003e\nbetter handled so it doesn't conflict with ArgumentParser(prog=..).\u003cbr /\u003e\nFixes \u003ca href=\"https://redirect.github.com/praiskup/argparse-manpage/issues/79\"\u003epraiskup/argparse-manpage#79\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNews in v4.3\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe pyproject.toml parsing feature now depends on the python3-tomli library\u003cbr /\u003e\ninstead of python-toml for \u0026quot;python_environment \u0026gt;3, \u0026lt;=3.10\u0026quot;.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eNews in v4.2\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for pyproject.toml specification of manpages added.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/7883becca340aa3ea124143e032848a7b2bdf84b\"\u003e\u003ccode\u003e7883bec\u003c/code\u003e\u003c/a\u003e Release v4.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/765389ed4ee835c09451823d7fbfe22b0dc1674a\"\u003e\u003ccode\u003e765389e\u003c/code\u003e\u003c/a\u003e Move the SOURCE_DATE_EPOCH hack on one place\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/a06ed9c1f03360f8089819c8e845cd670687eb64\"\u003e\u003ccode\u003ea06ed9c\u003c/code\u003e\u003c/a\u003e ci: fix RPM build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/c985432ee15824c43c75548c7ec1bd6f105a7f22\"\u003e\u003ccode\u003ec985432\u003c/code\u003e\u003c/a\u003e Fix deprecation warnings for datetime and setuptools\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/306658941368ff0c2dfe2e4fa29b889fb5bbeb2b\"\u003e\u003ccode\u003e3066589\u003c/code\u003e\u003c/a\u003e ci: fedora-tox update list of environments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/b3a2c50e2abc47bd822d848864a80e35251a3147\"\u003e\u003ccode\u003eb3a2c50\u003c/code\u003e\u003c/a\u003e ci: enable ruff \u0026amp; bump deps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/6dc54a5272e70b081af728958fd7554a6b0372f3\"\u003e\u003ccode\u003e6dc54a5\u003c/code\u003e\u003c/a\u003e Fix compatibility with newer setuptools\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/29f89bba536cf28f6ed66721367ff2ee3f6209b7\"\u003e\u003ccode\u003e29f89bb\u003c/code\u003e\u003c/a\u003e Fix some comments about sys.argv alteration for usage message\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/ade76cc8ef49ec804955c6b4027dbae52d482034\"\u003e\u003ccode\u003eade76cc\u003c/code\u003e\u003c/a\u003e Use sys.stdout instead of /dev/stdout\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/praiskup/argparse-manpage/compare/v4.6...v4.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asttokens` from 3.0.0 to 3.0.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/bdbf396fc0e006912ba82f1137dfd6b2d5aa9af2\"\u003e\u003ccode\u003ebdbf396\u003c/code\u003e\u003c/a\u003e Update mypy; add 3.14 to the CI; drop python 3.8 support (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/167\"\u003e#167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/f859c055e8453650e1987c5aefaaec36582d3a07\"\u003e\u003ccode\u003ef859c05\u003c/code\u003e\u003c/a\u003e Add tests for astroid v2, v3, and v4 to the CI (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/166\"\u003e#166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/84ef059ba28d08816d3d881e363b9ed42bbeae3a\"\u003e\u003ccode\u003e84ef059\u003c/code\u003e\u003c/a\u003e Adapt asttokens for astroid 4.x (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/165\"\u003e#165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/9db9335648659520c7c8453bc39550fa4f95d539\"\u003e\u003ccode\u003e9db9335\u003c/code\u003e\u003c/a\u003e Various links improvements (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3371ebf7f48f6a731d409fffd6ba235e6a95d85b\"\u003e\u003ccode\u003e3371ebf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/161\"\u003e#161\u003c/a\u003e from gristlabs/dependabot/pip/docs/requests-2.32.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3a60115d3efdb01efc8a6442b59fdd0071518e70\"\u003e\u003ccode\u003e3a60115\u003c/code\u003e\u003c/a\u003e Bump requests from 2.32.2 to 2.32.4 in /docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/584b51c6c084455ad4597886657783d1b661ddfa\"\u003e\u003ccode\u003e584b51c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/160\"\u003e#160\u003c/a\u003e from gristlabs/dependabot/pip/docs/urllib3-2.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3e9d703323ce94987bf9e030bd010eae13fa15b4\"\u003e\u003ccode\u003e3e9d703\u003c/code\u003e\u003c/a\u003e Bump urllib3 from 2.2.2 to 2.5.0 in /docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/64d3f7c3637775fef832a9a9cdb78ec02da494e6\"\u003e\u003ccode\u003e64d3f7c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/158\"\u003e#158\u003c/a\u003e from gristlabs/dependabot/pip/docs/jinja2-3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/9b5fb1abfb171cfb1f01c2d996cbd31e9d1f0660\"\u003e\u003ccode\u003e9b5fb1a\u003c/code\u003e\u003c/a\u003e Bump jinja2 from 3.1.4 to 3.1.6 in /docs\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gristlabs/asttokens/compare/v3.0.0...v3.0.1\"\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 `backrefs` from 5.8 to 6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facelessuser/backrefs/releases\"\u003ebackrefs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Include Unicode 17 zip for early Python 3.15 usage, though Python 3.15 functionality is not guaranteed.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Fix issues with regex imports in later versions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e6.0.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Fix a regression that created an ASCII binary property that would override the ASCII block property.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e6.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: POSIX character classes will now always use POSIX compatibility rules instead of Unicode standard rules,\nif any are specified in the Unicode specification. The affected character classes are: \u003ccode\u003e[[:alnum:]]\u003c/code\u003e, \u003ccode\u003e[[:digit:]]\u003c/code\u003e,\n\u003ccode\u003e[[:xdigit:]]\u003c/code\u003e, and  \u003ccode\u003e[[:punct:]]\u003c/code\u003e. To explicitly use standard Unicode rules for these compatibility properties, use\nthe Unicode property form instead: \u003ccode\u003e[\\p{Alnum}]\u003c/code\u003e, \u003ccode\u003e[\\p{Digit}]\u003c/code\u003e, \u003ccode\u003e[\\p{Punct}]\u003c/code\u003e, or \u003ccode\u003e[\\p{XDigit}]\u003c/code\u003e. This has changed\nto ensure no confusion for users expecting compatible POSIX style character class properties.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Scoped ASCII/Unicode flags (\u003ccode\u003e(?a:pattern)\u003c/code\u003e/\u003ccode\u003e(?u:pattern)\u003c/code\u003e) should be respected for Unicode properties in\n\u003ccode\u003ebre\u003c/code\u003e and will ensure ASCII or Unicode range if used.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Fix issues related to detecting disabled scoped flags.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e5.9\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Add support for Python 3.14.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eENHANCE\u003c/strong\u003e: Switch to deploying with PyPI's \u0026quot;Trusted Publisher\u0026quot;.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/da5453e08f49292b8cc2acab099816819de6c56e\"\u003e\u003ccode\u003eda5453e\u003c/code\u003e\u003c/a\u003e Remove build badge\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/30c281210b1dd417ccb7eb3f8e009acf49aad923\"\u003e\u003ccode\u003e30c2812\u003c/code\u003e\u003c/a\u003e Update docs to use zensical (\u003ca href=\"https://redirect.github.com/facelessuser/backrefs/issues/194\"\u003e#194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/e66f6c4ce60f847680e6c604ec17df6caad538cc\"\u003e\u003ccode\u003ee66f6c4\u003c/code\u003e\u003c/a\u003e Fix import of regex stuff\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/12062282532c41f94fabff589c82db00b86def86\"\u003e\u003ccode\u003e1206228\u003c/code\u003e\u003c/a\u003e Include Unicode 17 zip for Python 3.15 early access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/23738f0d07dcc57c4ca863e412aef63be0060fe5\"\u003e\u003ccode\u003e23738f0\u003c/code\u003e\u003c/a\u003e Fix codec warning is Unicode download script\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/63f8a4b14750828b7c1e385844fd36f6f89859e4\"\u003e\u003ccode\u003e63f8a4b\u003c/code\u003e\u003c/a\u003e Fix grammar\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/7f4bf611e6e7fcc2aa4e0eba2872b5f51b7fc908\"\u003e\u003ccode\u003e7f4bf61\u003c/code\u003e\u003c/a\u003e Rework POSIX alias\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/956df5f387f1958110e5a7cf2a98d42a8309d9b6\"\u003e\u003ccode\u003e956df5f\u003c/code\u003e\u003c/a\u003e Fix ASCII block regression\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/7a948f083c3c87114a8dd87c95dff1893f3af82a\"\u003e\u003ccode\u003e7a948f0\u003c/code\u003e\u003c/a\u003e Clean up code and add more comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/9b2e406be36c1e0fc72651adbc7d2d63c4151483\"\u003e\u003ccode\u003e9b2e406\u003c/code\u003e\u003c/a\u003e Add more flag tests\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facelessuser/backrefs/compare/5.8...6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bracex` from 2.5.post1 to 2.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facelessuser/bracex/releases\"\u003ebracex's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.6\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\u003c/ul\u003e\n\u003c/blockquote\u003e\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/bracex/commit/6d109c55372f0d5086adb7cf84a951cc06391a69\"\u003e\u003ccode\u003e6d109c5\u003c/code\u003e\u003c/a\u003e Add trusted publishing and support for Python 3.14 (\u003ca href=\"https://redirect.github.com/facelessuser/bracex/issues/44\"\u003e#44\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/bracex/commit/c14d46fb495a8fdcd0ec51d4dd42aa587807407d\"\u003e\u003ccode\u003ec14d46f\u003c/code\u003e\u003c/a\u003e Add security policy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/bracex/commit/14645af4bf4de0e1abe4fd6c29bf98871f549273\"\u003e\u003ccode\u003e14645af\u003c/code\u003e\u003c/a\u003e Typos: remove duplicate words\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/facelessuser/bracex/compare/2.5.post1...2.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cachetools` from 6.0.0 to 6.2.5\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.5 (2026-01-25)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove documentation regarding \u003ccode\u003e@cachedmethod\u003c/code\u003e with \u003ccode\u003elock\u003c/code\u003e\nparameter.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd test cases for cache stampede scenarios.\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.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\u003cp\u003ev6.2.0 (2025-08-25)\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/tkem/cachetools/commit/7158a30fa78b601f8d7958085bd2c0faaa045823\"\u003e\u003ccode\u003e7158a30\u003c/code\u003e\u003c/a\u003e Release v6.2.5.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/c9e3e267692980e99123506b63a156f999cd1278\"\u003e\u003ccode\u003ec9e3e26\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/379\"\u003e#379\u003c/a\u003e: Improve \u003ca href=\"https://github.com/cachedmethod\"\u003e\u003ccode\u003e@​cachedmethod\u003c/code\u003e\u003c/a\u003e example by using a lock.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/d99c023ad24c831638a321c0314f8ac24d23751f\"\u003e\u003ccode\u003ed99c023\u003c/code\u003e\u003c/a\u003e Bump copyright year.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/5a87ee037cfab209b0e9ad7c30bf6c9bdc2b3e97\"\u003e\u003ccode\u003e5a87ee0\u003c/code\u003e\u003c/a\u003e Add test cases for cache stampede scenarios.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/2e166d1348fe2e6e0e05aa68760687660034e6b6\"\u003e\u003ccode\u003e2e166d1\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.0 to 6.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/9c9f9e5843f24580f957d29ce09bef214037896c\"\u003e\u003ccode\u003e9c9f9e5\u003c/code\u003e\u003c/a\u003e Bump codecov/codecov-action from 5.5.1 to 5.5.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/b8bec4af4a94a78306a2076384ccfd48b8c2e056\"\u003e\u003ccode\u003eb8bec4a\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/345\"\u003e#345\u003c/a\u003e: Add GitHub pull request template.\u003c/li\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\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tkem/cachetools/compare/v6.0.0...v6.2.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2025.6.15 to 2026.1.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\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\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/27ca98ad845ee6d130a88301622c137893f71620\"\u003e\u003ccode\u003e27ca98a\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7.0.9 to 7.0.11 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/56c59a63909cfd3162b37e7bc16956e64df0f737\"\u003e\u003ccode\u003e56c59a6\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.0 to 6.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ae0021cd43a77bfba67d20a041469cdf6996570e\"\u003e\u003ccode\u003eae0021c\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.0.0 to 6.1.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/380\"\u003e#380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddf5d0b5d2a3d55fd92a79f141dbb5e074caf924\"\u003e\u003ccode\u003eddf5d0b\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5.0.1 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.06.15...2026.01.04\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cffi` from 1.17.1 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only) - huge thanks to the folks at Quansight Labs for all the work to get this one sorted!\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.0.0b1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only).\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/6366c01d84e9a78e7e85f12ebe9760ba5d19b6d3\"\u003e\u003ccode\u003e6366c01\u003c/code\u003e\u003c/a\u003e release 2.0.0 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/95c847663aec401e4003927a274e4de9b8595f4f\"\u003e\u003ccode\u003e95c8476\u003c/code\u003e\u003c/a\u003e 2.0.0 post beta backports (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/195cbda66b6be9297ef6d584644e50cfdcca4e8a\"\u003e\u003ccode\u003e195cbda\u003c/code\u003e\u003c/a\u003e Release 2.0.0b1 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b4bbe7940d3f76027534db1aecbae9b61c35221a\"\u003e\u003ccode\u003eb4bbe79\u003c/code\u003e\u003c/a\u003e fix version test to support beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/7ed073de66e713cf791b6fdfa23685c81fdfd6ad\"\u003e\u003ccode\u003e7ed073d\u003c/code\u003e\u003c/a\u003e Add support for the free-threaded build (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/178\"\u003e#178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/67a170dc7972dc9361743690b38da3d963b200ef\"\u003e\u003ccode\u003e67a170d\u003c/code\u003e\u003c/a\u003e Change the license from MIT to MIT-no-attribution, which is the same without ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/92645ec9329feb03e3fa86240b40fe0fc37469d1\"\u003e\u003ccode\u003e92645ec\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support/testing (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/177\"\u003e#177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/2b81170583a898478a6996c9705d8c38ab7f73a1\"\u003e\u003ccode\u003e2b81170\u003c/code\u003e\u003c/a\u003e doc: update test commands in Section Testing/development tips (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/25172b84cf51cf58241f074ccd1efd9c7648cb43\"\u003e\u003ccode\u003e25172b8\u003c/code\u003e\u003c/a\u003e doc: update year (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b57a92c03eb2078a99c900519a37d18b4d52324f\"\u003e\u003ccode\u003eb57a92c\u003c/code\u003e\u003c/a\u003e issue 147: force-compute nested structs before parent structs.  Occurs mainly...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.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 `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 `coverage` from 7.9.1 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.9.1...7.13.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cryptography` from 45.0.4 to 46.0.3\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\u003e46.0.3 - 2025-10-15\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Fixed compilation when using LibreSSL 4.2.0.\n\u003cp\u003e.. _v46-0-2:\u003c/p\u003e\n\u003cp\u003e46.0.2 - 2025-09-30\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.4.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v46-0-1:\u003c/p\u003e\n\u003cp\u003e46.0.1 - 2025-09-16\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Fixed an issue where users installing via ``pip`` on Python 3.14 development\n  versions would not properly install a dependency.\n* Fixed an issue building the free-threaded macOS 3.14 wheels.\n\u003cp\u003e.. _v46-0-0:\u003c/p\u003e\n\u003cp\u003e46.0.0 - 2025-09-16\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Support for Python 3.7 has been removed.\u003c/li\u003e\n\u003cli\u003eSupport for OpenSSL \u0026lt; 3.0 is deprecated and will be removed in the next\nrelease.\u003c/li\u003e\n\u003cli\u003eSupport for \u003ccode\u003ex86_64\u003c/code\u003e macOS (including publishing wheels) is deprecated\nand will be removed in two releases. We will switch to publishing an\n\u003ccode\u003earm64\u003c/code\u003e only wheel for macOS.\u003c/li\u003e\n\u003cli\u003eSupport for 32-bit Windows (including publishing wheels) is deprecated\nand will be removed in two releases. Users should move to a 64-bit\nPython installation.\u003c/li\u003e\n\u003cli\u003eUpdated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.3.\u003c/li\u003e\n\u003cli\u003eWe now build \u003ccode\u003eppc64le\u003c/code\u003e \u003ccode\u003emanylinux\u003c/code\u003e wheels and publish them to PyPI.\u003c/li\u003e\n\u003cli\u003eWe now build \u003ccode\u003ewin_arm64\u003c/code\u003e (Windows on Arm) wheels and publish them to PyPI.\u003c/li\u003e\n\u003cli\u003eAdded support for free-threaded Python 3.14.\u003c/li\u003e\n\u003cli\u003eRemoved the deprecated \u003ccode\u003eget_attribute_for_oid\u003c/code\u003e method on\n:class:\u003ccode\u003e~cryptography.x509.CertificateSigningRequest\u003c/code\u003e. Users should use\n:meth:\u003ccode\u003e~cryptography.x509.Attributes.get_attribute_for_oid\u003c/code\u003e instead.\u003c/li\u003e\n\u003cli\u003eRemoved the deprecated \u003ccode\u003eCAST5\u003c/code\u003e, \u003ccode\u003eSEED\u003c/code\u003e, \u003ccode\u003eIDEA\u003c/code\u003e, and \u003ccode\u003eBlowfish\u003c/code\u003e\nclasses from the cipher module. These are still available in\n:doc:\u003ccode\u003e/hazmat/decrepit/index\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eIn X.509, when performing a PSS signature with a SHA-3 hash, it is now\nencoded with the official NIST SHA3 OID.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v45-0-7:\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/pyca/cryptography/commit/c0af4dd7b75921bbe9f1d41a03dbd4b64a9e3403\"\u003e\u003ccode\u003ec0af4dd\u003c/code\u003e\u003c/a\u003e release 46.0.3 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13681\"\u003e#13681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/99efe5ad150a56efadafacaffd0e3ee319373904\"\u003e\u003ccode\u003e99efe5a\u003c/code\u003e\u003c/a\u003e bump version for 46.0.2 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13531\"\u003e#13531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e735cfc27502320101c130335c556394a125ba52\"\u003e\u003ccode\u003ee735cfc\u003c/code\u003e\u003c/a\u003e release 46.0.1 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13450\"\u003e#13450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/4e457ffba43a6d87efc63c33041e2081438dd8a4\"\u003e\u003ccode\u003e4e457ff\u003c/code\u003e\u003c/a\u003e Explicitly specify python in mac uv build invocation (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13447\"\u003e#13447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/2726efdb6d67f1c90cf9c6062d9fe051965586f8\"\u003e\u003ccode\u003e2726efd\u003c/code\u003e\u003c/a\u003e Depend on CFFI 2.0.0 or newer on Python \u0026gt; 3.8 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13448\"\u003e#13448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/62230623d183706632c0eb7822c96ac95e3710a8\"\u003e\u003ccode\u003e6223062\u003c/code\u003e\u003c/a\u003e release 46.0.0 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13446\"\u003e#13446\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/563c4915b0931455706f761a4579c26698824eae\"\u003e\u003ccode\u003e563c491\u003c/code\u003e\u003c/a\u003e Update comment for pyopenssl-release tag (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13445\"\u003e#13445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/d2f6f7faced35b73277bc624ff496f8af696b172\"\u003e\u003ccode\u003ed2f6f7f\u003c/code\u003e\u003c/a\u003e Bump downstream dependencies in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13439\"\u003e#13439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e7ab02bd679d0b4f55d93486fe27e62554ef15d4\"\u003e\u003ccode\u003ee7ab02b\u003c/code\u003e\u003c/a\u003e we'll ship this with 3.5.3 why not (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13442\"\u003e#13442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/0b68a4bffb61202e4d4f5074cd30c2b9d15f429e\"\u003e\u003ccode\u003e0b68a4b\u003c/code\u003e\u003c/a\u003e Another pair of bump dependencies fix (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13444\"\u003e#13444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/cryptography/compare/45.0.4...46.0.3\"\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.9 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\"...\n\n_Description has been truncated_","html_url":"https://github.com/pycontribs/subprocess-tee/pull/205","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/pycontribs%2Fsubprocess-tee/issues/205","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/205/packages"},{"uuid":"3852512447","node_id":"PR_kwDOHR9vV86_Miyr","number":503,"state":"open","title":"chore(deps): bump the dependencies group across 1 directory with 107 updates","user":"dependabot[bot]","labels":["skip-changelog","major","chore"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-25T03:57:14.000Z","updated_at":"2026-02-12T14:02:23.388Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"dependencies","update_count":107,"packages":[{"name":"aiofiles","old_version":"24.1.0","new_version":"25.1.0","repository_url":"https://github.com/Tinche/aiofiles"},{"name":"aiohappyeyeballs","old_version":"2.4.0","new_version":"2.6.1","repository_url":"https://github.com/aio-libs/aiohappyeyeballs"},{"name":"aioitertools","old_version":"0.12.0","new_version":"0.13.0","repository_url":"https://github.com/omnilib/aioitertools"},{"name":"aiokafka","old_version":"0.11.0","new_version":"0.12.0","repository_url":"https://github.com/aio-libs/aiokafka"},{"name":"aiosignal","old_version":"1.3.1","new_version":"1.4.0","repository_url":"https://github.com/aio-libs/aiosignal"},{"name":"ansible-builder","old_version":"3.1.0","new_version":"3.1.1","repository_url":"https://github.com/ansible/ansible-builder"},{"name":"ansible-compat","old_version":"24.8.0","new_version":"24.10.0","repository_url":"https://github.com/ansible/ansible-compat"},{"name":"ansible-pygments","old_version":"0.1.1","new_version":"0.1.2","repository_url":"https://github.com/ansible-community/ansible-pygments"},{"name":"ansible-runner","old_version":"2.4.0","new_version":"2.4.2","repository_url":"https://github.com/ansible/ansible-runner"},{"name":"antsibull-changelog","old_version":"0.29.0","new_version":"0.35.0","repository_url":"https://github.com/ansible-community/antsibull-changelog"},{"name":"antsibull-core","old_version":"3.0.2","new_version":"3.5.0","repository_url":"https://github.com/ansible-community/antsibull-core"},{"name":"antsibull-docs","old_version":"2.13.1","new_version":"2.24.0","repository_url":"https://github.com/ansible-community/antsibull-docs"},{"name":"antsibull-docs-parser","old_version":"1.1.0","new_version":"1.2.2","repository_url":"https://github.com/ansible-community/antsibull-docs-parser"},{"name":"async-timeout","old_version":"4.0.3","new_version":"5.0.1","repository_url":"https://github.com/aio-libs/async-timeout"},{"name":"azure-core","old_version":"1.30.2","new_version":"1.38.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"babel","old_version":"2.16.0","new_version":"2.17.0","repository_url":"https://github.com/python-babel/babel"},{"name":"bindep","old_version":"2.11.0","new_version":"2.13.0"},{"name":"black","old_version":"24.8.0","new_version":"25.11.0","repository_url":"https://github.com/psf/black"},{"name":"botocore","old_version":"1.35.7","new_version":"1.42.34","repository_url":"https://github.com/boto/botocore"},{"name":"bracex","old_version":"2.5","new_version":"2.6","repository_url":"https://github.com/facelessuser/bracex"},{"name":"build","old_version":"1.2.1","new_version":"1.4.0","repository_url":"https://github.com/pypa/build"},{"name":"cachetools","old_version":"5.5.0","new_version":"6.2.4","repository_url":"https://github.com/tkem/cachetools"},{"name":"certifi","old_version":"2024.8.30","new_version":"2026.1.4","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"1.17.0","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.3.2","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.7","new_version":"8.1.8","repository_url":"https://github.com/pallets/click"},{"name":"cryptography","old_version":"43.0.1","new_version":"46.0.3","repository_url":"https://github.com/pyca/cryptography"},{"name":"distlib","old_version":"0.3.8","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"docutils","old_version":"0.20.1","new_version":"0.22.4","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"drools-jpy","old_version":"0.3.9","new_version":"0.3.14","repository_url":"https://github.com/ansible/drools_jpy"},{"name":"exceptiongroup","old_version":"1.2.2","new_version":"1.3.1","repository_url":"https://github.com/agronholm/exceptiongroup"},{"name":"filelock","old_version":"3.15.4","new_version":"3.19.1","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"frozenlist","old_version":"1.4.1","new_version":"1.8.0","repository_url":"https://github.com/aio-libs/frozenlist"},{"name":"galaxy-importer","old_version":"0.4.24","new_version":"0.4.37","repository_url":"https://github.com/ansible/galaxy-importer"},{"name":"gitdb","old_version":"4.0.11","new_version":"4.0.12","repository_url":"https://github.com/gitpython-developers/gitdb"},{"name":"gitpython","old_version":"3.1.43","new_version":"3.1.46","repository_url":"https://github.com/gitpython-developers/GitPython"},{"name":"idna","old_version":"3.8","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"importlib-metadata","old_version":"6.2.1","new_version":"8.7.1","repository_url":"https://github.com/python/importlib_metadata"},{"name":"importlib-resources","old_version":"5.0.7","new_version":"6.5.2","repository_url":"https://github.com/python/importlib_resources"},{"name":"iniconfig","old_version":"2.0.0","new_version":"2.1.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"isodate","old_version":"0.6.1","new_version":"0.7.2","repository_url":"https://github.com/gweis/isodate"},{"name":"janus","old_version":"1.0.0","new_version":"2.0.0","repository_url":"https://github.com/aio-libs/janus"},{"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.0.2","new_version":"4.4.0","repository_url":"https://github.com/jaraco/jaraco.functools"},{"name":"jinja2","old_version":"3.1.4","new_version":"3.1.6","repository_url":"https://github.com/pallets/jinja"},{"name":"jmespath","old_version":"1.0.1","new_version":"1.1.0","repository_url":"https://github.com/jmespath/jmespath.py"},{"name":"jpy","old_version":"0.18.0","new_version":"1.3.0","repository_url":"https://github.com/jpy-consortium/jpy"},{"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":"2023.12.1","new_version":"2025.9.1","repository_url":"https://github.com/python-jsonschema/jsonschema-specifications"},{"name":"keyring","old_version":"25.3.0","new_version":"25.7.0","repository_url":"https://github.com/jaraco/keyring"},{"name":"markdown","old_version":"3.7","new_version":"3.9","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"markupsafe","old_version":"2.1.5","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"mdit-py-plugins","old_version":"0.4.1","new_version":"0.4.2","repository_url":"https://github.com/executablebooks/mdit-py-plugins"},{"name":"mock","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/testing-cabal/mock"},{"name":"more-itertools","old_version":"10.4.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"multidict","old_version":"6.0.5","new_version":"6.7.0","repository_url":"https://github.com/aio-libs/multidict"},{"name":"mypy-extensions","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/python/mypy_extensions"},{"name":"nh3","old_version":"0.2.18","new_version":"0.3.2","repository_url":"https://github.com/messense/nh3"},{"name":"packaging","old_version":"24.1","new_version":"26.0","repository_url":"https://github.com/pypa/packaging"},{"name":"pathspec","old_version":"0.12.1","new_version":"1.0.3","repository_url":"https://github.com/cpburnz/python-pathspec"},{"name":"pbr","old_version":"6.1.0","new_version":"7.0.3"},{"name":"perky","old_version":"0.9.2","new_version":"0.9.3","repository_url":"https://github.com/larryhastings/perky"},{"name":"pip","old_version":"24.2","new_version":"25.3","repository_url":"https://github.com/pypa/pip"},{"name":"pkginfo","old_version":"1.10.0","new_version":"1.12.1.2"},{"name":"platformdirs","old_version":"4.2.2","new_version":"4.4.0","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":"psycopg","old_version":"3.1.18","new_version":"3.2.13","repository_url":"https://github.com/psycopg/psycopg"},{"name":"psycopg-binary","old_version":"3.1.18","new_version":"3.2.13","repository_url":"https://github.com/psycopg/psycopg"},{"name":"psycopg-pool","old_version":"3.2.2","new_version":"3.2.8","repository_url":"https://github.com/psycopg/psycopg"},{"name":"pycodestyle","old_version":"2.11.1","new_version":"2.14.0","repository_url":"https://github.com/PyCQA/pycodestyle"},{"name":"pycparser","old_version":"2.22","new_version":"2.23","repository_url":"https://github.com/eliben/pycparser"},{"name":"pydantic","old_version":"2.8.2","new_version":"2.12.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-core","old_version":"2.20.1","new_version":"2.41.5","repository_url":"https://github.com/pydantic/pydantic-core"},{"name":"pyflakes","old_version":"3.1.0","new_version":"3.4.0","repository_url":"https://github.com/PyCQA/pyflakes"},{"name":"pygments","old_version":"2.18.0","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyparsing","old_version":"3.1.4","new_version":"3.3.2","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"pyproject-api","old_version":"1.7.1","new_version":"1.9.1","repository_url":"https://github.com/tox-dev/pyproject-api"},{"name":"pyproject-hooks","old_version":"1.1.0","new_version":"1.2.0","repository_url":"https://github.com/pypa/pyproject-hooks"},{"name":"python-daemon","old_version":"3.0.1","new_version":"3.1.2"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"readme-renderer","old_version":"43.0","new_version":"44.0","repository_url":"https://github.com/pypa/readme_renderer"},{"name":"referencing","old_version":"0.35.1","new_version":"0.36.2","repository_url":"https://github.com/python-jsonschema/referencing"},{"name":"resolvelib","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/sarugaku/resolvelib"},{"name":"rich","old_version":"13.8.0","new_version":"14.3.1","repository_url":"https://github.com/Textualize/rich"},{"name":"rpds-py","old_version":"0.20.0","new_version":"0.27.1","repository_url":"https://github.com/crate-py/rpds"},{"name":"rstcheck","old_version":"6.2.4","new_version":"6.2.5","repository_url":"https://github.com/rstcheck/rstcheck"},{"name":"rstcheck-core","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/rstcheck/rstcheck-core"},{"name":"ruamel-yaml","old_version":"0.18.6","new_version":"0.19.1"},{"name":"ruamel-yaml-clib","old_version":"0.2.8","new_version":"0.2.15"},{"name":"six","old_version":"1.16.0","new_version":"1.17.0","repository_url":"https://github.com/benjaminp/six"},{"name":"smmap","old_version":"5.0.1","new_version":"5.0.2","repository_url":"https://github.com/gitpython-developers/smmap"},{"name":"snowballstemmer","old_version":"2.2.0","new_version":"3.0.1","repository_url":"https://github.com/snowballstem/snowball"},{"name":"sphinx-ansible-theme","old_version":"0.10.3","new_version":"0.10.4","repository_url":"https://github.com/ansible-community/sphinx_ansible_theme"},{"name":"sphinx-rtd-theme","old_version":"2.0.0","new_version":"3.1.0","repository_url":"https://github.com/readthedocs/sphinx_rtd_theme"},{"name":"tomli","old_version":"2.0.1","new_version":"2.4.0","repository_url":"https://github.com/hukkin/tomli"},{"name":"twine","old_version":"5.1.1","new_version":"6.2.0","repository_url":"https://github.com/pypa/twine"},{"name":"typer","old_version":"0.12.5","new_version":"0.21.1","repository_url":"https://github.com/fastapi/typer"},{"name":"typer-config","old_version":"1.4.0","new_version":"1.4.2","repository_url":"https://github.com/maxb2/typer-config"},{"name":"typing-extensions","old_version":"4.12.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"1.26.20","new_version":"2.6.3","repository_url":"https://github.com/urllib3/urllib3"},{"name":"virtualenv","old_version":"20.26.3","new_version":"20.36.1","repository_url":"https://github.com/pypa/virtualenv"},{"name":"wcmatch","old_version":"9.0","new_version":"10.1","repository_url":"https://github.com/facelessuser/wcmatch"},{"name":"websockets","old_version":"13.0.1","new_version":"15.0.1","repository_url":"https://github.com/python-websockets/websockets"},{"name":"wrapt","old_version":"1.16.0","new_version":"2.0.1","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"yamllint","old_version":"1.35.1","new_version":"1.37.1","repository_url":"https://github.com/adrienverge/yamllint"},{"name":"yarl","old_version":"1.9.8","new_version":"1.22.0","repository_url":"https://github.com/aio-libs/yarl"},{"name":"zipp","old_version":"3.20.1","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dependencies group with 107 updates in the /.config directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [aiofiles](https://github.com/Tinche/aiofiles) | `24.1.0` | `25.1.0` |\n| [aiohappyeyeballs](https://github.com/aio-libs/aiohappyeyeballs) | `2.4.0` | `2.6.1` |\n| [aioitertools](https://github.com/omnilib/aioitertools) | `0.12.0` | `0.13.0` |\n| [aiokafka](https://github.com/aio-libs/aiokafka) | `0.11.0` | `0.12.0` |\n| [aiosignal](https://github.com/aio-libs/aiosignal) | `1.3.1` | `1.4.0` |\n| [ansible-builder](https://github.com/ansible/ansible-builder) | `3.1.0` | `3.1.1` |\n| [ansible-compat](https://github.com/ansible/ansible-compat) | `24.8.0` | `24.10.0` |\n| [ansible-pygments](https://github.com/ansible-community/ansible-pygments) | `0.1.1` | `0.1.2` |\n| [ansible-runner](https://github.com/ansible/ansible-runner) | `2.4.0` | `2.4.2` |\n| [antsibull-changelog](https://github.com/ansible-community/antsibull-changelog) | `0.29.0` | `0.35.0` |\n| [antsibull-core](https://github.com/ansible-community/antsibull-core) | `3.0.2` | `3.5.0` |\n| [antsibull-docs](https://github.com/ansible-community/antsibull-docs) | `2.13.1` | `2.24.0` |\n| [antsibull-docs-parser](https://github.com/ansible-community/antsibull-docs-parser) | `1.1.0` | `1.2.2` |\n| [async-timeout](https://github.com/aio-libs/async-timeout) | `4.0.3` | `5.0.1` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.30.2` | `1.38.0` |\n| [babel](https://github.com/python-babel/babel) | `2.16.0` | `2.17.0` |\n| bindep | `2.11.0` | `2.13.0` |\n| [black](https://github.com/psf/black) | `24.8.0` | `25.11.0` |\n| [botocore](https://github.com/boto/botocore) | `1.35.7` | `1.42.34` |\n| [bracex](https://github.com/facelessuser/bracex) | `2.5` | `2.6` |\n| [build](https://github.com/pypa/build) | `1.2.1` | `1.4.0` |\n| [cachetools](https://github.com/tkem/cachetools) | `5.5.0` | `6.2.4` |\n| [certifi](https://github.com/certifi/python-certifi) | `2024.8.30` | `2026.1.4` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.0` | `2.0.0` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.3.2` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.7` | `8.1.8` |\n| [cryptography](https://github.com/pyca/cryptography) | `43.0.1` | `46.0.3` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.8` | `0.4.0` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.20.1` | `0.22.4` |\n| [drools-jpy](https://github.com/ansible/drools_jpy) | `0.3.9` | `0.3.14` |\n| [exceptiongroup](https://github.com/agronholm/exceptiongroup) | `1.2.2` | `1.3.1` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.15.4` | `3.19.1` |\n| [frozenlist](https://github.com/aio-libs/frozenlist) | `1.4.1` | `1.8.0` |\n| [galaxy-importer](https://github.com/ansible/galaxy-importer) | `0.4.24` | `0.4.37` |\n| [gitdb](https://github.com/gitpython-developers/gitdb) | `4.0.11` | `4.0.12` |\n| [gitpython](https://github.com/gitpython-developers/GitPython) | `3.1.43` | `3.1.46` |\n| [idna](https://github.com/kjd/idna) | `3.8` | `3.11` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `6.2.1` | `8.7.1` |\n| [importlib-resources](https://github.com/python/importlib_resources) | `5.0.7` | `6.5.2` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.0.0` | `2.1.0` |\n| [isodate](https://github.com/gweis/isodate) | `0.6.1` | `0.7.2` |\n| [janus](https://github.com/aio-libs/janus) | `1.0.0` | `2.0.0` |\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.0.2` | `4.4.0` |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.4` | `3.1.6` |\n| [jmespath](https://github.com/jmespath/jmespath.py) | `1.0.1` | `1.1.0` |\n| [jpy](https://github.com/jpy-consortium/jpy) | `0.18.0` | `1.3.0` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.23.0` | `4.25.1` |\n| [jsonschema-specifications](https://github.com/python-jsonschema/jsonschema-specifications) | `2023.12.1` | `2025.9.1` |\n| [keyring](https://github.com/jaraco/keyring) | `25.3.0` | `25.7.0` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.7` | `3.9` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `2.1.5` | `3.0.3` |\n| [mdit-py-plugins](https://github.com/executablebooks/mdit-py-plugins) | `0.4.1` | `0.4.2` |\n| [mock](https://github.com/testing-cabal/mock) | `5.1.0` | `5.2.0` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.4.0` | `10.8.0` |\n| [multidict](https://github.com/aio-libs/multidict) | `6.0.5` | `6.7.0` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [nh3](https://github.com/messense/nh3) | `0.2.18` | `0.3.2` |\n| [packaging](https://github.com/pypa/packaging) | `24.1` | `26.0` |\n| [pathspec](https://github.com/cpburnz/python-pathspec) | `0.12.1` | `1.0.3` |\n| [pbr](https://docs.openstack.org/pbr/latest/) | `6.1.0` | `7.0.3` |\n| [perky](https://github.com/larryhastings/perky) | `0.9.2` | `0.9.3` |\n| [pip](https://github.com/pypa/pip) | `24.2` | `25.3` |\n| [pkginfo](https://code.launchpad.net/~tseaver/pkginfo/trunk) | `1.10.0` | `1.12.1.2` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.2.2` | `4.4.0` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [psycopg](https://github.com/psycopg/psycopg) | `3.1.18` | `3.2.13` |\n| [psycopg-binary](https://github.com/psycopg/psycopg) | `3.1.18` | `3.2.13` |\n| [psycopg-pool](https://github.com/psycopg/psycopg) | `3.2.2` | `3.2.8` |\n| [pycodestyle](https://github.com/PyCQA/pycodestyle) | `2.11.1` | `2.14.0` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `2.23` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.8.2` | `2.12.5` |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.20.1` | `2.41.5` |\n| [pyflakes](https://github.com/PyCQA/pyflakes) | `3.1.0` | `3.4.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.18.0` | `2.19.2` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.1.4` | `3.3.2` |\n| [pyproject-api](https://github.com/tox-dev/pyproject-api) | `1.7.1` | `1.9.1` |\n| [pyproject-hooks](https://github.com/pypa/pyproject-hooks) | `1.1.0` | `1.2.0` |\n| python-daemon | `3.0.1` | `3.1.2` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [readme-renderer](https://github.com/pypa/readme_renderer) | `43.0` | `44.0` |\n| [referencing](https://github.com/python-jsonschema/referencing) | `0.35.1` | `0.36.2` |\n| [resolvelib](https://github.com/sarugaku/resolvelib) | `1.0.1` | `1.2.1` |\n| [rich](https://github.com/Textualize/rich) | `13.8.0` | `14.3.1` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.20.0` | `0.27.1` |\n| [rstcheck](https://github.com/rstcheck/rstcheck) | `6.2.4` | `6.2.5` |\n| [rstcheck-core](https://github.com/rstcheck/rstcheck-core) | `1.2.1` | `1.2.2` |\n| ruamel-yaml | `0.18.6` | `0.19.1` |\n| ruamel-yaml-clib | `0.2.8` | `0.2.15` |\n| [six](https://github.com/benjaminp/six) | `1.16.0` | `1.17.0` |\n| [smmap](https://github.com/gitpython-developers/smmap) | `5.0.1` | `5.0.2` |\n| [snowballstemmer](https://github.com/snowballstem/snowball) | `2.2.0` | `3.0.1` |\n| [sphinx-ansible-theme](https://github.com/ansible-community/sphinx_ansible_theme) | `0.10.3` | `0.10.4` |\n| [sphinx-rtd-theme](https://github.com/readthedocs/sphinx_rtd_theme) | `2.0.0` | `3.1.0` |\n| [tomli](https://github.com/hukkin/tomli) | `2.0.1` | `2.4.0` |\n| [twine](https://github.com/pypa/twine) | `5.1.1` | `6.2.0` |\n| [typer](https://github.com/fastapi/typer) | `0.12.5` | `0.21.1` |\n| [typer-config](https://github.com/maxb2/typer-config) | `1.4.0` | `1.4.2` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `1.26.20` | `2.6.3` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.26.3` | `20.36.1` |\n| [wcmatch](https://github.com/facelessuser/wcmatch) | `9.0` | `10.1` |\n| [websockets](https://github.com/python-websockets/websockets) | `13.0.1` | `15.0.1` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.16.0` | `2.0.1` |\n| [yamllint](https://github.com/adrienverge/yamllint) | `1.35.1` | `1.37.1` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.9.8` | `1.22.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.20.1` | `3.23.0` |\n\n\nUpdates `aiofiles` from 24.1.0 to 25.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Tinche/aiofiles/releases\"\u003eaiofiles's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev25.1.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSwitch to \u003ca href=\"https://docs.astral.sh/uv/\"\u003euv\u003c/a\u003e + add Python v3.14 support.  (\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eruff\u003c/code\u003e formatter and linter. \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/216\"\u003e#216\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8 support. If you require it, use version 24.1.0. \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/204\"\u003e#204\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/danielsmyers\"\u003e\u003ccode\u003e@​danielsmyers\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/185\"\u003eTinche/aiofiles#185\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stankudrow\"\u003e\u003ccode\u003e@​stankudrow\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/192\"\u003eTinche/aiofiles#192\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/waketzheng\"\u003e\u003ccode\u003e@​waketzheng\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/221\"\u003eTinche/aiofiles#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/Tinche/aiofiles/compare/v24.1.0...v25.1.0\"\u003ehttps://github.com/Tinche/aiofiles/compare/v24.1.0...v25.1.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Tinche/aiofiles/blob/main/CHANGELOG.md\"\u003eaiofiles's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e25.1.0 (2025-10-09)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSwitch to \u003ca href=\"https://docs.astral.sh/uv/\"\u003euv\u003c/a\u003e + add Python v3.14 support.\n(\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eruff\u003c/code\u003e formatter and linter.\n\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/216\"\u003e#216\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8 support. If you require it, use version 24.1.0.\n\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/204\"\u003e#204\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/Tinche/aiofiles/commit/348f5ef6561c2b2c8a7497bd10487eab4102332f\"\u003e\u003ccode\u003e348f5ef\u003c/code\u003e\u003c/a\u003e v25.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/5e1bb8f12b09bce440cc9d1e28387d239cbc2577\"\u003e\u003ccode\u003e5e1bb8f\u003c/code\u003e\u003c/a\u003e docs: update readme to use ruff badge (\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/issues/221\"\u003e#221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/6fdc25c7812d6738ccf51c5e7d4cd68500053a52\"\u003e\u003ccode\u003e6fdc25c\u003c/code\u003e\u003c/a\u003e Move to uv. (\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/issues/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/1989132423dc300c61e22434abd02725e922ddeb\"\u003e\u003ccode\u003e1989132\u003c/code\u003e\u003c/a\u003e set 'function' as a default fixture loop scope value\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/8986452a1b28b109903078f8e9a805ec01e248a6\"\u003e\u003ccode\u003e8986452\u003c/code\u003e\u003c/a\u003e add the 'asyncio_default_fixture_loop_scope=session' option\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/ccab1ff77640c59b353046cb528c25ffa11caa73\"\u003e\u003ccode\u003eccab1ff\u003c/code\u003e\u003c/a\u003e update pytest-asyncio==1.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/8727c96f5be46235af412a9fe504ba7c149df7f3\"\u003e\u003ccode\u003e8727c96\u003c/code\u003e\u003c/a\u003e add PR \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/issues/216\"\u003e#216\u003c/a\u003e into the CHANGELOG\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/a9388e5f8de9142c3e920917775e741bbf9f73b2\"\u003e\u003ccode\u003ea9388e5\u003c/code\u003e\u003c/a\u003e add TID and ignore TID252\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/760366489aed1fb041ef35652e2babb1870973d0\"\u003e\u003ccode\u003e7603664\u003c/code\u003e\u003c/a\u003e remove [ruff].exclude keyval\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/7c49a5c5f2520233198487145423a7842805d740\"\u003e\u003ccode\u003e7c49a5c\u003c/code\u003e\u003c/a\u003e add final newlines\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Tinche/aiofiles/compare/v24.1.0...v25.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `aiohappyeyeballs` from 2.4.0 to 2.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/releases\"\u003eaiohappyeyeballs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.6.1 (2025-03-12)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eResolve TypeError on import for Python \u0026lt; 3.9.2 (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/151\"\u003e#151\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/2042c82f9978f41c31b58aa4e3d8fc3b9c3ec2ec\"\u003e\u003ccode\u003e2042c82\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eDetailed Changes\u003c/strong\u003e: \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.6.0...v2.6.1\"\u003ev2.6.0...v2.6.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.6.0 (2025-03-11)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edocs\u003c/strong\u003e: Publish documentation (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/149\"\u003e#149\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/42352736d12c60d500c63b9598ffab05ef5e8829\"\u003e\u003ccode\u003e4235273\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eCreates an api_reference.rst file to expose the existing documentation for the few functions that have docstrings, as well as add documentation for AddrInfoType and SocketFactoryType. Now, these can be properly pointed to by other projects' documentation.\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eDetailed Changes\u003c/strong\u003e: \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.5.0...v2.6.0\"\u003ev2.5.0...v2.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.5.0 (2025-03-06)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd callback for users to customize socket creation (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/147\"\u003e#147\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/8e1bc6a4bc6282ccf29db441c33dd8d806003ffd\"\u003e\u003ccode\u003e8e1bc6a\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eCo-authored-by: Kieren \u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eDetailed Changes\u003c/strong\u003e: \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.4.8...v2.5.0\"\u003ev2.4.8...v2.5.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.4.8 (2025-03-04)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClose runner up sockets in the event there are multiple winners (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/143\"\u003e#143\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/476a05b956627700baa84eb6aac28c395da92a9f\"\u003e\u003ccode\u003e476a05b\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe first attempt to fix this was to use the cpython staggered race updates in \u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/142\"\u003e#142\u003c/a\u003e but there is still a race there where there can be multiple winners. Instead we now accept that we will not be able to cancel all coros in time and there will always be a risk of multiple winners. We store all sockets in a set that were not already cleaned up and we close all but the first winner after the staggered race finishes.\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eDetailed Changes\u003c/strong\u003e: \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.4.7...v2.4.8\"\u003ev2.4.7...v2.4.8\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.4.7 (2025-03-04)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/blob/main/CHANGELOG.md\"\u003eaiohappyeyeballs's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.6.1 (2025-03-12)\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eResolve typeerror on import for python \u0026lt; 3.9.2 (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/151\"\u003e#151\u003c/a\u003e) (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/2042c82f9978f41c31b58aa4e3d8fc3b9c3ec2ec\"\u003e\u003ccode\u003e2042c82\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.6.0 (2025-03-11)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePublish documentation (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/149\"\u003e#149\u003c/a\u003e) (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/42352736d12c60d500c63b9598ffab05ef5e8829\"\u003e\u003ccode\u003e4235273\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.0 (2025-03-06)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd callback for users to customize socket creation (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/147\"\u003e#147\u003c/a\u003e) (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/8e1bc6a4bc6282ccf29db441c33dd8d806003ffd\"\u003e\u003ccode\u003e8e1bc6a\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.8 (2025-03-04)\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClose runner up sockets in the event there are multiple winners (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/143\"\u003e#143\u003c/a\u003e) (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/476a05b956627700baa84eb6aac28c395da92a9f\"\u003e\u003ccode\u003e476a05b\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.7 (2025-03-04)\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eResolve warnings when running tests (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/144\"\u003e#144\u003c/a\u003e) (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/e96264aec89b9bd34d37413f610d039c56393a48\"\u003e\u003ccode\u003ee96264a\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.6 (2025-02-07)\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure all timers are cancelled when after staggered race finishes (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/136\"\u003e#136\u003c/a\u003e) (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/f75891d8974693b24af9789a8981ed7f6bc55c5c\"\u003e\u003ccode\u003ef75891d\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.5 (2025-02-07)\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKeep classifiers in project to avoid automatic enrichment (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/134\"\u003e#134\u003c/a\u003e) (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/99edb20e9d3e53ead65b55cb3e93c22c03d06599\"\u003e\u003ccode\u003e99edb20\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMove classifiers to prevent recalculation by poetry (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/131\"\u003e#131\u003c/a\u003e) (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/66e1c90ae81f71c7039cd62c60417a96202d906c\"\u003e\u003ccode\u003e66e1c90\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.4 (2024-11-30)\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle oserror on failure to close socket instead of raising indexerror (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/114\"\u003e#114\u003c/a\u003e) (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/c542f684d329fed04093caa2b31d8f7f6e0e0949\"\u003e\u003ccode\u003ec542f68\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.3 (2024-09-30)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/e3bd5bdf44f5d187802de6dcb08d27e1ca6da048\"\u003e\u003ccode\u003ee3bd5bd\u003c/code\u003e\u003c/a\u003e 2.6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/2042c82f9978f41c31b58aa4e3d8fc3b9c3ec2ec\"\u003e\u003ccode\u003e2042c82\u003c/code\u003e\u003c/a\u003e fix: resolve TypeError on import for Python \u0026lt; 3.9.2 (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/151\"\u003e#151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/b23d9194d6db1c4d237da0da623a081573385915\"\u003e\u003ccode\u003eb23d919\u003c/code\u003e\u003c/a\u003e chore: remove unused CI exclude for Python 3.8.0 (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/36149e7194d9a24fc8109265dee80fecd362f449\"\u003e\u003ccode\u003e36149e7\u003c/code\u003e\u003c/a\u003e 2.6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/42352736d12c60d500c63b9598ffab05ef5e8829\"\u003e\u003ccode\u003e4235273\u003c/code\u003e\u003c/a\u003e feat(docs): publish documentation (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/149\"\u003e#149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/17d5e48488f7b533efea33ebb89c25e7b4eda7ad\"\u003e\u003ccode\u003e17d5e48\u003c/code\u003e\u003c/a\u003e chore(pre-commit.ci): pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/148\"\u003e#148\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/3fed4432036740392483608a9da86637cf1bd64b\"\u003e\u003ccode\u003e3fed443\u003c/code\u003e\u003c/a\u003e 2.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/8e1bc6a4bc6282ccf29db441c33dd8d806003ffd\"\u003e\u003ccode\u003e8e1bc6a\u003c/code\u003e\u003c/a\u003e feat: add callback for users to customize socket creation (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/147\"\u003e#147\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/c4ab1e5409fe086c12932e47dc4a305eb15b4091\"\u003e\u003ccode\u003ec4ab1e5\u003c/code\u003e\u003c/a\u003e 2.4.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/476a05b956627700baa84eb6aac28c395da92a9f\"\u003e\u003ccode\u003e476a05b\u003c/code\u003e\u003c/a\u003e fix: close runner up sockets in the event there are multiple winners (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/143\"\u003e#143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.4.0...v2.6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `aioitertools` from 0.12.0 to 0.13.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/omnilib/aioitertools/blob/main/CHANGELOG.md\"\u003eaioitertools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.13.0\u003c/h2\u003e\n\u003cp\u003eMaintenance release\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eModernized project metadata (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/208\"\u003e#208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed references to old branch (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/209\"\u003e#209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTested up to Python 3.14 (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/208\"\u003e#208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.8 (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/208\"\u003e#208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse modern type annotations, clean up lint (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/219\"\u003e#219\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/220\"\u003e#220\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/221\"\u003e#221\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre lang=\"text\"\u003e\u003ccode\u003e$ git shortlog -s v0.12.0...v0.13.0\n     1\tAlireza Ghasemi\n     6\tAmethyst Reese\n    10\tdependabot[bot]\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aioitertools/commit/47a2068abc2c7e34bff1a188cb5ce66fa24d9404\"\u003e\u003ccode\u003e47a2068\u003c/code\u003e\u003c/a\u003e Version bump v0.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aioitertools/commit/e1a9219e58fb948223c292715e83ec1281c3a5e2\"\u003e\u003ccode\u003ee1a9219\u003c/code\u003e\u003c/a\u003e Enable RUF rules (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/221\"\u003e#221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aioitertools/commit/a744b4a9951aaa92fabb85fc401a7c287755eeee\"\u003e\u003ccode\u003ea744b4a\u003c/code\u003e\u003c/a\u003e Ruff upgrade lint fixes (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/220\"\u003e#220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aioitertools/commit/3bcf4e9bef9154589ee90b0bf9185f0fe04e1c39\"\u003e\u003ccode\u003e3bcf4e9\u003c/code\u003e\u003c/a\u003e Switch from flake8 to ruff (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aioitertools/commit/1e3e55cd0fe6ee61064d2c325fb0617f08e83f4a\"\u003e\u003ccode\u003e1e3e55c\u003c/code\u003e\u003c/a\u003e Bump ufmt from 2.7.1 to 2.8.0 (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/198\"\u003e#198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aioitertools/commit/4c8b4f8a873cf66a4c729002ddc74b4bf32f03ab\"\u003e\u003ccode\u003e4c8b4f8\u003c/code\u003e\u003c/a\u003e Bump flake8 from 7.1.1 to 7.3.0 (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/217\"\u003e#217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aioitertools/commit/8524be5b77433e81eb6ecf8739ffe38844e6ca8f\"\u003e\u003ccode\u003e8524be5\u003c/code\u003e\u003c/a\u003e Bump black from 24.8.0 to 25.9.0 (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/218\"\u003e#218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aioitertools/commit/78e7205fb4d85686b5e459152ddc06fc1feee538\"\u003e\u003ccode\u003e78e7205\u003c/code\u003e\u003c/a\u003e Bump mypy from 1.11.2 to 1.18.2 (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/215\"\u003e#215\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aioitertools/commit/eafa768f4274f922cfe74afaa1bfb5549f887fb6\"\u003e\u003ccode\u003eeafa768\u003c/code\u003e\u003c/a\u003e Bump coverage from 7.6.1 to 7.10.7 (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/216\"\u003e#216\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aioitertools/commit/15c764cfe45e9972e27bef5cb66a12fdf8a3f577\"\u003e\u003ccode\u003e15c764c\u003c/code\u003e\u003c/a\u003e Bump flit from 3.9.0 to 3.12.0 (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/214\"\u003e#214\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/omnilib/aioitertools/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 `aiokafka` from 0.11.0 to 0.12.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiokafka/releases\"\u003eaiokafka's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.12.0\u003c/h2\u003e\n\u003cp\u003eNew features:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBuild mac x86_64 wheels (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1029\"\u003e#1029\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13, drop support for Python 3.8 due to end of life (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1061\"\u003e#1061\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove duplicate error logging during rebalance (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1025\"\u003e#1025\u003c/a\u003e by \u003ca href=\"https://github.com/y4n9squared\"\u003e\u003ccode\u003e@​y4n9squared\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBugfixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eQuote username in SCRAM auth (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1043\"\u003e#1043\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImproved Documentation:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix building of readthedocs documentation (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix typo in producer documentation (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1036\"\u003e#1036\u003c/a\u003e by \u003ca href=\"https://github.com/lgo\"\u003e\u003ccode\u003e@​lgo\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiokafka/blob/master/CHANGES.rst\"\u003eaiokafka's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e0.12.0 (2024-10-26)\u003c/h1\u003e\n\u003cp\u003eNew features:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBuild mac x86_64 wheels (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1029\"\u003e#1029\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13, drop support for Python 3.8 due to end of life (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1061\"\u003e#1061\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove duplicate error logging during rebalance (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1025\"\u003e#1025\u003c/a\u003e by \u003ca href=\"https://github.com/y4n9squared\"\u003e\u003ccode\u003e@​y4n9squared\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBugfixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eQuote username in SCRAM auth (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1043\"\u003e#1043\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImproved Documentation:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix building of readthedocs documentation (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix typo in producer documentation (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1036\"\u003e#1036\u003c/a\u003e by \u003ca href=\"https://github.com/lgo\"\u003e\u003ccode\u003e@​lgo\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/f6c79a086f1d5cf2b6e94e65db05970c4729c7a0\"\u003e\u003ccode\u003ef6c79a0\u003c/code\u003e\u003c/a\u003e Update actions, fix publishing (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1063\"\u003e#1063\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/71335629d503cb3ad260de662e23c32402c8368b\"\u003e\u003ccode\u003e7133562\u003c/code\u003e\u003c/a\u003e Prepare 0.12.0 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/f7861f682c9b5cd78411e7fd6ea0fc4bf92ded33\"\u003e\u003ccode\u003ef7861f6\u003c/code\u003e\u003c/a\u003e Remove duplicate error log during rebalance (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1025\"\u003e#1025\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/e7c9033b7d44c691073e9e25438f2c8ec523a14f\"\u003e\u003ccode\u003ee7c9033\u003c/code\u003e\u003c/a\u003e Add Python 3.13, remove 3.8 (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1061\"\u003e#1061\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/608ab2443510c92226de0eb3fc2065f5d1307e12\"\u003e\u003ccode\u003e608ab24\u003c/code\u003e\u003c/a\u003e Fix ClusterMetadata request_update() (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/4cff9d77014e922c6e458224ed6abbae4fa07c4d\"\u003e\u003ccode\u003e4cff9d7\u003c/code\u003e\u003c/a\u003e Made classes enum.IntEnums where appropriate. (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1053\"\u003e#1053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/01c60cd9c45e975aee8d4932247108a9e639d026\"\u003e\u003ccode\u003e01c60cd\u003c/code\u003e\u003c/a\u003e Quote username in SCRAM auth (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1043\"\u003e#1043\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/e2afc034b59626242b51b06b30a62c565ef491d9\"\u003e\u003ccode\u003ee2afc03\u003c/code\u003e\u003c/a\u003e fix type on producer docs (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/f9dbed1a00337971e6569c6611a98c1ab294fe98\"\u003e\u003ccode\u003ef9dbed1\u003c/code\u003e\u003c/a\u003e Add readthedocs config (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/2f976d0301682f0fe631c04c08d653be0d20ccb1\"\u003e\u003ccode\u003e2f976d0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1030\"\u003e#1030\u003c/a\u003e from webknjaz/maintenance/gha-pypi-tokenless-publishing\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aio-libs/aiokafka/compare/v0.11.0...v0.12.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `aiosignal` from 1.3.1 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/aio-libs/aiosignal/releases\"\u003eaiosignal's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0\u003c/h2\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded decorator functionality to \u003ccode\u003eSignal\u003c/code\u003e as a convenient way to add a callback -- by \u003ccode\u003e@Vizonex\u003c/code\u003e.\n\u003ccode\u003e[#699](https://github.com/aio-libs/aiosignal/issues/699) \u0026lt;https://github.com/aio-libs/aiosignal/pulls/699\u0026gt;\u003c/code\u003e_\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImproved type safety by allowing callback parameters to be type checked (typing-extensions is now required for Python \u0026lt;3.13).\nParameters for a \u003ccode\u003eSignal\u003c/code\u003e callback should now be defined like \u003ccode\u003eSignal[int, str]\u003c/code\u003e -- by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Dreamsorcerer\"\u003e\u003ccode\u003e@​Dreamsorcerer\u003c/code\u003e\u003c/a\u003e.\n\u003ccode\u003e[#699](https://github.com/aio-libs/aiosignal/issues/699) \u0026lt;https://github.com/aio-libs/aiosignal/pulls/699\u0026gt;\u003c/code\u003e\u003cem\u003e, \u003ccode\u003e[#710](https://github.com/aio-libs/aiosignal/issues/710) \u0026lt;https://github.com/aio-libs/aiosignal/pulls/710\u0026gt;\u003c/code\u003e\u003c/em\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMisc\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved the sphinxcontrib-asyncio documentation dependency.\n\u003ccode\u003e[#528](https://github.com/aio-libs/aiosignal/issues/528) \u0026lt;https://github.com/aio-libs/aiosignal/pull/528\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003ch2\u003e1.3.2\u003c/h2\u003e\n\u003ch2\u003eDeprecations and Removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eDropped Python 3.7 support. (\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/413\"\u003e#413\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDropped Python 3.8 support. (\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/645\"\u003e#645\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMisc\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiosignal/blob/master/CHANGES.rst\"\u003eaiosignal's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.4.0 (2025-07-03)\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded decorator functionality to \u003ccode\u003eSignal\u003c/code\u003e as a convenient way to add a callback -- by \u003ccode\u003e@Vizonex\u003c/code\u003e.\n\u003ccode\u003e[#699](https://github.com/aio-libs/aiosignal/issues/699) \u0026lt;https://github.com/aio-libs/aiosignal/pulls/699\u0026gt;\u003c/code\u003e_\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImproved type safety by allowing callback parameters to be type checked (typing-extensions is now required for Python \u0026lt;3.13).\nParameters for a \u003ccode\u003eSignal\u003c/code\u003e callback should now be defined like \u003ccode\u003eSignal[int, str]\u003c/code\u003e -- by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Dreamsorcerer\"\u003e\u003ccode\u003e@​Dreamsorcerer\u003c/code\u003e\u003c/a\u003e.\n\u003ccode\u003e[#699](https://github.com/aio-libs/aiosignal/issues/699) \u0026lt;https://github.com/aio-libs/aiosignal/pulls/699\u0026gt;\u003c/code\u003e\u003cem\u003e, \u003ccode\u003e[#710](https://github.com/aio-libs/aiosignal/issues/710) \u0026lt;https://github.com/aio-libs/aiosignal/pulls/710\u0026gt;\u003c/code\u003e\u003c/em\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMisc\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved the sphinxcontrib-asyncio documentation dependency.\n\u003ccode\u003e[#528](https://github.com/aio-libs/aiosignal/issues/528) \u0026lt;https://github.com/aio-libs/aiosignal/pull/528\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003ch1\u003e1.3.2 (2024-12-13)\u003c/h1\u003e\n\u003ch2\u003eDeprecations and Removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eDropped Python 3.7 support.\n\u003ccode\u003e[#413](https://github.com/aio-libs/aiosignal/issues/413) \u0026lt;https://github.com/aio-libs/aiosignal/issues/413\u0026gt;\u003c/code\u003e_\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDropped Python 3.8 support.\n\u003ccode\u003e[#645](https://github.com/aio-libs/aiosignal/issues/645) \u0026lt;https://github.com/aio-libs/aiosignal/issues/645\u0026gt;\u003c/code\u003e_\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMisc\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[#362](https://github.com/aio-libs/aiosignal/issues/362) \u0026lt;https://github.com/aio-libs/aiosignal/issues/362\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiosignal/commit/1cf80149c869d410c90a58e85e9c703be6ef8692\"\u003e\u003ccode\u003e1cf8014\u003c/code\u003e\u003c/a\u003e Fix deploy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiosignal/commit/892494c5c72553e281e57e924cf055e6125fb0fc\"\u003e\u003ccode\u003e892494c\u003c/code\u003e\u003c/a\u003e Release v1.4 (\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/718\"\u003e#718\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiosignal/commit/fa360821631383aed6a534da6f73ad149ec666f7\"\u003e\u003ccode\u003efa36082\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/719\"\u003e#719\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiosignal/commit/b7f68f12fed7c4b84a6866984e7adafcd18fe265\"\u003e\u003ccode\u003eb7f68f1\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/717\"\u003e#717\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiosignal/commit/2b1acac380eaaa91a643bfc9c24fa1f3942f0d45\"\u003e\u003ccode\u003e2b1acac\u003c/code\u003e\u003c/a\u003e Build(deps): Bump sigstore/gh-action-sigstore-python from 3.0.0 to 3.0.1 (\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/716\"\u003e#716\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiosignal/commit/17456ed5f968c0001a8823c2076f999fbf448157\"\u003e\u003ccode\u003e17456ed\u003c/code\u003e\u003c/a\u003e Build(deps): Bump tox from 4.26.0 to 4.27.0 (\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/715\"\u003e#715\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiosignal/commit/4c236903da2e71b85652c07bed69013189a39406\"\u003e\u003ccode\u003e4c23690\u003c/code\u003e\u003c/a\u003e Build(deps): Bump pytest from 8.4.0 to 8.4.1 (\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/714\"\u003e#714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiosignal/commit/7be2f6833be08bb14207bc627f9931665cd947ce\"\u003e\u003ccode\u003e7be2f68\u003c/code\u003e\u003c/a\u003e Build(deps): Bump mypy from 1.16.0 to 1.16.1 (\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/713\"\u003e#713\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiosignal/commit/5d62945d07c9413720e968cc3f25c66307d9a337\"\u003e\u003ccode\u003e5d62945\u003c/code\u003e\u003c/a\u003e Build(deps): Bump coverage from 7.9.0 to 7.9.1 (\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/712\"\u003e#712\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiosignal/commit/a6d85c1c3430621814d6163ea442828e7f31b34b\"\u003e\u003ccode\u003ea6d85c1\u003c/code\u003e\u003c/a\u003e Build(deps): Bump dependabot/fetch-metadata from 2.3.0 to 2.4.0 (\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/694\"\u003e#694\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aio-libs/aiosignal/compare/v1.3.1...v1.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ansible-builder` from 3.1.0 to 3.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ansible/ansible-builder/releases\"\u003eansible-builder's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.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: capitalize 'as' to follow from-as-casing rule (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/687\"\u003e#687\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSet file permissions on context files created from inline reqs (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/751\"\u003e#751\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew 3.1 porting guide (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/701\"\u003e#701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd simple EE file example by (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/739\"\u003e#739\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd scenario guide for validating Python deps (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/758\"\u003e#758\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/ansible/ansible-builder/compare/3.1.0...3.1.1\"\u003ehttps://github.com/ansible/ansible-builder/compare/3.1.0...3.1.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-builder/commit/ea0df628f9d36b34d64b0d93f3491ecd17ef4426\"\u003e\u003ccode\u003eea0df62\u003c/code\u003e\u003c/a\u003e Add scenario guide for validating Python deps (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/757\"\u003e#757\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/758\"\u003e#758\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-builder/commit/97f046fac1f7b7bdbaae17b2efda0837d86362db\"\u003e\u003ccode\u003e97f046f\u003c/code\u003e\u003c/a\u003e Increase integration test timeout to 9m (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/754\"\u003e#754\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/755\"\u003e#755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-builder/commit/ecc55c1205ba48f24ad08820f8ad9629d076a4fa\"\u003e\u003ccode\u003eecc55c1\u003c/code\u003e\u003c/a\u003e Set file permissions on context files created from inline reqs (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/748\"\u003e#748\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/751\"\u003e#751\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-builder/commit/ba2be48febb6a4440bbc0f67c63f5c71dfc32d15\"\u003e\u003ccode\u003eba2be48\u003c/code\u003e\u003c/a\u003e Add simple EE file example (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/737\"\u003e#737\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/739\"\u003e#739\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-builder/commit/4af7213490232d5b9fbf2576c6370fd40f75adc4\"\u003e\u003ccode\u003e4af7213\u003c/code\u003e\u003c/a\u003e 🧪🚑 Clone deep in integration tests (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/735\"\u003e#735\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/736\"\u003e#736\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-builder/commit/d12c45c01d08d337a72916cf4e1a48bac16a2bd5\"\u003e\u003ccode\u003ed12c45c\u003c/code\u003e\u003c/a\u003e [PR \u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/731\"\u003e#731\u003c/a\u003e/1b659226 backport][release_3.1] 🧪 Use \u003ccode\u003ereusable-tox.yml\u003c/code\u003e @ `tox-dev/...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-builder/commit/5defa3c9f05cfc8212abd3da57926cdc29f7e45e\"\u003e\u003ccode\u003e5defa3c\u003c/code\u003e\u003c/a\u003e docs: Fixing typo in example (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/705\"\u003e#705\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-builder/commit/6fb2fc098de0092e05c238bc41f596629e9d6598\"\u003e\u003ccode\u003e6fb2fc0\u003c/code\u003e\u003c/a\u003e Fix doc errors in 3.1 porting guide (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/704\"\u003e#704\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-builder/commit/5efc3cfdd63cf1f60efec6d9e99ced47c9c2ce48\"\u003e\u003ccode\u003e5efc3cf\u003c/code\u003e\u003c/a\u003e Add 3.1 porting guide (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/701\"\u003e#701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-builder/commit/49b8a5fc4c9c4839cb57c03473f50bdc8d9a6ee8\"\u003e\u003ccode\u003e49b8a5f\u003c/code\u003e\u003c/a\u003e Modify scripts/check_galaxy to return more descriptive error message(s) (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/695\"\u003e#695\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ansible/ansible-builder/compare/3.1.0...3.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ansible-compat` from 24.8.0 to 24.10.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ansible/ansible-compat/releases\"\u003eansible-compat's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev24.10.0\u003c/h2\u003e\n\u003ch2\u003eEnhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for py313 (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/416\"\u003e#416\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRe-init plugin loader after collections installation (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/411\"\u003e#411\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/412\"\u003e#412\u003c/a\u003e) \u003ca href=\"https://github.com/irozet12\"\u003e\u003ccode\u003e@​irozet12\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev24.9.1\u003c/h2\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid running prepare ansible paths twice (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/409\"\u003e#409\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid duplicate paths when path injection (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/407\"\u003e#407\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eProvide more detail on multiple collection installs (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/405\"\u003e#405\u003c/a\u003e) \u003ca href=\"https://github.com/mrgum\"\u003e\u003ccode\u003e@​mrgum\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev24.9.0\u003c/h2\u003e\n\u003ch2\u003eEnhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd communication details (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/400\"\u003e#400\u003c/a\u003e) \u003ca href=\"https://github.com/oraNod\"\u003e\u003ccode\u003e@​oraNod\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix upload-artifact action to work with v4.4 and newer (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/403\"\u003e#403\u003c/a\u003e) \u003ca href=\"https://github.com/alisonlhart\"\u003e\u003ccode\u003e@​alisonlhart\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/ansible/ansible-compat/commit/ba624e9511a76f29fd12cff3e01feef1458d3acf\"\u003e\u003ccode\u003eba624e9\u003c/code\u003e\u003c/a\u003e Bump the dependencies group in /.config with 5 updates (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/421\"\u003e#421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/6d9524e282a0f5078dfdaf9d01e620493076496d\"\u003e\u003ccode\u003e6d9524e\u003c/code\u003e\u003c/a\u003e Add support for py313 (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/416\"\u003e#416\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/264a2785eb278406a5b93b9c5a8a1979eee5cc11\"\u003e\u003ccode\u003e264a278\u003c/code\u003e\u003c/a\u003e chore: pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/415\"\u003e#415\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/1f01f448542e4c258dfa1ed5ea84eab655ddc43b\"\u003e\u003ccode\u003e1f01f44\u003c/code\u003e\u003c/a\u003e Replace pip-compile with uv pip compile (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/419\"\u003e#419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/43f75ebf417fa914da59f12781aecea6566822ed\"\u003e\u003ccode\u003e43f75eb\u003c/code\u003e\u003c/a\u003e Fix tests (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/420\"\u003e#420\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/29430b1fe77b02e4c7a5073cefb2a04a67fec338\"\u003e\u003ccode\u003e29430b1\u003c/code\u003e\u003c/a\u003e Tune dependabot config (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/417\"\u003e#417\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/e247f3fab0400f97df08498c9e2cdf34025f1ba8\"\u003e\u003ccode\u003ee247f3f\u003c/code\u003e\u003c/a\u003e Re-init plugin loader after collections installation (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/411\"\u003e#411\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/412\"\u003e#412\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/18c671e23c1d4fa91fd372fca24474b89e31832c\"\u003e\u003ccode\u003e18c671e\u003c/code\u003e\u003c/a\u003e Bump coactions/dynamic-matrix from 3 to 4 (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/414\"\u003e#414\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/ebe0b2c89717cf7567071b540461f878cefa8185\"\u003e\u003ccode\u003eebe0b2c\u003c/code\u003e\u003c/a\u003e chore: pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/413\"\u003e#413\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/16538ab64884462d8afdf35b97cb1f02299cef69\"\u003e\u003ccode\u003e16538ab\u003c/code\u003e\u003c/a\u003e Add template for bug reports (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/410\"\u003e#410\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ansible/ansible-compat/compare/v24.8.0...v24.10.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ansible-pygments` from 0.1.1 to 0.1.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ansible-community/ansible-pygments/releases\"\u003eansible-pygments's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.1.2\u003c/h2\u003e\n\u003cp\u003eMaintenance release to ensure that releasing still works.\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/ansible-community/ansible-pygments/commit/cb4a39bef9e4a4169dce502f2f198016967506bb\"\u003e\u003ccode\u003ecb4a39b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/ansible-community/ansible-pygments/issues/70\"\u003e#70\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-pygments/commit/be3cc3b5e5d7264e842938197acca8d6434ec49f\"\u003e\u003ccode\u003ebe3cc3b\u003c/code\u003e\u003c/a\u003e Bump the ci group with 5 updates (\u003ca href=\"https://redirect.github.com/ansible-community/ansible-pygments/issues/73\"\u003e#73\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-pygments/commit/2e506fd496d33cc3a34673555c5bb18e357d6214\"\u003e\u003ccode\u003e2e506fd\u003c/code\u003e\u003c/a\u003e Fix dependabot config. (\u003ca href=\"https://redirect.github.com/ansible-community/ansible-pygments/issues/72\"\u003e#72\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-pygments/commit/5f5bc32fb5f6c8c96c1b13660365fee67f90f7b2\"\u003e\u003ccode\u003e5f5bc32\u003c/code\u003e\u003c/a\u003e Add dependabot config (\u003ca href=\"https://redirect.github.com/ansible-community/ansible-pygments/issues/60\"\u003e#60\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-pygments/commit/73fac92d94987a1ab87ec5aa85db1a117a7785a8\"\u003e\u003ccode\u003e73fac92\u003c/code\u003e\u003c/a\u003e Fix CI: avoid deprecated poetry section, drop macOS and Windows from CI matri...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-pygments/commit/149a793087a789e6a1905716f69ebec77e610b25\"\u003e\u003ccode\u003e149a793\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/ansible-community/ansible-pygments/issues/69\"\u003e#69\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-pygments/commit/bc64e01b0c536ec2cc03ffc470d65eae088632c0\"\u003e\u003ccode\u003ebc64e01\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/ansible-community/ansible-pygments/issues/68\"\u003e#68\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-pygments/commit/709e4e3109a0fc6eabcea757686d0d4635e1f549\"\u003e\u003ccode\u003e709e4e3\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/ansible-community/ansible-pygments/issues/67\"\u003e#67\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-pygments/commit/dec1d0799c1f029532faefed2e1b25cb55d6aed8\"\u003e\u003ccode\u003edec1d07\u003c/code\u003e\u003c/a\u003e Require Python 3.9+; add Python 3.12 and 3.13 to CI (\u003ca href=\"https://redirect.github.com/ansible-community/ansible-pygments/issues/64\"\u003e#64\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-pygments/commit/c50df0f4486185b463a78fd4ad8d4cb68f1bac1f\"\u003e\u003ccode\u003ec50df0f\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/ansible-community/ansible-pygments/issues/66\"\u003e#66\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ansible-community/ansible-pygments/compare/0.1.1...0.1.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ansible-runner` from 2.4.0 to 2.4.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ansible/ansible-runner/releases\"\u003eansible-runner's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eShort circuit display wrapper of the callback plugin within forks (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/pull/1414\"\u003eansible/ansible-runner#1414\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove EOF log messages when streaming (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/pull/1458\"\u003eansible/ansible-runner#1458\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/ansible/ansible-runner/compare/2.4.1...2.4.2\"\u003ehttps://github.com/ansible/ansible-runner/compare/2.4.1...2.4.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.4.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eModify volume mount behavior when source does not exist (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1408\"\u003e#1408\u003c/a\u003e). Volumes specified using the \u003ccode\u003econtainer-volume-mount\u003c/code\u003e option will now be passed through to the underlying container engine unverified and unmodified. This now allows you to mount individual files (vs. the parent directory) and non-existing source volumes. The behavior encountered with a non-existing source volume depends on which container engine is in use (\u003ccode\u003edocker\u003c/code\u003e creates the volume, \u003ccode\u003epodman\u003c/code\u003e will error).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eVarious documentation updates.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/ansible/ansible-runner/compare/2.4.0...2.4.1\"\u003ehttps://github.com/ansible/ansible-runner/compare/2.4.0...2.4.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/ansible/ansible-runner/commit/aa1d85044c197f8bd03ba1824c6de4510bab30ee\"\u003e\u003ccode\u003eaa1d850\u003c/code\u003e\u003c/a\u003e Improve EOF log messages when streaming (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1454\"\u003e#1454\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1458\"\u003e#1458\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/23d1720a2f29ef2518e4bede106e88545ad2625f\"\u003e\u003ccode\u003e23d1720\u003c/code\u003e\u003c/a\u003e Fix container build cache issue (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1449\"\u003e#1449\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1450\"\u003e#1450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/342cfc58f46c6bf0b6b6f23d91b726fa27091637\"\u003e\u003ccode\u003e342cfc5\u003c/code\u003e\u003c/a\u003e Remove wheel building from CI (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1443\"\u003e#1443\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1445\"\u003e#1445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/3dde1ffdeec743b07c9d3ef90c587db40bea8d62\"\u003e\u003ccode\u003e3dde1ff\u003c/code\u003e\u003c/a\u003e Change keepalive test boundary to 15\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/823bba55e5905fc3d9408464a62efa244fc0b579\"\u003e\u003ccode\u003e823bba5\u003c/code\u003e\u003c/a\u003e Fix CI for core 2.19.0 (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1435\"\u003e#1435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/d9bcdd514bbe6e28b950c40b542c1fe2c37cdf00\"\u003e\u003ccode\u003ed9bcdd5\u003c/code\u003e\u003c/a\u003e Remove outdated skipif fixtures\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/d72b2ee9d2951b8eb06100a101500d4267b5e690\"\u003e\u003ccode\u003ed72b2ee\u003c/code\u003e\u003c/a\u003e Short circuit display wrapper in forks (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1414\"\u003e#1414\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/388135bcf6b7e786d197315e02d042d246388d4f\"\u003e\u003ccode\u003e388135b\u003c/code\u003e\u003c/a\u003e [PR \u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1425\"\u003e#1425\u003c/a\u003e/827f5f65 backport][release_2.4] 🧪 Use \u003ccode\u003ereusable-tox.yml\u003c/code\u003e @ `tox-dev...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/ac1a759d95e1953549bc9af46bf46285bec99b70\"\u003e\u003ccode\u003eac1a759\u003c/code\u003e\u003c/a\u003e Bump core integration tests for core 2.18 release (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1401\"\u003e#1401\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/4ff8ce3af4ace1fb1dc488bfe93e1257deedacf4\"\u003e\u003ccode\u003e4ff8ce3\u003c/code\u003e\u003c/a\u003e Modify volume mount behavior when source does not exist (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1408\"\u003e#1408\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ansible/ansible-runner/compare/2.4.0...2.4.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `antsibull-changelog` from 0.29.0 to 0.35.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ansible-community/antsibull-changelog/releases\"\u003eantsibull-changelog's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.35.0\u003c/h2\u003e\n\u003ch3\u003eRelease Summary\u003c/h3\u003e\n\u003cp\u003eFeature release.\u003c/p\u003e\n\u003ch3\u003eMinor Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAntsibull-changelog now also depends on antsibull-docs-parser (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/213\"\u003eansible-community/antsibull-changelog#213\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeclare support for Python 3.14 (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/207\"\u003eansible-community/antsibull-changelog#207\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eProcess Ansible markup in plugin/module/role \u003c!-- raw HTML omitted --\u003eshort_description\u003c!-- raw HTML omitted --\u003e (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/issues/207\"\u003eansible-community/antsibull-changelog#207\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/213\"\u003eansible-community/antsibull-changelog#213\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.34.0\u003c/h2\u003e\n\u003ch3\u003eRelease Summary\u003c/h3\u003e\n\u003cp\u003eFeature release for antsibull-build.\u003c/p\u003e\n\u003ch3\u003eMinor Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003c!-- raw HTML omitted --\u003eRSTDocumentRenderer\u003c!-- raw HTML omitted --\u003e API now allows to configure section underlines. This is needed to fix the Ansible 12 porting guide (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/203\"\u003eansible-community/antsibull-changelog#203\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.33.0\u003c/h2\u003e\n\u003ch3\u003eRelease Summary\u003c/h3\u003e\n\u003cp\u003eMaintenance release for fixing / deprecating certain boolean options.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes / Porting Guide\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003c!-- raw HTML omitted --\u003e--strict\u003c!-- raw HTML omitted --\u003e option of the \u003c!-- raw HTML omitted --\u003elint-changelog-yaml\u003c!-- raw HTML omitted --\u003e subcommand no longer expects a parameter. It now matches what was documented (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/issues/195\"\u003eansible-community/antsibull-changelog#195\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/196\"\u003eansible-community/antsibull-changelog#196\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe boolean valued options \u003c!-- raw HTML omitted --\u003e--is-collection\u003c!-- raw HTML omitted --\u003e and \u003c!-- raw HTML omitted --\u003e--collection-flatmap\u003c!-- raw HTML omitted --\u003e will likely change to proper flags (\u003c!-- raw HTML omitted --\u003e--flag\u003c!-- raw HTML omitted --\u003e and \u003c!-- raw HTML omitted --\u003e--no-flag`\u003c!-- raw HTML omitted --\u003e instead of \u003c!-- raw HTML omitted --\u003e--flag true\u003c!-- raw HTML omitted --\u003e/\u003c!-- raw HTML omitted --\u003e--flag false\u003c!-- raw HTML omitted --\u003e) in the near future. If you are using these options and want them to not change, or have other suggestions, please \u003ca href=\"https://github.com/ansible-community/antsibull-changelog/issues/new\"\u003ecreate an issue in the antsibull-changelog repository\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/199\"\u003eansible-community/antsibull-changelog#199\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.32.0\u003c/h2\u003e\n\u003ch3\u003eRelease Summary\u003c/h3\u003e\n\u003cp\u003eFeature release.\u003c/p\u003e\n\u003ch3\u003eMajor Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe new configuration setting \u003c!-- raw HTML omitted --\u003eoutput\u003c!-- raw HTML omitted --\u003e allows to configure more precisely which changelog files are generated and how they are formatted (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/issues/190\"\u003eansible-community/antsibull-changelog#190\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/194\"\u003eansible-community/antsibull-changelog#194\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMinor Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAntsibull-changelog now depends on Pydantic 2 (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/193\"\u003eansible-community/antsibull-changelog#193\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAntsibull-changelog now uses Pydantic to parse and validate the config. This means that validation is more strict than before and might reject configs that were incorrect, but still got accepted somehow (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/193\"\u003eansible-community/antsibull-changelog#193\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes / Porting Guide\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eWhen using antsibull-changelog as a library, \u003c!-- raw HTML omitted --\u003eChangelogConfig\u003c!-- raw HTML omitted --\u003e's constructor should no longer be called directly. Instead, use the class method \u003c!-- raw HTML omitted --\u003eChangelogConfig.parse()\u003c!-- raw HTML omitted --\u003e, which has the same signature than the previous constructor, except that \u003c!-- raw HTML omitted --\u003eignore_is_other_project\u003c!-- raw HTML omitted --\u003e now must be a keyword parameter (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/193\"\u003eansible-community/antsibull-changelog#193\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- 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/ansible-community/antsibull-changelog/blob/main/CHANGELOG.rst\"\u003eantsibull-changelog's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev0.35.0\u003c/h1\u003e\n\u003ch2\u003eRelease Summary\u003c/h2\u003e\n\u003cp\u003eFeature release.\u003c/p\u003e\n\u003ch2\u003eMinor Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAntsibull-changelog now also depends on antsibull-docs-parser (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/213\"\u003eansible-community/antsibull-changelog#213\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeclare support for Python 3.14 (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/207\"\u003eansible-community/antsibull-changelog#207\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eProcess Ansible markup in plugin/module/role \u003ccode\u003eshort_description\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/issues/207\"\u003eansible-community/antsibull-changelog#207\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/213\"\u003eansible-community/antsibull-changelog#213\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev0.34.0\u003c/h1\u003e\n\u003ch2\u003eRelease Summary\u003c/h2\u003e\n\u003cp\u003eFeature release for antsibull-build.\u003c/p\u003e\n\u003ch2\u003eMinor Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003eRSTDocumentRenderer\u003c/code\u003e API now allows to configure section underlines. This is needed to fix the Ansible 12 porting guide (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/203\"\u003eansible-community/antsibull-changelog#203\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev0.33.0\u003c/h1\u003e\n\u003ch2\u003eRelease Summary\u003c/h2\u003e\n\u003cp\u003eMaintenance release for fixing / deprecating certain boolean options.\u003c/p\u003e\n\u003ch2\u003eBreaking Changes / Porting Guide\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e--strict\u003c/code\u003e option of the \u003ccode\u003elint-changelog-yaml\u003c/code\u003e subcommand no longer expects a parameter. It now matches what was documented (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/issues/195\"\u003eansible-community/antsibull-changelog#195\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/196\"\u003eansible-community/antsibull-changelog#196\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDeprecated Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThe boolean valued options \u003ccode\u003e--is-collection\u003c/code\u003e and \u003ccode\u003e--collection-flatmap\u003c/code\u003e will likely change to proper flags (\u003ccode\u003e--flag\u003c/code\u003e and \u003ccode\u003e--no-flag`` instead of ``--flag true``/``--flag false``) in the near future. If you are using these options and want them to not change, or have other suggestions, please \u003c/code\u003ecreate an issue in the antsibull-changelog repository \u003ca href=\"https://github.com/ansible-community/antsibull-changelog/issues/new\"\u003ehttps://github.com/ansible-community/antsibull-changelog/issues/new\u003c/a\u003e`__ (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/199\"\u003eansible-community/antsibull-changelog#199\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev0.32.0\u003c/h1\u003e\n\u003cp\u003eRelease Summary\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/ansible-community/antsibull-changelog/commit/1fe0013d3e0441552d1cde8abd68329b687e7f72\"\u003e\u003ccode\u003e1fe0013\u003c/code\u003e\u003c/a\u003e Release 0.35.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/antsibull-changelog/commit/58abbe5ab70b7da33cd34d006af23adf6d361637\"\u003e\u003ccode\u003e58abbe5\u003c/code\u003e\u003c/a\u003e Prepare 0.35.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/antsibull-changelog/commit/3c861b0a7d4cf820da4c83d6f86db5071d29ef73\"\u003e\u003ccode\u003e3c861b0\u003c/code\u003e\u003c/a\u003e Process Ansible markup for module/plugin/role short_description (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/issues/213\"\u003e#213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/antsibull-changelog/commit/52f345cf51765075c2792abefd27ed9c7e7924df\"\u003e\u003ccode\u003e52f345c\u003c/code\u003e\u003c/a\u003e Adjust tests to changes in antsibull-fileutils.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/antsibull-changelog/commit/5fa16b580e912e1cfa009e8695f3f0ffb29f0b96\"\u003e\u003ccode\u003e5fa16b5\u003c/code\u003e\u003c/a\u003e Remove no longer necessary lint ignore.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/antsibull-changelog/commit/2069da37431a5fe447cc3ababac67e8f8776df13\"\u003e\u003ccode\u003e2069da3\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 in the ci group (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/issues/212\"\u003e#212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/antsibull-changelog/commit/9c82eabac8ffadd097be0ff13691b45548b24b9b\"\u003e\u003ccode\u003e9c82eab\u003c/code\u003e\u003c/a\u003e Bump wntrblm/nox from 2025.10.16 to 2025.11.12 in the ci group (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/antsibull-changelog/commit/372f87c01391a20f002f3d9bf564a8d340e6a124\"\u003e\u003ccode\u003e372f87c\u003c/code\u003e\u003c/a\u003e Adjust URLs. (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/antsibull-changelog/commit/2b1e1096ed7d9b2d98a422811c00013422eff927\"\u003e\u003ccode\u003e2b1e109\u003c/code\u003e\u003c/a\u003e Bump wntrblm/nox from 2025.05.01 to 2025.10.16 in the ci group (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/issues/209\"\u003e#209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/antsibull-changelog/commit/e4148eea4cddd7c86da284f1a352ec01acd1e1f5\"\u003e\u003ccode\u003ee4148ee\u003c/code\u003e\u003c/a\u003e Support Python 3.14. (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/issues/208\"\u003e#208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ansible-community/antsibull-changelog/compare/0.29.0...0.35.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `antsibull-core` from 3.0.2 to 3.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ansible-community/antsibull-core/releases\"\u003eantsibull-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.5.0\u003c/h2\u003e\n\u003ch3\u003eRelease Summary\u003c/h3\u003e\n\u003cp\u003eFeature and maintenance release.\u003c/p\u003e\n\u003ch3\u003eMinor Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd logging wrapper classes to simplify switch from twiggy to the standard logging framework (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-core/issues/39\"\u003eansible-community/antsibull-core#39\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/ansible-community/antsibull-core/pull/188\"\u003eansible-community/antsibull-core#188\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeclare support for Python 3.14 (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-core/pull/191\"\u003eansible-community/antsibull-core#191\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.4.0\u003c/h2\u003e\n\u003ch3\u003eRelease Summary\u003c/h3\u003e\n\u003cp\u003eFeature release.\u003c/p\u003e\n\u003ch3\u003eMinor Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow information on removed or deprecated collections to be updated. This is needed to generate a consistent changelog (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-core/pull/177\"\u003eansible-community/antsibull-core#17...\n\n_Description has been truncated_","html_url":"https://github.com/ansible/event-driven-ansible/pull/503","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ansible%2Fevent-driven-ansible/issues/503","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/503/packages"},{"uuid":"3852345804","node_id":"PR_kwDONnmdmc6_MCf-","number":4,"state":"open","title":"chore(deps): bump the dependencies group across 1 directory with 34 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-25T00:48:36.000Z","updated_at":"2026-01-25T00:48:44.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"dependencies","update_count":34,"packages":[{"name":"setuptools","old_version":"75.8.0","new_version":"80.10.1","repository_url":"https://github.com/pypa/setuptools"},{"name":"ansible-runner","old_version":"2.4.0","new_version":"2.4.2","repository_url":"https://github.com/ansible/ansible-runner"},{"name":"bcrypt","old_version":"4.2.1","new_version":"5.0.0","repository_url":"https://github.com/pyca/bcrypt"},{"name":"certifi","old_version":"2024.12.14","new_version":"2026.1.4","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"cryptography","old_version":"44.0.0","new_version":"46.0.3","repository_url":"https://github.com/pyca/cryptography"},{"name":"docutils","old_version":"0.21.2","new_version":"0.22.4","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"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":"jinja2","old_version":"3.1.5","new_version":"3.1.6","repository_url":"https://github.com/pallets/jinja"},{"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.5.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"nh3","old_version":"0.2.20","new_version":"0.3.2","repository_url":"https://github.com/messense/nh3"},{"name":"packaging","old_version":"24.2","new_version":"26.0","repository_url":"https://github.com/pypa/packaging"},{"name":"paramiko","old_version":"3.5.0","new_version":"4.0.0","repository_url":"https://github.com/paramiko/paramiko"},{"name":"pkginfo","old_version":"1.12.0","new_version":"1.12.1.2"},{"name":"pycparser","old_version":"2.22","new_version":"2.23","repository_url":"https://github.com/eliben/pycparser"},{"name":"pydantic","old_version":"2.11.7","new_version":"2.12.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-core","old_version":"2.33.2","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":"pymdown-extensions","old_version":"10.20","new_version":"10.20.1","repository_url":"https://github.com/facelessuser/pymdown-extensions"},{"name":"pynacl","old_version":"1.5.0","new_version":"1.6.2","repository_url":"https://github.com/pyca/pynacl"},{"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":"resolvelib","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/sarugaku/resolvelib"},{"name":"rich","old_version":"13.9.4","new_version":"14.3.1","repository_url":"https://github.com/Textualize/rich"},{"name":"twine","old_version":"6.0.1","new_version":"6.2.0","repository_url":"https://github.com/pypa/twine"},{"name":"typing-inspection","old_version":"0.4.1","new_version":"0.4.2","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"typing-extensions","old_version":"4.14.0","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":"wheel","old_version":"0.45.1","new_version":"0.46.3","repository_url":"https://github.com/pypa/wheel"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dependencies group with 34 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [setuptools](https://github.com/pypa/setuptools) | `75.8.0` | `80.10.1` |\n| [ansible-runner](https://github.com/ansible/ansible-runner) | `2.4.0` | `2.4.2` |\n| [bcrypt](https://github.com/pyca/bcrypt) | `4.2.1` | `5.0.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2024.12.14` | `2026.1.4` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.1` | `2.0.0` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [cryptography](https://github.com/pyca/cryptography) | `44.0.0` | `46.0.3` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.21.2` | `0.22.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\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| [jinja2](https://github.com/pallets/jinja) | `3.1.5` | `3.1.6` |\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.5.0` | `10.8.0` |\n| [nh3](https://github.com/messense/nh3) | `0.2.20` | `0.3.2` |\n| [packaging](https://github.com/pypa/packaging) | `24.2` | `26.0` |\n| [paramiko](https://github.com/paramiko/paramiko) | `3.5.0` | `4.0.0` |\n| [pkginfo](https://code.launchpad.net/~tseaver/pkginfo/trunk) | `1.12.0` | `1.12.1.2` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `2.23` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.7` | `2.12.5` |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.33.2` | `2.41.5` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) | `10.20` | `10.20.1` |\n| [pynacl](https://github.com/pyca/pynacl) | `1.5.0` | `1.6.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| [resolvelib](https://github.com/sarugaku/resolvelib) | `1.0.1` | `1.2.1` |\n| [rich](https://github.com/Textualize/rich) | `13.9.4` | `14.3.1` |\n| [twine](https://github.com/pypa/twine) | `6.0.1` | `6.2.0` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.1` | `0.4.2` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.14.0` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.6.3` |\n| [wheel](https://github.com/pypa/wheel) | `0.45.1` | `0.46.3` |\n\n\nUpdates `setuptools` from 75.8.0 to 80.10.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/setuptools/blob/main/NEWS.rst\"\u003esetuptools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev80.10.1\u003c/h1\u003e\n\u003ch2\u003eMisc\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5152\"\u003e#5152\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev80.10.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove post-release tags on setuptools' own build. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/4530\"\u003e#4530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRefreshed vendored dependencies. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5139\"\u003e#5139\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMisc\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5033\"\u003e#5033\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev80.9.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSet a deadline for the removal of pkg_resources later this year (December). (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/3085\"\u003e#3085\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoved reliance on pkg_resources in test_wheel. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/3085\"\u003e#3085\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev80.8.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eReplaced more references to pkg_resources with importlib equivalents in wheel odule. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/3085\"\u003e#3085\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRestore explicit LICENSE file. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5001\"\u003e#5001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoved no longer used build dependency on \u003ccode\u003ecoherent.licensed\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5003\"\u003e#5003\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev80.7.1\u003c/h1\u003e\n\u003cp\u003eBugfixes\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/pypa/setuptools/commit/adfb0c9e3d1789587d609228d9ea1d79272e4107\"\u003e\u003ccode\u003eadfb0c9\u003c/code\u003e\u003c/a\u003e Bump version: 80.10.0 → 80.10.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/8535d107c2ff20e8e4a0aca2d780461918f54180\"\u003e\u003ccode\u003e8535d10\u003c/code\u003e\u003c/a\u003e docs: Link pyproject.toml to ext_modules (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5125\"\u003e#5125\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/fafbe2c6566a9562300046b088ceb71efa9eb07f\"\u003e\u003ccode\u003efafbe2c\u003c/code\u003e\u003c/a\u003e [CI] Workaround for GHA handling of 'skipped' in job dependency chain (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5152\"\u003e#5152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/d171023e5b023bbe2ce8e29e7ae3314c01925783\"\u003e\u003ccode\u003ed171023\u003c/code\u003e\u003c/a\u003e Add news fragment\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/3dbba0672ad44d1b985ef47ebd098d10bee8e1d0\"\u003e\u003ccode\u003e3dbba06\u003c/code\u003e\u003c/a\u003e Refine comment to reference issue\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/e4922c88a5ebe7d7ca40a0abfaa59e1377372bf2\"\u003e\u003ccode\u003ee4922c8\u003c/code\u003e\u003c/a\u003e Apply suggestion from \u003ca href=\"https://github.com/webknjaz\"\u003e\u003ccode\u003e@​webknjaz\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/218c146ba37dabb9513f53510985dd6c3758dd23\"\u003e\u003ccode\u003e218c146\u003c/code\u003e\u003c/a\u003e [CI] Workaround for GHA handling of 'skipped' in job dependency chain\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/29031718a55e5c7d5bbfc572b84d35d1f1f52aff\"\u003e\u003ccode\u003e2903171\u003c/code\u003e\u003c/a\u003e Bump version: 80.9.0 → 80.10.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/23a2b180ef81e6cda7fe55c14cdfca6385e8903e\"\u003e\u003ccode\u003e23a2b18\u003c/code\u003e\u003c/a\u003e [CI] Allow the action \u003ccode\u003echeck-changed-folders\u003c/code\u003e to be skipped in the \u003ccode\u003echeck\u003c/code\u003e ac...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/660e5817c2b7631494adb2e044e17fcf59f683fc\"\u003e\u003ccode\u003e660e581\u003c/code\u003e\u003c/a\u003e [CI] Allow the action \u003ccode\u003echeck-changed-folders\u003c/code\u003e to be skipped in the \u003ccode\u003echeck\u003c/code\u003e ac...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/setuptools/compare/v75.8.0...v80.10.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ansible-runner` from 2.4.0 to 2.4.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ansible/ansible-runner/releases\"\u003eansible-runner's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eShort circuit display wrapper of the callback plugin within forks (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/pull/1414\"\u003eansible/ansible-runner#1414\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove EOF log messages when streaming (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/pull/1458\"\u003eansible/ansible-runner#1458\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/ansible/ansible-runner/compare/2.4.1...2.4.2\"\u003ehttps://github.com/ansible/ansible-runner/compare/2.4.1...2.4.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.4.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eModify volume mount behavior when source does not exist (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1408\"\u003e#1408\u003c/a\u003e). Volumes specified using the \u003ccode\u003econtainer-volume-mount\u003c/code\u003e option will now be passed through to the underlying container engine unverified and unmodified. This now allows you to mount individual files (vs. the parent directory) and non-existing source volumes. The behavior encountered with a non-existing source volume depends on which container engine is in use (\u003ccode\u003edocker\u003c/code\u003e creates the volume, \u003ccode\u003epodman\u003c/code\u003e will error).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eVarious documentation updates.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/ansible/ansible-runner/compare/2.4.0...2.4.1\"\u003ehttps://github.com/ansible/ansible-runner/compare/2.4.0...2.4.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/ansible/ansible-runner/commit/aa1d85044c197f8bd03ba1824c6de4510bab30ee\"\u003e\u003ccode\u003eaa1d850\u003c/code\u003e\u003c/a\u003e Improve EOF log messages when streaming (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1454\"\u003e#1454\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1458\"\u003e#1458\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/23d1720a2f29ef2518e4bede106e88545ad2625f\"\u003e\u003ccode\u003e23d1720\u003c/code\u003e\u003c/a\u003e Fix container build cache issue (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1449\"\u003e#1449\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1450\"\u003e#1450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/342cfc58f46c6bf0b6b6f23d91b726fa27091637\"\u003e\u003ccode\u003e342cfc5\u003c/code\u003e\u003c/a\u003e Remove wheel building from CI (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1443\"\u003e#1443\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1445\"\u003e#1445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/3dde1ffdeec743b07c9d3ef90c587db40bea8d62\"\u003e\u003ccode\u003e3dde1ff\u003c/code\u003e\u003c/a\u003e Change keepalive test boundary to 15\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/823bba55e5905fc3d9408464a62efa244fc0b579\"\u003e\u003ccode\u003e823bba5\u003c/code\u003e\u003c/a\u003e Fix CI for core 2.19.0 (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1435\"\u003e#1435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/d9bcdd514bbe6e28b950c40b542c1fe2c37cdf00\"\u003e\u003ccode\u003ed9bcdd5\u003c/code\u003e\u003c/a\u003e Remove outdated skipif fixtures\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/d72b2ee9d2951b8eb06100a101500d4267b5e690\"\u003e\u003ccode\u003ed72b2ee\u003c/code\u003e\u003c/a\u003e Short circuit display wrapper in forks (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1414\"\u003e#1414\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/388135bcf6b7e786d197315e02d042d246388d4f\"\u003e\u003ccode\u003e388135b\u003c/code\u003e\u003c/a\u003e [PR \u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1425\"\u003e#1425\u003c/a\u003e/827f5f65 backport][release_2.4] 🧪 Use \u003ccode\u003ereusable-tox.yml\u003c/code\u003e @ `tox-dev...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/ac1a759d95e1953549bc9af46bf46285bec99b70\"\u003e\u003ccode\u003eac1a759\u003c/code\u003e\u003c/a\u003e Bump core integration tests for core 2.18 release (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1401\"\u003e#1401\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/4ff8ce3af4ace1fb1dc488bfe93e1257deedacf4\"\u003e\u003ccode\u003e4ff8ce3\u003c/code\u003e\u003c/a\u003e Modify volume mount behavior when source does not exist (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1408\"\u003e#1408\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ansible/ansible-runner/compare/2.4.0...2.4.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bcrypt` from 4.2.1 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\u003ch2\u003e4.3.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.7.\u003c/li\u003e\n\u003cli\u003eWe now support free-threaded Python 3.13.\u003c/li\u003e\n\u003cli\u003eWe now support PyPy 3.11.\u003c/li\u003e\n\u003cli\u003eWe now publish wheels for free-threaded Python 3.13, for PyPy 3.11 on\n\u003ccode\u003emanylinux\u003c/code\u003e, and for ARMv7l on \u003ccode\u003emanylinux\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/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.2.1...5.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2024.12.14 to 2026.1.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\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\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/27ca98ad845ee6d130a88301622c137893f71620\"\u003e\u003ccode\u003e27ca98a\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7.0.9 to 7.0.11 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/56c59a63909cfd3162b37e7bc16956e64df0f737\"\u003e\u003ccode\u003e56c59a6\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.0 to 6.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ae0021cd43a77bfba67d20a041469cdf6996570e\"\u003e\u003ccode\u003eae0021c\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.0.0 to 6.1.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/380\"\u003e#380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddf5d0b5d2a3d55fd92a79f141dbb5e074caf924\"\u003e\u003ccode\u003eddf5d0b\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5.0.1 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2024.12.14...2026.01.04\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cffi` from 1.17.1 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only) - huge thanks to the folks at Quansight Labs for all the work to get this one sorted!\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.0.0b1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only).\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/6366c01d84e9a78e7e85f12ebe9760ba5d19b6d3\"\u003e\u003ccode\u003e6366c01\u003c/code\u003e\u003c/a\u003e release 2.0.0 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/95c847663aec401e4003927a274e4de9b8595f4f\"\u003e\u003ccode\u003e95c8476\u003c/code\u003e\u003c/a\u003e 2.0.0 post beta backports (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/195cbda66b6be9297ef6d584644e50cfdcca4e8a\"\u003e\u003ccode\u003e195cbda\u003c/code\u003e\u003c/a\u003e Release 2.0.0b1 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b4bbe7940d3f76027534db1aecbae9b61c35221a\"\u003e\u003ccode\u003eb4bbe79\u003c/code\u003e\u003c/a\u003e fix version test to support beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/7ed073de66e713cf791b6fdfa23685c81fdfd6ad\"\u003e\u003ccode\u003e7ed073d\u003c/code\u003e\u003c/a\u003e Add support for the free-threaded build (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/178\"\u003e#178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/67a170dc7972dc9361743690b38da3d963b200ef\"\u003e\u003ccode\u003e67a170d\u003c/code\u003e\u003c/a\u003e Change the license from MIT to MIT-no-attribution, which is the same without ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/92645ec9329feb03e3fa86240b40fe0fc37469d1\"\u003e\u003ccode\u003e92645ec\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support/testing (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/177\"\u003e#177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/2b81170583a898478a6996c9705d8c38ab7f73a1\"\u003e\u003ccode\u003e2b81170\u003c/code\u003e\u003c/a\u003e doc: update test commands in Section Testing/development tips (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/25172b84cf51cf58241f074ccd1efd9c7648cb43\"\u003e\u003ccode\u003e25172b8\u003c/code\u003e\u003c/a\u003e doc: update year (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b57a92c03eb2078a99c900519a37d18b4d52324f\"\u003e\u003ccode\u003eb57a92c\u003c/code\u003e\u003c/a\u003e issue 147: force-compute nested structs before parent structs.  Occurs mainly...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.1 to 3.4.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 `cryptography` from 44.0.0 to 46.0.3\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\u003e46.0.3 - 2025-10-15\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Fixed compilation when using LibreSSL 4.2.0.\n\u003cp\u003e.. _v46-0-2:\u003c/p\u003e\n\u003cp\u003e46.0.2 - 2025-09-30\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.4.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v46-0-1:\u003c/p\u003e\n\u003cp\u003e46.0.1 - 2025-09-16\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Fixed an issue where users installing via ``pip`` on Python 3.14 development\n  versions would not properly install a dependency.\n* Fixed an issue building the free-threaded macOS 3.14 wheels.\n\u003cp\u003e.. _v46-0-0:\u003c/p\u003e\n\u003cp\u003e46.0.0 - 2025-09-16\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Support for Python 3.7 has been removed.\u003c/li\u003e\n\u003cli\u003eSupport for OpenSSL \u0026lt; 3.0 is deprecated and will be removed in the next\nrelease.\u003c/li\u003e\n\u003cli\u003eSupport for \u003ccode\u003ex86_64\u003c/code\u003e macOS (including publishing wheels) is deprecated\nand will be removed in two releases. We will switch to publishing an\n\u003ccode\u003earm64\u003c/code\u003e only wheel for macOS.\u003c/li\u003e\n\u003cli\u003eSupport for 32-bit Windows (including publishing wheels) is deprecated\nand will be removed in two releases. Users should move to a 64-bit\nPython installation.\u003c/li\u003e\n\u003cli\u003eUpdated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.3.\u003c/li\u003e\n\u003cli\u003eWe now build \u003ccode\u003eppc64le\u003c/code\u003e \u003ccode\u003emanylinux\u003c/code\u003e wheels and publish them to PyPI.\u003c/li\u003e\n\u003cli\u003eWe now build \u003ccode\u003ewin_arm64\u003c/code\u003e (Windows on Arm) wheels and publish them to PyPI.\u003c/li\u003e\n\u003cli\u003eAdded support for free-threaded Python 3.14.\u003c/li\u003e\n\u003cli\u003eRemoved the deprecated \u003ccode\u003eget_attribute_for_oid\u003c/code\u003e method on\n:class:\u003ccode\u003e~cryptography.x509.CertificateSigningRequest\u003c/code\u003e. Users should use\n:meth:\u003ccode\u003e~cryptography.x509.Attributes.get_attribute_for_oid\u003c/code\u003e instead.\u003c/li\u003e\n\u003cli\u003eRemoved the deprecated \u003ccode\u003eCAST5\u003c/code\u003e, \u003ccode\u003eSEED\u003c/code\u003e, \u003ccode\u003eIDEA\u003c/code\u003e, and \u003ccode\u003eBlowfish\u003c/code\u003e\nclasses from the cipher module. These are still available in\n:doc:\u003ccode\u003e/hazmat/decrepit/index\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eIn X.509, when performing a PSS signature with a SHA-3 hash, it is now\nencoded with the official NIST SHA3 OID.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v45-0-7:\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/pyca/cryptography/commit/c0af4dd7b75921bbe9f1d41a03dbd4b64a9e3403\"\u003e\u003ccode\u003ec0af4dd\u003c/code\u003e\u003c/a\u003e release 46.0.3 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13681\"\u003e#13681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/99efe5ad150a56efadafacaffd0e3ee319373904\"\u003e\u003ccode\u003e99efe5a\u003c/code\u003e\u003c/a\u003e bump version for 46.0.2 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13531\"\u003e#13531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e735cfc27502320101c130335c556394a125ba52\"\u003e\u003ccode\u003ee735cfc\u003c/code\u003e\u003c/a\u003e release 46.0.1 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13450\"\u003e#13450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/4e457ffba43a6d87efc63c33041e2081438dd8a4\"\u003e\u003ccode\u003e4e457ff\u003c/code\u003e\u003c/a\u003e Explicitly specify python in mac uv build invocation (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13447\"\u003e#13447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/2726efdb6d67f1c90cf9c6062d9fe051965586f8\"\u003e\u003ccode\u003e2726efd\u003c/code\u003e\u003c/a\u003e Depend on CFFI 2.0.0 or newer on Python \u0026gt; 3.8 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13448\"\u003e#13448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/62230623d183706632c0eb7822c96ac95e3710a8\"\u003e\u003ccode\u003e6223062\u003c/code\u003e\u003c/a\u003e release 46.0.0 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13446\"\u003e#13446\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/563c4915b0931455706f761a4579c26698824eae\"\u003e\u003ccode\u003e563c491\u003c/code\u003e\u003c/a\u003e Update comment for pyopenssl-release tag (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13445\"\u003e#13445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/d2f6f7faced35b73277bc624ff496f8af696b172\"\u003e\u003ccode\u003ed2f6f7f\u003c/code\u003e\u003c/a\u003e Bump downstream dependencies in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13439\"\u003e#13439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e7ab02bd679d0b4f55d93486fe27e62554ef15d4\"\u003e\u003ccode\u003ee7ab02b\u003c/code\u003e\u003c/a\u003e we'll ship this with 3.5.3 why not (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13442\"\u003e#13442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/0b68a4bffb61202e4d4f5074cd30c2b9d15f429e\"\u003e\u003ccode\u003e0b68a4b\u003c/code\u003e\u003c/a\u003e Another pair of bump dependencies fix (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13444\"\u003e#13444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/cryptography/compare/44.0.0...46.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `docutils` from 0.21.2 to 0.22.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/rtfd/recommonmark/commits\"\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 `jaraco-context` from 6.0.1 to 6.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jaraco/jaraco.context/blob/main/NEWS.rst\"\u003ejaraco-context's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev6.1.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eIn tarfile.context, ensure that the default filter honors the data filter to avoid path traversal vulnerabilities.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev6.0.2\u003c/h1\u003e\n\u003cp\u003eNo significant changes.\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/jaraco/jaraco.context/commit/675aaf5bfb926bdafcded1b0e08ca011d6e0f599\"\u003e\u003ccode\u003e675aaf5\u003c/code\u003e\u003c/a\u003e Finalize\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/7b26a42b525735e4085d2e994e13802ea339d5f9\"\u003e\u003ccode\u003e7b26a42\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jaraco/jaraco.context/issues/18\"\u003e#18\u003c/a\u003e from jaraco/security/extraction-safety\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/398390e0ac4faf43e6449374964bbe76f0663bc1\"\u003e\u003ccode\u003e398390e\u003c/code\u003e\u003c/a\u003e Suppress failure (missed expectation) on Python 3.12.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/54a1bc6028838c102ed2c3c27dfca65afbedd326\"\u003e\u003ccode\u003e54a1bc6\u003c/code\u003e\u003c/a\u003e Use the filter argument to tarfile.extract to avoid the deprecation warning.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/7eb62b11d7071d3873facfab7361b2d2bf8a8f44\"\u003e\u003ccode\u003e7eb62b1\u003c/code\u003e\u003c/a\u003e Also extract the member, for completeness.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/3b5ac92dbc7fc13bfe89087c2ae80653314f845b\"\u003e\u003ccode\u003e3b5ac92\u003c/code\u003e\u003c/a\u003e Add another case, demonstrating legitimate use of parent dir.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/3b16eec9f80db260bd072acdb85d0bd2d530a563\"\u003e\u003ccode\u003e3b16eec\u003c/code\u003e\u003c/a\u003e In tarfile.context, ensure that the default filter honors the data filter to ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/52602fa4dceb8cb0b79f7be98b3c698626eb00bb\"\u003e\u003ccode\u003e52602fa\u003c/code\u003e\u003c/a\u003e Update implementation to have different expectations for different cases.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/e066131ed7a882351a42499c9f72a1313a572c55\"\u003e\u003ccode\u003ee066131\u003c/code\u003e\u003c/a\u003e Convert the repro to a parameterized unit test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/d4c5567280aaba7fef8521dccedc49e2cb06ebc6\"\u003e\u003ccode\u003ed4c5567\u003c/code\u003e\u003c/a\u003e 👹 Feed the hobgoblins (delint).\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jaraco/jaraco.context/compare/v6.0.1...v6.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jaraco-functools` from 4.1.0 to 4.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jaraco/jaraco.functools/blob/main/NEWS.rst\"\u003ejaraco-functools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev4.4.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd noop.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev4.3.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd none_as function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev4.2.1\u003c/h1\u003e\n\u003cp\u003eNo significant changes.\u003c/p\u003e\n\u003ch1\u003ev4.2.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd 'passthrough' function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded missing \u003ccode\u003esplat\u003c/code\u003e in stubs -- by :user:\u003ccode\u003eAvasam\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/jaraco/jaraco.functools/issues/29\"\u003e#29\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/jaraco/jaraco.functools/commit/b57bb859e09f10f1e2ad7e64e9d71723793517f2\"\u003e\u003ccode\u003eb57bb85\u003c/code\u003e\u003c/a\u003e Finalize\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/21bcec01fb9104296737b6ab2a7ac61d5ed68cb0\"\u003e\u003ccode\u003e21bcec0\u003c/code\u003e\u003c/a\u003e Add noop.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/105d8ca2a61e703881d60302c45a31706f441453\"\u003e\u003ccode\u003e105d8ca\u003c/code\u003e\u003c/a\u003e 👹 Feed the hobgoblins (delint).\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/7f0b09aebbffd846374b2dd886035bb780d9ab20\"\u003e\u003ccode\u003e7f0b09a\u003c/code\u003e\u003c/a\u003e Merge \u003ca href=\"https://github.com/jaraco/skeleton\"\u003ehttps://github.com/jaraco/skeleton\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/8f3d95e7db0114e26e57dd95932b141ead74f7c5\"\u003e\u003ccode\u003e8f3d95e\u003c/code\u003e\u003c/a\u003e Pin mypy on PyPy.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/d47a969ed4567bbdee26034ccaaa8b8169f44fcf\"\u003e\u003ccode\u003ed47a969\u003c/code\u003e\u003c/a\u003e Specify the directory for news fragments.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/9f4e0e2849659969577f40be40cabe026dd5fb0f\"\u003e\u003ccode\u003e9f4e0e2\u003c/code\u003e\u003c/a\u003e Finalize\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/680b9aeed7c2f22f7a662b8c87af013d6ec4a076\"\u003e\u003ccode\u003e680b9ae\u003c/code\u003e\u003c/a\u003e Add none_as function.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/8c5810ed39f431598f8498499e7e8fa38a8ed455\"\u003e\u003ccode\u003e8c5810e\u003c/code\u003e\u003c/a\u003e\u003ccode\u003ejaraco/skeleton#177\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/04ff5549ee93f907bcebb1db570ad291ae55fd29\"\u003e\u003ccode\u003e04ff554\u003c/code\u003e\u003c/a\u003e\u003ccode\u003ejaraco/skeleton#181\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jaraco/jaraco.functools/compare/v4.1.0...v4.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jinja2` from 3.1.5 to 3.1.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/jinja/releases\"\u003ejinja2's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.6\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.6 security release, which fixes security issues 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/Jinja2/3.1.6/\"\u003ehttps://pypi.org/project/Jinja2/3.1.6/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\"\u003ehttps://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup, allowing the sandbox to apply its checks. \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\"\u003ehttps://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\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/jinja/blob/main/CHANGES.rst\"\u003ejinja2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.6\u003c/h2\u003e\n\u003cp\u003eReleased 2025-03-05\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup,\nallowing the sandbox to apply its checks. :ghsa:\u003ccode\u003ecpwx-vrp4-4pq7\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/jinja/commit/15206881c006c79667fe5154fe80c01c65410679\"\u003e\u003ccode\u003e1520688\u003c/code\u003e\u003c/a\u003e release version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/90457bbf33b8662926ae65cdde4c4c32e756e403\"\u003e\u003ccode\u003e90457bb\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/065334d1ee5b7210e1a0a93c37238c86858f2af7\"\u003e\u003ccode\u003e065334d\u003c/code\u003e\u003c/a\u003e attr filter uses env.getattr\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/033c20015c7ca899ab52eb921bb0f08e6d3dd145\"\u003e\u003ccode\u003e033c200\u003c/code\u003e\u003c/a\u003e start version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/bc68d4efa99c5f77334f0e519628558059ae8c35\"\u003e\u003ccode\u003ebc68d4e\u003c/code\u003e\u003c/a\u003e use global contributing guide (\u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2070\"\u003e#2070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/247de5e0c5062a792eb378e50e13e692885ee486\"\u003e\u003ccode\u003e247de5e\u003c/code\u003e\u003c/a\u003e use global contributing guide\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/ab8218c7a1b66b62e0ad6b941bd514e3a64a358f\"\u003e\u003ccode\u003eab8218c\u003c/code\u003e\u003c/a\u003e use project advisory link instead of global\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/b4ffc8ff299dfd360064bea4cd2f862364601ad2\"\u003e\u003ccode\u003eb4ffc8f\u003c/code\u003e\u003c/a\u003e release version 3.1.5 (\u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2066\"\u003e#2066\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pallets/jinja/compare/3.1.5...3.1.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `keyring` from 25.6.0 to 25.7.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jaraco/keyring/blob/main/NEWS.rst\"\u003ekeyring's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev25.7.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImproved support for KWallet 6. (\u003ca href=\"https://redirect.github.com/jaraco/keyring/issues/728\"\u003e#728\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved cruft from Python 3.8. (\u003ca href=\"https://redirect.github.com/jaraco/keyring/issues/722\"\u003e#722\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/jaraco/keyring/commit/38c040133559682902f25fe96496756ee6849820\"\u003e\u003ccode\u003e38c0401\u003c/code\u003e\u003c/a\u003e Finalize\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/keyring/commit/e5b7d2a20931fa7f4d53e28eb5dffceb2e82ba6b\"\u003e\u003ccode\u003ee5b7d2a\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Disable type checking on filter call. Fixes \u003ca href=\"https://redirect.github.com/jaraco/keyring/issues/659\"\u003e#659\u003c/a\u003e.\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/keyring/commit/2ce2d465050d73db8b1b7662c4e53c7b6fa7aafc\"\u003e\u003ccode\u003e2ce2d46\u003c/code\u003e\u003c/a\u003e Add news fragment.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/keyring/commit/4bb5ece9a6959ee71ec464595f64e88951d00fb6\"\u003e\u003ccode\u003e4bb5ece\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jaraco/keyring/issues/722\"\u003e#722\u003c/a\u003e from hugovk/rm-3.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/keyring/commit/d7c0aa4e1dbfcde3064c1448dc1fd09c76e93d1d\"\u003e\u003ccode\u003ed7c0aa4\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into rm-3.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/keyring/commit/ea1d763bfd80bf7cedd95fb040d38fc1d29c3e87\"\u003e\u003ccode\u003eea1d763\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jaraco/keyring/issues/721\"\u003e#721\u003c/a\u003e from hugovk/fix-tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/keyring/commit/30eea9d7769b167be0667ea3aa3722c762e20659\"\u003e\u003ccode\u003e30eea9d\u003c/code\u003e\u003c/a\u003e Merge \u003ca href=\"https://github.com/jaraco/skeleton\"\u003ehttps://github.com/jaraco/skeleton\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/keyring/commit/fb6e52cf3f511242f0a9ff2441eb7e29c67f7268\"\u003e\u003ccode\u003efb6e52c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jaraco/keyring/issues/724\"\u003e#724\u003c/a\u003e from dachucky/patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/keyring/commit/9ff845920c4c72031343b17c6a3d605e6247f081\"\u003e\u003ccode\u003e9ff8459\u003c/code\u003e\u003c/a\u003e Generalize the guidance around tox.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/keyring/commit/e7fbfa76a1f675bede0f5654e99add3a0cd66370\"\u003e\u003ccode\u003ee7fbfa7\u003c/code\u003e\u003c/a\u003e Prefer imperative third-person voice.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jaraco/keyring/compare/v25.6.0...v25.7.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 `more-itertools` from 10.5.0 to 10.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/more-itertools/more-itertools/releases\"\u003emore-itertools's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 10.8.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix typo in version history for 10.7.0 by bbayles in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/981\"\u003emore-itertools/more-itertools#981\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIssue 980: Fix variable names: iterable vs iterator by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/982\"\u003emore-itertools/more-itertools#982\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove docstrings for dft, idft, and multinomial by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/983\"\u003emore-itertools/more-itertools#983\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a note about polynomial endianness by bbayles in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/984\"\u003emore-itertools/more-itertools#984\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SPDX license identifier by cdce8p in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/978\"\u003emore-itertools/more-itertools#978\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove setup.py file by cdce8p in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/979\"\u003emore-itertools/more-itertools#979\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude \u003ccode\u003ederangements\u003c/code\u003e by itself by bbayles in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/985\"\u003emore-itertools/more-itertools#985\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd derangements by debruijn in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/946\"\u003emore-itertools/more-itertools#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIssue 986: argmin and argmax by bbayles in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/988\"\u003emore-itertools/more-itertools#988\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSplit-out the integer math functions by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/990\"\u003emore-itertools/more-itertools#990\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSpelling, grammar, punctuation, and usage by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/991\"\u003emore-itertools/more-itertools#991\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix the return type of more_itertools.batched by qobilidop in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/993\"\u003emore-itertools/more-itertools#993\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix duplicate words in version_history.rst by saadmanrafat in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/992\"\u003emore-itertools/more-itertools#992\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove islice_extended memory usage when start\u0026lt;0 and step\u0026gt;0 by ben42code in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/995\"\u003emore-itertools/more-itertools#995\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUnittest islice_extended impact on iterated elements lifecycle by ben42code in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/996\"\u003emore-itertools/more-itertools#996\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003econvolve() is agnostic to endianness by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/997\"\u003emore-itertools/more-itertools#997\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSample simplification by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/998\"\u003emore-itertools/more-itertools#998\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIssue 1005: Document difference from builtin min() and max(). by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1008\"\u003emore-itertools/more-itertools#1008\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGeneral cleanups by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1007\"\u003emore-itertools/more-itertools#1007\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken link by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1004\"\u003emore-itertools/more-itertools#1004\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd option for nth_prime() to be approximated by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1002\"\u003emore-itertools/more-itertools#1002\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebefore_and_after improvement by pochmann3 in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1012\"\u003emore-itertools/more-itertools#1012\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFast paths instead of applying an identity function by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1018\"\u003emore-itertools/more-itertools#1018\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSpeed-up _complex_sumprod() by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1000\"\u003emore-itertools/more-itertools#1000\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove islice_extended memory usage when stop\u0026lt;0 and step\u0026gt;0 by ben42code in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/999\"\u003emore-itertools/more-itertools#999\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd derangements() to the doc indexes by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1020\"\u003emore-itertools/more-itertools#1020\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove readability/findability with combinatoric subsections by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1022\"\u003emore-itertools/more-itertools#1022\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix 1009: Confused docstring for minmax() by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1021\"\u003emore-itertools/more-itertools#1021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove \u003ccode\u003einterleave_longest\u003c/code\u003e by pochmann3 in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1027\"\u003emore-itertools/more-itertools#1027\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIssue 1001: fix last() when \u003cstrong\u003ereversed\u003c/strong\u003e is None by inventshah in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1028\"\u003emore-itertools/more-itertools#1028\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIssue 1029: fix batched IDE/help() docs by inventshah in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1031\"\u003emore-itertools/more-itertools#1031\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove \u003ccode\u003emark_ends\u003c/code\u003e by pochmann3 in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1035\"\u003emore-itertools/more-itertools#1035\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd usage notes for sample() by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1037\"\u003emore-itertools/more-itertools#1037\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix docstring and comment in private _nth_prime_bounds function by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1036\"\u003emore-itertools/more-itertools#1036\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix linespacing by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1038\"\u003emore-itertools/more-itertools#1038\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd running_median by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1039\"\u003emore-itertools/more-itertools#1039\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erunning_median() with windowed data by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1040\"\u003emore-itertools/more-itertools#1040\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePin furo to 2024.08.06 by bbayles in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1043\"\u003emore-itertools/more-itertools#1043\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Fix invisible REPL output in HTML dark mode by moreati in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1045\"\u003emore-itertools/more-itertools#1045\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse python instead of python3 when running tests by ktbarrett in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1051\"\u003emore-itertools/more-itertools#1051\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIssue 1044: Add new tool: extract() by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1056\"\u003emore-itertools/more-itertools#1056\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTest 3.14.0-rc.2 by bbayles in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1060\"\u003emore-itertools/more-itertools#1060\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eunzip\u003c/code\u003e: replace custom itemgetter by pochmann3 in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1059\"\u003emore-itertools/more-itertools#1059\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003einterleave_randomly\u003c/code\u003e by ktbarrett in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1048\"\u003emore-itertools/more-itertools#1048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIssue 1003: Multidimensional reshape() by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1062\"\u003emore-itertools/more-itertools#1062\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGet coverage to 100% by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1065\"\u003emore-itertools/more-itertools#1065\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove count_cycle() by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1066\"\u003emore-itertools/more-itertools#1066\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eClarify how derangements treats duplicate inputs by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1069\"\u003emore-itertools/more-itertools#1069\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/more-itertools/more-itertools/commit/8c1a6ef241b51ff055e89219f050ccf4f15f37f6\"\u003e\u003ccode\u003e8c1a6ef\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/issues/1071\"\u003e#1071\u003c/a\u003e from more-itertools/version-10.8.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/more-itertools/more-itertools/commit/24be4400152530567fc308578ce5e8072ad77982\"\u003e\u003ccode\u003e24be440\u003c/code\u003e\u003c/a\u003e Add note for issue 1054\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/more-itertools/more-itertools/commit/3dd5980a6d73bb9902a4ab1fb1eb05d512081f86\"\u003e\u003ccode\u003e3dd5980\u003c/code\u003e\u003c/a\u003e Add a note for issue 1063\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/more-itertools/more-itertools/commit/2ce52d104921364729df909c03f52ae7e2085f82\"\u003e\u003ccode\u003e2ce52d1\u003c/code\u003e\u003c/a\u003e Update docs for 10.8.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/more-itertools/more-itertools/commit/eae915618a81fa1263484630c892408fc5670d5a\"\u003e\u003ccode\u003eeae9156\u003c/code\u003e\u003c/a\u003e Bump version: 10.7.0 → 10.8.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/more-itertools/more-itertools/commit/a80f1c56f513a2758445372f263efae6f7337561\"\u003e\u003ccode\u003ea80f1c5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/issues/1068\"\u003e#1068\u003c/a\u003e from rhettinger/cleanup_tail\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/more-itertools/more-itertools/commit/57015894e4f043f33b98d5565b720054e926bc14\"\u003e\u003ccode\u003e5701589\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/issues/1067\"\u003e#1067\u003c/a\u003e from rhettinger/reshape_beautification\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/more-itertools/more-itertools/commit/58e0331c4e542ea950aa0e55bfecd2eeb9e641d8\"\u003e\u003ccode\u003e58e0331\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/issues/1069\"\u003e#1069\u003c/a\u003e from rhettinger/derangements_doc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/more-itertools/more-itertools/commit/9a3d7e31e6956446453ee0a9224b842bf21e3022\"\u003e\u003ccode\u003e9a3d7e3\u003c/code\u003e\u003c/a\u003e Clarify how derangements treats duplicate inputs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/more-itertools/more-itertools/commit/c509b1434ebe5201a6f7298d7495da5914dd88d4\"\u003e\u003ccode\u003ec509b14\u003c/code\u003e\u003c/a\u003e Clean-up tail().  Prefer try/except over the Sized ABC.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/more-itertools/more-itertools/compare/v10.5.0...v10.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `nh3` from 0.2.20 to 0.3.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/messense/nh3/releases\"\u003enh3's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.3.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade GitHub Actions by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/94\"\u003emessense/nh3#94\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGitHub Actions: Stop reinstalling Rust on windows-11-arm by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/95\"\u003emessense/nh3#95\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd README reference in pyproject.toml by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/97\"\u003emessense/nh3#97\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/messense/nh3/pull/96\"\u003emessense/nh3#96\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuild wheels for Python 3.14 free-threaded by \u003ca href=\"https://github.com/messense\"\u003e\u003ccode\u003e@​messense\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/100\"\u003emessense/nh3#100\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/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/94\"\u003emessense/nh3#94\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/messense/nh3/compare/v0.3.1...v0.3.2\"\u003e...\n\n_Description has been truncated_","html_url":"https://github.com/thesunnysinha/vm_tool/pull/4","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/thesunnysinha%2Fvm_tool/issues/4","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/4/packages"},{"uuid":"3851959999","node_id":"PR_kwDORAhFZs6_K0k5","number":1,"state":"open","title":"Bump the all-deps group in /Data/Python/Constraints with 81 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-24T20:06:48.000Z","updated_at":"2026-01-31T04:01:14.540Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"all-deps","update_count":81,"packages":[{"name":"aiofiles","old_version":"24.1.0","new_version":"25.1.0","repository_url":"https://github.com/Tinche/aiofiles"},{"name":"aiosqlite","old_version":"0.20.0","new_version":"0.22.1","repository_url":"https://github.com/omnilib/aiosqlite"},{"name":"antlr4-python3-runtime","old_version":"4.13.1","new_version":"4.13.2"},{"name":"asyncua","old_version":"1.1.5","new_version":"1.1.8","repository_url":"https://github.com/FreeOpcUa/opcua-asyncio"},{"name":"atomicwrites","old_version":"1.4.0","new_version":"1.4.1","repository_url":"https://github.com/untitaker/python-atomicwrites"},{"name":"autobahn","old_version":"21.3.1","new_version":"25.12.2","repository_url":"https://github.com/crossbario/autobahn-python"},{"name":"awkward","old_version":"2.6.10","new_version":"2.8.11","repository_url":"https://github.com/scikit-hep/awkward-1.0"},{"name":"awkward-cpp","old_version":"40","new_version":"51","repository_url":"https://github.com/scikit-hep/awkward-1.0"},{"name":"blinker","old_version":"1.8.2","new_version":"1.9.0","repository_url":"https://github.com/pallets-eco/blinker"},{"name":"certifi","old_version":"2025.11.12","new_version":"2026.1.4","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"click","old_version":"8.1.7","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"comtypes","old_version":"1.4.12","new_version":"1.4.15","repository_url":"https://github.com/enthought/comtypes"},{"name":"configparser","old_version":"7.1.0","new_version":"7.2.0","repository_url":"https://github.com/jaraco/configparser"},{"name":"contourpy","old_version":"1.1.1","new_version":"1.3.3","repository_url":"https://github.com/contourpy/contourpy"},{"name":"cpylog","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/SteveDoyle2/cpylog"},{"name":"docutils","old_version":"0.20.1","new_version":"0.22.4","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"ezdxf","old_version":"1.1.4","new_version":"1.4.3","repository_url":"https://github.com/mozman/ezdxf"},{"name":"fonttools","old_version":"4.57.0","new_version":"4.61.1","repository_url":"https://github.com/fonttools/fonttools"},{"name":"fsspec","old_version":"2025.3.0","new_version":"2026.1.0","repository_url":"https://github.com/fsspec/filesystem_spec"},{"name":"geomdl","old_version":"5.3.1","new_version":"5.4.0","repository_url":"https://github.com/orbingol/NURBS-Python"},{"name":"ijson","old_version":"3.3.0","new_version":"3.4.0.post0","repository_url":"https://github.com/ICRAR/ijson"},{"name":"imageio","old_version":"2.35.1","new_version":"2.37.2","repository_url":"https://github.com/imageio/imageio"},{"name":"importlib-metadata","old_version":"8.5.0","new_version":"8.7.1","repository_url":"https://github.com/python/importlib_metadata"},{"name":"importlib-resources","old_version":"6.4.5","new_version":"6.5.2","repository_url":"https://github.com/python/importlib_resources"},{"name":"joblib","old_version":"1.4.2","new_version":"1.5.3","repository_url":"https://github.com/joblib/joblib"},{"name":"kiwisolver","old_version":"1.4.7","new_version":"1.4.9","repository_url":"https://github.com/nucleic/kiwi"},{"name":"ladybug-comfort","old_version":"0.18.96","new_version":"0.18.97","repository_url":"https://github.com/ladybug-tools/ladybug-comfort"},{"name":"ladybug-core","old_version":"0.44.29","new_version":"0.44.30","repository_url":"https://github.com/ladybug-tools/ladybug"},{"name":"llvmlite","old_version":"0.41.1","new_version":"0.46.0","repository_url":"https://github.com/numba/llvmlite"},{"name":"markdown","old_version":"3.7","new_version":"3.10.1","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"markdown-it-py","old_version":"3.0.0","new_version":"4.0.0","repository_url":"https://github.com/executablebooks/markdown-it-py"},{"name":"matplotlib","old_version":"3.7.5","new_version":"3.10.8","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"msgpack","old_version":"1.1.1","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"networkx","old_version":"3.1","new_version":"3.6.1","repository_url":"https://github.com/networkx/networkx"},{"name":"numba","old_version":"0.58.1","new_version":"0.63.1","repository_url":"https://github.com/numba/numba"},{"name":"numpy","old_version":"1.24.4","new_version":"2.4.1","repository_url":"https://github.com/numpy/numpy"},{"name":"openstudio","old_version":"3.10.0","new_version":"3.11.0","repository_url":"https://github.com/NREL/OpenStudio"},{"name":"packaging","old_version":"25.0","new_version":"26.0","repository_url":"https://github.com/pypa/packaging"},{"name":"pandas","old_version":"2.0.3","new_version":"3.0.0","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"pillow","old_version":"10.4.0","new_version":"12.1.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.3.6","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"posthog","old_version":"4.2.0","new_version":"7.6.0","repository_url":"https://github.com/posthog/posthog-python"},{"name":"protobuf","old_version":"5.29.5","new_version":"6.33.4","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"psutil","old_version":"7.1.3","new_version":"7.2.1","repository_url":"https://github.com/giampaolo/psutil"},{"name":"pycollada","old_version":"0.9.2","new_version":"0.9.3","repository_url":"https://github.com/pycollada/pycollada"},{"name":"pycparser","old_version":"2.23","new_version":"3.0","repository_url":"https://github.com/eliben/pycparser"},{"name":"pyfakefs","old_version":"5.10.2","new_version":"6.0.0","repository_url":"https://github.com/pytest-dev/pyfakefs"},{"name":"pygit2","old_version":"1.13.3","new_version":"1.19.1","repository_url":"https://github.com/libgit2/pygit2"},{"name":"pyjwt","old_version":"2.9.0","new_version":"2.10.1","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"pynastran","old_version":"1.3.4","new_version":"1.4.1","repository_url":"https://github.com/SteveDoyle2/pyNastran"},{"name":"pyopenxr","old_version":"1.1.4601","new_version":"1.1.5301","repository_url":"https://github.com/cmbruns/pyopenxr"},{"name":"pyoptools","old_version":"0.2.1","new_version":"0.3.7"},{"name":"pyparsing","old_version":"3.1.4","new_version":"3.3.2","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"pypresence","old_version":"4.3.0","new_version":"4.6.1","repository_url":"https://github.com/qwertyquerty/pypresence"},{"name":"pyproj","old_version":"3.5.0","new_version":"3.7.2","repository_url":"https://github.com/pyproj4/pyproj"},{"name":"python-docx","old_version":"1.1.2","new_version":"1.2.0","repository_url":"https://github.com/python-openxml/python-docx"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"pyvista","old_version":"0.44.2","new_version":"0.46.5","repository_url":"https://github.com/pyvista/pyvista"},{"name":"pywavelets","old_version":"1.4.1","new_version":"1.9.0","repository_url":"https://github.com/PyWavelets/pywt"},{"name":"requests","old_version":"2.32.4","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"rich","old_version":"14.2.0","new_version":"14.3.0","repository_url":"https://github.com/Textualize/rich"},{"name":"scikit-image","old_version":"0.21.0","new_version":"0.26.0","repository_url":"https://github.com/scikit-image/scikit-image"},{"name":"scikit-learn","old_version":"1.3.2","new_version":"1.8.0","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"scipy","old_version":"1.10.1","new_version":"1.17.0","repository_url":"https://github.com/scipy/scipy"},{"name":"sentry-sdk","old_version":"2.48.0","new_version":"2.50.0","repository_url":"https://github.com/getsentry/sentry-python"},{"name":"shapely","old_version":"2.0.7","new_version":"2.1.2","repository_url":"https://github.com/shapely/shapely"},{"name":"soupsieve","old_version":"2.7","new_version":"2.8.3","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"streamdeck","old_version":"0.9.6","new_version":"0.9.8","repository_url":"https://github.com/abcminiuser/python-elgato-streamdeck"},{"name":"sympy","old_version":"1.13.3","new_version":"1.14.0","repository_url":"https://github.com/sympy/sympy"},{"name":"testtools","old_version":"2.7.2","new_version":"2.8.2","repository_url":"https://github.com/testing-cabal/testtools"},{"name":"threadpoolctl","old_version":"3.5.0","new_version":"3.6.0","repository_url":"https://github.com/joblib/threadpoolctl"},{"name":"tifffile","old_version":"2023.7.10","new_version":"2026.1.14","repository_url":"https://github.com/cgohlke/tifffile"},{"name":"trimesh","old_version":"4.10.1","new_version":"4.11.1","repository_url":"https://github.com/mikedh/trimesh"},{"name":"txaio","old_version":"23.1.1","new_version":"25.12.2","repository_url":"https://github.com/crossbario/txaio"},{"name":"typing-extensions","old_version":"4.13.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"tzlocal","old_version":"5.2","new_version":"5.3.1","repository_url":"https://github.com/regebro/tzlocal"},{"name":"urllib3","old_version":"2.2.3","new_version":"2.6.3","repository_url":"https://github.com/urllib3/urllib3"},{"name":"vtk","old_version":"9.3.1","new_version":"9.5.2"},{"name":"xarray","old_version":"2023.1.0","new_version":"2025.12.0","repository_url":"https://github.com/pydata/xarray"},{"name":"zipp","old_version":"3.20.2","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"}],"path":"/Data/Python/Constraints","ecosystem":"pip"},"body":"Bumps the all-deps group in /Data/Python/Constraints with 81 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [aiofiles](https://github.com/Tinche/aiofiles) | `24.1.0` | `25.1.0` |\n| [aiosqlite](https://github.com/omnilib/aiosqlite) | `0.20.0` | `0.22.1` |\n| [antlr4-python3-runtime](http://www.antlr.org) | `4.13.1` | `4.13.2` |\n| [asyncua](https://github.com/FreeOpcUa/opcua-asyncio) | `1.1.5` | `1.1.8` |\n| [atomicwrites](https://github.com/untitaker/python-atomicwrites) | `1.4.0` | `1.4.1` |\n| [autobahn](https://github.com/crossbario/autobahn-python) | `21.3.1` | `25.12.2` |\n| [awkward](https://github.com/scikit-hep/awkward-1.0) | `2.6.10` | `2.8.11` |\n| [awkward-cpp](https://github.com/scikit-hep/awkward-1.0) | `40` | `51` |\n| [blinker](https://github.com/pallets-eco/blinker) | `1.8.2` | `1.9.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.11.12` | `2026.1.4` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.1` | `2.0.0` |\n| [click](https://github.com/pallets/click) | `8.1.7` | `8.3.1` |\n| [comtypes](https://github.com/enthought/comtypes) | `1.4.12` | `1.4.15` |\n| [configparser](https://github.com/jaraco/configparser) | `7.1.0` | `7.2.0` |\n| [contourpy](https://github.com/contourpy/contourpy) | `1.1.1` | `1.3.3` |\n| [cpylog](https://github.com/SteveDoyle2/cpylog) | `1.5.0` | `1.6.0` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.20.1` | `0.22.4` |\n| [ezdxf](https://github.com/mozman/ezdxf) | `1.1.4` | `1.4.3` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.57.0` | `4.61.1` |\n| [fsspec](https://github.com/fsspec/filesystem_spec) | `2025.3.0` | `2026.1.0` |\n| [geomdl](https://github.com/orbingol/NURBS-Python) | `5.3.1` | `5.4.0` |\n| [ijson](https://github.com/ICRAR/ijson) | `3.3.0` | `3.4.0.post0` |\n| [imageio](https://github.com/imageio/imageio) | `2.35.1` | `2.37.2` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `8.5.0` | `8.7.1` |\n| [importlib-resources](https://github.com/python/importlib_resources) | `6.4.5` | `6.5.2` |\n| [joblib](https://github.com/joblib/joblib) | `1.4.2` | `1.5.3` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.4.7` | `1.4.9` |\n| [ladybug-comfort](https://github.com/ladybug-tools/ladybug-comfort) | `0.18.96` | `0.18.97` |\n| [ladybug-core](https://github.com/ladybug-tools/ladybug) | `0.44.29` | `0.44.30` |\n| [llvmlite](https://github.com/numba/llvmlite) | `0.41.1` | `0.46.0` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.7` | `3.10.1` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `3.0.0` | `4.0.0` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.7.5` | `3.10.8` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.1` | `1.1.2` |\n| [networkx](https://github.com/networkx/networkx) | `3.1` | `3.6.1` |\n| [numba](https://github.com/numba/numba) | `0.58.1` | `0.63.1` |\n| [numpy](https://github.com/numpy/numpy) | `1.24.4` | `2.4.1` |\n| [openstudio](https://github.com/NREL/OpenStudio) | `3.10.0` | `3.11.0` |\n| [packaging](https://github.com/pypa/packaging) | `25.0` | `26.0` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.0.3` | `3.0.0` |\n| [pillow](https://github.com/python-pillow/Pillow) | `10.4.0` | `12.1.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.3.6` | `4.5.1` |\n| [posthog](https://github.com/posthog/posthog-python) | `4.2.0` | `7.6.0` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.5` | `6.33.4` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.1.3` | `7.2.1` |\n| [pycollada](https://github.com/pycollada/pycollada) | `0.9.2` | `0.9.3` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.23` | `3.0` |\n| [pyfakefs](https://github.com/pytest-dev/pyfakefs) | `5.10.2` | `6.0.0` |\n| [pygit2](https://github.com/libgit2/pygit2) | `1.13.3` | `1.19.1` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.9.0` | `2.10.1` |\n| [pynastran](https://github.com/SteveDoyle2/pyNastran) | `1.3.4` | `1.4.1` |\n| [pyopenxr](https://github.com/cmbruns/pyopenxr) | `1.1.4601` | `1.1.5301` |\n| pyoptools | `0.2.1` | `0.3.7` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.1.4` | `3.3.2` |\n| [pypresence](https://github.com/qwertyquerty/pypresence) | `4.3.0` | `4.6.1` |\n| [pyproj](https://github.com/pyproj4/pyproj) | `3.5.0` | `3.7.2` |\n| [python-docx](https://github.com/python-openxml/python-docx) | `1.1.2` | `1.2.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [pyvista](https://github.com/pyvista/pyvista) | `0.44.2` | `0.46.5` |\n| [pywavelets](https://github.com/PyWavelets/pywt) | `1.4.1` | `1.9.0` |\n| [requests](https://github.com/psf/requests) | `2.32.4` | `2.32.5` |\n| [rich](https://github.com/Textualize/rich) | `14.2.0` | `14.3.0` |\n| [scikit-image](https://github.com/scikit-image/scikit-image) | `0.21.0` | `0.26.0` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.3.2` | `1.8.0` |\n| [scipy](https://github.com/scipy/scipy) | `1.10.1` | `1.17.0` |\n| [sentry-sdk](https://github.com/getsentry/sentry-python) | `2.48.0` | `2.50.0` |\n| [shapely](https://github.com/shapely/shapely) | `2.0.7` | `2.1.2` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.8.3` |\n| [streamdeck](https://github.com/abcminiuser/python-elgato-streamdeck) | `0.9.6` | `0.9.8` |\n| [sympy](https://github.com/sympy/sympy) | `1.13.3` | `1.14.0` |\n| [testtools](https://github.com/testing-cabal/testtools) | `2.7.2` | `2.8.2` |\n| [threadpoolctl](https://github.com/joblib/threadpoolctl) | `3.5.0` | `3.6.0` |\n| [tifffile](https://github.com/cgohlke/tifffile) | `2023.7.10` | `2026.1.14` |\n| [trimesh](https://github.com/mikedh/trimesh) | `4.10.1` | `4.11.1` |\n| [txaio](https://github.com/crossbario/txaio) | `23.1.1` | `25.12.2` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.2` | `4.15.0` |\n| [tzlocal](https://github.com/regebro/tzlocal) | `5.2` | `5.3.1` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.2.3` | `2.6.3` |\n| [vtk](https://vtk.org) | `9.3.1` | `9.5.2` |\n| [xarray](https://github.com/pydata/xarray) | `2023.1.0` | `2025.12.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.20.2` | `3.23.0` |\n\nUpdates `aiofiles` from 24.1.0 to 25.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Tinche/aiofiles/releases\"\u003eaiofiles's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev25.1.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSwitch to \u003ca href=\"https://docs.astral.sh/uv/\"\u003euv\u003c/a\u003e + add Python v3.14 support.  (\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eruff\u003c/code\u003e formatter and linter. \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/216\"\u003e#216\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8 support. If you require it, use version 24.1.0. \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/204\"\u003e#204\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/danielsmyers\"\u003e\u003ccode\u003e@​danielsmyers\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/185\"\u003eTinche/aiofiles#185\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stankudrow\"\u003e\u003ccode\u003e@​stankudrow\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/192\"\u003eTinche/aiofiles#192\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/waketzheng\"\u003e\u003ccode\u003e@​waketzheng\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/221\"\u003eTinche/aiofiles#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/Tinche/aiofiles/compare/v24.1.0...v25.1.0\"\u003ehttps://github.com/Tinche/aiofiles/compare/v24.1.0...v25.1.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Tinche/aiofiles/blob/main/CHANGELOG.md\"\u003eaiofiles's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e25.1.0 (2025-10-09)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSwitch to \u003ca href=\"https://docs.astral.sh/uv/\"\u003euv\u003c/a\u003e + add Python v3.14 support.\n(\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eruff\u003c/code\u003e formatter and linter.\n\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/216\"\u003e#216\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8 support. If you require it, use version 24.1.0.\n\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/204\"\u003e#204\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/Tinche/aiofiles/commit/348f5ef6561c2b2c8a7497bd10487eab4102332f\"\u003e\u003ccode\u003e348f5ef\u003c/code\u003e\u003c/a\u003e v25.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/5e1bb8f12b09bce440cc9d1e28387d239cbc2577\"\u003e\u003ccode\u003e5e1bb8f\u003c/code\u003e\u003c/a\u003e docs: update readme to use ruff badge (\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/issues/221\"\u003e#221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/6fdc25c7812d6738ccf51c5e7d4cd68500053a52\"\u003e\u003ccode\u003e6fdc25c\u003c/code\u003e\u003c/a\u003e Move to uv. (\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/issues/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/1989132423dc300c61e22434abd02725e922ddeb\"\u003e\u003ccode\u003e1989132\u003c/code\u003e\u003c/a\u003e set 'function' as a default fixture loop scope value\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/8986452a1b28b109903078f8e9a805ec01e248a6\"\u003e\u003ccode\u003e8986452\u003c/code\u003e\u003c/a\u003e add the 'asyncio_default_fixture_loop_scope=session' option\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/ccab1ff77640c59b353046cb528c25ffa11caa73\"\u003e\u003ccode\u003eccab1ff\u003c/code\u003e\u003c/a\u003e update pytest-asyncio==1.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/8727c96f5be46235af412a9fe504ba7c149df7f3\"\u003e\u003ccode\u003e8727c96\u003c/code\u003e\u003c/a\u003e add PR \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/issues/216\"\u003e#216\u003c/a\u003e into the CHANGELOG\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/a9388e5f8de9142c3e920917775e741bbf9f73b2\"\u003e\u003ccode\u003ea9388e5\u003c/code\u003e\u003c/a\u003e add TID and ignore TID252\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/760366489aed1fb041ef35652e2babb1870973d0\"\u003e\u003ccode\u003e7603664\u003c/code\u003e\u003c/a\u003e remove [ruff].exclude keyval\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/7c49a5c5f2520233198487145423a7842805d740\"\u003e\u003ccode\u003e7c49a5c\u003c/code\u003e\u003c/a\u003e add final newlines\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Tinche/aiofiles/compare/v24.1.0...v25.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `aiosqlite` from 0.20.0 to 0.22.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/omnilib/aiosqlite/blob/main/CHANGELOG.md\"\u003eaiosqlite's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.22.1\u003c/h2\u003e\n\u003cp\u003eBug fix release\u003c/p\u003e\n\u003cp\u003eNOTE: Starting with \u003ccode\u003ev0.22.0\u003c/code\u003e, the \u003ccode\u003eaiosqlite.Connection\u003c/code\u003e object no longer\ninherits from \u003ccode\u003ethreading.Thread\u003c/code\u003e. If not using aiosqlite as a context manager,\nclients must \u003ccode\u003eawait connection.close()\u003c/code\u003e or call \u003ccode\u003econnection.stop()\u003c/code\u003e to ensure\nthe helper thread is completed and terminated correctly. A \u003ccode\u003eResourceWarning\u003c/code\u003e\nwill be emitted for any connection that is garbage collected without being\nclosed or stopped.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded synchronous \u003ccode\u003estop()\u003c/code\u003e method to \u003ccode\u003eaiosqlite.Connection\u003c/code\u003e to enable safe\ncleanup and termination of the background thread without dependence\non having an active event loop (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/370\"\u003e#370\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre lang=\"text\"\u003e\u003ccode\u003e$ git shortlog -s v0.22.0...v0.22.1\n     2\tAmethyst Reese\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003ev0.22.0\u003c/h2\u003e\n\u003cp\u003eFeature release\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003eset_authorizer\u003c/code\u003e query access controls (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/349\"\u003e#349\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWait for transaction queue to complete when closing connection (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/305\"\u003e#305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEmit warning when connection goes out of scope without being closed (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/355\"\u003e#355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove dependency on \u003ccode\u003etyping_extensions\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/365\"\u003e#365\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre lang=\"text\"\u003e\u003ccode\u003e$ git shortlog -s v0.21.0...v0.22.0\n     1\tAlec Berryman\n     1\tAmethyst Reese\n     1\tDavid Andreoletti\n     1\tMarkus Heidelberg\n     1\tbeerpsi\n    19\tdependabot[bot]\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003ev0.21.0\u003c/h2\u003e\n\u003cp\u003eMaintenance release\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix: close connection correctly when BaseException raised in connection (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/317\"\u003e#317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMetadata improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aiosqlite/commit/9b127cecc7de843bf4f343b6da63b641866533fb\"\u003e\u003ccode\u003e9b127ce\u003c/code\u003e\u003c/a\u003e Version bump v0.22.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aiosqlite/commit/5c3f61c1ea49401f2716d8f58d494e76ca766921\"\u003e\u003ccode\u003e5c3f61c\u003c/code\u003e\u003c/a\u003e Improve stop semantics for connections (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/370\"\u003e#370\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aiosqlite/commit/a869d73678adbc14472e4ac2c31f4e706efe8ef3\"\u003e\u003ccode\u003ea869d73\u003c/code\u003e\u003c/a\u003e Version bump v0.22.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aiosqlite/commit/1cd60adcab12347577150a6fa6c7d92b7b86d989\"\u003e\u003ccode\u003e1cd60ad\u003c/code\u003e\u003c/a\u003e Emit warning if connection is deleted before it is closed (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/355\"\u003e#355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aiosqlite/commit/611d7b4f29fc3d7df6c173b2e79b0892e9d249aa\"\u003e\u003ccode\u003e611d7b4\u003c/code\u003e\u003c/a\u003e Add set_authorizer support for fine-grained access control (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/349\"\u003e#349\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aiosqlite/commit/81d00c8f1676851c8634ca98f99e0973083ea75f\"\u003e\u003ccode\u003e81d00c8\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5 to 6 (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/357\"\u003e#357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aiosqlite/commit/7a26722f7e6da6a1ae0febf515b4624794173fcc\"\u003e\u003ccode\u003e7a26722\u003c/code\u003e\u003c/a\u003e Bump coverage[toml] from 7.8.0 to 7.10.7 (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aiosqlite/commit/445754087ec452f888cc152debf79590d8a25d86\"\u003e\u003ccode\u003e4457540\u003c/code\u003e\u003c/a\u003e Bump flake8 from 7.2.0 to 7.3.0 (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/346\"\u003e#346\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aiosqlite/commit/b650dad318ad72e582b7ba1143cc05f270f8ab6b\"\u003e\u003ccode\u003eb650dad\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aiosqlite/commit/065ffdd1291693c5e69d2f3efff17e351d9a0163\"\u003e\u003ccode\u003e065ffdd\u003c/code\u003e\u003c/a\u003e Bump mypy from 1.15.0 to 1.19.0 (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/omnilib/aiosqlite/compare/v0.20.0...v0.22.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `antlr4-python3-runtime` from 4.13.1 to 4.13.2\n\nUpdates `asyncua` from 1.1.5 to 1.1.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/FreeOpcUa/opcua-asyncio/releases\"\u003easyncua's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.1.8\u003c/h2\u003e\n\u003cp\u003efix release script and upload\u003c/p\u003e\n\u003ch2\u003ev1.1.7\u003c/h2\u003e\n\u003cp\u003eorigin/master, origin/HEAD) Replace time.time() with time.monotonic() in asyncua core modules\nb3dd3a17ffdd554807df230b6b34403b8c946c30 make pytest loop scope explicit\na5d72a2dc2a53e21d84c5f3b9091e27ae14e007e finally unfreeze pytest-asyncio\ncc874c30e2154e86a43523006ecb5839412cc157 Feat: Support import/export of struct and enum Field descriptions (\u003ca href=\"https://redirect.github.com/FreeOpcUa/opcua-asyncio/issues/1851\"\u003e#1851\u003c/a\u003e)\n97095b909c141daf9b7d300114f7d5d924444b76 Support pre 1.04 struct length fields for B\u0026amp;R\n5b1091795dc7745efb94acd94381db17274779e8 fix  connecting to new prosys opcua server (\u003ca href=\"https://redirect.github.com/FreeOpcUa/opcua-asyncio/issues/1827\"\u003e#1827\u003c/a\u003e)\n120d2e8c090fe0dbe34fb27a3e2f723dcb83ab8d Fix small bug if imported xml has also the stardard namespace included (\u003ca href=\"https://redirect.github.com/FreeOpcUa/opcua-asyncio/issues/1832\"\u003e#1832\u003c/a\u003e)\nd52d319b7ccf8c52f0e0fce469d06b9a10db0a24 Enhancement: Chunked Build ETree Function (\u003ca href=\"https://redirect.github.com/FreeOpcUa/opcua-asyncio/issues/1833\"\u003e#1833\u003c/a\u003e)\n6b6f4bb220b47b7d6d5612dc4d8daccf386373b0 Fix: Issues with missing namespace URIs when importing and exporting XMLs (\u003ca href=\"https://redirect.github.com/FreeOpcUa/opcua-asyncio/issues/1830\"\u003e#1830\u003c/a\u003e)\nf12f3e19b3e7a3bc3db38add30176eef0cecd300 fix ClientNonce and/or peer_certificate may be None\ne3e02e3cfaca19647aec9348e9452594c6ebd657 Include support for x509 certificate chains in DER format (\u003ca href=\"https://redirect.github.com/FreeOpcUa/opcua-asyncio/issues/1822\"\u003e#1822\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003ev1.1.6\u003c/h2\u003e\n\u003cp\u003eupdate ua adresse space to 1.0.5\nParse ExtensionObjects with missing length (= -1)\nadd: Number in uatypes.py\nAllow setting password to None.\nFix usage of X509IdentityToken\u003c/p\u003e\n\u003cp\u003ebug fixes\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/FreeOpcUa/opcua-asyncio/commit/d8a5de3fe4050f82f39690bb43157a4b8e20c545\"\u003e\u003ccode\u003ed8a5de3\u003c/code\u003e\u003c/a\u003e new release v1.1.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/FreeOpcUa/opcua-asyncio/commit/fe795e16ad86a4aea8ee09905ab080f9a0841748\"\u003e\u003ccode\u003efe795e1\u003c/code\u003e\u003c/a\u003e fix release script\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/FreeOpcUa/opcua-asyncio/commit/cacd6a0c355cd5d5e3af9e1d50c8829b69c2ed88\"\u003e\u003ccode\u003ecacd6a0\u003c/code\u003e\u003c/a\u003e Replace time.time() with time.monotonic() in asyncua core modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/FreeOpcUa/opcua-asyncio/commit/b3dd3a17ffdd554807df230b6b34403b8c946c30\"\u003e\u003ccode\u003eb3dd3a1\u003c/code\u003e\u003c/a\u003e make pytest loop scope explicit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/FreeOpcUa/opcua-asyncio/commit/a5d72a2dc2a53e21d84c5f3b9091e27ae14e007e\"\u003e\u003ccode\u003ea5d72a2\u003c/code\u003e\u003c/a\u003e finally unfreeze pytest-asyncio\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/FreeOpcUa/opcua-asyncio/commit/cc874c30e2154e86a43523006ecb5839412cc157\"\u003e\u003ccode\u003ecc874c3\u003c/code\u003e\u003c/a\u003e Feat: Support import/export of struct and enum Field descriptions (\u003ca href=\"https://redirect.github.com/FreeOpcUa/opcua-asyncio/issues/1851\"\u003e#1851\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/FreeOpcUa/opcua-asyncio/commit/97095b909c141daf9b7d300114f7d5d924444b76\"\u003e\u003ccode\u003e97095b9\u003c/code\u003e\u003c/a\u003e Support pre 1.04 struct length fields for B\u0026amp;R\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/FreeOpcUa/opcua-asyncio/commit/5b1091795dc7745efb94acd94381db17274779e8\"\u003e\u003ccode\u003e5b10917\u003c/code\u003e\u003c/a\u003e fix  connecting to new prosys opcua server (\u003ca href=\"https://redirect.github.com/FreeOpcUa/opcua-asyncio/issues/1827\"\u003e#1827\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/FreeOpcUa/opcua-asyncio/commit/120d2e8c090fe0dbe34fb27a3e2f723dcb83ab8d\"\u003e\u003ccode\u003e120d2e8\u003c/code\u003e\u003c/a\u003e Fix small bug if imported xml has also the stardard namespace included (\u003ca href=\"https://redirect.github.com/FreeOpcUa/opcua-asyncio/issues/1832\"\u003e#1832\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/FreeOpcUa/opcua-asyncio/commit/d52d319b7ccf8c52f0e0fce469d06b9a10db0a24\"\u003e\u003ccode\u003ed52d319\u003c/code\u003e\u003c/a\u003e Enhancement: Chunked Build ETree Function (\u003ca href=\"https://redirect.github.com/FreeOpcUa/opcua-asyncio/issues/1833\"\u003e#1833\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/FreeOpcUa/opcua-asyncio/compare/v1.1.5...v1.1.8\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `atomicwrites` from 1.4.0 to 1.4.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/untitaker/python-atomicwrites/commit/e05d8c985a10176ad43eefb9c4bfa6d7ab176719\"\u003e\u003ccode\u003ee05d8c9\u003c/code\u003e\u003c/a\u003e version 1.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/untitaker/python-atomicwrites/commit/ea90c67ffe5f38cd39d89625022d417da1966522\"\u003e\u003ccode\u003eea90c67\u003c/code\u003e\u003c/a\u003e fix name typo (\u003ca href=\"https://redirect.github.com/untitaker/python-atomicwrites/issues/60\"\u003e#60\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/untitaker/python-atomicwrites/commit/c35cd32eb364d5a4210e64bf38fd1a55f329f316\"\u003e\u003ccode\u003ec35cd32\u003c/code\u003e\u003c/a\u003e Add Power Support ppc64le (\u003ca href=\"https://redirect.github.com/untitaker/python-atomicwrites/issues/57\"\u003e#57\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/untitaker/python-atomicwrites/commit/9f8db6527db8a7d20879756ff83d86009df8c9c5\"\u003e\u003ccode\u003e9f8db65\u003c/code\u003e\u003c/a\u003e wrap line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/untitaker/python-atomicwrites/commit/6699a1fc44bc5cea2ee258cf960a8bd6cc584e21\"\u003e\u003ccode\u003e6699a1f\u003c/code\u003e\u003c/a\u003e migrate to travis-ci.com\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/untitaker/python-atomicwrites/commit/ec443a88e5e6cfbc9b667b1bcfd52e5a0a485f7e\"\u003e\u003ccode\u003eec443a8\u003c/code\u003e\u003c/a\u003e Add documentation for open_kwargs, fix \u003ca href=\"https://redirect.github.com/untitaker/python-atomicwrites/issues/56\"\u003e#56\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/untitaker/python-atomicwrites/commit/de33f6fac140f32a6eff9eb002feaa6dc7182182\"\u003e\u003ccode\u003ede33f6f\u003c/code\u003e\u003c/a\u003e Update README.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/untitaker/python-atomicwrites/commit/d17830127887b97f404f1596ac76d46d730e31f5\"\u003e\u003ccode\u003ed178301\u003c/code\u003e\u003c/a\u003e Update README.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/untitaker/python-atomicwrites/commit/72b5dcc9c5225fc8b54559f0f9c02d3211dfd403\"\u003e\u003ccode\u003e72b5dcc\u003c/code\u003e\u003c/a\u003e Update README.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/untitaker/python-atomicwrites/commit/14e7f1f5407344f215f0b06b5cbe49fe65e90d1d\"\u003e\u003ccode\u003e14e7f1f\u003c/code\u003e\u003c/a\u003e Clean up some FAQ/Frequently asked question repetition in readme (\u003ca href=\"https://redirect.github.com/untitaker/python-atomicwrites/issues/53\"\u003e#53\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/untitaker/python-atomicwrites/compare/1.4.0...1.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `autobahn` from 21.3.1 to 25.12.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/crossbario/autobahn-python/releases\"\u003eautobahn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eDevelopment Build fork-68427734-oberstet_autobahn_python-strict_typing_test-202601141357\u003c/h1\u003e\n\u003cp\u003eDevelopment build from pull request\u003c/p\u003e\n\u003ch2\u003eBuild Information\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eCommit\u003c/strong\u003e: 1c7d45cd\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBuild Date\u003c/strong\u003e: 2026-01-14 14:02:37 UTC\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRelease Type\u003c/strong\u003e: development\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eIncluded Platforms\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eLinux\u003c/strong\u003e: x86_64, ARM64 (manylinux wheels + pure Python fallbacks)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003emacOS\u003c/strong\u003e: Apple Silicon ARM64\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eWindows\u003c/strong\u003e: x86_64\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePython Versions\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eCPython\u003c/strong\u003e: 3.11, 3.12, 3.13, 3.14\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePyPy\u003c/strong\u003e: 3.11\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstallation\u003c/h2\u003e\n\u003cp\u003eDownload the appropriate wheel for your platform:\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003epip install \u0026lt;downloaded-wheel-file\u0026gt;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eArtifact Inventory\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eTotal Wheels\u003c/strong\u003e: 16\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSource Distributions\u003c/strong\u003e: 3\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eDevelopment Build fork-cee77a0c-bblommers_autobahn_python-chore_apply_ruff_up-202601092138\u003c/h1\u003e\n\u003cp\u003eDevelopment build from pull request\u003c/p\u003e\n\u003ch2\u003eBuild Information\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eCommit\u003c/strong\u003e: b006e90e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBuild Date\u003c/strong\u003e: 2026-01-09 21:43:05 UTC\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRelease Type\u003c/strong\u003e: development\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eIncluded Platforms\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eLinux\u003c/strong\u003e: x86_64, ARM64 (manylinux wheels + pure Python fallbacks)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003emacOS\u003c/strong\u003e: Apple Silicon ARM64\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eWindows\u003c/strong\u003e: x86_64\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- 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/crossbario/autobahn-python/blob/master/docs/changelog.rst\"\u003eautobahn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e25.12.2\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBuild \u0026amp; CI/CD\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSynchronize CI/CD, FlatBuffers vendoring, and wamp-ai/wamp-cicd submodules between autobahn-python and zlmdb (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1822\"\u003e#1822\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSwitch manylinux container from 2_34 to 2_28 for x86_64 ISA compatibility (fixes auditwheel flatc bundling)\u003c/li\u003e\n\u003cli\u003eIncrease ARM64 build timeout to 60 minutes for QEMU emulation\u003c/li\u003e\n\u003cli\u003eAdd .github/workflows/README.md documenting CI/CD architecture\u003c/li\u003e\n\u003cli\u003eConsolidate download-github-release and download-release-artifacts recipes\u003c/li\u003e\n\u003cli\u003eAdd checksum verification to artifact download workflow\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFlatBuffers\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSimplify vendored FlatBuffers - use upstream as-is\u003c/li\u003e\n\u003cli\u003eTrack vendored FlatBuffers in git (like zlmdb approach)\u003c/li\u003e\n\u003cli\u003eAdd version() function to vendored FlatBuffers runtime\u003c/li\u003e\n\u003cli\u003eAdd check_zlmdb_flatbuffers_version_in_sync() for cross-project compatibility\u003c/li\u003e\n\u003cli\u003eGenerate .bfbs files for WAMP schemas during wheel build\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eOther\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRename install-flatc to install-flatc-system with prominent warning\u003c/li\u003e\n\u003cli\u003eRemove legacy readthedocs.yml to activate .readthedocs.yaml\u003c/li\u003e\n\u003cli\u003eRemove dev-latest optional dependency (PyPI rejects direct URLs)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e25.12.1\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd vendored Flatbuffers (v25.9.23) (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1761\"\u003e#1761\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd WAMP serdes functional and benchmark testing; WAMP-Flatbuffers; WAMP Serializer Composition (transport/payload) (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1765\"\u003e#1765\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFix\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix 1757 (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1758\"\u003e#1758\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix 1767 (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1769\"\u003e#1769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix 1771 complete (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1774\"\u003e#1774\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eOther\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRel v25.10.2 (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1734\"\u003e#1734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRel v25.10.2 part2 (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1741\"\u003e#1741\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWAMP Flatbuffers serialization test coverage; WAMP message classes refactoring (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1773\"\u003e#1773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eModernization phase 1.1 (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1785\"\u003e#1785\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePhase 1.2: Build Tooling Modernization (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1788\"\u003e#1788\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePhase 1.3: CI/CD Modernization (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1791\"\u003e#1791\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRel25 12 1 (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1794\"\u003e#1794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eModernization phase 1.4 (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1797\"\u003e#1797\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crossbario/autobahn-python/commit/5e4f7e086a074892231377f465099946e8f66ac4\"\u003e\u003ccode\u003e5e4f7e0\u003c/code\u003e\u003c/a\u003e docs: add changelog and release notes for v25.12.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crossbario/autobahn-python/commit/e97953b3cdc42b103075146dabe9eb9f30111c8b\"\u003e\u003ccode\u003ee97953b\u003c/code\u003e\u003c/a\u003e fix: add checksum verification and unify artifact download paths\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crossbario/autobahn-python/commit/05f1193cb2b2cdf71a92edfd2d12965083000a68\"\u003e\u003ccode\u003e05f1193\u003c/code\u003e\u003c/a\u003e fix: download-github-release now downloads all release artifacts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crossbario/autobahn-python/commit/467581c1ef461c97e3c24ece03d61119bbc0e126\"\u003e\u003ccode\u003e467581c\u003c/code\u003e\u003c/a\u003e Synchronize CI/CD, Flatbuffers vendoring and wamp-ai and wamp-cicd Submodules...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crossbario/autobahn-python/commit/60f226c5356feaab3545f7d015c0655924d9444c\"\u003e\u003ccode\u003e60f226c\u003c/code\u003e\u003c/a\u003e build: remove legacy readthedocs.yml to activate .readthedocs.yaml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crossbario/autobahn-python/commit/0dac159de6194c94d4be19b1958bddf627aba856\"\u003e\u003ccode\u003e0dac159\u003c/code\u003e\u003c/a\u003e Add missing docs deps to dev, ignore CFFI build artifacts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crossbario/autobahn-python/commit/e2503361b7c6f7cfd9fd38b5e2093703f3035166\"\u003e\u003ccode\u003ee250336\u003c/code\u003e\u003c/a\u003e Simplify vendored flatbuffers - use upstream as-is\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crossbario/autobahn-python/commit/03e2e157268713e71e10f5322e521349bc485116\"\u003e\u003ccode\u003e03e2e15\u003c/code\u003e\u003c/a\u003e Track vendored flatbuffers in git (like zlmdb approach)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crossbario/autobahn-python/commit/41f7e3c6595b911c482f332f5ea40de7f9c0bc1c\"\u003e\u003ccode\u003e41f7e3c\u003c/code\u003e\u003c/a\u003e Move vendor-flatbuffers logic to external Python script\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crossbario/autobahn-python/commit/8db464888d9c738fb51b78544706c130cc1c47a6\"\u003e\u003ccode\u003e8db4648\u003c/code\u003e\u003c/a\u003e bump package version\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/crossbario/autobahn-python/compare/v21.3.1...v25.12.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `awkward` from 2.6.10 to 2.8.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scikit-hep/awkward-1.0/releases\"\u003eawkward's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.8.11\u003c/h2\u003e\n\u003ch2\u003eNew features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: add behavior cls validation hook by \u003ca href=\"https://github.com/pfackeldey\"\u003e\u003ccode\u003e@​pfackeldey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3710\"\u003escikit-hep/awkward#3710\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add a playground for cccl studies by \u003ca href=\"https://github.com/pfackeldey\"\u003e\u003ccode\u003e@​pfackeldey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3734\"\u003escikit-hep/awkward#3734\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add cuda.compute implementation to CCCL study by \u003ca href=\"https://github.com/shwina\"\u003e\u003ccode\u003e@​shwina\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3748\"\u003escikit-hep/awkward#3748\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: ability to optionally disable the caching of virtual arrays on themselves by \u003ca href=\"https://github.com/ikrommyd\"\u003e\u003ccode\u003e@​ikrommyd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3741\"\u003escikit-hep/awkward#3741\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug-fixes and performance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: string array numpy conversion fails with int32 offsets from parquet by \u003ca href=\"https://github.com/DylanModesitt\"\u003e\u003ccode\u003e@​DylanModesitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3697\"\u003escikit-hep/awkward#3697\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: only check length against empty form in \u003ccode\u003eak.from_buffers\u003c/code\u003e if it is known by \u003ca href=\"https://github.com/ikrommyd\"\u003e\u003ccode\u003e@​ikrommyd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3714\"\u003escikit-hep/awkward#3714\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: typestr respects now limit_cols for .show and \u003cem\u003erepr_mimebundle\u003c/em\u003e by \u003ca href=\"https://github.com/pfackeldey\"\u003e\u003ccode\u003e@​pfackeldey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3712\"\u003escikit-hep/awkward#3712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: \u003ccode\u003eArrayBuilder.__bool__ \u003c/code\u003e raises \u003ccode\u003eTypeError\u003c/code\u003e when builder length is 1 by \u003ca href=\"https://github.com/T90REAL\"\u003e\u003ccode\u003e@​T90REAL\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3738\"\u003escikit-hep/awkward#3738\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: prevent teardown from crashing GPU test suite by \u003ca href=\"https://github.com/ianna\"\u003e\u003ccode\u003e@​ianna\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3747\"\u003escikit-hep/awkward#3747\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: hide awkward.ak_* and awkward.str.akstr_* from 'awkward' and 'awkward.str' module by \u003ca href=\"https://github.com/pfackeldey\"\u003e\u003ccode\u003e@​pfackeldey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3752\"\u003escikit-hep/awkward#3752\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: align multi-level indices before merge in \u003ccode\u003eto_dataframe()\u003c/code\u003e by \u003ca href=\"https://github.com/TaiSakuma\"\u003e\u003ccode\u003e@​TaiSakuma\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3733\"\u003escikit-hep/awkward#3733\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: numba test failures on Python 3.14 by \u003ca href=\"https://github.com/ianna\"\u003e\u003ccode\u003e@​ianna\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3757\"\u003escikit-hep/awkward#3757\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: incorrect passing of \u003ccode\u003eIndex\u003c/code\u003e inside nplike function in \u003ccode\u003eto_IndexedOptionArray64\u003c/code\u003e by \u003ca href=\"https://github.com/ikrommyd\"\u003e\u003ccode\u003e@​ikrommyd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3727\"\u003escikit-hep/awkward#3727\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: weights should not be raised to the power n in the n-th moment calculation by \u003ca href=\"https://github.com/ikrommyd\"\u003e\u003ccode\u003e@​ikrommyd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3729\"\u003escikit-hep/awkward#3729\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: \u003ccode\u003eak.Record\u003c/code\u003e creation from iterable with nested dicts by \u003ca href=\"https://github.com/ikrommyd\"\u003e\u003ccode\u003e@​ikrommyd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3728\"\u003escikit-hep/awkward#3728\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: keep track of buffer key instead of field path for VirtualNDArrays \u0026amp; PlaceholderArrays by \u003ca href=\"https://github.com/pfackeldey\"\u003e\u003ccode\u003e@​pfackeldey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3751\"\u003escikit-hep/awkward#3751\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: typetracer nplike's \u003ccode\u003eall\u003c/code\u003e function leads to infinite recursion for \u003ccode\u003eaxis=None\u003c/code\u003e by \u003ca href=\"https://github.com/ikrommyd\"\u003e\u003ccode\u003e@​ikrommyd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3765\"\u003escikit-hep/awkward#3765\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eOther\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: fix compilation on self-hosted CI and test with multiple versions of CUDA by \u003ca href=\"https://github.com/ariostas\"\u003e\u003ccode\u003e@​ariostas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3704\"\u003escikit-hep/awkward#3704\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: update acknowledgements to include NumFOCUS affiliation by \u003ca href=\"https://github.com/ianna\"\u003e\u003ccode\u003e@​ianna\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3708\"\u003escikit-hep/awkward#3708\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: update pre-commit hooks 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/scikit-hep/awkward/pull/3709\"\u003escikit-hep/awkward#3709\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: pytest log_level is better than log_cli_level by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3719\"\u003escikit-hep/awkward#3719\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: update requirements files for latest possible python versions by \u003ca href=\"https://github.com/ikrommyd\"\u003e\u003ccode\u003e@​ikrommyd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3739\"\u003escikit-hep/awkward#3739\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump the actions group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3744\"\u003escikit-hep/awkward#3744\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: update pre-commit hooks 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/scikit-hep/awkward/pull/3754\"\u003escikit-hep/awkward#3754\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: Remove CUDA 11 support by \u003ca href=\"https://github.com/shwina\"\u003e\u003ccode\u003e@​shwina\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3758\"\u003escikit-hep/awkward#3758\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(ci): use macos-15-intel for x86 wheel building and testing by \u003ca href=\"https://github.com/ariostas\"\u003e\u003ccode\u003e@​ariostas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3720\"\u003escikit-hep/awkward#3720\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: add new versions to version selector by \u003ca href=\"https://github.com/ariostas\"\u003e\u003ccode\u003e@​ariostas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3707\"\u003escikit-hep/awkward#3707\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: 3.14 is supported by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3717\"\u003escikit-hep/awkward#3717\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: add T90REAL as a contributor for code by \u003ca href=\"https://github.com/allcontributors\"\u003e\u003ccode\u003e@​allcontributors\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3742\"\u003escikit-hep/awkward#3742\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Add dependency and version change guidelines by \u003ca href=\"https://github.com/ianna\"\u003e\u003ccode\u003e@​ianna\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3745\"\u003escikit-hep/awkward#3745\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: add shwina as a contributor for code by \u003ca href=\"https://github.com/allcontributors\"\u003e\u003ccode\u003e@​allcontributors\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3759\"\u003escikit-hep/awkward#3759\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Add an example summation reducer using cccl by \u003ca href=\"https://github.com/maxymnaumchyk\"\u003e\u003ccode\u003e@​maxymnaumchyk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3762\"\u003escikit-hep/awkward#3762\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/T90REAL\"\u003e\u003ccode\u003e@​T90REAL\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3738\"\u003escikit-hep/awkward#3738\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shwina\"\u003e\u003ccode\u003e@​shwina\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3748\"\u003escikit-hep/awkward#3748\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/scikit-hep/awkward/compare/v2.8.10...v2.8.11\"\u003ehttps://github.com/scikit-hep/awkward/compare/v2.8.10...v2.8.11\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 2.8.10\u003c/h2\u003e\n\u003ch2\u003eNew features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: preserve field order when replacing existing fields in with_field by \u003ca href=\"https://github.com/DylanModesitt\"\u003e\u003ccode\u003e@​DylanModesitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3681\"\u003escikit-hep/awkward#3681\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add to_/from_safetensors by \u003ca href=\"https://github.com/pfackeldey\"\u003e\u003ccode\u003e@​pfackeldey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3685\"\u003escikit-hep/awkward#3685\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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-hep/awkward/commit/c4a2e57b47f6738670ffc0e4781a3990e7c3ff03\"\u003e\u003ccode\u003ec4a2e57\u003c/code\u003e\u003c/a\u003e awkward 2.8.11 and awkward-cpp 51\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-hep/awkward/commit/60072263c91fd8d5df48b487427319c5a10ae70d\"\u003e\u003ccode\u003e6007226\u003c/code\u003e\u003c/a\u003e awkward 2.8.11 and awkward-cpp 51\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-hep/awkward/commit/0ad8b1e25b0bd493508bade8ab8d79a383a854a0\"\u003e\u003ccode\u003e0ad8b1e\u003c/code\u003e\u003c/a\u003e fix: typetracer nplike's \u003ccode\u003eall\u003c/code\u003e function leads to infinite recursion for `axis...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-hep/awkward/commit/0941b378a8236a660990bd02d2c14e4d6593f28e\"\u003e\u003ccode\u003e0941b37\u003c/code\u003e\u003c/a\u003e fix: keep track of buffer key instead of field path for VirtualNDArrays \u0026amp; Pla...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-hep/awkward/commit/efea08c134963bc37c1013adc4ab320ebeb4d7a3\"\u003e\u003ccode\u003eefea08c\u003c/code\u003e\u003c/a\u003e chore(ci): use macos-15-intel for x86 wheel building and testing (\u003ca href=\"https://redirect.github.com/scikit-hep/awkward-1.0/issues/3720\"\u003e#3720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-hep/awkward/commit/87765b6adb379ba27b0f6b984607c250443b170c\"\u003e\u003ccode\u003e87765b6\u003c/code\u003e\u003c/a\u003e fix: \u003ccode\u003eak.Record\u003c/code\u003e creation from iterable with nested dicts (\u003ca href=\"https://redirect.github.com/scikit-hep/awkward-1.0/issues/3728\"\u003e#3728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-hep/awkward/commit/306274c1fd6028ed549fa0f9a5e47a8bd76e693c\"\u003e\u003ccode\u003e306274c\u003c/code\u003e\u003c/a\u003e fix: weights should not be raised to the power n in the n-th moment calculati...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-hep/awkward/commit/8872e1f4ffd781b07c2a661c235dc2d0a5f5bade\"\u003e\u003ccode\u003e8872e1f\u003c/code\u003e\u003c/a\u003e fix: incorrect passing of \u003ccode\u003eIndex\u003c/code\u003e inside nplike function in `to_IndexedOption...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-hep/awkward/commit/1594a70bb0d39e174996275dd251305a13f83b2b\"\u003e\u003ccode\u003e1594a70\u003c/code\u003e\u003c/a\u003e fix: numba test failures on Python 3.14 (\u003ca href=\"https://redirect.github.com/scikit-hep/awkward-1.0/issues/3757\"\u003e#3757\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-hep/awkward/commit/ca066ddc96dd690d52956535fc7422de71ed92e3\"\u003e\u003ccode\u003eca066dd\u003c/code\u003e\u003c/a\u003e feat: ability to optionally disable the caching of virtual arrays on themselv...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scikit-hep/awkward-1.0/compare/v2.6.10...v2.8.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `awkward-cpp` from 40 to 51\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/scikit-hep/awkward-1.0/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `blinker` from 1.8.2 to 1.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets-eco/blinker/releases\"\u003eblinker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.0\u003c/h2\u003e\n\u003cp\u003eThis is the Blinker 1.9.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecations, or introduce potentially breaking changes. 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\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/blinker/1.9.0/\"\u003ehttps://pypi.org/project/blinker/1.9.0/\u003c/a\u003e\nChanges: \u003ca href=\"https://blinker.readthedocs.io/en/stable/#version-1-9-0\"\u003ehttps://blinker.readthedocs.io/en/stable/#version-1-9-0\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets-eco/blinker/milestone/1?closed=1\"\u003ehttps://github.com/pallets-eco/blinker/milestone/1?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. \u003ca href=\"https://redirect.github.com/pallets-eco/blinker/issues/175\"\u003e#175\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove previously deprecated \u003ccode\u003e__version__\u003c/code\u003e, \u003ccode\u003ereceiver_connected\u003c/code\u003e, \u003ccode\u003eSignal.temporarily_connected_to\u003c/code\u003e and \u003ccode\u003eWeakNamespace\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets-eco/blinker/issues/172\"\u003e#172\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSkip weakref signal cleanup if the interpreter is shutting down. \u003ca href=\"https://redirect.github.com/pallets-eco/blinker/issues/173\"\u003e#173\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-eco/blinker/blob/main/CHANGES.rst\"\u003eblinker's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.9.0\u003c/h2\u003e\n\u003cp\u003eReleased 2024-11-08\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. :pr:\u003ccode\u003e175\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRemove previously deprecated \u003ccode\u003e__version__\u003c/code\u003e, \u003ccode\u003ereceiver_connected\u003c/code\u003e,\n\u003ccode\u003eSignal.temporarily_connected_to\u003c/code\u003e and \u003ccode\u003eWeakNamespace\u003c/code\u003e. :pr:\u003ccode\u003e172\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSkip weakref signal cleanup if the interpreter is shutting down.\n:issue:\u003ccode\u003e173\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-eco/blinker/commit/669f3a027828d19786e708b511277fabcd6b9532\"\u003e\u003ccode\u003e669f3a0\u003c/code\u003e\u003c/a\u003e release version 1.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/blinker/commit/cfe116fa7912d8dcb0deee4907aa63d1efaadf5b\"\u003e\u003ccode\u003ecfe116f\u003c/code\u003e\u003c/a\u003e try disabling attestions on test pypi\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/blinker/commit/16e4bd70a19353d9d7cf47e4df7de54936296377\"\u003e\u003ccode\u003e16e4bd7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pallets-eco/blinker/issues/174\"\u003e#174\u003c/a\u003e from projectgus/bugfix/weakref_disconnect_shutdown\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/blinker/commit/42561fdf065032f5c39aea04d8c3fb4db93f73f3\"\u003e\u003ccode\u003e42561fd\u003c/code\u003e\u003c/a\u003e Fix \u0026quot;Exception ignored\u0026quot; in weakref callback during interpreter shutdown.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/blinker/commit/dcce3e97743494433025e0b68f742f3582b6ba6a\"\u003e\u003ccode\u003edcce3e9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pallets-eco/blinker/issues/175\"\u003e#175\u003c/a\u003e from pallets-eco/drop-python3.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/blinker/commit/efa95eaa080b0d4a8dcfc46ad1f387ea1ddebd97\"\u003e\u003ccode\u003eefa95ea\u003c/code\u003e\u003c/a\u003e drop support for python 3.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/blinker/commit/82305185358d8ce21619ec0f324688a14a89c23b\"\u003e\u003ccode\u003e8230518\u003c/code\u003e\u003c/a\u003e update dev dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/blinker/commit/94f1202f08c6d00a9fe1ecf5c8cba9da84e4b22f\"\u003e\u003ccode\u003e94f1202\u003c/code\u003e\u003c/a\u003e update dev dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/blinker/commit/8c983ecd764e1d113d24522838c2a7312460b7eb\"\u003e\u003ccode\u003e8c983ec\u003c/code\u003e\u003c/a\u003e remove previously deprecated code (\u003ca href=\"https://redirect.github.com/pallets-eco/blinker/issues/172\"\u003e#172\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/blinker/commit/f5915f3bfcd9f9da0caf6cd4858bf68068c52963\"\u003e\u003ccode\u003ef5915f3\u003c/code\u003e\u003c/a\u003e set up pre-commit lite workflow\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets-eco/blinker/compare/1.8.2...1.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2025.11.12 to 2026.1.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\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\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/27ca98ad845ee6d130a88301622c137893f71620\"\u003e\u003ccode\u003e27ca98a\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7.0.9 to 7.0.11 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/56c59a63909cfd3162b37e7bc16956e64df0f737\"\u003e\u003ccode\u003e56c59a6\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.0 to 6.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ae0021cd43a77bfba67d20a041469cdf6996570e\"\u003e\u003ccode\u003eae0021c\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.0.0 to 6.1.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/380\"\u003e#380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddf5d0b5d2a3d55fd92a79f141dbb5e074caf924\"\u003e\u003ccode\u003eddf5d0b\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5.0.1 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.11.12...2026.01.04\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cffi` from 1.17.1 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only) - huge thanks to the folks at Quansight Labs for all the work to get this one sorted!\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.0.0b1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only).\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/6366c01d84e9a78e7e85f12ebe9760ba5d19b6d3\"\u003e\u003ccode\u003e6366c01\u003c/code\u003e\u003c/a\u003e release 2.0.0 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/95c847663aec401e4003927a274e4de9b8595f4f\"\u003e\u003ccode\u003e95c8476\u003c/code\u003e\u003c/a\u003e 2.0.0 post beta backports (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/195cbda66b6be9297ef6d584644e50cfdcca4e8a\"\u003e\u003ccode\u003e195cbda\u003c/code\u003e\u003c/a\u003e Release 2.0.0b1 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b4bbe7940d3f76027534db1aecbae9b61c35221a\"\u003e\u003ccode\u003eb4bbe79\u003c/code\u003e\u003c/a\u003e fix version test to support beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/7ed073de66e713cf791b6fdfa23685c81fdfd6ad\"\u003e\u003ccode\u003e7ed073d\u003c/code\u003e\u003c/a\u003e Add support for the free-threaded build (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/178\"\u003e#178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/67a170dc7972dc9361743690b38da3d963b200ef\"\u003e\u003ccode\u003e67a170d\u003c/code\u003e\u003c/a\u003e Change the license from MIT to MIT-no-attribution, which is the same without ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/92645ec9329feb03e3fa86240b40fe0fc37469d1\"\u003e\u003ccode\u003e92645ec\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support/testing (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/177\"\u003e#177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/2b81170583a898478a6996c9705d8c38ab7f73a1\"\u003e\u003ccode\u003e2b81170\u003c/code\u003e\u003c/a\u003e doc: update test commands in Section Testing/development tips (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/25172b84cf51cf58241f074ccd1efd9c7648cb43\"\u003e\u003ccode\u003e25172b8\u003c/code\u003e\u003c/a\u003e doc: update year (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b57a92c03eb2078a99c900519a37d18b4d52324f\"\u003e\u003ccode\u003eb57a92c\u003c/code\u003e\u003c/a\u003e issue 147: force-compute nested structs before parent structs.  Occurs mainly...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.1.7 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.7...8.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `comtypes` from 1.4.12 to 1.4.15\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/enthought/comtypes/releases\"\u003ecomtypes's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.15\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eTYPE_E_ELEMENTNOTFOUND\u003c/code\u003e HRESULT constant value. By \u003ca href=\"https://github.com/junkmd\"\u003e\u003ccode\u003e@​junkmd\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eEnhance \u003ccode\u003eITypeInfo\u003c/code\u003e testing in \u003ccode\u003etest_typeinfo.py\u003c/code\u003e. By \u003ca href=\"https://github.com/junkmd\"\u003e\u003ccode\u003e@​junkmd\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eImprove type hints for for generated dispmethods and properties. By \u003ca href=\"https://github.com/junkmd\"\u003e\u003ccode\u003e@​junkmd\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eEnhance tests for generated type hints. By \u003ca href=\"https://github.com/junkmd\"\u003e\u003ccode\u003e@​junkmd\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eRemove Internet Explorer dependency from \u003ccode\u003etest_QueryService.py\u003c/code\u003e and \u003ccode\u003etest_casesensitivity.py\u003c/code\u003e. By \u003ca href=\"https://github.com/junkmd\"\u003e\u003ccode\u003e@​junkmd\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eRename \u003ccode\u003etest_ie.py\u003c/code\u003e to \u003ccode\u003etest_eventinterface.py\u003c/code\u003e. By \u003ca href=\"https://github.com/junkmd\"\u003e\u003ccode\u003e@​junkmd\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eSyntaxError\u003c/code\u003e in \u003ccode\u003eDispMethodAnnotator\u003c/code\u003e signature generation. By \u003ca href=\"https://github.com/junkmd\"\u003e\u003ccode\u003e@​junkmd\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eRename \u003ccode\u003etest_msi.py\u003c/code\u003e to \u003ccode\u003etest_puredispatch.py\u003c/code\u003e. By \u003ca href=\"https://github.com/junkmd\"\u003e\u003ccode\u003e@​junkmd\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eRename \u003ccode\u003etest_wmi.py\u003c/code\u003e to \u003ccode\u003etest_variant_outparam.py\u003c/code\u003e. By \u003ca href=\"https://github.com/junk...\n\n_Description has been truncated_","html_url":"https://github.com/FreeCAD/Addons/pull/1","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/FreeCAD%2FAddons/issues/1","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1/packages"},{"uuid":"3835543565","node_id":"PR_kwDOLufxkc6-T3PU","number":151,"state":"open","title":"deps: bump the other-dependencies group with 5 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":4,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-20T21:31:41.000Z","updated_at":"2026-01-21T00:07:21.350Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps: bump","group_name":"other-dependencies","update_count":5,"packages":[{"name":"asttokens","old_version":"3.0.0","new_version":"3.0.1","repository_url":"https://github.com/gristlabs/asttokens"},{"name":"bleach","old_version":"6.2.0","new_version":"6.3.0"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"executing","old_version":"2.1.0","new_version":"2.2.1","repository_url":"https://github.com/alexmojaki/executing"},{"name":"tenacity","old_version":"9.0.0","new_version":"9.1.2","repository_url":"https://github.com/jd/tenacity"}],"path":null,"ecosystem":"pip"},"body":"Bumps the other-dependencies group with 5 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [asttokens](https://github.com/gristlabs/asttokens) | `3.0.0` | `3.0.1` |\n| [bleach[css]](https://github.com/mozilla/bleach) | `6.2.0` | `6.3.0` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.1` | `2.0.0` |\n| [executing](https://github.com/alexmojaki/executing) | `2.1.0` | `2.2.1` |\n| [tenacity](https://github.com/jd/tenacity) | `9.0.0` | `9.1.2` |\n\nUpdates `asttokens` from 3.0.0 to 3.0.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/bdbf396fc0e006912ba82f1137dfd6b2d5aa9af2\"\u003e\u003ccode\u003ebdbf396\u003c/code\u003e\u003c/a\u003e Update mypy; add 3.14 to the CI; drop python 3.8 support (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/167\"\u003e#167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/f859c055e8453650e1987c5aefaaec36582d3a07\"\u003e\u003ccode\u003ef859c05\u003c/code\u003e\u003c/a\u003e Add tests for astroid v2, v3, and v4 to the CI (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/166\"\u003e#166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/84ef059ba28d08816d3d881e363b9ed42bbeae3a\"\u003e\u003ccode\u003e84ef059\u003c/code\u003e\u003c/a\u003e Adapt asttokens for astroid 4.x (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/165\"\u003e#165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/9db9335648659520c7c8453bc39550fa4f95d539\"\u003e\u003ccode\u003e9db9335\u003c/code\u003e\u003c/a\u003e Various links improvements (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3371ebf7f48f6a731d409fffd6ba235e6a95d85b\"\u003e\u003ccode\u003e3371ebf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/161\"\u003e#161\u003c/a\u003e from gristlabs/dependabot/pip/docs/requests-2.32.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3a60115d3efdb01efc8a6442b59fdd0071518e70\"\u003e\u003ccode\u003e3a60115\u003c/code\u003e\u003c/a\u003e Bump requests from 2.32.2 to 2.32.4 in /docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/584b51c6c084455ad4597886657783d1b661ddfa\"\u003e\u003ccode\u003e584b51c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/160\"\u003e#160\u003c/a\u003e from gristlabs/dependabot/pip/docs/urllib3-2.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3e9d703323ce94987bf9e030bd010eae13fa15b4\"\u003e\u003ccode\u003e3e9d703\u003c/code\u003e\u003c/a\u003e Bump urllib3 from 2.2.2 to 2.5.0 in /docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/64d3f7c3637775fef832a9a9cdb78ec02da494e6\"\u003e\u003ccode\u003e64d3f7c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/158\"\u003e#158\u003c/a\u003e from gristlabs/dependabot/pip/docs/jinja2-3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/9b5fb1abfb171cfb1f01c2d996cbd31e9d1f0660\"\u003e\u003ccode\u003e9b5fb1a\u003c/code\u003e\u003c/a\u003e Bump jinja2 from 3.1.4 to 3.1.6 in /docs\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gristlabs/asttokens/compare/v3.0.0...v3.0.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bleach[css]` from 6.2.0 to 6.3.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mozilla/bleach/blob/main/CHANGES\"\u003ebleach[css]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.3.0 (October 27th, 2025)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBackwards incompatible changes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/756\"\u003e#756\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eNone\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/758\"\u003e#758\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix wbr handling. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/488\"\u003e#488\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/mozilla/bleach/commit/5546d5dbce60d08ccb99d981778d74044d646d4e\"\u003e\u003ccode\u003e5546d5d\u003c/code\u003e\u003c/a\u003e chore: prep for 6.3.0 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/88df3ff23fb2a43e174b3fdfe9191ef516de868a\"\u003e\u003ccode\u003e88df3ff\u003c/code\u003e\u003c/a\u003e chore: fix readthedocs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/d8b2fb45b2606515c58787c223d6605c6c70868f\"\u003e\u003ccode\u003ed8b2fb4\u003c/code\u003e\u003c/a\u003e fix: fix wbr handling (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/488\"\u003e#488\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/55e48cedb20bda23940ab34753a1fb378d5d30b9\"\u003e\u003ccode\u003e55e48ce\u003c/code\u003e\u003c/a\u003e chore: add support for Python 3.14 (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/758\"\u003e#758\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/a4d6cddac6e338c3d6f84c755a5fcb32e9e18fba\"\u003e\u003ccode\u003ea4d6cdd\u003c/code\u003e\u003c/a\u003e chore: drop support for Python 3.9 (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/756\"\u003e#756\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/172d92faef543a83c6760c63c32749586cdd564b\"\u003e\u003ccode\u003e172d92f\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.6.0 to 6.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/df88612f2e9daf8f4ee23cf0e29b712d9d9147b6\"\u003e\u003ccode\u003edf88612\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/mozilla/bleach/commit/cbcf6b18d19aeb7777699f9385013d0a04052b68\"\u003e\u003ccode\u003ecbcf6b1\u003c/code\u003e\u003c/a\u003e Bump actions/cache from 4.2.3 to 4.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/d9aa7ef592d57dda56e26ba31d06e1b279c58eca\"\u003e\u003ccode\u003ed9aa7ef\u003c/code\u003e\u003c/a\u003e Switch from dependabot reviewers to CODEOWNERS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/06f0f76cc68112bda3fa101d1730d5ba914d54a1\"\u003e\u003ccode\u003e06f0f76\u003c/code\u003e\u003c/a\u003e Update setuptools, wheel, and twine for devs\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/mozilla/bleach/compare/v6.2.0...v6.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cffi` from 1.17.1 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only) - huge thanks to the folks at Quansight Labs for all the work to get this one sorted!\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.0.0b1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only).\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/6366c01d84e9a78e7e85f12ebe9760ba5d19b6d3\"\u003e\u003ccode\u003e6366c01\u003c/code\u003e\u003c/a\u003e release 2.0.0 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/95c847663aec401e4003927a274e4de9b8595f4f\"\u003e\u003ccode\u003e95c8476\u003c/code\u003e\u003c/a\u003e 2.0.0 post beta backports (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/195cbda66b6be9297ef6d584644e50cfdcca4e8a\"\u003e\u003ccode\u003e195cbda\u003c/code\u003e\u003c/a\u003e Release 2.0.0b1 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b4bbe7940d3f76027534db1aecbae9b61c35221a\"\u003e\u003ccode\u003eb4bbe79\u003c/code\u003e\u003c/a\u003e fix version test to support beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/7ed073de66e713cf791b6fdfa23685c81fdfd6ad\"\u003e\u003ccode\u003e7ed073d\u003c/code\u003e\u003c/a\u003e Add support for the free-threaded build (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/178\"\u003e#178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/67a170dc7972dc9361743690b38da3d963b200ef\"\u003e\u003ccode\u003e67a170d\u003c/code\u003e\u003c/a\u003e Change the license from MIT to MIT-no-attribution, which is the same without ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/92645ec9329feb03e3fa86240b40fe0fc37469d1\"\u003e\u003ccode\u003e92645ec\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support/testing (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/177\"\u003e#177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/2b81170583a898478a6996c9705d8c38ab7f73a1\"\u003e\u003ccode\u003e2b81170\u003c/code\u003e\u003c/a\u003e doc: update test commands in Section Testing/development tips (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/25172b84cf51cf58241f074ccd1efd9c7648cb43\"\u003e\u003ccode\u003e25172b8\u003c/code\u003e\u003c/a\u003e doc: update year (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b57a92c03eb2078a99c900519a37d18b4d52324f\"\u003e\u003ccode\u003eb57a92c\u003c/code\u003e\u003c/a\u003e issue 147: force-compute nested structs before parent structs.  Occurs mainly...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `executing` from 2.1.0 to 2.2.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/bafb305d96572bc8fb668b6564787bbb4fff2809\"\u003e\u003ccode\u003ebafb305\u003c/code\u003e\u003c/a\u003e Add 3.14 to classifiers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/5ed2ba36c2df94c91fefabd919880ffe061dc0f2\"\u003e\u003ccode\u003e5ed2ba3\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/alexmojaki/executing/issues/97\"\u003e#97\u003c/a\u003e from alexmojaki/3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/28095d447af50c49e154de5a27b9423611462f3d\"\u003e\u003ccode\u003e28095d4\u003c/code\u003e\u003c/a\u003e refactor: review changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/bb09dc677da7988a2c9555878b3727afa995b2c0\"\u003e\u003ccode\u003ebb09dc6\u003c/code\u003e\u003c/a\u003e refactor: some cleanup\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/dabc70ef5cc9a45eb57432822cdcf674af2e1db8\"\u003e\u003ccode\u003edabc70e\u003c/code\u003e\u003c/a\u003e fix: inst.argval can be a tuple for sometimes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/0772f918c432d6451594bcb6ffccba62e32e794c\"\u003e\u003ccode\u003e0772f91\u003c/code\u003e\u003c/a\u003e fix: removed comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/bacc5b699405e6f27d882dd2a71bb0ec30167f37\"\u003e\u003ccode\u003ebacc5b6\u003c/code\u003e\u003c/a\u003e fix: moved verification for CALL_INTRINSIC_2 back to 3.13\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/ec090751a1645cd14bfcb20a79b02371ffd6172b\"\u003e\u003ccode\u003eec09075\u003c/code\u003e\u003c/a\u003e test: added sample_results for 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/9405fed0769af3ee22dd4f433249f6494688638e\"\u003e\u003ccode\u003e9405fed\u003c/code\u003e\u003c/a\u003e fix: handle synthetic code to store annotation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/f09e4cd194aa3480c12a9f5afab3524d2a7222f2\"\u003e\u003ccode\u003ef09e4cd\u003c/code\u003e\u003c/a\u003e fix: TypeVar defaults\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/alexmojaki/executing/compare/v2.1.0...v2.2.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tenacity` from 9.0.0 to 9.1.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jd/tenacity/releases\"\u003etenacity's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.1.2\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/jd/tenacity/compare/9.1.1...9.1.2\"\u003ehttps://github.com/jd/tenacity/compare/9.1.1...9.1.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e9.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eTest with Python 3.13 by \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/480\"\u003ejd/tenacity#480\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: remove Python 3.8 support by \u003ca href=\"https://github.com/jd\"\u003e\u003ccode\u003e@​jd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/515\"\u003ejd/tenacity#515\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: return \u0026quot;Self\u0026quot; from \u0026quot;BaseRetrying.copy\u0026quot; by \u003ca href=\"https://github.com/ThirVondukr\"\u003e\u003ccode\u003e@​ThirVondukr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/518\"\u003ejd/tenacity#518\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: upload on PyPI using trusted publishing by \u003ca href=\"https://github.com/jd\"\u003e\u003ccode\u003e@​jd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/520\"\u003ejd/tenacity#520\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd re.Pattern to allowed match types by \u003ca href=\"https://github.com/robertschweizer\"\u003e\u003ccode\u003e@​robertschweizer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/497\"\u003ejd/tenacity#497\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/Young-Lord\"\u003e\u003ccode\u003e@​Young-Lord\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/491\"\u003ejd/tenacity#491\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/480\"\u003ejd/tenacity#480\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ThirVondukr\"\u003e\u003ccode\u003e@​ThirVondukr\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/518\"\u003ejd/tenacity#518\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robertschweizer\"\u003e\u003ccode\u003e@​robertschweizer\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/497\"\u003ejd/tenacity#497\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/jd/tenacity/compare/9.0.0...9.1.0\"\u003ehttps://github.com/jd/tenacity/compare/9.0.0...9.1.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/jd/tenacity/commit/62787c34bb052d28d814bc07e5c3caed22cd73a2\"\u003e\u003ccode\u003e62787c3\u003c/code\u003e\u003c/a\u003e ci: fix build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jd/tenacity/commit/2b173a1039009773dbf5d377f95cc8aabe83bf58\"\u003e\u003ccode\u003e2b173a1\u003c/code\u003e\u003c/a\u003e ci: fix typo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jd/tenacity/commit/a44271f3d7d917d81e432ce7f85d448b437b4e41\"\u003e\u003ccode\u003ea44271f\u003c/code\u003e\u003c/a\u003e fix: Add re.Pattern to allowed match types (\u003ca href=\"https://redirect.github.com/jd/tenacity/issues/497\"\u003e#497\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jd/tenacity/commit/b4dfa3fe88707f42561d11dea4bca06c45fb5523\"\u003e\u003ccode\u003eb4dfa3f\u003c/code\u003e\u003c/a\u003e chore(deps): bump actions/setup-python in the github-actions group (\u003ca href=\"https://redirect.github.com/jd/tenacity/issues/522\"\u003e#522\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jd/tenacity/commit/f9a879c531ff4be938309aae6c69f46fc5b732d8\"\u003e\u003ccode\u003ef9a879c\u003c/code\u003e\u003c/a\u003e ci: upload on PyPI using trusted publishing (\u003ca href=\"https://redirect.github.com/jd/tenacity/issues/520\"\u003e#520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jd/tenacity/commit/bfbf17314612b8546a650c4b56d6c6438e6857df\"\u003e\u003ccode\u003ebfbf173\u003c/code\u003e\u003c/a\u003e fix: return \u0026quot;Self\u0026quot; from \u0026quot;BaseRetrying.copy\u0026quot; (\u003ca href=\"https://redirect.github.com/jd/tenacity/issues/518\"\u003e#518\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jd/tenacity/commit/212c47c05fec89c3aca8c4fec0b426c9f33036e8\"\u003e\u003ccode\u003e212c47c\u003c/code\u003e\u003c/a\u003e ci: update ubuntu image (\u003ca href=\"https://redirect.github.com/jd/tenacity/issues/516\"\u003e#516\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jd/tenacity/commit/3e2c18175944c1896a1065809db15378d545cdce\"\u003e\u003ccode\u003e3e2c181\u003c/code\u003e\u003c/a\u003e ci: remove Python 3.8 support (\u003ca href=\"https://redirect.github.com/jd/tenacity/issues/515\"\u003e#515\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jd/tenacity/commit/320335902409ed2e09f21cb83431de7ee7a0c2a6\"\u003e\u003ccode\u003e3203359\u003c/code\u003e\u003c/a\u003e Test with Python 3.13 (\u003ca href=\"https://redirect.github.com/jd/tenacity/issues/480\"\u003e#480\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jd/tenacity/commit/72db2740cab8248d2d9b7b9a0716cb1ea9867051\"\u003e\u003ccode\u003e72db274\u003c/code\u003e\u003c/a\u003e chore(deps): bump actions/setup-python in the github-actions group (\u003ca href=\"https://redirect.github.com/jd/tenacity/issues/513\"\u003e#513\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jd/tenacity/compare/9.0.0...9.1.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot 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 \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/OpenMS/pyopenms_viz/pull/151","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenMS%2Fpyopenms_viz/issues/151","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/151/packages"},{"uuid":"3802743037","node_id":"PR_kwDOMftbFc68njza","number":188,"state":"closed","title":"Bump the py-updates 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-01-19T04:50:43.000Z","author_association":null,"state_reason":null,"created_at":"2026-01-12T04:41:08.000Z","updated_at":"2026-01-19T04:50:44.000Z","time_to_close":605375,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"py-updates","update_count":79,"packages":[{"name":"awscli","old_version":"1.40.17","new_version":"1.44.15","repository_url":"https://github.com/aws/aws-cli"},{"name":"polars","old_version":"1.28.1","new_version":"1.37.0","repository_url":"https://github.com/pola-rs/polars"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"biopython","old_version":"1.85","new_version":"1.86","repository_url":"https://github.com/biopython/biopython"},{"name":"boto3","old_version":"1.38.18","new_version":"1.42.25","repository_url":"https://github.com/boto/boto3"},{"name":"botocore","old_version":"1.38.18","new_version":"1.42.25","repository_url":"https://github.com/boto/botocore"},{"name":"certifi","old_version":"2025.4.26","new_version":"2026.1.4","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":"cloudpathlib","old_version":"0.21.1","new_version":"0.23.0","repository_url":"https://github.com/drivendataorg/cloudpathlib"},{"name":"docutils","old_version":"0.19","new_version":"0.22.4","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"jellyfish","old_version":"1.2.0","new_version":"1.2.1"},{"name":"markdown-it-py","old_version":"3.0.0","new_version":"4.0.0","repository_url":"https://github.com/executablebooks/markdown-it-py"},{"name":"numpy","old_version":"2.2.5","new_version":"2.4.1","repository_url":"https://github.com/numpy/numpy"},{"name":"pandas","old_version":"2.2.3","new_version":"2.3.3","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"pyarrow","old_version":"20.0.0","new_version":"22.0.0","repository_url":"https://github.com/apache/arrow"},{"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":"rich","old_version":"14.0.0","new_version":"14.2.0","repository_url":"https://github.com/Textualize/rich"},{"name":"rsa","old_version":"4.7.2","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"s3transfer","old_version":"0.12.0","new_version":"0.16.0","repository_url":"https://github.com/boto/s3transfer"},{"name":"structlog","old_version":"25.3.0","new_version":"25.5.0","repository_url":"https://github.com/hynek/structlog"},{"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.3","repository_url":"https://github.com/urllib3/urllib3"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"boto3-stubs","old_version":"1.38.18","new_version":"1.42.25","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"botocore-stubs","old_version":"1.38.18","new_version":"1.42.25","repository_url":"https://github.com/youtype/botocore-stubs"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"coverage","old_version":"7.8.0","new_version":"7.13.1","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cryptography","old_version":"44.0.3","new_version":"46.0.3","repository_url":"https://github.com/pyca/cryptography"},{"name":"freezegun","old_version":"1.5.1","new_version":"1.5.5","repository_url":"https://github.com/spulec/freezegun"},{"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":"moto","old_version":"5.1.4","new_version":"5.1.19","repository_url":"https://github.com/getmoto/moto"},{"name":"mypy","old_version":"1.15.0","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"mypy-boto3-s3","old_version":"1.38.0","new_version":"1.42.21","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"pycparser","old_version":"2.22","new_version":"2.23","repository_url":"https://github.com/eliben/pycparser"},{"name":"pytest","old_version":"8.3.5","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-mock","old_version":"3.14.0","new_version":"3.15.1","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"responses","old_version":"0.25.7","new_version":"0.25.8","repository_url":"https://github.com/getsentry/responses"},{"name":"ruff","old_version":"0.11.10","new_version":"0.14.11","repository_url":"https://github.com/astral-sh/ruff"},{"name":"types-awscrt","old_version":"0.27.2","new_version":"0.30.0","repository_url":"https://github.com/youtype/types-awscrt"},{"name":"types-requests","old_version":"2.32.0.20250515","new_version":"2.32.4.20260107","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-s3transfer","old_version":"0.12.0","new_version":"0.16.0","repository_url":"https://github.com/youtype/types-s3transfer"},{"name":"typing-extensions","old_version":"4.13.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.5","repository_url":"https://github.com/pallets/werkzeug"},{"name":"xmltodict","old_version":"0.14.2","new_version":"1.0.2","repository_url":"https://github.com/martinblech/xmltodict"},{"name":"alabaster","old_version":"0.7.16","new_version":"1.0.0","repository_url":"https://github.com/sphinx-doc/alabaster"},{"name":"anyio","old_version":"4.9.0","new_version":"4.12.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.14.3"},{"name":"cachecontrol","old_version":"0.14.3","new_version":"0.14.4","repository_url":"https://github.com/psf/cachecontrol"},{"name":"click","old_version":"8.2.0","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"contourpy","old_version":"1.3.2","new_version":"1.3.3","repository_url":"https://github.com/contourpy/contourpy"},{"name":"filelock","old_version":"3.18.0","new_version":"3.20.3","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"fonttools","old_version":"4.58.0","new_version":"4.61.1","repository_url":"https://github.com/fonttools/fonttools"},{"name":"furo","old_version":"2024.8.6","new_version":"2025.12.19","repository_url":"https://github.com/pradyunsg/furo"},{"name":"kiwisolver","old_version":"1.4.8","new_version":"1.4.9","repository_url":"https://github.com/nucleic/kiwi"},{"name":"matplotlib","old_version":"3.10.3","new_version":"3.10.8","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"mdit-py-plugins","old_version":"0.4.2","new_version":"0.5.0","repository_url":"https://github.com/executablebooks/mdit-py-plugins"},{"name":"more-itertools","old_version":"10.7.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"msgpack","old_version":"1.1.0","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"pillow","old_version":"11.2.1","new_version":"12.1.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.3.8","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pyparsing","old_version":"3.2.3","new_version":"3.3.1","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"ruamel-yaml","old_version":"0.18.10","new_version":"0.19.1"},{"name":"ruamel-yaml-clib","old_version":"0.2.12","new_version":"0.2.15"},{"name":"soupsieve","old_version":"2.7","new_version":"2.8.1","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"sphinx","old_version":"7.3.7","new_version":"9.0.4","repository_url":"https://github.com/sphinx-doc/sphinx"},{"name":"sphinx-autobuild","old_version":"2024.10.3","new_version":"2025.8.25","repository_url":"https://github.com/sphinx-doc/sphinx-autobuild"},{"name":"sphinx-autodoc-typehints","old_version":"2.3.0","new_version":"3.6.1","repository_url":"https://github.com/tox-dev/sphinx-autodoc-typehints"},{"name":"sphinx-jinja2-compat","old_version":"0.3.0","new_version":"0.4.1","repository_url":"https://github.com/sphinx-toolbox/sphinx-jinja2-compat"},{"name":"sphinx-prompt","old_version":"1.8.0","new_version":"1.10.2","repository_url":"https://github.com/sbrunner/sphinx-prompt"},{"name":"sphinx-tabs","old_version":"3.4.5","new_version":"3.4.7","repository_url":"https://github.com/executablebooks/sphinx-tabs"},{"name":"sphinx-toolbox","old_version":"4.0.0","new_version":"4.1.1","repository_url":"https://github.com/sphinx-toolbox/sphinx-toolbox"},{"name":"sphinxext-opengraph","old_version":"0.10.0","new_version":"0.13.0","repository_url":"https://github.com/sphinx-doc/sphinxext-opengraph"},{"name":"starlette","old_version":"0.46.2","new_version":"0.51.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"uvicorn","old_version":"0.34.2","new_version":"0.40.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"watchfiles","old_version":"1.0.5","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"websockets","old_version":"15.0.1","new_version":"16.0","repository_url":"https://github.com/python-websockets/websockets"}],"path":null,"ecosystem":"pip"},"body":"Bumps the py-updates group with 79 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [awscli](https://github.com/aws/aws-cli) | `1.40.17` | `1.44.15` |\n| [polars](https://github.com/pola-rs/polars) | `1.28.1` | `1.37.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [biopython](https://github.com/biopython/biopython) | `1.85` | `1.86` |\n| [boto3](https://github.com/boto/boto3) | `1.38.18` | `1.42.25` |\n| [botocore](https://github.com/boto/botocore) | `1.38.18` | `1.42.25` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.4.26` | `2026.1.4` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.4` |\n| [cloudpathlib](https://github.com/drivendataorg/cloudpathlib) | `0.21.1` | `0.23.0` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.19` | `0.22.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [jellyfish](https://jellyfish.jpt.sh/) | `1.2.0` | `1.2.1` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `3.0.0` | `4.0.0` |\n| [numpy](https://github.com/numpy/numpy) | `2.2.5` | `2.4.1` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `2.3.3` |\n| [pyarrow](https://github.com/apache/arrow) | `20.0.0` | `22.0.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| [rich](https://github.com/Textualize/rich) | `14.0.0` | `14.2.0` |\n| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.7.2` | `4.9.1` |\n| [s3transfer](https://github.com/boto/s3transfer) | `0.12.0` | `0.16.0` |\n| [structlog](https://github.com/hynek/structlog) | `25.3.0` | `25.5.0` |\n| [tzdata](https://github.com/python/tzdata) | `2025.2` | `2025.3` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.4.0` | `2.6.3` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [boto3-stubs](https://github.com/youtype/mypy_boto3_builder) | `1.38.18` | `1.42.25` |\n| [botocore-stubs](https://github.com/youtype/botocore-stubs) | `1.38.18` | `1.42.25` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.1` | `2.0.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.8.0` | `7.13.1` |\n| [cryptography](https://github.com/pyca/cryptography) | `44.0.3` | `46.0.3` |\n| [freezegun](https://github.com/spulec/freezegun) | `1.5.1` | `1.5.5` |\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| [moto](https://github.com/getmoto/moto) | `5.1.4` | `5.1.19` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.19.1` |\n| [mypy-boto3-s3](https://github.com/youtype/mypy_boto3_builder) | `1.38.0` | `1.42.21` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `2.23` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.5` | `9.0.2` |\n| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.14.0` | `3.15.1` |\n| [responses](https://github.com/getsentry/responses) | `0.25.7` | `0.25.8` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.11.10` | `0.14.11` |\n| [types-awscrt](https://github.com/youtype/types-awscrt) | `0.27.2` | `0.30.0` |\n| [types-requests](https://github.com/typeshed-internal/stub_uploader) | `2.32.0.20250515` | `2.32.4.20260107` |\n| [types-s3transfer](https://github.com/youtype/types-s3transfer) | `0.12.0` | `0.16.0` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.2` | `4.15.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.5` |\n| [xmltodict](https://github.com/martinblech/xmltodict) | `0.14.2` | `1.0.2` |\n| [alabaster](https://github.com/sphinx-doc/alabaster) | `0.7.16` | `1.0.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.12.1` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.14.3` |\n| [cachecontrol](https://github.com/psf/cachecontrol) | `0.14.3` | `0.14.4` |\n| [click](https://github.com/pallets/click) | `8.2.0` | `8.3.1` |\n| [contourpy](https://github.com/contourpy/contourpy) | `1.3.2` | `1.3.3` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.18.0` | `3.20.3` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.58.0` | `4.61.1` |\n| [furo](https://github.com/pradyunsg/furo) | `2024.8.6` | `2025.12.19` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.4.8` | `1.4.9` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.3` | `3.10.8` |\n| [mdit-py-plugins](https://github.com/executablebooks/mdit-py-plugins) | `0.4.2` | `0.5.0` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.7.0` | `10.8.0` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `12.1.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.3.8` | `4.5.1` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.3` | `3.3.1` |\n| ruamel-yaml | `0.18.10` | `0.19.1` |\n| ruamel-yaml-clib | `0.2.12` | `0.2.15` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.8.1` |\n| [sphinx](https://github.com/sphinx-doc/sphinx) | `7.3.7` | `9.0.4` |\n| [sphinx-autobuild](https://github.com/sphinx-doc/sphinx-autobuild) | `2024.10.3` | `2025.8.25` |\n| [sphinx-autodoc-typehints](https://github.com/tox-dev/sphinx-autodoc-typehints) | `2.3.0` | `3.6.1` |\n| [sphinx-jinja2-compat](https://github.com/sphinx-toolbox/sphinx-jinja2-compat) | `0.3.0` | `0.4.1` |\n| [sphinx-prompt](https://github.com/sbrunner/sphinx-prompt) | `1.8.0` | `1.10.2` |\n| [sphinx-tabs](https://github.com/executablebooks/sphinx-tabs) | `3.4.5` | `3.4.7` |\n| [sphinx-toolbox](https://github.com/sphinx-toolbox/sphinx-toolbox) | `4.0.0` | `4.1.1` |\n| [sphinxext-opengraph](https://github.com/sphinx-doc/sphinxext-opengraph) | `0.10.0` | `0.13.0` |\n| [starlette](https://github.com/Kludex/starlette) | `0.46.2` | `0.51.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.34.2` | `0.40.0` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.0.5` | `1.1.1` |\n| [websockets](https://github.com/python-websockets/websockets) | `15.0.1` | `16.0` |\n\n\nUpdates `awscli` from 1.40.17 to 1.44.15\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/56a551a5916a09423336124a8967615e0d0be143\"\u003e\u003ccode\u003e56a551a\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.15'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/b78a64f27cce6dc86754f39196b44f5b1a7f266d\"\u003e\u003ccode\u003eb78a64f\u003c/code\u003e\u003c/a\u003e Bumping version to 1.44.15\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/715bce7cf992e841f04b6b15c701d4292450d9d6\"\u003e\u003ccode\u003e715bce7\u003c/code\u003e\u003c/a\u003e Update changelog based on model updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/72510f852833ea976520851bda26757265c6c207\"\u003e\u003ccode\u003e72510f8\u003c/code\u003e\u003c/a\u003e Create update-vpc-link.rst (\u003ca href=\"https://redirect.github.com/aws/aws-cli/issues/9405\"\u003e#9405\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/d6a71c953a9155fceb7fcecf4246718153522c4d\"\u003e\u003ccode\u003ed6a71c9\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.14'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/b2be64a7c3c8747a0cfd7b174307409f9c130420\"\u003e\u003ccode\u003eb2be64a\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.14' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/95337ce8110bbd70efef24b8255892a374698e52\"\u003e\u003ccode\u003e95337ce\u003c/code\u003e\u003c/a\u003e Bumping version to 1.44.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/3224f1b5e55abc438d1f86f06a70fef3dbaa89ca\"\u003e\u003ccode\u003e3224f1b\u003c/code\u003e\u003c/a\u003e Update changelog based on model updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/d90b023b6b34361dec3bffee9b64f62d662fa3d7\"\u003e\u003ccode\u003ed90b023\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.13'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/76549b03313edbe5b8e011b9cf35e3e89b5d5387\"\u003e\u003ccode\u003e76549b0\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.13' into develop\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aws/aws-cli/compare/1.40.17...1.44.15\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `polars` from 1.28.1 to 1.37.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pola-rs/polars/releases\"\u003epolars's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePython Polars 1.37.0\u003c/h2\u003e\n\u003ch2\u003e🚀 Performance improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up \u003ccode\u003eSQL\u003c/code\u003e interface \u0026quot;ORDER BY\u0026quot; clauses (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26037\"\u003e#26037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd fast kernel for is_nan and use it for numpy NaN-\u0026gt;null conversion (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26034\"\u003e#26034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize ArrayFromIter implementations for ObjectArray (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25712\"\u003e#25712\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNew streaming NDJSON sink pipeline (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25948\"\u003e#25948\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNew streaming CSV sink pipeline (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25900\"\u003e#25900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDispatch partitioned usage of \u003ccode\u003esink_*\u003c/code\u003e functions to new-streaming by default (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25910\"\u003e#25910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReplace ryu with faster zmij (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25885\"\u003e#25885\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReduce memory usage for .item() count in grouped first/last (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25787\"\u003e#25787\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSkip schema inference if schema provided for \u003ccode\u003escan_csv/ndjson\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25757\"\u003e#25757\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd width-aware chunking to prevent degradation with wide data (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25764\"\u003e#25764\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse new sink pipeline for write/sink_ipc (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25746\"\u003e#25746\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReduce memory usage when scanning multiple parquet files in streaming (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25747\"\u003e#25747\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't call cluster_with_columns optimization if not needed (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25724\"\u003e#25724\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e✨ Enhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd new \u003ccode\u003epl.PartitionBy\u003c/code\u003e API (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26004\"\u003e#26004\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eArrowStreamExportable and sink_delta (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25994\"\u003e#25994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRelease musl builds (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25894\"\u003e#25894\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement streaming decompression for CSV \u003ccode\u003eCOUNT(*)\u003c/code\u003e fast path (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25988\"\u003e#25988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd nulls support for rolling_mean_by (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25917\"\u003e#25917\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd lazy \u003ccode\u003ecollect_all\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25991\"\u003e#25991\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd streaming decompression for NDJSON schema inference (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25992\"\u003e#25992\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved handling of unqualified SQL \u003ccode\u003eJOIN\u003c/code\u003e columns that are ambiguous (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25761\"\u003e#25761\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.9 support (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25984\"\u003e#25984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpose record batch size in \u003ccode\u003e{sink,write}_ipc\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25958\"\u003e#25958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003enull_on_oob\u003c/code\u003e parameter to \u003ccode\u003eexpr.get\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25957\"\u003e#25957\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSuggest correct timezone if timezone validation fails (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25937\"\u003e#25937\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport streaming IPC scan from S3 object store (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25868\"\u003e#25868\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement streaming CSV schema inference (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25911\"\u003e#25911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport hashing of meta expressions (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25916\"\u003e#25916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove \u003ccode\u003eSQLContext\u003c/code\u003e recognition of possible table objects in the Python globals (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25749\"\u003e#25749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd pl.Expr.(min|max)_by (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25905\"\u003e#25905\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove MemSlice Debug impl (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25913\"\u003e#25913\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement or fix json encode/decode for (U)Int128, Categorical, Enum, Decimal (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25896\"\u003e#25896\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpand scatter to more dtypes (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25874\"\u003e#25874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement streaming CSV decompression (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25842\"\u003e#25842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd Series \u003ccode\u003esql\u003c/code\u003e method for API consistency (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25792\"\u003e#25792\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMark Polars as safe for free-threading (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25677\"\u003e#25677\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Binary and Decimal in arg_(min|max) (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25839\"\u003e#25839\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow Decimal parsing in str.json_decode (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25797\"\u003e#25797\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eshift\u003c/code\u003e support for Object data type (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25769\"\u003e#25769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing \u003ccode\u003eSeries.arr.mean\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25774\"\u003e#25774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow scientific notation when parsing Decimals (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25711\"\u003e#25711\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🐞 Bug fixes\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/1674b37a0a066e76d33eb8f66d31fd870c0cd52d\"\u003e\u003ccode\u003e1674b37\u003c/code\u003e\u003c/a\u003e Python Polars 1.37.0 (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26038\"\u003e#26038\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/4c49bf5ebb9208e70a84a7effdc5368bc901ba84\"\u003e\u003ccode\u003e4c49bf5\u003c/code\u003e\u003c/a\u003e perf: Speed up \u003ccode\u003eSQL\u003c/code\u003e interface \u0026quot;ORDER BY\u0026quot; clauses (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26037\"\u003e#26037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/c1b9d86310269ae4ab22a9bff87d8f2657c8b050\"\u003e\u003ccode\u003ec1b9d86\u003c/code\u003e\u003c/a\u003e chore: Update rust compiler (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26017\"\u003e#26017\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/68911e4e9f7a2bdedca6d3aefa208a6ec02cf8ad\"\u003e\u003ccode\u003e68911e4\u003c/code\u003e\u003c/a\u003e chore: Improve csv test coverage (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25980\"\u003e#25980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/5f25b4f6b828bcd5df1116b0517358ad51c51529\"\u003e\u003ccode\u003e5f25b4f\u003c/code\u003e\u003c/a\u003e perf: Add fast kernel for is_nan and use it for numpy NaN-\u0026gt;null conversion (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/59463cefe36550547b50e5c6801b1d98516cc0c8\"\u003e\u003ccode\u003e59463ce\u003c/code\u003e\u003c/a\u003e docs(python): Fix display of deprecation warning (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26010\"\u003e#26010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/21721eba70b9fc18dff58958997c151dfe214903\"\u003e\u003ccode\u003e21721eb\u003c/code\u003e\u003c/a\u003e fix(python): Release GIL on collect_batches (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26033\"\u003e#26033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/778dbb645ccbff8b1e5999a279037571a03c718b\"\u003e\u003ccode\u003e778dbb6\u003c/code\u003e\u003c/a\u003e fix: Missing buffer update in String is_in Parquet pushdown (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26019\"\u003e#26019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/807cfc5a2eae6af453b14a1663e74d07202ce92e\"\u003e\u003ccode\u003e807cfc5\u003c/code\u003e\u003c/a\u003e fix: Make \u003ccode\u003estruct.with_fields\u003c/code\u003e data model coherent (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25610\"\u003e#25610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/e6d62387f64b225754c15ad1e0b3d4f981509692\"\u003e\u003ccode\u003ee6d6238\u003c/code\u003e\u003c/a\u003e refactor(rust): Use \u003ccode\u003efrom_any_values_and_dtype\u003c/code\u003e in \u003ccode\u003eSeries::extend_constant\u003c/code\u003e ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pola-rs/polars/compare/py-1.28.1...py-1.37.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.32.3 to 2.32.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.32.5\u003c/h2\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.32.4\u003c/h2\u003e\n\u003ch2\u003e2.32.4 (2025-06-10)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2024-47081 Fixed an issue where a maliciously crafted URL and trusted\nenvironment will retrieve credentials for the wrong hostname/machine from a\nnetrc file. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6965\"\u003e#6965\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNumerous documentation improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for pypy 3.11 for Linux and macOS. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6926\"\u003e#6926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDropped support for pypy 3.9 following its end of support. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6926\"\u003e#6926\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/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.32.4 (2025-06-10)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2024-47081 Fixed an issue where a maliciously crafted URL and trusted\nenvironment will retrieve credentials for the wrong hostname/machine from a\nnetrc file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNumerous documentation improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for pypy 3.11 for Linux and macOS.\u003c/li\u003e\n\u003cli\u003eDropped support for pypy 3.9 following its end of 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/psf/requests/commit/b25c87d7cb8d6a18a37fa12442b5f883f9e41741\"\u003e\u003ccode\u003eb25c87d\u003c/code\u003e\u003c/a\u003e v2.32.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/131e506079d97606e4214cc4d87b780ac478de7a\"\u003e\u003ccode\u003e131e506\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/7010\"\u003e#7010\u003c/a\u003e from psf/dependabot/github_actions/actions/checkout-...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b336cb2bc616a63a93c6470c558fc1f576b77f90\"\u003e\u003ccode\u003eb336cb2\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/46e939b5525d9c72b677340985582b04b128478a\"\u003e\u003ccode\u003e46e939b\u003c/code\u003e\u003c/a\u003e Update publish workflow to use \u003ccode\u003eartifact-id\u003c/code\u003e instead of \u003ccode\u003ename\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/4b9c546aa3f35fca6ca24945376fe7462bb007c4\"\u003e\u003ccode\u003e4b9c546\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/6999\"\u003e#6999\u003c/a\u003e from psf/dependabot/github_actions/step-security/har...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/7618dbef01d333f23ba4b9c4d97397b06dd89cb6\"\u003e\u003ccode\u003e7618dbe\u003c/code\u003e\u003c/a\u003e Bump step-security/harden-runner from 2.12.0 to 2.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/2edca11103c1c27dd8b572dab544b7f48cf3b446\"\u003e\u003ccode\u003e2edca11\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 and drop support for Python 3.8 (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6993\"\u003e#6993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/fec96cd5976ad763e45bac9a033d62cca1877a00\"\u003e\u003ccode\u003efec96cd\u003c/code\u003e\u003c/a\u003e Update Makefile rules (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6996\"\u003e#6996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/d58d8aa2f45c3575268d6d5250745ef69f9cf8b7\"\u003e\u003ccode\u003ed58d8aa\u003c/code\u003e\u003c/a\u003e docs: clarify timeout parameter uses seconds in Session.request (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6994\"\u003e#6994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/91a3eabd3dcc4d7f36dd8249e4777a90ef9b4305\"\u003e\u003ccode\u003e91a3eab\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action from 3.28.5 to 3.29.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.32.3...v2.32.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `biopython` from 1.85 to 1.86\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/biopython/biopython/blob/master/NEWS.rst\"\u003ebiopython's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e28 October 2025: Biopython 1.86\u003c/h1\u003e\n\u003cp\u003eThis release of Biopython supports Python 3.10, 3.11, 3.12, 3.13 and 3.14.  It\nhas also been tested on PyPy3.10 v7.3.19.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.SearchIO\u003c/code\u003e now supports parsing the tabular and plain text output of\n\u003ccode\u003eInfernal \u0026lt;http://eddylab.org/infernal/\u0026gt;\u003c/code\u003e (v1.0.0+) RNA search tool. The\nformat names are \u003ccode\u003einfernal-tab\u003c/code\u003e and \u003ccode\u003einfernal-text\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThe default value of the gap score of a \u003ccode\u003ePairwiseAligner\u003c/code\u003e object was changed\nin this release.  Previously, for consistency with \u003ccode\u003eBio.pairwise2\u003c/code\u003e, the\ndefault value for gap score was 0.  However, this means that a mismatch, an\ninsertion followed by a deletion, and a deletion followed by an insertion all\nget assigned a score of 0.  The aligner then finds a large number of alignments\nthat are logically the same, but have trivial differences between them.  For\nexample, aligning AAACAAA to AAAGAAA previously yielded the following three\nalignments, all with score 6::\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e AAACAAA        AAAC-AAA        AAA-CAAA\n AAAGAAA        AAA-GAAA        AAAG-AAA\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eWith the new default parameter for the gap score, only the first alignment is\nreturned.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.PDBIO\u003c/code\u003e now ensures that b-factor values are always at most 6 characters to\nensure that we do not violate the wwPDB specification. This should not have an impact\non the majority of uses, as b-factor values are generally small (less than 100). When\n1000 \u0026lt;= b-factor \u0026lt; 10_000, the value is rounded to a single decimal place. When,\n10_000 \u0026lt;= b-factor \u0026lt; 999_999, the value is rounded to zero decimal places. Values\nabove 999_999 are now clamped. The justification for this is the rise in the b-factor\nfield being used for additional metadata, typically from computational tools.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.Align\u003c/code\u003e now provides a method \u003ccode\u003eAlignment.from_alignments_with_same_reference\u003c/code\u003e\nto construct a multiple sequence alignment from a collection of alignments\nthat share the same reference sequence.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.PDBIO\u003c/code\u003e will now raise module specific warnings:\n\u003ccode\u003eBio.PDB.PDBExceptions.PDBIOWarning\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.SCADIO\u003c/code\u003e now supports object selection by color in the OpenSCAD\noutput file.  This enables generation of separate STL files for each color for\nprinting protein structures on multi-material 3D printers.\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003eiplotx\u003c/code\u003e library is mentioned in the Tutorial as an option to visualise\ntrees using complex style options.\u003c/p\u003e\n\u003cp\u003eMany thanks to the Biopython developers and community for making this release\npossible, especially the following contributors:\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\u003eSee full diff in \u003ca href=\"https://github.com/biopython/biopython/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.18 to 1.42.25\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/8dd60074e59d29c733b6b6eefad3a75ab615090b\"\u003e\u003ccode\u003e8dd6007\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.25'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/0bf89db7865cfef4ed697b92199c093ca6f5f803\"\u003e\u003ccode\u003e0bf89db\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.25\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/34bf8f819c2870d7baa90c6e65f83dea34586bdd\"\u003e\u003ccode\u003e34bf8f8\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/9b8fbad82f97a16e4b468b7f9ff83bafa2e8d55d\"\u003e\u003ccode\u003e9b8fbad\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.24'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/6dda579bbbeafe145506fb40a65a2f7979f196c2\"\u003e\u003ccode\u003e6dda579\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.24' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/dc3945deb487ce84d804cb813b8075461973041f\"\u003e\u003ccode\u003edc3945d\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.24\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/60784e3398975b90331d227e1377a42232fd3f8a\"\u003e\u003ccode\u003e60784e3\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/dae67fb6753924da30b42cc61dc0d940a672afbd\"\u003e\u003ccode\u003edae67fb\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.23'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/c7b7d4157a8130921bf9e7bef024a1dd17eaf600\"\u003e\u003ccode\u003ec7b7d41\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.23' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/95878f640e54fa7658e242eb2213d361b92162c2\"\u003e\u003ccode\u003e95878f6\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.23\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.38.18...1.42.25\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `botocore` from 1.38.18 to 1.42.25\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/a35f376045da3bc2dcf0de2c1346482ce1ad30c7\"\u003e\u003ccode\u003ea35f376\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.25'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/721ab7860e75d7c5ef5c0eda91f18c568b2f31e1\"\u003e\u003ccode\u003e721ab78\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.25\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/b4541b5471194a63234467945b97397e42e265e4\"\u003e\u003ccode\u003eb4541b5\u003c/code\u003e\u003c/a\u003e Update endpoints model\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/90830226c8e3cd3b96755c3b71be3314225871e3\"\u003e\u003ccode\u003e9083022\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/331cd6689f458e58465234ad58a60881d49007fa\"\u003e\u003ccode\u003e331cd66\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.24'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/47f2b30e092fd853d28193d60cb10acf8a89b5ec\"\u003e\u003ccode\u003e47f2b30\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.24' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/230fac5f074e94b3c32f112624c04224d123873d\"\u003e\u003ccode\u003e230fac5\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.24\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/cc102f140d97d286544a36adb5c3fc6043c50321\"\u003e\u003ccode\u003ecc102f1\u003c/code\u003e\u003c/a\u003e Update endpoints model\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/beaeab5eee438b737029aa27c7b7641ec89ba3ad\"\u003e\u003ccode\u003ebeaeab5\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/f6e323727729fb2aa26ec9f8362de39d6adf1d2e\"\u003e\u003ccode\u003ef6e3237\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.23'\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/botocore/compare/1.38.18...1.42.25\"\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 2026.1.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\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\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/27ca98ad845ee6d130a88301622c137893f71620\"\u003e\u003ccode\u003e27ca98a\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7.0.9 to 7.0.11 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/56c59a63909cfd3162b37e7bc16956e64df0f737\"\u003e\u003ccode\u003e56c59a6\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.0 to 6.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ae0021cd43a77bfba67d20a041469cdf6996570e\"\u003e\u003ccode\u003eae0021c\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.0.0 to 6.1.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/380\"\u003e#380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddf5d0b5d2a3d55fd92a79f141dbb5e074caf924\"\u003e\u003ccode\u003eddf5d0b\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5.0.1 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.04.26...2026.01.04\"\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 `cloudpathlib` from 0.21.1 to 0.23.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/drivendataorg/cloudpathlib/releases\"\u003ecloudpathlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.23.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14 (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/529\"\u003e#529\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/530\"\u003e#530\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eChanged \u003ccode\u003eCloudPath.copy\u003c/code\u003e to have the first parameter named \u003ccode\u003etarget\u003c/code\u003e instead of \u003ccode\u003edestination\u003c/code\u003e and added new \u003ccode\u003efollow_symlinks\u003c/code\u003e and \u003ccode\u003epreserve_metadata\u003c/code\u003e kwargs. \u003cstrong\u003eBreaking change for users that relied on the first parameter being named \u003ccode\u003edestination\u003c/code\u003e instead of \u003ccode\u003etarget\u003c/code\u003e.\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.copy_into\u003c/code\u003e to copy a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move\u003c/code\u003e to move a file or directory to another location.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move_into\u003c/code\u003e to move a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPathInfo\u003c/code\u003e and \u003ccode\u003eCloudPath.info\u003c/code\u003e to get information about a file or directory.\u003c/li\u003e\n\u003cli\u003eAdded additional no-op kwargs to \u003ccode\u003emkdir\u003c/code\u003e, \u003ccode\u003etouch\u003c/code\u003e, \u003ccode\u003eglob\u003c/code\u003e, \u003ccode\u003erglob\u003c/code\u003e, \u003ccode\u003estat\u003c/code\u003e to match pathlib.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.22.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed issue with GS credentials, using default auth enables a wider set of authentication methods in GS (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/390\"\u003e#390\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/514\"\u003e#514\u003c/a\u003e, thanks \u003ca href=\"https://github.com/ljyanesm\"\u003e\u003ccode\u003e@​ljyanesm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for http(s) urls with \u003ccode\u003eHttpClient\u003c/code\u003e, \u003ccode\u003eHttpPath\u003c/code\u003e, \u003ccode\u003eHttpsClient\u003c/code\u003e, and \u003ccode\u003eHttpsPath\u003c/code\u003e. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/455\"\u003e#455\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/468\"\u003e#468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded experimental support for patching the builtins \u003ccode\u003eopen\u003c/code\u003e, \u003ccode\u003eos\u003c/code\u003e, \u003ccode\u003eos.path\u003c/code\u003e, and \u003ccode\u003eglob\u003c/code\u003e to work with \u003ccode\u003eCloudPath\u003c/code\u003e objects. It is off by default; see the new \u0026quot;Compatibility\u0026quot; section in the docs for more information. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/128\"\u003e#128\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003eCloudPath(*parts)\u003c/code\u003e to create a \u003ccode\u003eCloudPath\u003c/code\u003e object from a list of parts (to match \u003ccode\u003epathlib.Path\u003c/code\u003e). \u003cstrong\u003eThis is a potentially breaking change for users that relied on the second arg being the \u003ccode\u003eclient\u003c/code\u003e instead of making it an explicit kwarg.\u003c/strong\u003e (PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\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/drivendataorg/cloudpathlib/blob/master/HISTORY.md\"\u003ecloudpathlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.23.0 (2025-10-07)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14 (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/529\"\u003e#529\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/530\"\u003e#530\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eChanged \u003ccode\u003eCloudPath.copy\u003c/code\u003e to have the first parameter named \u003ccode\u003etarget\u003c/code\u003e instead of \u003ccode\u003edestination\u003c/code\u003e and added new \u003ccode\u003efollow_symlinks\u003c/code\u003e and \u003ccode\u003epreserve_metadata\u003c/code\u003e kwargs. \u003cstrong\u003eBreaking change for users that relied on the first parameter being named \u003ccode\u003edestination\u003c/code\u003e instead of \u003ccode\u003etarget\u003c/code\u003e.\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.copy_into\u003c/code\u003e to copy a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move\u003c/code\u003e to move a file or directory to another location.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move_into\u003c/code\u003e to move a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPathInfo\u003c/code\u003e and \u003ccode\u003eCloudPath.info\u003c/code\u003e to get information about a file or directory.\u003c/li\u003e\n\u003cli\u003eAdded additional no-op kwargs to \u003ccode\u003emkdir\u003c/code\u003e, \u003ccode\u003etouch\u003c/code\u003e, \u003ccode\u003eglob\u003c/code\u003e, \u003ccode\u003erglob\u003c/code\u003e, \u003ccode\u003estat\u003c/code\u003e to match pathlib.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.22.0 (2025-08-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed issue with GS credentials, using default auth enables a wider set of authentication methods in GS (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/390\"\u003e#390\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/514\"\u003e#514\u003c/a\u003e, thanks \u003ca href=\"https://github.com/ljyanesm\"\u003e\u003ccode\u003e@​ljyanesm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for http(s) urls with \u003ccode\u003eHttpClient\u003c/code\u003e, \u003ccode\u003eHttpPath\u003c/code\u003e, \u003ccode\u003eHttpsClient\u003c/code\u003e, and \u003ccode\u003eHttpsPath\u003c/code\u003e. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/455\"\u003e#455\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/468\"\u003e#468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded experimental support for patching the builtins \u003ccode\u003eopen\u003c/code\u003e, \u003ccode\u003eos\u003c/code\u003e, \u003ccode\u003eos.path\u003c/code\u003e, and \u003ccode\u003eglob\u003c/code\u003e to work with \u003ccode\u003eCloudPath\u003c/code\u003e objects. It is off by default; see the new \u0026quot;Compatibility\u0026quot; section in the docs for more information. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/128\"\u003e#128\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003eCloudPath(*parts)\u003c/code\u003e to create a \u003ccode\u003eCloudPath\u003c/code\u003e object from a list of parts (to match \u003ccode\u003epathlib.Path\u003c/code\u003e). \u003cstrong\u003eThis is a potentially breaking change for users that relied on the second arg being the \u003ccode\u003eclient\u003c/code\u003e instead of making it an explicit kwarg.\u003c/strong\u003e (PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\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/drivendataorg/cloudpathlib/commit/28f1d943078517262d045ae50136edf27a5298a1\"\u003e\u003ccode\u003e28f1d94\u003c/code\u003e\u003c/a\u003e WIP Support 3.14 (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/530\"\u003e#530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/fec5918d6725e9f1f52bee003528f4f854454980\"\u003e\u003ccode\u003efec5918\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish in /.github/workflows (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/e7900023bf4b32b70ca5b2d798f9ce52187582f8\"\u003e\u003ccode\u003ee790002\u003c/code\u003e\u003c/a\u003e version bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/bb1f1e4cb5eba0928cec2aaff30cb0f5ace1f108\"\u003e\u003ccode\u003ebb1f1e4\u003c/code\u003e\u003c/a\u003e WIP: Patch open, os and os.path builtins (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/12005505fc29ab4183968022a487416a31b1a1bd\"\u003e\u003ccode\u003e1200550\u003c/code\u003e\u003c/a\u003e Refactor GS authentication to use default credentials (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/526\"\u003e#526\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/b21cac14f0090021594f7e3afae9c48f5d7dbd46\"\u003e\u003ccode\u003eb21cac1\u003c/code\u003e\u003c/a\u003e Implement HTTP(s) support (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/468\"\u003e#468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/863e884cbf1cf141cdf7bf9c0623e0cd3d27841d\"\u003e\u003ccode\u003e863e884\u003c/code\u003e\u003c/a\u003e fix for azure typing differences (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/524\"\u003e#524\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/65c5c012bd4297ce4e812cfb8bbf9827db346e03\"\u003e\u003ccode\u003e65c5c01\u003c/code\u003e\u003c/a\u003e Set pytest-cases\u0026gt;=3.9.1 (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/520\"\u003e#520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/drivendataorg/cloudpathlib/compare/v0.21.1...v0.23.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `docutils` from 0.19 to 0.22.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/rtfd/recommonmark/commits\"\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 `jellyfish` from 1.2.0 to 1.2.1\n\nUpdates `markdown-it-py` from 3.0.0 to 4.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/markdown-it-py/releases\"\u003emarkdown-it-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eThis primarily drops support for Python 3.8 and 3.9, adds support for Python 3.13,\nand updates the parser to comply with Commonmark 0.31.2 and Markdown-It v14.1.0.\u003c/p\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Drop Python 3.8, test 3.13 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/342\"\u003eexecutablebooks/markdown-it-py#342\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Drop support for Python 3.9 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/360\"\u003eexecutablebooks/markdown-it-py#360\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Comply with Commonmark 0.31.2 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/362\"\u003eexecutablebooks/markdown-it-py#362\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👌 Improve performance of \u0026quot;text\u0026quot; inline rule by \u003ca href=\"https://github.com/hukkin\"\u003e\u003ccode\u003e@​hukkin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/347\"\u003eexecutablebooks/markdown-it-py#347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Use \u003ccode\u003estr.removesuffix\u003c/code\u003e by \u003ca href=\"https://github.com/hukkin\"\u003e\u003ccode\u003e@​hukkin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/348\"\u003eexecutablebooks/markdown-it-py#348\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 limit the number of autocompleted cells in a table by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/364\"\u003eexecutablebooks/markdown-it-py#364\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 fix quadratic complexity in reference parser by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/367\"\u003eexecutablebooks/markdown-it-py#367\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix emphasis inside raw links bugs by \u003ca href=\"https://github.com/tsutsu3\"\u003e\u003ccode\u003e@​tsutsu3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/320\"\u003eexecutablebooks/markdown-it-py#320\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔧 Replace black and isort with ruff formatter by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/313\"\u003eexecutablebooks/markdown-it-py#313\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Fixed Code Style paragraph still referring to flake8 by \u003ca href=\"https://github.com/venthur\"\u003e\u003ccode\u003e@​venthur\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/309\"\u003eexecutablebooks/markdown-it-py#309\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Add \u0026quot;store_labels\u0026quot; to OptionsType by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/343\"\u003eexecutablebooks/markdown-it-py#343\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Move \u003ccode\u003ecode_style\u003c/code\u003e to dependency group by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/344\"\u003eexecutablebooks/markdown-it-py#344\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Update codecov action by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/345\"\u003eexecutablebooks/markdown-it-py#345\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Update pre-commit and upload-artifact by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/359\"\u003eexecutablebooks/markdown-it-py#359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Improve spec update script by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/361\"\u003eexecutablebooks/markdown-it-py#361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 simplify logic in scanDelims by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/365\"\u003eexecutablebooks/markdown-it-py#365\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 Add CI testing for Python 3.12 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/303\"\u003eexecutablebooks/markdown-it-py#303\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 Fix codecov by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/332\"\u003eexecutablebooks/markdown-it-py#332\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📚 Fix typo by \u003ca href=\"https://github.com/bwagner\"\u003e\u003ccode\u003e@​bwagner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/315\"\u003eexecutablebooks/markdown-it-py#315\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix RTD build by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/322\"\u003eexecutablebooks/markdown-it-py#322\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Fix a few old URLs by \u003ca href=\"https://github.com/elijahgreenstein\"\u003e\u003ccode\u003e@​elijahgreenstein\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/358\"\u003eexecutablebooks/markdown-it-py#358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Improve README by \u003ca href=\"https://github.com/mrmurilo75\"\u003e\u003ccode\u003e@​mrmurilo75\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/340\"\u003eexecutablebooks/markdown-it-py#340\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix CI badge link by \u003ca href=\"https://github.com/tsutsu3\"\u003e\u003ccode\u003e@​tsutsu3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/291\"\u003eexecutablebooks/markdown-it-py#291\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Update docs by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/292\"\u003eexecutablebooks/markdown-it-py#292\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Add icon to readme by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/293\"\u003eexecutablebooks/markdown-it-py#293\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Update icon by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/294\"\u003eexecutablebooks/markdown-it-py#294\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Clarify docs regarding security configuration by \u003ca href=\"https://github.com/djramones\"\u003e\u003ccode\u003e@​djramones\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/296\"\u003eexecutablebooks/markdown-it-py#296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix the RTD build by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/311\"\u003eexecutablebooks/markdown-it-py#311\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Fix typos by \u003ca href=\"https://github.com/elijahgreenstein\"\u003e\u003ccode\u003e@​elijahgreenstein\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/366\"\u003eexecutablebooks/markdown-it-py#366\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- 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/executablebooks/markdown-it-py/blob/master/CHANGELOG.md\"\u003emarkdown-it-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.0.0 - 2024-08-10\u003c/h2\u003e\n\u003cp\u003eThis primarily drops support for Python 3.9, adds support for Python 3.13,\nand updates the parser to comply with Commonmark 0.31.2 and Markdown-It v14.1.0.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Drop support for Python 3.9 in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/360\"\u003e#360\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Comply with Commonmark 0.31.2 in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/362\"\u003e#362\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Improve performance of \u0026quot;text\u0026quot; inline rule in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/347\"\u003e#347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Use \u003ccode\u003estr.removesuffix\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/348\"\u003e#348\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 limit the number of autocompleted cells in a table in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/364\"\u003e#364\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 fix quadratic complexity in reference parser in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/367\"\u003e#367\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 Fix emphasis inside raw links bugs in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/320\"\u003e#320\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.0\"\u003ehttps://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.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/executablebooks/markdown-it-py/commit/c62983f1554124391b47170180e6c62df4d476ca\"\u003e\u003ccode\u003ec62983f\u003c/code\u003e\u003c/a\u003e 🚀 RELEASE v4.0.0 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/368\"\u003e#368\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/9e93bd554147ffb8582581e14620c7611103d2ff\"\u003e\u003ccode\u003e9e93bd5\u003c/code\u003e\u003c/a\u003e 👌 fix quadratic complexity in reference parser (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/da45c8764b2077425c091fa1811bbb1c5f211bd1\"\u003e\u003ccode\u003eda45c87\u003c/code\u003e\u003c/a\u003e 📚 DOCS: Fix typos (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/87b16e272bf8207182084e07a63253b98fc437d7\"\u003e\u003ccode\u003e87b16e2\u003c/code\u003e\u003c/a\u003e 🔧 simplify logic in scanDelims (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/365\"\u003e#365\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/e4009641db528444b85d384af815e9cad997a016\"\u003e\u003ccode\u003ee400964\u003c/code\u003e\u003c/a\u003e 👌 limit the number of autocompleted cells in a table (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/364\"\u003e#364\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/4535d77edcb5f51450a266135687eeae8bcc5033\"\u003e\u003ccode\u003e4535d77\u003c/code\u003e\u003c/a\u003e ⬆️ Comply with Commonmark 0.31.2 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/8eb20ac1cb63e09dcd78e84a0c71dab8446bb73c\"\u003e\u003ccode\u003e8eb20ac\u003c/code\u003e\u003c/a\u003e 🔧 Improve spec update script (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/361\"\u003e#361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/fb9d3ab646e4f752dc8fd52e1dd7613c350ff190\"\u003e\u003ccode\u003efb9d3ab\u003c/code\u003e\u003c/a\u003e ⬆️ Drop support for Python 3.9 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/360\"\u003e#360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/9ffe841832d33264201aaff120349f001a02953a\"\u003e\u003ccode\u003e9ffe841\u003c/code\u003e\u003c/a\u003e 📚 DOCS: Fix a few old URLs (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/154fe43feb17947e2c933d0bb3e26618129909a8\"\u003e\u003ccode\u003e154fe43\u003c/code\u003e\u003c/a\u003e 🔧 Update pre-commit and upload-artifact (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `numpy` from 2.2.5 to 2.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/numpy/numpy/releases\"\u003enumpy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.1 (Jan 10, 2026)\u003c/h2\u003e\n\u003ch1\u003eNumPy 2.4.1 Release Notes\u003c/h1\u003e\n\u003cp\u003eThe NumPy 2.4.1 is a patch release that fixes bugs discoved after the\n2.4.0 release. In particular, the typo \u003ccode\u003eSeedlessSequence\u003c/code\u003e is preserved to\nenable wheels using the random Cython API and built against NumPy \u0026lt; 2.4.0\nto run without errors.\u003c/p\u003e\n\u003cp\u003eThis release supports Python versions 3.11-3.14\u003c/p\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003eA total of 9 people contributed to this release. People with a \u0026quot;+\u0026quot; by their\nnames contributed a patch for the first time.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAlexander Shadchin\u003c/li\u003e\n\u003cli\u003eBill Tompkins +\u003c/li\u003e\n\u003cli\u003eCharles Harris\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eMarten van Kerkwijk\u003c/li\u003e\n\u003cli\u003eNathan Goldbaum\u003c/li\u003e\n\u003cli\u003eRaghuveer Devulapalli\u003c/li\u003e\n\u003cli\u003eRalf Gommers\u003c/li\u003e\n\u003cli\u003eSebastian Berg\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePull requests merged\u003c/h2\u003e\n\u003cp\u003eA total of 15 pull requests were merged for this release.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30490\"\u003e#30490\u003c/a\u003e: MAINT: Prepare 2.4.x for further development\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30503\"\u003e#30503\u003c/a\u003e: DOC: \u003ccode\u003enumpy.select\u003c/code\u003e: fix \u003ccode\u003edefault\u003c/code\u003e parameter docstring...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30504\"\u003e#30504\u003c/a\u003e: REV: Revert part of \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30164\"\u003e#30164\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30500\"\u003e#30500\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30506\"\u003e#30506\u003c/a\u003e: TYP: \u003ccode\u003enumpy.select\u003c/code\u003e: allow passing array-like \u003ccode\u003edefault\u003c/code\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30507\"\u003e#30507\u003c/a\u003e: MNT: use if constexpr for compile-time branch selection\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30513\"\u003e#30513\u003c/a\u003e: BUG: Fix leak in flat assignment iterator\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30516\"\u003e#30516\u003c/a\u003e: BUG: fix heap overflow in fixed-width string multiply (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30511\"\u003e#30511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30523\"\u003e#30523\u003c/a\u003e: BUG: Ensure summed weights returned by np.average always are...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30527\"\u003e#30527\u003c/a\u003e: TYP: Fix return type of histogram2d\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30594\"\u003e#30594\u003c/a\u003e: MAINT: avoid passing ints to random functions that take double...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30595\"\u003e#30595\u003c/a\u003e: BLD: Avoiding conflict with pygit2 for static build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30596\"\u003e#30596\u003c/a\u003e: MAINT: Fix msvccompiler missing error on FreeBSD\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30608\"\u003e#30608\u003c/a\u003e: BLD: update vendored Meson to 1.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30620\"\u003e#30620\u003c/a\u003e: ENH: use more fine-grained critical sections in array coercion...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30623\"\u003e#30623\u003c/a\u003e: BUG: Undo result type change of quantile/percentile but keep...\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.4.0 (Dec 20, 2025)\u003c/h2\u003e\n\u003ch1\u003eNumPy 2.4.0 Release Notes\u003c/h1\u003e\n\u003cp\u003eThe NumPy 2.4.0 release continues the work to improve free threaded Python\nsupport, user dtypes implementation, and annotations. There are many expired\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/numpy/numpy/blob/main/doc/RELEASE_WALKTHROUGH.rst\"\u003enumpy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eThis is a walkthrough of the NumPy 2.4.0 release on Linux, which will be the\nfirst feature release using the \u003ccode\u003enumpy/numpy-release \u0026lt;https://github.com/numpy/numpy-release\u0026gt;\u003c/code\u003e__ repository.\u003c/p\u003e\n\u003cp\u003eThe comm...\n\n_Description has been truncated_","html_url":"https://github.com/reichlab/cladetime/pull/188","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/reichlab%2Fcladetime/issues/188","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/188/packages"},{"uuid":"3802149960","node_id":"PR_kwDOEkpJIs68loKm","number":204,"state":"open","title":"Bump the dependencies group across 1 directory with 64 updates","user":"dependabot[bot]","labels":["skip-changelog","dependabot-deps-updates"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-11T22:11:45.000Z","updated_at":"2026-01-26T00:00:52.904Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"dependencies","update_count":64,"packages":[{"name":"ansible-compat","old_version":"24.10.0","new_version":"25.12.0","repository_url":"https://github.com/ansible/ansible-compat"},{"name":"argparse-manpage","old_version":"4.6","new_version":"4.7","repository_url":"https://github.com/praiskup/argparse-manpage"},{"name":"asttokens","old_version":"3.0.0","new_version":"3.0.1","repository_url":"https://github.com/gristlabs/asttokens"},{"name":"attrs","old_version":"25.3.0","new_version":"25.4.0","repository_url":"https://github.com/sponsors/hynek"},{"name":"backrefs","old_version":"5.8","new_version":"6.1","repository_url":"https://github.com/facelessuser/backrefs"},{"name":"bracex","old_version":"2.5.post1","new_version":"2.6","repository_url":"https://github.com/facelessuser/bracex"},{"name":"cachetools","old_version":"6.0.0","new_version":"6.2.4","repository_url":"https://github.com/tkem/cachetools"},{"name":"certifi","old_version":"2025.6.15","new_version":"2026.1.4","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.4.2","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":"coverage","old_version":"7.9.1","new_version":"7.13.1","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cryptography","old_version":"45.0.4","new_version":"46.0.3","repository_url":"https://github.com/pyca/cryptography"},{"name":"distlib","old_version":"0.3.9","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"exceptiongroup","old_version":"1.3.0","new_version":"1.3.1","repository_url":"https://github.com/agronholm/exceptiongroup"},{"name":"execnet","old_version":"2.1.1","new_version":"2.1.2","repository_url":"https://github.com/pytest-dev/execnet"},{"name":"executing","old_version":"2.2.0","new_version":"2.2.1","repository_url":"https://github.com/alexmojaki/executing"},{"name":"filelock","old_version":"3.18.0","new_version":"3.20.3","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"gitpython","old_version":"3.1.44","new_version":"3.1.46","repository_url":"https://github.com/gitpython-developers/GitPython"},{"name":"griffe","old_version":"1.7.3","new_version":"1.15.0","repository_url":"https://github.com/mkdocstrings/griffe"},{"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":"importlib-resources","old_version":"5.0.7","new_version":"6.5.2","repository_url":"https://github.com/python/importlib_resources"},{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"ipython","old_version":"8.18.1","new_version":"9.9.0","repository_url":"https://github.com/ipython/ipython"},{"name":"jsonschema","old_version":"4.24.0","new_version":"4.26.0","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"jsonschema-specifications","old_version":"2025.4.1","new_version":"2025.9.1","repository_url":"https://github.com/python-jsonschema/jsonschema-specifications"},{"name":"markdown","old_version":"3.8","new_version":"3.10","repository_url":"https://github.com/Python-Markdown/markdown"},{"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":"matplotlib-inline","old_version":"0.1.7","new_version":"0.2.1","repository_url":"https://github.com/ipython/matplotlib-inline"},{"name":"mkdocs-autorefs","old_version":"1.4.2","new_version":"1.4.3","repository_url":"https://github.com/mkdocstrings/autorefs"},{"name":"mkdocs-git-revision-date-localized-plugin","old_version":"1.4.7","new_version":"1.5.0","repository_url":"https://github.com/timvink/mkdocs-git-revision-date-localized-plugin"},{"name":"mkdocs-material","old_version":"9.6.14","new_version":"9.7.1","repository_url":"https://github.com/squidfunk/mkdocs-material"},{"name":"mkdocstrings","old_version":"0.29.1","new_version":"1.0.0","repository_url":"https://github.com/mkdocstrings/mkdocstrings"},{"name":"mkdocstrings-python","old_version":"1.16.12","new_version":"2.0.1","repository_url":"https://github.com/mkdocstrings/python"},{"name":"molecule","old_version":"6.0.3","new_version":"25.12.0","repository_url":"https://github.com/ansible-community/molecule"},{"name":"parso","old_version":"0.8.4","new_version":"0.8.5","repository_url":"https://github.com/davidhalter/parso"},{"name":"pathspec","old_version":"0.12.1","new_version":"1.0.3","repository_url":"https://github.com/cpburnz/python-pathspec"},{"name":"pbr","old_version":"6.1.1","new_version":"7.0.3"},{"name":"pillow","old_version":"11.2.1","new_version":"12.1.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.3.8","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"prompt-toolkit","old_version":"3.0.51","new_version":"3.0.52","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"psutil","old_version":"7.0.0","new_version":"7.2.1","repository_url":"https://github.com/giampaolo/psutil"},{"name":"pycparser","old_version":"2.22","new_version":"2.23","repository_url":"https://github.com/eliben/pycparser"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pymdown-extensions","old_version":"10.15","new_version":"10.20","repository_url":"https://github.com/facelessuser/pymdown-extensions"},{"name":"pyproject-api","old_version":"1.9.1","new_version":"1.10.0","repository_url":"https://github.com/tox-dev/pyproject-api"},{"name":"pytest","old_version":"8.4.0","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-plus","old_version":"0.7.0","new_version":"0.8.1","repository_url":"https://github.com/pytest-dev/pytest-plus"},{"name":"pytest-sugar","old_version":"1.0.0","new_version":"1.1.1","repository_url":"https://github.com/Teemu/pytest-sugar"},{"name":"pytest-xdist","old_version":"3.7.0","new_version":"3.8.0","repository_url":"https://github.com/pytest-dev/pytest-xdist"},{"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":"requests","old_version":"2.32.4","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.25.1","new_version":"0.30.0","repository_url":"https://github.com/crate-py/rpds"},{"name":"setproctitle","old_version":"1.3.6","new_version":"1.3.7","repository_url":"https://github.com/dvarrazzo/py-setproctitle"},{"name":"termcolor","old_version":"3.1.0","new_version":"3.3.0","repository_url":"https://github.com/termcolor/termcolor"},{"name":"tinycss2","old_version":"1.4.0","new_version":"1.5.1","repository_url":"https://github.com/Kozea/tinycss2"},{"name":"tomli","old_version":"2.2.1","new_version":"2.4.0","repository_url":"https://github.com/hukkin/tomli"},{"name":"urllib3","old_version":"2.4.0","new_version":"2.6.3","repository_url":"https://github.com/urllib3/urllib3"},{"name":"wcmatch","old_version":"10.0","new_version":"10.1","repository_url":"https://github.com/facelessuser/wcmatch"},{"name":"wcwidth","old_version":"0.2.13","new_version":"0.2.14","repository_url":"https://github.com/jquast/wcwidth"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dependencies group with 64 updates in the /.config directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ansible-compat](https://github.com/ansible/ansible-compat) | `24.10.0` | `25.12.0` |\n| [argparse-manpage](https://github.com/praiskup/argparse-manpage) | `4.6` | `4.7` |\n| [asttokens](https://github.com/gristlabs/asttokens) | `3.0.0` | `3.0.1` |\n| [attrs](https://github.com/sponsors/hynek) | `25.3.0` | `25.4.0` |\n| [backrefs](https://github.com/facelessuser/backrefs) | `5.8` | `6.1` |\n| [bracex](https://github.com/facelessuser/bracex) | `2.5.post1` | `2.6` |\n| [cachetools](https://github.com/tkem/cachetools) | `6.0.0` | `6.2.4` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.6.15` | `2026.1.4` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.1` | `2.0.0` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.9.1` | `7.13.1` |\n| [cryptography](https://github.com/pyca/cryptography) | `45.0.4` | `46.0.3` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.9` | `0.4.0` |\n| [exceptiongroup](https://github.com/agronholm/exceptiongroup) | `1.3.0` | `1.3.1` |\n| [execnet](https://github.com/pytest-dev/execnet) | `2.1.1` | `2.1.2` |\n| [executing](https://github.com/alexmojaki/executing) | `2.2.0` | `2.2.1` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.18.0` | `3.20.3` |\n| [gitpython](https://github.com/gitpython-developers/GitPython) | `3.1.44` | `3.1.46` |\n| [griffe](https://github.com/mkdocstrings/griffe) | `1.7.3` | `1.15.0` |\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| [importlib-resources](https://github.com/python/importlib_resources) | `5.0.7` | `6.5.2` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.0` |\n| [ipython](https://github.com/ipython/ipython) | `8.18.1` | `9.9.0` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.24.0` | `4.26.0` |\n| [jsonschema-specifications](https://github.com/python-jsonschema/jsonschema-specifications) | `2025.4.1` | `2025.9.1` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.8` | `3.10` |\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| [matplotlib-inline](https://github.com/ipython/matplotlib-inline) | `0.1.7` | `0.2.1` |\n| [mkdocs-autorefs](https://github.com/mkdocstrings/autorefs) | `1.4.2` | `1.4.3` |\n| [mkdocs-git-revision-date-localized-plugin](https://github.com/timvink/mkdocs-git-revision-date-localized-plugin) | `1.4.7` | `1.5.0` |\n| [mkdocs-material](https://github.com/squidfunk/mkdocs-material) | `9.6.14` | `9.7.1` |\n| [mkdocstrings](https://github.com/mkdocstrings/mkdocstrings) | `0.29.1` | `1.0.0` |\n| [mkdocstrings-python](https://github.com/mkdocstrings/python) | `1.16.12` | `2.0.1` |\n| [molecule](https://github.com/ansible-community/molecule) | `6.0.3` | `25.12.0` |\n| [parso](https://github.com/davidhalter/parso) | `0.8.4` | `0.8.5` |\n| [pathspec](https://github.com/cpburnz/python-pathspec) | `0.12.1` | `1.0.3` |\n| [pbr](https://docs.openstack.org/pbr/latest/) | `6.1.1` | `7.0.3` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `12.1.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.3.8` | `4.5.1` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.51` | `3.0.52` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.2.1` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `2.23` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) | `10.15` | `10.20` |\n| [pyproject-api](https://github.com/tox-dev/pyproject-api) | `1.9.1` | `1.10.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.0` | `9.0.2` |\n| [pytest-plus](https://github.com/pytest-dev/pytest-plus) | `0.7.0` | `0.8.1` |\n| [pytest-sugar](https://github.com/Teemu/pytest-sugar) | `1.0.0` | `1.1.1` |\n| [pytest-xdist](https://github.com/pytest-dev/pytest-xdist) | `3.7.0` | `3.8.0` |\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| [requests](https://github.com/psf/requests) | `2.32.4` | `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.25.1` | `0.30.0` |\n| [setproctitle](https://github.com/dvarrazzo/py-setproctitle) | `1.3.6` | `1.3.7` |\n| [termcolor](https://github.com/termcolor/termcolor) | `3.1.0` | `3.3.0` |\n| [tinycss2](https://github.com/Kozea/tinycss2) | `1.4.0` | `1.5.1` |\n| [tomli](https://github.com/hukkin/tomli) | `2.2.1` | `2.4.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.4.0` | `2.6.3` |\n| [wcmatch](https://github.com/facelessuser/wcmatch) | `10.0` | `10.1` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.2.13` | `0.2.14` |\n\n\nUpdates `ansible-compat` from 24.10.0 to 25.12.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ansible/ansible-compat/releases\"\u003eansible-compat's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev25.12.0\u003c/h2\u003e\n\u003ch2\u003eMaintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd platform version check (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/548\"\u003e#548\u003c/a\u003e) \u003ca href=\"https://github.com/cidrblock\"\u003e\u003ccode\u003e@​cidrblock\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/547\"\u003e#547\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/546\"\u003e#546\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: Temporarily disable tombi schema.strict for pyproject.toml (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/545\"\u003e#545\u003c/a\u003e) \u003ca href=\"https://github.com/alisonlhart\"\u003e\u003ccode\u003e@​alisonlhart\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/544\"\u003e#544\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev25.11.0\u003c/h2\u003e\n\u003ch2\u003eMaintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/543\"\u003e#543\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/542\"\u003e#542\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/540\"\u003e#540\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/539\"\u003e#539\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd finalize workflow for secure sonarcloud checks (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/538\"\u003e#538\u003c/a\u003e) \u003ca href=\"https://github.com/alisonlhart\"\u003e\u003ccode\u003e@​alisonlhart\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate sonar-project.properties configuration (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/536\"\u003e#536\u003c/a\u003e) \u003ca href=\"https://github.com/alisonlhart\"\u003e\u003ccode\u003e@​alisonlhart\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/537\"\u003e#537\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: tell uv to use unreleased ansible-core when running with py314 (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/535\"\u003e#535\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/534\"\u003e#534\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003epre-commit-ci[bot]\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev25.8.2\u003c/h2\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: add support for python 3.14 (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/533\"\u003e#533\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: remove tox.ini and adopt pep-735 (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/526\"\u003e#526\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMaintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/532\"\u003e#532\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: hooks update (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/531\"\u003e#531\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/530\"\u003e#530\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/529\"\u003e#529\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/527\"\u003e#527\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: configure renovate (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/524\"\u003e#524\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: update hooks (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/525\"\u003e#525\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 to 5 (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/515\"\u003e#515\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev25.8.1\u003c/h2\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRestore \u003ccode\u003eansible-lint\u0026lt;25.8.1\u003c/code\u003e behaviour for \u003ccode\u003eansible-lint\u0026lt;25.8.1\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/520\"\u003e#520\u003c/a\u003e) \u003ca href=\"https://github.com/cidrblock\"\u003e\u003ccode\u003e@​cidrblock\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev25.8.0\u003c/h2\u003e\n\u003ch2\u003eEnhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump the dependencies group in /.config with 5 updates (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/507\"\u003e#507\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump markdown-exec from 1.10.3 to 1.11.0 in /.config in the dependencies group (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/506\"\u003e#506\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the dependencies group across 1 directory with 3 updates (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/505\"\u003e#505\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/601b6905c7c7819efb1f2c820a853827b835ec4f\"\u003e\u003ccode\u003e601b690\u003c/code\u003e\u003c/a\u003e Add platform version check (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/548\"\u003e#548\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/f8de21d2a42ba53679a6baba96773249b5205174\"\u003e\u003ccode\u003ef8de21d\u003c/code\u003e\u003c/a\u003e chore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/547\"\u003e#547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/bc972b8146943335a592600c59f1a03d3979cedf\"\u003e\u003ccode\u003ebc972b8\u003c/code\u003e\u003c/a\u003e chore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/546\"\u003e#546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/2a54adab4035b398a0bba671da981816cbf3b8f9\"\u003e\u003ccode\u003e2a54ada\u003c/code\u003e\u003c/a\u003e chore: Temporarily disable tombi schema.strict for pyproject.toml (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/545\"\u003e#545\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/384ce35dbf27ca74b0f92b751b93c25633e2d8d4\"\u003e\u003ccode\u003e384ce35\u003c/code\u003e\u003c/a\u003e chore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/544\"\u003e#544\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/4900c15e756d60c214fb059cf735f5d34770731c\"\u003e\u003ccode\u003e4900c15\u003c/code\u003e\u003c/a\u003e chore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/543\"\u003e#543\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/523a99d720a809a346a55474fa1deaaaa78ef8da\"\u003e\u003ccode\u003e523a99d\u003c/code\u003e\u003c/a\u003e chore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/542\"\u003e#542\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/77ff6e6bab69662edc408d3fb4e1134c4ce69e81\"\u003e\u003ccode\u003e77ff6e6\u003c/code\u003e\u003c/a\u003e chore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/540\"\u003e#540\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/44a2e5c015c003712b2aea4ee43dde012507c5b1\"\u003e\u003ccode\u003e44a2e5c\u003c/code\u003e\u003c/a\u003e chore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/539\"\u003e#539\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/b4dc1bb2583c23ceb221f906fe3352c943cafd56\"\u003e\u003ccode\u003eb4dc1bb\u003c/code\u003e\u003c/a\u003e Add finalize workflow for secure sonarcloud checks (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/538\"\u003e#538\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ansible/ansible-compat/compare/v24.10.0...v25.12.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `argparse-manpage` from 4.6 to 4.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/praiskup/argparse-manpage/releases\"\u003eargparse-manpage's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eargparse-manpage v4.7\u003c/h2\u003e\n\u003cp\u003eNews in v4.7\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003esys.stdout used instead of /dev/stdout\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003efixed build compatibility with newer setuptools\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003efixed deprecation warnings for datetime and setuptools\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003enew compat method for handling SOURCE_DATE_EPOCH\u003c/p\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/praiskup/argparse-manpage/blob/main/NEWS\"\u003eargparse-manpage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cpre\u003e\u003ccode\u003e\nWARNING: The 'build_manpage' setup.py command will be removed v5\nWARNING: We'll drop the Python 2.7 support in v5\n\u003cp\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eNews in v4.7\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003esys.stdout used instead of /dev/stdout\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003efixed build compatibility with newer setuptools\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003efixed deprecation warnings for datetime and setuptools\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003enew compat method for handling SOURCE_DATE_EPOCH\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre\u003e\u003ccode\u003e\nNews in v4.6\n\u003cul\u003e\n\u003cli\u003eFix the build against Python 3.13\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eNews in v4.5\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWe newly provide \u003ccode\u003ebuild_manpages.build_py\u003c/code\u003e and \u003ccode\u003ebuild_manpages.install\u003c/code\u003e\ncommand classes that are re-usable from \u003ccode\u003epyproject.toml\u003c/code\u003e.  No need to\nprovide \u003ccode\u003esetup.py\u003c/code\u003e because of \u003ccode\u003eargparse-manpage\u003c/code\u003e.  Solved issue#85.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre\u003e\u003ccode\u003e\nNews in v4.4\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003eprog=\u003c/code\u003e specifier (in setup.py/setup.cfg/pyproject.toml) is now\u003cbr /\u003e\nbetter handled so it doesn't conflict with ArgumentParser(prog=..).\u003cbr /\u003e\nFixes \u003ca href=\"https://redirect.github.com/praiskup/argparse-manpage/issues/79\"\u003epraiskup/argparse-manpage#79\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNews in v4.3\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe pyproject.toml parsing feature now depends on the python3-tomli library\u003cbr /\u003e\ninstead of python-toml for \u0026quot;python_environment \u0026gt;3, \u0026lt;=3.10\u0026quot;.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eNews in v4.2\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for pyproject.toml specification of manpages added.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/7883becca340aa3ea124143e032848a7b2bdf84b\"\u003e\u003ccode\u003e7883bec\u003c/code\u003e\u003c/a\u003e Release v4.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/765389ed4ee835c09451823d7fbfe22b0dc1674a\"\u003e\u003ccode\u003e765389e\u003c/code\u003e\u003c/a\u003e Move the SOURCE_DATE_EPOCH hack on one place\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/a06ed9c1f03360f8089819c8e845cd670687eb64\"\u003e\u003ccode\u003ea06ed9c\u003c/code\u003e\u003c/a\u003e ci: fix RPM build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/c985432ee15824c43c75548c7ec1bd6f105a7f22\"\u003e\u003ccode\u003ec985432\u003c/code\u003e\u003c/a\u003e Fix deprecation warnings for datetime and setuptools\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/306658941368ff0c2dfe2e4fa29b889fb5bbeb2b\"\u003e\u003ccode\u003e3066589\u003c/code\u003e\u003c/a\u003e ci: fedora-tox update list of environments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/b3a2c50e2abc47bd822d848864a80e35251a3147\"\u003e\u003ccode\u003eb3a2c50\u003c/code\u003e\u003c/a\u003e ci: enable ruff \u0026amp; bump deps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/6dc54a5272e70b081af728958fd7554a6b0372f3\"\u003e\u003ccode\u003e6dc54a5\u003c/code\u003e\u003c/a\u003e Fix compatibility with newer setuptools\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/29f89bba536cf28f6ed66721367ff2ee3f6209b7\"\u003e\u003ccode\u003e29f89bb\u003c/code\u003e\u003c/a\u003e Fix some comments about sys.argv alteration for usage message\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/ade76cc8ef49ec804955c6b4027dbae52d482034\"\u003e\u003ccode\u003eade76cc\u003c/code\u003e\u003c/a\u003e Use sys.stdout instead of /dev/stdout\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/praiskup/argparse-manpage/compare/v4.6...v4.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asttokens` from 3.0.0 to 3.0.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/bdbf396fc0e006912ba82f1137dfd6b2d5aa9af2\"\u003e\u003ccode\u003ebdbf396\u003c/code\u003e\u003c/a\u003e Update mypy; add 3.14 to the CI; drop python 3.8 support (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/167\"\u003e#167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/f859c055e8453650e1987c5aefaaec36582d3a07\"\u003e\u003ccode\u003ef859c05\u003c/code\u003e\u003c/a\u003e Add tests for astroid v2, v3, and v4 to the CI (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/166\"\u003e#166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/84ef059ba28d08816d3d881e363b9ed42bbeae3a\"\u003e\u003ccode\u003e84ef059\u003c/code\u003e\u003c/a\u003e Adapt asttokens for astroid 4.x (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/165\"\u003e#165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/9db9335648659520c7c8453bc39550fa4f95d539\"\u003e\u003ccode\u003e9db9335\u003c/code\u003e\u003c/a\u003e Various links improvements (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3371ebf7f48f6a731d409fffd6ba235e6a95d85b\"\u003e\u003ccode\u003e3371ebf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/161\"\u003e#161\u003c/a\u003e from gristlabs/dependabot/pip/docs/requests-2.32.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3a60115d3efdb01efc8a6442b59fdd0071518e70\"\u003e\u003ccode\u003e3a60115\u003c/code\u003e\u003c/a\u003e Bump requests from 2.32.2 to 2.32.4 in /docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/584b51c6c084455ad4597886657783d1b661ddfa\"\u003e\u003ccode\u003e584b51c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/160\"\u003e#160\u003c/a\u003e from gristlabs/dependabot/pip/docs/urllib3-2.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3e9d703323ce94987bf9e030bd010eae13fa15b4\"\u003e\u003ccode\u003e3e9d703\u003c/code\u003e\u003c/a\u003e Bump urllib3 from 2.2.2 to 2.5.0 in /docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/64d3f7c3637775fef832a9a9cdb78ec02da494e6\"\u003e\u003ccode\u003e64d3f7c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/158\"\u003e#158\u003c/a\u003e from gristlabs/dependabot/pip/docs/jinja2-3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/9b5fb1abfb171cfb1f01c2d996cbd31e9d1f0660\"\u003e\u003ccode\u003e9b5fb1a\u003c/code\u003e\u003c/a\u003e Bump jinja2 from 3.1.4 to 3.1.6 in /docs\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gristlabs/asttokens/compare/v3.0.0...v3.0.1\"\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 `backrefs` from 5.8 to 6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facelessuser/backrefs/releases\"\u003ebackrefs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Include Unicode 17 zip for early Python 3.15 usage, though Python 3.15 functionality is not guaranteed.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Fix issues with regex imports in later versions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e6.0.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Fix a regression that created an ASCII binary property that would override the ASCII block property.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e6.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: POSIX character classes will now always use POSIX compatibility rules instead of Unicode standard rules,\nif any are specified in the Unicode specification. The affected character classes are: \u003ccode\u003e[[:alnum:]]\u003c/code\u003e, \u003ccode\u003e[[:digit:]]\u003c/code\u003e,\n\u003ccode\u003e[[:xdigit:]]\u003c/code\u003e, and  \u003ccode\u003e[[:punct:]]\u003c/code\u003e. To explicitly use standard Unicode rules for these compatibility properties, use\nthe Unicode property form instead: \u003ccode\u003e[\\p{Alnum}]\u003c/code\u003e, \u003ccode\u003e[\\p{Digit}]\u003c/code\u003e, \u003ccode\u003e[\\p{Punct}]\u003c/code\u003e, or \u003ccode\u003e[\\p{XDigit}]\u003c/code\u003e. This has changed\nto ensure no confusion for users expecting compatible POSIX style character class properties.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Scoped ASCII/Unicode flags (\u003ccode\u003e(?a:pattern)\u003c/code\u003e/\u003ccode\u003e(?u:pattern)\u003c/code\u003e) should be respected for Unicode properties in\n\u003ccode\u003ebre\u003c/code\u003e and will ensure ASCII or Unicode range if used.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Fix issues related to detecting disabled scoped flags.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e5.9\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Add support for Python 3.14.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eENHANCE\u003c/strong\u003e: Switch to deploying with PyPI's \u0026quot;Trusted Publisher\u0026quot;.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/da5453e08f49292b8cc2acab099816819de6c56e\"\u003e\u003ccode\u003eda5453e\u003c/code\u003e\u003c/a\u003e Remove build badge\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/30c281210b1dd417ccb7eb3f8e009acf49aad923\"\u003e\u003ccode\u003e30c2812\u003c/code\u003e\u003c/a\u003e Update docs to use zensical (\u003ca href=\"https://redirect.github.com/facelessuser/backrefs/issues/194\"\u003e#194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/e66f6c4ce60f847680e6c604ec17df6caad538cc\"\u003e\u003ccode\u003ee66f6c4\u003c/code\u003e\u003c/a\u003e Fix import of regex stuff\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/12062282532c41f94fabff589c82db00b86def86\"\u003e\u003ccode\u003e1206228\u003c/code\u003e\u003c/a\u003e Include Unicode 17 zip for Python 3.15 early access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/23738f0d07dcc57c4ca863e412aef63be0060fe5\"\u003e\u003ccode\u003e23738f0\u003c/code\u003e\u003c/a\u003e Fix codec warning is Unicode download script\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/63f8a4b14750828b7c1e385844fd36f6f89859e4\"\u003e\u003ccode\u003e63f8a4b\u003c/code\u003e\u003c/a\u003e Fix grammar\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/7f4bf611e6e7fcc2aa4e0eba2872b5f51b7fc908\"\u003e\u003ccode\u003e7f4bf61\u003c/code\u003e\u003c/a\u003e Rework POSIX alias\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/956df5f387f1958110e5a7cf2a98d42a8309d9b6\"\u003e\u003ccode\u003e956df5f\u003c/code\u003e\u003c/a\u003e Fix ASCII block regression\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/7a948f083c3c87114a8dd87c95dff1893f3af82a\"\u003e\u003ccode\u003e7a948f0\u003c/code\u003e\u003c/a\u003e Clean up code and add more comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/9b2e406be36c1e0fc72651adbc7d2d63c4151483\"\u003e\u003ccode\u003e9b2e406\u003c/code\u003e\u003c/a\u003e Add more flag tests\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facelessuser/backrefs/compare/5.8...6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bracex` from 2.5.post1 to 2.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facelessuser/bracex/releases\"\u003ebracex's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.6\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\u003c/ul\u003e\n\u003c/blockquote\u003e\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/bracex/commit/6d109c55372f0d5086adb7cf84a951cc06391a69\"\u003e\u003ccode\u003e6d109c5\u003c/code\u003e\u003c/a\u003e Add trusted publishing and support for Python 3.14 (\u003ca href=\"https://redirect.github.com/facelessuser/bracex/issues/44\"\u003e#44\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/bracex/commit/c14d46fb495a8fdcd0ec51d4dd42aa587807407d\"\u003e\u003ccode\u003ec14d46f\u003c/code\u003e\u003c/a\u003e Add security policy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/bracex/commit/14645af4bf4de0e1abe4fd6c29bf98871f549273\"\u003e\u003ccode\u003e14645af\u003c/code\u003e\u003c/a\u003e Typos: remove duplicate words\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/facelessuser/bracex/compare/2.5.post1...2.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cachetools` from 6.0.0 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/v6.0.0...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.6.15 to 2026.1.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\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\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/27ca98ad845ee6d130a88301622c137893f71620\"\u003e\u003ccode\u003e27ca98a\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7.0.9 to 7.0.11 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/56c59a63909cfd3162b37e7bc16956e64df0f737\"\u003e\u003ccode\u003e56c59a6\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.0 to 6.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ae0021cd43a77bfba67d20a041469cdf6996570e\"\u003e\u003ccode\u003eae0021c\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.0.0 to 6.1.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/380\"\u003e#380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddf5d0b5d2a3d55fd92a79f141dbb5e074caf924\"\u003e\u003ccode\u003eddf5d0b\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5.0.1 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.06.15...2026.01.04\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cffi` from 1.17.1 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only) - huge thanks to the folks at Quansight Labs for all the work to get this one sorted!\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.0.0b1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only).\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/6366c01d84e9a78e7e85f12ebe9760ba5d19b6d3\"\u003e\u003ccode\u003e6366c01\u003c/code\u003e\u003c/a\u003e release 2.0.0 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/95c847663aec401e4003927a274e4de9b8595f4f\"\u003e\u003ccode\u003e95c8476\u003c/code\u003e\u003c/a\u003e 2.0.0 post beta backports (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/195cbda66b6be9297ef6d584644e50cfdcca4e8a\"\u003e\u003ccode\u003e195cbda\u003c/code\u003e\u003c/a\u003e Release 2.0.0b1 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b4bbe7940d3f76027534db1aecbae9b61c35221a\"\u003e\u003ccode\u003eb4bbe79\u003c/code\u003e\u003c/a\u003e fix version test to support beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/7ed073de66e713cf791b6fdfa23685c81fdfd6ad\"\u003e\u003ccode\u003e7ed073d\u003c/code\u003e\u003c/a\u003e Add support for the free-threaded build (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/178\"\u003e#178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/67a170dc7972dc9361743690b38da3d963b200ef\"\u003e\u003ccode\u003e67a170d\u003c/code\u003e\u003c/a\u003e Change the license from MIT to MIT-no-attribution, which is the same without ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/92645ec9329feb03e3fa86240b40fe0fc37469d1\"\u003e\u003ccode\u003e92645ec\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support/testing (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/177\"\u003e#177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/2b81170583a898478a6996c9705d8c38ab7f73a1\"\u003e\u003ccode\u003e2b81170\u003c/code\u003e\u003c/a\u003e doc: update test commands in Section Testing/development tips (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/25172b84cf51cf58241f074ccd1efd9c7648cb43\"\u003e\u003ccode\u003e25172b8\u003c/code\u003e\u003c/a\u003e doc: update year (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b57a92c03eb2078a99c900519a37d18b4d52324f\"\u003e\u003ccode\u003eb57a92c\u003c/code\u003e\u003c/a\u003e issue 147: force-compute nested structs before parent structs.  Occurs mainly...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.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 `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 `coverage` from 7.9.1 to 7.13.1\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.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\n.. _issue 2105: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2105\"\u003ecoveragepy/coveragepy#2105\u003c/a\u003e\n.. _issue 2109: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2109\"\u003ecoveragepy/coveragepy#2109\u003c/a\u003e\n.. _issue 2110: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2110\"\u003ecoveragepy/coveragepy#2110\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-13-0:\u003c/p\u003e\n\u003ch2\u003eVersion 7.13.0 — 2025-12-08\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFeature: coverage.py now supports :file:\u003ccode\u003e.coveragerc.toml\u003c/code\u003e configuration\nfiles. These files use TOML syntax and take priority over\n:file:\u003ccode\u003epyproject.toml\u003c/code\u003e but lower priority than :file:\u003ccode\u003e.coveragerc\u003c/code\u003e files.\nCloses \u003ccode\u003eissue 1643\u003c/code\u003e_ thanks to \u003ccode\u003eOlena Yefymenko \u0026lt;pull 1952_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: we now include a permanent .pth file which is installed with the code,\nfixing \u003ccode\u003eissue 2084\u003c/code\u003e_.  In 7.12.1b1 this was done incorrectly: it didn't work\nwhen using the source wheel (\u003ccode\u003epy3-none-any\u003c/code\u003e).  This is now fixed. Thanks,\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a6afdc36332d797fb4f4262fc9ff2b2da5bb99c8\"\u003e\u003ccode\u003ea6afdc3\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.13.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a497081b6759957a1c52957fdbb34848e0d46276\"\u003e\u003ccode\u003ea497081\u003c/code\u003e\u003c/a\u003e docs: prep for 7.13.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/e9920336e5118a7a7002b1eb606400cd3be640b2\"\u003e\u003ccode\u003ee992033\u003c/code\u003e\u003c/a\u003e docs: polish up CHANGES\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/18bba6e60958d5c825a93882b8997f2cfc6ecfe3\"\u003e\u003ccode\u003e18bba6e\u003c/code\u003e\u003c/a\u003e chore: bump the action-dependencies group with 4 updates (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2111\"\u003e#2111\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/80fb80826f3bd8953018d4a4a134a7fc42643784\"\u003e\u003ccode\u003e80fb808\u003c/code\u003e\u003c/a\u003e refactor: (?x:...) lets us use re.VERBOSE even when combining later\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/cc272bdc050308328e3ee64800b5e298468260c8\"\u003e\u003ccode\u003ecc272bd\u003c/code\u003e\u003c/a\u003e docs: leave a comment so we'll find this when 3.12 is the minimum\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/70d007d160d40b40de1bae89ad2856c2191c1c94\"\u003e\u003ccode\u003e70d007d\u003c/code\u003e\u003c/a\u003e types: be explicit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a2c1940fd2eae103c2366859d75cb7de195a0439\"\u003e\u003ccode\u003ea2c1940\u003c/code\u003e\u003c/a\u003e types: fully import modules that will be patched\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/57b975d3b8e069364525b2e8d5a88b7fbc0e8b93\"\u003e\u003ccode\u003e57b975d\u003c/code\u003e\u003c/a\u003e types: explicit Protocol inheritance permits changing parameter names\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/63ec12d7c87748e7a03ea2eb6240edeaffc7ccde\"\u003e\u003ccode\u003e63ec12d\u003c/code\u003e\u003c/a\u003e types: clarify that morfs arguments can be a single morf\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.9.1...7.13.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cryptography` from 45.0.4 to 46.0.3\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\u003e46.0.3 - 2025-10-15\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Fixed compilation when using LibreSSL 4.2.0.\n\u003cp\u003e.. _v46-0-2:\u003c/p\u003e\n\u003cp\u003e46.0.2 - 2025-09-30\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.4.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v46-0-1:\u003c/p\u003e\n\u003cp\u003e46.0.1 - 2025-09-16\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Fixed an issue where users installing via ``pip`` on Python 3.14 development\n  versions would not properly install a dependency.\n* Fixed an issue building the free-threaded macOS 3.14 wheels.\n\u003cp\u003e.. _v46-0-0:\u003c/p\u003e\n\u003cp\u003e46.0.0 - 2025-09-16\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Support for Python 3.7 has been removed.\u003c/li\u003e\n\u003cli\u003eSupport for OpenSSL \u0026lt; 3.0 is deprecated and will be removed in the next\nrelease.\u003c/li\u003e\n\u003cli\u003eSupport for \u003ccode\u003ex86_64\u003c/code\u003e macOS (including publishing wheels) is deprecated\nand will be removed in two releases. We will switch to publishing an\n\u003ccode\u003earm64\u003c/code\u003e only wheel for macOS.\u003c/li\u003e\n\u003cli\u003eSupport for 32-bit Windows (including publishing wheels) is deprecated\nand will be removed in two releases. Users should move to a 64-bit\nPython installation.\u003c/li\u003e\n\u003cli\u003eUpdated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.3.\u003c/li\u003e\n\u003cli\u003eWe now build \u003ccode\u003eppc64le\u003c/code\u003e \u003ccode\u003emanylinux\u003c/code\u003e wheels and publish them to PyPI.\u003c/li\u003e\n\u003cli\u003eWe now build \u003ccode\u003ewin_arm64\u003c/code\u003e (Windows on Arm) wheels and publish them to PyPI.\u003c/li\u003e\n\u003cli\u003eAdded support for free-threaded Python 3.14.\u003c/li\u003e\n\u003cli\u003eRemoved the deprecated \u003ccode\u003eget_attribute_for_oid\u003c/code\u003e method on\n:class:\u003ccode\u003e~cryptography.x509.CertificateSigningRequest\u003c/code\u003e. Users should use\n:meth:\u003ccode\u003e~cryptography.x509.Attributes.get_attribute_for_oid\u003c/code\u003e instead.\u003c/li\u003e\n\u003cli\u003eRemoved the deprecated \u003ccode\u003eCAST5\u003c/code\u003e, \u003ccode\u003eSEED\u003c/code\u003e, \u003ccode\u003eIDEA\u003c/code\u003e, and \u003ccode\u003eBlowfish\u003c/code\u003e\nclasses from the cipher module. These are still available in\n:doc:\u003ccode\u003e/hazmat/decrepit/index\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eIn X.509, when performing a PSS signature with a SHA-3 hash, it is now\nencoded with the official NIST SHA3 OID.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v45-0-7:\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/pyca/cryptography/commit/c0af4dd7b75921bbe9f1d41a03dbd4b64a9e3403\"\u003e\u003ccode\u003ec0af4dd\u003c/code\u003e\u003c/a\u003e release 46.0.3 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13681\"\u003e#13681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/99efe5ad150a56efadafacaffd0e3ee319373904\"\u003e\u003ccode\u003e99efe5a\u003c/code\u003e\u003c/a\u003e bump version for 46.0.2 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13531\"\u003e#13531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e735cfc27502320101c130335c556394a125ba52\"\u003e\u003ccode\u003ee735cfc\u003c/code\u003e\u003c/a\u003e release 46.0.1 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13450\"\u003e#13450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/4e457ffba43a6d87efc63c33041e2081438dd8a4\"\u003e\u003ccode\u003e4e457ff\u003c/code\u003e\u003c/a\u003e Explicitly specify python in mac uv build invocation (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13447\"\u003e#13447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/2726efdb6d67f1c90cf9c6062d9fe051965586f8\"\u003e\u003ccode\u003e2726efd\u003c/code\u003e\u003c/a\u003e Depend on CFFI 2.0.0 or newer on Python \u0026gt; 3.8 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13448\"\u003e#13448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/62230623d183706632c0eb7822c96ac95e3710a8\"\u003e\u003ccode\u003e6223062\u003c/code\u003e\u003c/a\u003e release 46.0.0 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13446\"\u003e#13446\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/563c4915b0931455706f761a4579c26698824eae\"\u003e\u003ccode\u003e563c491\u003c/code\u003e\u003c/a\u003e Update comment for pyopenssl-release tag (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13445\"\u003e#13445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/d2f6f7faced35b73277bc624ff496f8af696b172\"\u003e\u003ccode\u003ed2f6f7f\u003c/code\u003e\u003c/a\u003e Bump downstream dependencies in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13439\"\u003e#13439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e7ab02bd679d0b4f55d93486fe27e62554ef15d4\"\u003e\u003ccode\u003ee7ab02b\u003c/code\u003e\u003c/a\u003e we'll ship this with 3.5.3 why not (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13442\"\u003e#13442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/0b68a4bffb61202e4d4f5074cd30c2b9d15f429e\"\u003e\u003ccode\u003e0b68a4b\u003c/code\u003e\u003c/a\u003e Another pair of bump dependencies fix (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13444\"\u003e#13444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/cryptography/compare/45.0.4...46.0.3\"\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.9 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/issu...\n\n_Description has been truncated_","html_url":"https://github.com/pycontribs/subprocess-tee/pull/204","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/pycontribs%2Fsubprocess-tee/issues/204","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/204/packages"},{"uuid":"3775297670","node_id":"PR_kwDOMqBXXs67O8LA","number":102,"state":"closed","title":"chore: bump the backend-tests-python-dependencies group across 1 directory with 20 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-02-01T22:30:35.000Z","author_association":null,"state_reason":null,"created_at":"2026-01-01T22:22:25.000Z","updated_at":"2026-02-01T22:30:36.000Z","time_to_close":2678890,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore: bump","group_name":"backend-tests-python-dependencies","update_count":20,"packages":[{"name":"attrs","old_version":"25.3.0","new_version":"25.4.0","repository_url":"https://github.com/sponsors/hynek"},{"name":"boto3","old_version":"1.40.21","new_version":"1.42.19","repository_url":"https://github.com/boto/boto3"},{"name":"certifi","old_version":"2025.8.3","new_version":"2025.11.12","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"cryptography","old_version":"45.0.7","new_version":"46.0.3","repository_url":"https://github.com/pyca/cryptography"},{"name":"execnet","old_version":"2.1.1","new_version":"2.1.2","repository_url":"https://github.com/pytest-dev/execnet"},{"name":"filelock","old_version":"3.19.1","new_version":"3.20.1","repository_url":"https://github.com/tox-dev/py-filelock"},{"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":"kubernetes","old_version":"33.1.0","new_version":"34.1.0","repository_url":"https://github.com/kubernetes-client/python"},{"name":"pillow","old_version":"11.3.0","new_version":"12.0.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"pycparser","old_version":"2.22","new_version":"2.23","repository_url":"https://github.com/eliben/pycparser"},{"name":"pymongo","old_version":"4.14.1","new_version":"4.15.5","repository_url":"https://github.com/mongodb/mongo-python-driver"},{"name":"pyparsing","old_version":"3.2.3","new_version":"3.3.1","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":"stripe","old_version":"12.5.0","new_version":"14.1.0","repository_url":"https://github.com/stripe/stripe-python"},{"name":"urllib3","old_version":"2.5.0","new_version":"2.6.2","repository_url":"https://github.com/urllib3/urllib3"},{"name":"redis","old_version":"6.4.0","new_version":"7.1.0","repository_url":"https://github.com/redis/redis-py"},{"name":"pydantic","old_version":"2.11.7","new_version":"2.12.5","repository_url":"https://github.com/pydantic/pydantic"}],"path":null,"ecosystem":"pip"},"body":"Bumps the backend-tests-python-dependencies group with 20 updates in the /backend/tests directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [attrs](https://github.com/sponsors/hynek) | `25.3.0` | `25.4.0` |\n| [boto3](https://github.com/boto/boto3) | `1.40.21` | `1.42.19` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.8.3` | `2025.11.12` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.1` | `2.0.0` |\n| [cryptography](https://github.com/pyca/cryptography) | `45.0.7` | `46.0.3` |\n| [execnet](https://github.com/pytest-dev/execnet) | `2.1.1` | `2.1.2` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.19.1` | `3.20.1` |\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| [kubernetes](https://github.com/kubernetes-client/python) | `33.1.0` | `34.1.0` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.3.0` | `12.0.0` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `2.23` |\n| [pymongo](https://github.com/mongodb/mongo-python-driver) | `4.14.1` | `4.15.5` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.3` | `3.3.1` |\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| [stripe](https://github.com/stripe/stripe-python) | `12.5.0` | `14.1.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.5.0` | `2.6.2` |\n| [redis](https://github.com/redis/redis-py) | `6.4.0` | `7.1.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.7` | `2.12.5` |\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 `boto3` from 1.40.21 to 1.42.19\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/98bf6652e6ae1c14f25e4a2752d49b8279222702\"\u003e\u003ccode\u003e98bf665\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.19'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/a86b3cf9e203e89dd4f87a0a5b2db0bf0fa73c11\"\u003e\u003ccode\u003ea86b3cf\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.19\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/a96980b209925aa1e51355309978ac87f85c2cb9\"\u003e\u003ccode\u003ea96980b\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/3a1085f1892c22c9596694c9c7072308fb30002c\"\u003e\u003ccode\u003e3a1085f\u003c/code\u003e\u003c/a\u003e Remove elastictranscoder from documentation (\u003ca href=\"https://redirect.github.com/boto/boto3/issues/4686\"\u003e#4686\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/83130e5c5b393c9c3faf64d252cf3c90ce7fe597\"\u003e\u003ccode\u003e83130e5\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.18'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/2ad1b19890c5ef492e3103bdd08915852d992675\"\u003e\u003ccode\u003e2ad1b19\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.18' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/56a53e6a42b1bf071b00a0bd240aa1a0e8f89924\"\u003e\u003ccode\u003e56a53e6\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.18\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/960d57e96fde8e1dfe7d9402bb87f313cbb2f559\"\u003e\u003ccode\u003e960d57e\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/9a88f847b55bca7702fec6d3f01aee9933dc1910\"\u003e\u003ccode\u003e9a88f84\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.17'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/c302093c8a68dec9517437a225ec37d89a85eba8\"\u003e\u003ccode\u003ec302093\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.17' into develop\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.40.21...1.42.19\"\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 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\u003eSee full diff in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.08.03...2025.11.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cffi` from 1.17.1 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only) - huge thanks to the folks at Quansight Labs for all the work to get this one sorted!\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.0.0b1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only).\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/6366c01d84e9a78e7e85f12ebe9760ba5d19b6d3\"\u003e\u003ccode\u003e6366c01\u003c/code\u003e\u003c/a\u003e release 2.0.0 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/95c847663aec401e4003927a274e4de9b8595f4f\"\u003e\u003ccode\u003e95c8476\u003c/code\u003e\u003c/a\u003e 2.0.0 post beta backports (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/195cbda66b6be9297ef6d584644e50cfdcca4e8a\"\u003e\u003ccode\u003e195cbda\u003c/code\u003e\u003c/a\u003e Release 2.0.0b1 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b4bbe7940d3f76027534db1aecbae9b61c35221a\"\u003e\u003ccode\u003eb4bbe79\u003c/code\u003e\u003c/a\u003e fix version test to support beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/7ed073de66e713cf791b6fdfa23685c81fdfd6ad\"\u003e\u003ccode\u003e7ed073d\u003c/code\u003e\u003c/a\u003e Add support for the free-threaded build (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/178\"\u003e#178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/67a170dc7972dc9361743690b38da3d963b200ef\"\u003e\u003ccode\u003e67a170d\u003c/code\u003e\u003c/a\u003e Change the license from MIT to MIT-no-attribution, which is the same without ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/92645ec9329feb03e3fa86240b40fe0fc37469d1\"\u003e\u003ccode\u003e92645ec\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support/testing (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/177\"\u003e#177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/2b81170583a898478a6996c9705d8c38ab7f73a1\"\u003e\u003ccode\u003e2b81170\u003c/code\u003e\u003c/a\u003e doc: update test commands in Section Testing/development tips (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/25172b84cf51cf58241f074ccd1efd9c7648cb43\"\u003e\u003ccode\u003e25172b8\u003c/code\u003e\u003c/a\u003e doc: update year (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b57a92c03eb2078a99c900519a37d18b4d52324f\"\u003e\u003ccode\u003eb57a92c\u003c/code\u003e\u003c/a\u003e issue 147: force-compute nested structs before parent structs.  Occurs mainly...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cryptography` from 45.0.7 to 46.0.3\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\u003e46.0.3 - 2025-10-15\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Fixed compilation when using LibreSSL 4.2.0.\n\u003cp\u003e.. _v46-0-2:\u003c/p\u003e\n\u003cp\u003e46.0.2 - 2025-09-30\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.4.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v46-0-1:\u003c/p\u003e\n\u003cp\u003e46.0.1 - 2025-09-16\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Fixed an issue where users installing via ``pip`` on Python 3.14 development\n  versions would not properly install a dependency.\n* Fixed an issue building the free-threaded macOS 3.14 wheels.\n\u003cp\u003e.. _v46-0-0:\u003c/p\u003e\n\u003cp\u003e46.0.0 - 2025-09-16\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Support for Python 3.7 has been removed.\u003c/li\u003e\n\u003cli\u003eSupport for OpenSSL \u0026lt; 3.0 is deprecated and will be removed in the next\nrelease.\u003c/li\u003e\n\u003cli\u003eSupport for \u003ccode\u003ex86_64\u003c/code\u003e macOS (including publishing wheels) is deprecated\nand will be removed in two releases. We will switch to publishing an\n\u003ccode\u003earm64\u003c/code\u003e only wheel for macOS.\u003c/li\u003e\n\u003cli\u003eSupport for 32-bit Windows (including publishing wheels) is deprecated\nand will be removed in two releases. Users should move to a 64-bit\nPython installation.\u003c/li\u003e\n\u003cli\u003eUpdated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.3.\u003c/li\u003e\n\u003cli\u003eWe now build \u003ccode\u003eppc64le\u003c/code\u003e \u003ccode\u003emanylinux\u003c/code\u003e wheels and publish them to PyPI.\u003c/li\u003e\n\u003cli\u003eWe now build \u003ccode\u003ewin_arm64\u003c/code\u003e (Windows on Arm) wheels and publish them to PyPI.\u003c/li\u003e\n\u003cli\u003eAdded support for free-threaded Python 3.14.\u003c/li\u003e\n\u003cli\u003eRemoved the deprecated \u003ccode\u003eget_attribute_for_oid\u003c/code\u003e method on\n:class:\u003ccode\u003e~cryptography.x509.CertificateSigningRequest\u003c/code\u003e. Users should use\n:meth:\u003ccode\u003e~cryptography.x509.Attributes.get_attribute_for_oid\u003c/code\u003e instead.\u003c/li\u003e\n\u003cli\u003eRemoved the deprecated \u003ccode\u003eCAST5\u003c/code\u003e, \u003ccode\u003eSEED\u003c/code\u003e, \u003ccode\u003eIDEA\u003c/code\u003e, and \u003ccode\u003eBlowfish\u003c/code\u003e\nclasses from the cipher module. These are still available in\n:doc:\u003ccode\u003e/hazmat/decrepit/index\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eIn X.509, when performing a PSS signature with a SHA-3 hash, it is now\nencoded with the official NIST SHA3 OID.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v45-0-7:\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/c0af4dd7b75921bbe9f1d41a03dbd4b64a9e3403\"\u003e\u003ccode\u003ec0af4dd\u003c/code\u003e\u003c/a\u003e release 46.0.3 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13681\"\u003e#13681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/99efe5ad150a56efadafacaffd0e3ee319373904\"\u003e\u003ccode\u003e99efe5a\u003c/code\u003e\u003c/a\u003e bump version for 46.0.2 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13531\"\u003e#13531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e735cfc27502320101c130335c556394a125ba52\"\u003e\u003ccode\u003ee735cfc\u003c/code\u003e\u003c/a\u003e release 46.0.1 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13450\"\u003e#13450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/4e457ffba43a6d87efc63c33041e2081438dd8a4\"\u003e\u003ccode\u003e4e457ff\u003c/code\u003e\u003c/a\u003e Explicitly specify python in mac uv build invocation (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13447\"\u003e#13447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/2726efdb6d67f1c90cf9c6062d9fe051965586f8\"\u003e\u003ccode\u003e2726efd\u003c/code\u003e\u003c/a\u003e Depend on CFFI 2.0.0 or newer on Python \u0026gt; 3.8 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13448\"\u003e#13448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/62230623d183706632c0eb7822c96ac95e3710a8\"\u003e\u003ccode\u003e6223062\u003c/code\u003e\u003c/a\u003e release 46.0.0 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13446\"\u003e#13446\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/563c4915b0931455706f761a4579c26698824eae\"\u003e\u003ccode\u003e563c491\u003c/code\u003e\u003c/a\u003e Update comment for pyopenssl-release tag (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13445\"\u003e#13445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/d2f6f7faced35b73277bc624ff496f8af696b172\"\u003e\u003ccode\u003ed2f6f7f\u003c/code\u003e\u003c/a\u003e Bump downstream dependencies in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13439\"\u003e#13439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e7ab02bd679d0b4f55d93486fe27e62554ef15d4\"\u003e\u003ccode\u003ee7ab02b\u003c/code\u003e\u003c/a\u003e we'll ship this with 3.5.3 why not (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13442\"\u003e#13442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/0b68a4bffb61202e4d4f5074cd30c2b9d15f429e\"\u003e\u003ccode\u003e0b68a4b\u003c/code\u003e\u003c/a\u003e Another pair of bump dependencies fix (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13444\"\u003e#13444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/cryptography/compare/45.0.7...46.0.3\"\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 `filelock` from 3.19.1 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\u003ch2\u003e3.20.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd tox.toml to sdist by \u003ca href=\"https://github.com/mtelka\"\u003e\u003ccode\u003e@​mtelka\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/436\"\u003etox-dev/filelock#436\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate docs with example by \u003ca href=\"https://github.com/znichollscr\"\u003e\u003ccode\u003e@​znichollscr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/438\"\u003etox-dev/filelock#438\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd 3.14 support and drop 3.9 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/448\"\u003etox-dev/filelock#448\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/mtelka\"\u003e\u003ccode\u003e@​mtelka\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/436\"\u003etox-dev/filelock#436\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/znichollscr\"\u003e\u003ccode\u003e@​znichollscr\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/438\"\u003etox-dev/filelock#438\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.19.1...3.20.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.19.1...3.20.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/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.19.1...3.20.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 `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 `kubernetes` from 33.1.0 to 34.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kubernetes-client/python/releases\"\u003ekubernetes's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKubernetes Python Client v34.1.0 Stable Release\u003c/h2\u003e\n\u003cp\u003eGetting started:\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003epip install --pre --upgrade kubernetes\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr from source, download attached zip file, then\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003eunzip client-python-v34.1.0.zip\ncd client-python-v34.1.0\npython setup.py install\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThen follow examples in \u003ca href=\"https://github.com/kubernetes-client/python/tree/release-34.0/examples\"\u003ehttps://github.com/kubernetes-client/python/tree/release-34.0/examples\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://github.com/kubernetes-client/python/blob/release-34.0/CHANGELOG.md\"\u003ehttps://github.com/kubernetes-client/python/blob/release-34.0/CHANGELOG.md\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eKubernetes Python Client v34.1.0 Beta 1 Release\u003c/h2\u003e\n\u003cp\u003eGetting started:\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003epip install --pre --upgrade kubernetes\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr from source, download attached zip file, then\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003eunzip client-python-v34.1.0b1.zip\ncd client-python-v34.1.0b1\npython setup.py install\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThen follow examples in \u003ca href=\"https://github.com/kubernetes-client/python/tree/release-34.0/examples\"\u003ehttps://github.com/kubernetes-client/python/tree/release-34.0/examples\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://github.com/kubernetes-client/python/blob/release-34.0/CHANGELOG.md\"\u003ehttps://github.com/kubernetes-client/python/blob/release-34.0/CHANGELOG.md\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eKubernetes Python Client v34.1.0 Alpha 1 Release\u003c/h2\u003e\n\u003cp\u003eGetting started:\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003epip install --pre --upgrade kubernetes\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr from source, download attached zip file, then\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003eunzip client-python-v34.1.0a1.zip\ncd client-python-v34.1.0a1\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kubernetes-client/python/blob/master/CHANGELOG.md\"\u003ekubernetes's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev34.1.0b1\u003c/h1\u003e\n\u003cp\u003eKubernetes API Version: v1.34.1\u003c/p\u003e\n\u003ch1\u003ev34.1.0a1\u003c/h1\u003e\n\u003cp\u003eKubernetes API Version: v1.34.1\u003c/p\u003e\n\u003ch3\u003eAPI Change\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003eomitempty\u003c/code\u003e and \u003ccode\u003eopt\u003c/code\u003e tag to the API \u003ccode\u003ev1beta2\u003c/code\u003e AdminAccess type in the \u003ccode\u003eDeviceRequestAllocationResult\u003c/code\u003e struct. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/132338\"\u003ekubernetes/kubernetes#132338\u003c/a\u003e, \u003ca href=\"https://github.com/PatrickLaabs\"\u003e\u003ccode\u003e@​PatrickLaabs\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a \u003ccode\u003eruntime.ApplyConfiguration\u003c/code\u003e interface implemented by all generated apply configuration types. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/132194\"\u003ekubernetes/kubernetes#132194\u003c/a\u003e, \u003ca href=\"https://github.com/alvaroaleman\"\u003e\u003ccode\u003e@​alvaroaleman\u003c/code\u003e\u003c/a\u003e) [SIG API Machinery and Instrumentation]\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a detailed event for in-place pod vertical scaling completed, improving cluster management and debugging. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/130387\"\u003ekubernetes/kubernetes#130387\u003c/a\u003e, \u003ca href=\"https://github.com/shiya0705\"\u003e\u003ccode\u003e@​shiya0705\u003c/code\u003e\u003c/a\u003e) [SIG API Machinery, Apps, Autoscaling, Node, Scheduling and Testing]\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a mechanism for configurable container restarts: \u003cem\u003econtainer-level restart rules\u003c/em\u003e. This was an alpha feature behind the \u003ccode\u003eContainerRestartRules\u003c/code\u003e feature gate. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/132642\"\u003ekubernetes/kubernetes#132642\u003c/a\u003e, \u003ca href=\"https://github.com/yuanwang04\"\u003e\u003ccode\u003e@​yuanwang04\u003c/code\u003e\u003c/a\u003e) [SIG API Machinery, Apps, Node and Testing]\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a new \u003ccode\u003eFileKeyRef\u003c/code\u003e field to containers, allowing them to load variables from files by setting this field.\u003c/p\u003e\n\u003cp\u003eIntroduced the \u003ccode\u003eEnvFiles\u003c/code\u003e feature gate to govern activation of this functionality. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/132626\"\u003ekubernetes/kubernetes#132626\u003c/a\u003e, \u003ca href=\"https://github.com/HirazawaUi\"\u003e\u003ccode\u003e@​HirazawaUi\u003c/code\u003e\u003c/a\u003e) [SIG API Machinery, Apps, Node and Testing]\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded driver-owned fields in \u003ccode\u003eResourceSlice\u003c/code\u003e to mark whether the device was shareable among multiple resource claims (or requests) and to specify how each capacity could be shared between different requests.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded user-owned fields in \u003ccode\u003eResourceClaim\u003c/code\u003e to specify resource requirements against each device capacity.\u003c/li\u003e\n\u003cli\u003eAdded scheduler-owned field in \u003ccode\u003eResourceClaim.Status\u003c/code\u003e to specify how much device capacity is reserved for a specific request.\u003c/li\u003e\n\u003cli\u003eAdded an additional identifier to \u003ccode\u003eResourceClaim.Status\u003c/code\u003e for the device supports multiple allocations.\u003c/li\u003e\n\u003cli\u003eAdded a new constraint type to enforce uniqueness of specified attributes across all allocated devices. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/132522\"\u003ekubernetes/kubernetes#132522\u003c/a\u003e, \u003ca href=\"https://github.com/sunya-ch\"\u003e\u003ccode\u003e@​sunya-ch\u003c/code\u003e\u003c/a\u003e) [SIG API Machinery, Apps, Architecture, CLI, Cluster Lifecycle, Network, Node, Release, Scheduling and Testing]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded new optional APIs in \u003ccode\u003eResouceSlice.Basic\u003c/code\u003e and \u003ccode\u003eResourceClaim.Status.AllocatedDeviceStatus\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/130160\"\u003ekubernetes/kubernetes#130160\u003c/a\u003e, \u003ca href=\"https://github.com/KobayashiD27\"\u003e\u003ccode\u003e@​KobayashiD27\u003c/code\u003e\u003c/a\u003e) [SIG API Machinery, Apps, Architecture, Node, Release, Scheduling and Testing]\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support for specifying \u003ccode\u003econtrolplane\u003c/code\u003e or \u003ccode\u003ecluster\u003c/code\u003e egress selectors in JWT authenticators via the \u003ccode\u003eissuer.egressSelectorType\u003c/code\u003e field in the \u003ccode\u003eAuthenticationConfiguration.jwt\u003c/code\u003e array. If unset, the previous behavior of using no egress selector is preserved. This functionality requires the \u003ccode\u003eStructuredAuthenticationConfigurationEgressSelector\u003c/code\u003e beta feature gate (enabled by default). (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/132768\"\u003ekubernetes/kubernetes#132768\u003c/a\u003e, \u003ca href=\"https://github.com/enj\"\u003e\u003ccode\u003e@​enj\u003c/code\u003e\u003c/a\u003e) [SIG API Machinery, Auth and Testing]\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support in the Kubelet for monitoring the health of devices allocated via Dynamic Resource Allocation (DRA) and report it in the \u003ccode\u003epod.status.containerStatuses.allocatedResourcesStatus\u003c/code\u003e field. This required the DRA plugin to implement the new v1alpha1 \u003ccode\u003eNodeHealth\u003c/code\u003e gRPC service. This feature was controlled by the \u003ccode\u003eResourceHealthStatus\u003c/code\u003e feature gate. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/130606\"\u003ekubernetes/kubernetes#130606\u003c/a\u003e, \u003ca href=\"https://github.com/Jpsassine\"\u003e\u003ccode\u003e@​Jpsassine\u003c/code\u003e\u003c/a\u003e) [SIG Apps, Architecture, Auth, CLI, Cloud Provider, Cluster Lifecycle, Etcd, Network, Node, Release, Scheduling, Storage and Testing]\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support in the kubelet's image pull credential tracking for service account-based verification. When an image was pulled using service account credentials via external credential providers, subsequent Pods using the same service account (UID, name, and namespace) could access the cached image without re-authentication for the lifetime of that service account. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/132771\"\u003ekubernetes/kubernetes#132771\u003c/a\u003e, \u003ca href=\"https://github.com/aramase\"\u003e\u003ccode\u003e@​aramase\u003c/code\u003e\u003c/a\u003e) [SIG Auth, Node and Testing]\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded validation to reject Pods using the \u003ccode\u003ePodLevelResources\u003c/code\u003e feature on Windows OS due to lack of support. The API server rejected Pods with pod-level resources and a \u003ccode\u003ePod.spec.os.name\u003c/code\u003e targeting Windows. Kubelet on nodes running Windows also rejected Pods with pod-level resources at the admission phase. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/133046\"\u003ekubernetes/kubernetes#133046\u003c/a\u003e, \u003ca href=\"https://github.com/toVersus\"\u003e\u003ccode\u003e@​toVersus\u003c/code\u003e\u003c/a\u003e) [SIG Apps and Node]\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded warnings when creating headless service with set \u003ccode\u003eloadBalancerIP\u003c/code\u003e,\u003ccode\u003eexternalIPs\u003c/code\u003e and/or \u003ccode\u003eSessionAffinity\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/132214\"\u003ekubernetes/kubernetes#132214\u003c/a\u003e, \u003ca href=\"https://github.com/Peac36\"\u003e\u003ccode\u003e@​Peac36\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllowed \u003ccode\u003epvc.spec.VolumeAttributesClassName\u003c/code\u003e to change from non-nil to nil. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/132106\"\u003ekubernetes/kubernetes#132106\u003c/a\u003e, \u003ca href=\"https://github.com/AndrewSirenko\"\u003e\u003ccode\u003e@​AndrewSirenko\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllowed setting the \u003ccode\u003ehostnameOverride\u003c/code\u003e field in \u003ccode\u003ePodSpec\u003c/code\u003e to specify any RFC 1123 DNS subdomain as the pod's hostname. The \u003ccode\u003eHostnameOverride\u003c/code\u003e feature gate was introduced to control enablement of this functionality. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/132558\"\u003ekubernetes/kubernetes#132558\u003c/a\u003e, \u003ca href=\"https://github.com/HirazawaUi\"\u003e\u003ccode\u003e@​HirazawaUi\u003c/code\u003e\u003c/a\u003e) [SIG API Machinery, Apps, Network, Node and Testing]\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged underlying logic for \u003ccode\u003eEviction Manager\u003c/code\u003e helper functions. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/132277\"\u003ekubernetes/kubernetes#132277\u003c/a\u003e, \u003ca href=\"https://github.com/KevinTMtz\"\u003e\u003ccode\u003e@​KevinTMtz\u003c/code\u003e\u003c/a\u003e) [SIG Node, Scheduling and Testing]\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged underlying logic to propagate pod-level hugepage cgroup to containers when they did not specify hugepage resources.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded validation to enforce the hugepage aggregated container limits to be smaller than or equal to pod-level limits. This was already enforced with the defaulted requests from the specified limits, however it did not make it clear about both hugepage requests and limits. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/131089\"\u003ekubernetes/kubernetes#131089\u003c/a\u003e, \u003ca href=\"https://github.com/KevinTMtz\"\u003e\u003ccode\u003e@​KevinTMtz\u003c/code\u003e\u003c/a\u003e) [SIG Apps, Node and Testing]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCorrected the documentation to clarify that \u003ccode\u003epodSelector\u003c/code\u003e is optional and described its default behavior. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/131354\"\u003ekubernetes/kubernetes#131354\u003c/a\u003e, \u003ca href=\"https://github.com/tomoish\"\u003e\u003ccode\u003e@​tomoish\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDRA API: resource.k8s.io/v1alpha3 now only contains DeviceTaintRule. All other types got removed because they became obsolete when introducing the v1beta1 API in 1.32.\nbefore updating a cluster where resourceclaims, resourceclaimtemplates, deviceclasses, or resourceslices might have been stored using Kubernetes \u0026lt; 1.32, delete all of those resources before updating and recreate them as needed while running Kubernetes \u0026gt;= 1.32. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/132000\"\u003ekubernetes/kubernetes#132000\u003c/a\u003e, \u003ca href=\"https://github.com/pohly\"\u003e\u003ccode\u003e@​pohly\u003c/code\u003e\u003c/a\u003e) [SIG Etcd, Node, Scheduling and Testing]\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDRA: Starting with Kubernetes 1.34, the alpha-level \u003ccode\u003eresource.k8s.io/admin-access\u003c/code\u003e label has been updated to \u003ccode\u003eresource.kubernetes.io/admin-access\u003c/code\u003e. Admins using the alpha feature and updating from 1.33 can set both labels, upgrade, then remove \u003ccode\u003eresource.k8s.io/admin-access\u003c/code\u003e when no downgrade is going to happen anymore. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/131996\"\u003ekubernetes/kubernetes#131996\u003c/a\u003e, \u003ca href=\"https://github.com/ritazh\"\u003e\u003ccode\u003e@​ritazh\u003c/code\u003e\u003c/a\u003e) [SIG Node and Testing]\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDRA: The scheduler plugin prevented abnormal filter runtimes by timing out after 10 seconds. This was configurable via the plugin configuration's \u003ccode\u003eFilterTimeout\u003c/code\u003e. Setting it to zero disabled the timeout and restored the behavior of Kubernetes \u0026lt;= 1.33. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/132033\"\u003ekubernetes/kubernetes#132033\u003c/a\u003e, \u003ca href=\"https://github.com/pohly\"\u003e\u003ccode\u003e@​pohly\u003c/code\u003e\u003c/a\u003e) [SIG Node, Scheduling and Testing]\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDRA: When the prioritized list feature was used in a request and the resulting number of allocated devices exceeded the number of allowed devices per claim, the scheduler aborted the attempt to allocate devices early. Previously, it tried to many different combinations, which could take a long time. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/130593\"\u003ekubernetes/kubernetes#130593\u003c/a\u003e, \u003ca href=\"https://github.com/mortent\"\u003e\u003ccode\u003e@​mortent\u003c/code\u003e\u003c/a\u003e) [SIG Apps, Node, Scheduling and Testing]\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDRA: removed support for the v1alpha4 kubelet gRPC API (added in 1.31, superseded in 1.32). DRA drivers using the helper package from Kubernetes  \u0026gt;= 1.32 use the v1beta1 API and continue to be supported. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/132574\"\u003ekubernetes/kubernetes#132574\u003c/a\u003e, \u003ca href=\"https://github.com/pohly\"\u003e\u003ccode\u003e@​pohly\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDeprecated \u003ccode\u003eStreamingConnectionIdleTimeout\u003c/code\u003e field of the kubelet config. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/131992\"\u003ekubernetes/kubernetes#131992\u003c/a\u003e, \u003ca href=\"https://github.com/lalitc375\"\u003e\u003ccode\u003e@​lalitc375\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDynamic Resource Allocation: Graduated core functionality to general availability (GA). This newly stable feature uses the \u003cem\u003estructured parameters\u003c/em\u003e flavor of DRA. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/132706\"\u003ekubernetes/kubernetes#132706\u003c/a\u003e, \u003ca href=\"https://github.com/pohly\"\u003e\u003ccode\u003e@​pohly\u003c/code\u003e\u003c/a\u003e) [SIG API Machinery, Apps, Auth, Autoscaling, Etcd, Node, Scheduling and Testing]\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eEnabled kube-apiserver support for \u003ccode\u003ePodCertificateRequest\u003c/code\u003e and \u003ccode\u003ePodCertificate\u003c/code\u003e projected volumes (behind the \u003ccode\u003ePodCertificateRequest\u003c/code\u003e feature gate). (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/128010\"\u003ekubernetes/kubernetes#128010\u003c/a\u003e, \u003ca href=\"https://github.com/ahmedtd\"\u003e\u003ccode\u003e@​ahmedtd\u003c/code\u003e\u003c/a\u003e) [SIG API Machinery, Apps, Auth, Cloud Provider, Etcd, Node, Storage and Testing]\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eExtended resources backed by DRA feature allowed cluster operator to specify \u003ccode\u003eextendedResourceName\u003c/code\u003e in \u003ccode\u003eDeviceClass\u003c/code\u003e, and application operator to continue using extended resources in pod's requests to request for DRA devices matching the DeviceClass.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eNodeResourcesFit\u003c/code\u003e plugin scoring didn't work for extended resources backed by DRA. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/130653\"\u003ekubernetes/kubernetes#130653\u003c/a\u003e, \u003ca href=\"https://github.com/yliaog\"\u003e\u003ccode\u003e@​yliaog\u003c/code\u003e\u003c/a\u003e) [SIG API Machinery, Apps, Auth, Node, Scheduling and Testing]\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eExtended the NodePorts scheduling plugin to consider hostPorts used by restartable init containers. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/132040\"\u003ekubernetes/kubernetes#132040\u003c/a\u003e, \u003ca href=\"https://github.com/avrittrohwer\"\u003e\u003ccode\u003e@​avrittrohwer\u003c/code\u003e\u003c/a\u003e) [SIG Scheduling and Testing]\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed a 1.33 regression that causes a nil panic in kube-scheduler when aggregating resource requested across container's spec and status. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/132895\"\u003ekubernetes/kubernetes#132895\u003c/a\u003e, \u003ca href=\"https://github.com/yue9944882\"\u003e\u003ccode\u003e@​yue9944882\u003c/code\u003e\u003c/a\u003e) [SIG Node and Scheduling]\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed prerelease lifecycle for \u003ccode\u003ePodCertificateRequest\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/133350\"\u003ekubernetes/kubernetes#133350\u003c/a\u003e, \u003ca href=\"https://github.com/carlory\"\u003e\u003ccode\u003e@​carlory\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIntroduced OpenAPI format support for \u003ccode\u003ek8s-short-name\u003c/code\u003e and \u003ccode\u003ek8s-long-name\u003c/code\u003e in CustomResourceDefinition schemas. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/132504\"\u003ekubernetes/kubernetes#132504\u003c/a\u003e, \u003ca href=\"https://github.com/jpbetz\"\u003e\u003ccode\u003e@​jpbetz\u003c/code\u003e\u003c/a\u003e) [SIG API Machinery, Architecture, Auth, CLI, Cloud Provider, Cluster Lifecycle, Instrumentation, Network, Node, Scheduling and Storage]\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/kubernetes-client/python/commit/5b23a44aa06010ac6ffe423d7b0e090caf7882ff\"\u003e\u003ccode\u003e5b23a44\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kubernetes-client/python/issues/2455\"\u003e#2455\u003c/a\u003e from yliaog/automated-release-of-34.1.0-upstream-rel...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kubernetes-client/python/commit/8866972d0e42684f289f14a30e9db645873c5a07\"\u003e\u003ccode\u003e8866972\u003c/code\u003e\u003c/a\u003e Updated the compatibility matrix and maintenance status\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kubernetes-client/python/commit/9bb20149e75c65640b868d6d0eb389d2a8930059\"\u003e\u003ccode\u003e9bb2014\u003c/code\u003e\u003c/a\u003e generated client change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kubernetes-client/python/commit/efa2b2610b4b4223fd06137b0c7f6c326338d669\"\u003e\u003ccode\u003eefa2b26\u003c/code\u003e\u003c/a\u003e update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kubernetes-client/python/commit/b374f2ea67b2caa183e52f1e1ce57e27aaadac89\"\u003e\u003ccode\u003eb374f2e\u003c/code\u003e\u003c/a\u003e update version constants for 34.1.0 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kubernetes-client/python/commit/9d14e9fbdd7bce1ed3c5bac4cb54caac3605e353\"\u003e\u003ccode\u003e9d14e9f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kubernetes-client/python/issues/2452\"\u003e#2452\u003c/a\u003e from yliaog/automated-release-of-34.1.0b1-upstream-r...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kubernetes-client/python/commit/749ec15345a6a1d1daa2fbab7779dd554669335c\"\u003e\u003ccode\u003e749ec15\u003c/code\u003e\u003c/a\u003e generated client change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kubernetes-client/python/commit/14901c6b346a14a4b925435c124bd98dc8abe247\"\u003e\u003ccode\u003e14901c6\u003c/code\u003e\u003c/a\u003e update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kubernetes-client/python/commit/fe16bed8478ea77dd94ee544d94fc93093745447\"\u003e\u003ccode\u003efe16bed\u003c/code\u003e\u003c/a\u003e update version constants for 34.1.0b1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kubernetes-client/python/commit/c66f45a265b851aeb13d6986eb7c61df9562ec0d\"\u003e\u003ccode\u003ec66f45a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kubernetes-client/python/issues/2448\"\u003e#2448\u003c/a\u003e from yliaog/automated-release-of-34.1.0a1-upstream-r...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kubernetes-client/python/compare/v33.1.0...v34.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pillow` from 11.3.0 to 12.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-pillow/Pillow/releases\"\u003epillow's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e12.0.0\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://pillow.readthedocs.io/en/stable/releasenotes/12.0.0.html\"\u003ehttps://pillow.readthedocs.io/en/stable/releasenotes/12.0.0.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eRemovals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for FreeType \u0026lt;= 2.9.0 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9159\"\u003e#9159\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.9 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9119\"\u003e#9119\u003c/a\u003e [\u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eRemove deprecations for Pillow 12.0.0 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9053\"\u003e#9053\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDeprecations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecate Image._show \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9186\"\u003e#9186\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eDeprecate ImageCmsProfile product_name and product_info \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/8995\"\u003e#8995\u003c/a\u003e [\u003ca href=\"https://github.com/lukegb\"\u003e\u003ccode\u003e@​lukegb\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImagingHistogramInstance can use two bands \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9251\"\u003e#9251\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate 12.0.0 release notes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9247\"\u003e#9247\u003c/a\u003e [\u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdded ImageDraw alpha channel examples \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9201\"\u003e#9201\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate Python version \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9230\"\u003e#9230\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdated macOS tested Pillow versions \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9209\"\u003e#9209\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd GitHub profile link to release notes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9197\"\u003e#9197\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eSplit versionadded info \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9190\"\u003e#9190\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eDocument ImageFile.MAXBLOCK \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9163\"\u003e#9163\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdated macOS version in CI targets \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9157\"\u003e#9157\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eFix typos \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9135\"\u003e#9135\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdded \u0026quot;Colors\u0026quot; to concepts \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9067\"\u003e#9067\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate macOS tested Pillow versions \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9068\"\u003e#9068\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eThanks, folks! \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9056\"\u003e#9056\u003c/a\u003e [\u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eSetup nit: \u0026quot;fork\u0026quot; should be lowercased \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9055\"\u003e#9055\u003c/a\u003e [\u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDependencies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate dependency cibuildwheel to v3.2.1 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9246\"\u003e#9246\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9233\"\u003e#9233\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003epre-commit-ci[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate harfbuzz to 12.1.0 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9218\"\u003e#9218\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate libtiff to 4.7.1 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9222\"\u003e#9222\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate FreeType to 2.14.1 on macOS and Linux wheels \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9217\"\u003e#9217\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency cibuildwheel to v3.2.0 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9219\"\u003e#9219\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate Ghostscript to 10.6.0 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9202\"\u003e#9202\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate openjpeg to 2.5.4 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9215\"\u003e#9215\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate harfbuzz to 11.5.0 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9203\"\u003e#9203\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency mypy to v1.18.2 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9213\"\u003e#9213\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency mypy to v1.18.1 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9207\"\u003e#9207\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate github-actions \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9194\"\u003e#9194\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdated harfbuzz to 11.4.5 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9150\"\u003e#9150\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate zlib-ng to 2.2.5 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9140\"\u003e#9140\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate raqm to 0.10.3 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9137\"\u003e#9137\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate libjpeg-turbo to 3.1.2 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9188\"\u003e#9188\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9180\"\u003e#9180\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003epre-commit-ci[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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-pillow/Pillow/commit/693df7b42c666f88c719f9973be0ad71607328e0\"\u003e\u003ccode\u003e693df7b\u003c/code\u003e\u003c/a\u003e 12.0.0 version bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/d175bb88a302e161173e05b1c4103910d7366623\"\u003e\u003ccode\u003ed175bb8\u003c/code\u003e\u003c/a\u003e Use macos-14 for iOS arm64 simulator (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9258\"\u003e#9258\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/592b2f820aa1f75f8ae8bf4f30e1b4bc62023535\"\u003e\u003ccode\u003e592b2f8\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Use macos-latest for iOS arm64 simulator\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/5dddb2ce94a715e54442c1d30c9ffc04914d96fe\"\u003e\u003ccode\u003e5dddb2c\u003c/code\u003e\u003c/a\u003e Use enums for Modes and RawModes in C (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9256\"\u003e#9256\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/e7b72a3bbdec4e3f4120e6b5fe4082d78315ff13\"\u003e\u003ccode\u003ee7b72a3\u003c/code\u003e\u003c/a\u003e Add ImageText (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9098\"\u003e#9098\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/864d4b6e0937e9d468de26b933f31b1639e0f22a\"\u003e\u003ccode\u003e864d4b6\u003c/code\u003e\u003c/a\u003e Shift bits before making value negative (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9255\"\u003e#9255\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/994a9def5d94bc59b60447bbab445834f7f9f9bf\"\u003e\u003ccode\u003e994a9de\u003c/code\u003e\u003c/a\u003e Install arro3 dependencies when type checking (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9254\"\u003e#9254\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/d5e1601b32ea43b45ce8f820e4b349e9b5e2dd6c\"\u003e\u003ccode\u003ed5e1601\u003c/code\u003e\u003c/a\u003e Improved documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/e533ccccfcef79c031ac1178a9b78db2fb000a6f\"\u003e\u003ccode\u003ee533ccc\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into imagetext\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/95a85dc6693ca221643906214b0e1f4590986c0f\"\u003e\u003ccode\u003e95a85dc\u003c/code\u003e\u003c/a\u003e Use snake case\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-pillow/Pillow/compare/11.3.0...12.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pycparser` from 2.22 to 2.23\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/eliben/pycparser/releases\"\u003epycparser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003erelease_v2.23\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow abstract declarator \u0026quot;static\u0026quot; (GH issue \u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/539\"\u003e#539\u003c/a\u003e) by \u003ca href=\"https://github.com/gperciva\"\u003e\u003ccode\u003e@​gperciva\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/545\"\u003eeliben/pycparser#545\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/550\"\u003eeliben/pycparser#550\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd dirent and socket typedefs. by \u003ca href=\"https://github.com/MegaManSec\"\u003e\u003ccode\u003e@​MegaManSec\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/558\"\u003eeliben/pycparser#558\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport for labels with no statement by \u003ca href=\"https://github.com/ignatirabo\"\u003e\u003ccode\u003e@​ignatirabo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/562\"\u003eeliben/pycparser#562\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept empty 'case' or 'default' labels by \u003ca href=\"https://github.com/ignatirabo\"\u003e\u003ccode\u003e@​ignatirabo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/564\"\u003eeliben/pycparser#564\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: preserve parentheses for statement exprs by \u003ca href=\"https://github.com/zawan-ila\"\u003e\u003ccode\u003e@​zawan-ila\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/566\"\u003eeliben/pycparser#566\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: hex float types by \u003ca href=\"https://github.com/zawan-ila\"\u003e\u003ccode\u003e@​zawan-ila\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/567\"\u003eeliben/pycparser#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExplicit error for comments, with README link by \u003ca href=\"https://github.com/cellularmitosis\"\u003e\u003ccode\u003e@​cellularmitosis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/569\"\u003eeliben/pycparser#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eshowemptyattrs option on Node.show() by \u003ca href=\"https://github.com/cellularmitosis\"\u003e\u003ccode\u003e@​cellularmitosis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/570\"\u003eeliben/pycparser#570\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd fake typedefs for GNU Extension 128-bit integers. by \u003ca href=\"https://github.com/dj-wednesday\"\u003e\u003ccode\u003e@​dj-wednesday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/577\"\u003eeliben/pycparser#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTypedef for __kernel_sa_family_t in linux/socket.h by \u003ca href=\"https://github.com/crosser\"\u003e\u003ccode\u003e@​crosser\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/578\"\u003eeliben/pycparser#578\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/gperciva\"\u003e\u003ccode\u003e@​gperciva\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/545\"\u003eeliben/pycparser#545\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MegaManSec\"\u003e\u003ccode\u003e@​MegaManSec\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/558\"\u003eeliben/pycparser#558\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ignatirabo\"\u003e\u003ccode\u003e@​ignatirabo\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/562\"\u003eeliben/pycparser#562\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zawan-ila\"\u003e\u003ccode\u003e@​zawan-ila\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/566\"\u003eeliben/pycparser#566\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cellularmitosis\"\u003e\u003ccode\u003e@​cellularmitosis\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/569\"\u003eeliben/pycparser#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dj-wednesday\"\u003e\u003ccode\u003e@​dj-wednesday\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/577\"\u003eeliben/pycparser#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crosser\"\u003e\u003ccode\u003e@​crosser\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/578\"\u003eeliben/pycparser#578\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/eliben/pycparser/compare/release_v2.22...release_v2.23\"\u003ehttps://github.com/eliben/pycparser/compare/release_v2.22...release_v2.23\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/5b60167602e7914139b3e277266ccdff5c24dbf2\"\u003e\u003ccode\u003e5b60167\u003c/code\u003e\u003c/a\u003e Prepare for release 2.23\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/7b24736bbb875a5c6c6f0520412f03aace75d0ee\"\u003e\u003ccode\u003e7b24736\u003c/code\u003e\u003c/a\u003e Typedef for __kernel_sa_family_t in _fake_typedefs.h (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/578\"\u003e#578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/90184f1f4eb1234fb9e7ae0c8b74eab9ea963482\"\u003e\u003ccode\u003e90184f1\u003c/code\u003e\u003c/a\u003e Add fake typedefs for GNU Extension 128-bit integers. (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/577\"\u003e#577\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/f04fdcde3d95be4a632948718d0c46eac09c50ce\"\u003e\u003ccode\u003ef04fdcd\u003c/code\u003e\u003c/a\u003e showemptyattrs option on Node.show() (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/570\"\u003e#570\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/156eae7f42843d8a3e78a68995d9cc7485577e38\"\u003e\u003ccode\u003e156eae7\u003c/code\u003e\u003c/a\u003e Explicit error for comments, with README link (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/569\"\u003e#569\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/2215299261306df71e2cec23bb3acd7b8f31f8db\"\u003e\u003ccode\u003e2215299\u003c/code\u003e\u003c/a\u003e fix: hex float types (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/567\"\u003e#567\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/037bd31d4e0e69e8c4d80e45311ae46abc15dd4e\"\u003e\u003ccode\u003e037bd31\u003c/code\u003e\u003c/a\u003e fix: preserve parentheses for statement exprs (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/566\"\u003e#566\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/9cecc090151b31d8821786bca3b25851a4a33272\"\u003e\u003ccode\u003e9cecc09\u003c/code\u003e\u003c/a\u003e Accept empty 'case' or 'default' labels (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/564\"\u003e#564\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/7ae671d3ac44e1000bcbe7108b24bdb9187443ac\"\u003e\u003ccode\u003e7ae671d\u003c/code\u003e\u003c/a\u003e Support for labels with no statement (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/562\"\u003e#562\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/42b542324859a108f2cf35bcfe21fe5877ceb091\"\u003e\u003ccode\u003e42b5423\u003c/...\n\n_Description has been truncated_","html_url":"https://github.com/kjaskiewiczz/mender-server/pull/102","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/kjaskiewiczz%2Fmender-server/issues/102","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/102/packages"},{"uuid":"3767588651","node_id":"PR_kwDOPj-SKM661cle","number":27,"state":"open","title":"Bump cffi from 1.17.1 to 2.0.0 in /siri-watsonx-orchestrate","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":"2025-12-29T14:44:47.000Z","updated_at":"2025-12-29T14:44:48.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"}],"path":"/siri-watsonx-orchestrate","ecosystem":"pip"},"body":"Bumps [cffi](https://github.com/python-cffi/cffi) from 1.17.1 to 2.0.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only) - huge thanks to the folks at Quansight Labs for all the work to get this one sorted!\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.0.0b1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only).\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/6366c01d84e9a78e7e85f12ebe9760ba5d19b6d3\"\u003e\u003ccode\u003e6366c01\u003c/code\u003e\u003c/a\u003e release 2.0.0 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/95c847663aec401e4003927a274e4de9b8595f4f\"\u003e\u003ccode\u003e95c8476\u003c/code\u003e\u003c/a\u003e 2.0.0 post beta backports (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/195cbda66b6be9297ef6d584644e50cfdcca4e8a\"\u003e\u003ccode\u003e195cbda\u003c/code\u003e\u003c/a\u003e Release 2.0.0b1 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b4bbe7940d3f76027534db1aecbae9b61c35221a\"\u003e\u003ccode\u003eb4bbe79\u003c/code\u003e\u003c/a\u003e fix version test to support beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/7ed073de66e713cf791b6fdfa23685c81fdfd6ad\"\u003e\u003ccode\u003e7ed073d\u003c/code\u003e\u003c/a\u003e Add support for the free-threaded build (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/178\"\u003e#178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/67a170dc7972dc9361743690b38da3d963b200ef\"\u003e\u003ccode\u003e67a170d\u003c/code\u003e\u003c/a\u003e Change the license from MIT to MIT-no-attribution, which is the same without ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/92645ec9329feb03e3fa86240b40fe0fc37469d1\"\u003e\u003ccode\u003e92645ec\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support/testing (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/177\"\u003e#177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/2b81170583a898478a6996c9705d8c38ab7f73a1\"\u003e\u003ccode\u003e2b81170\u003c/code\u003e\u003c/a\u003e doc: update test commands in Section Testing/development tips (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/25172b84cf51cf58241f074ccd1efd9c7648cb43\"\u003e\u003ccode\u003e25172b8\u003c/code\u003e\u003c/a\u003e doc: update year (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b57a92c03eb2078a99c900519a37d18b4d52324f\"\u003e\u003ccode\u003eb57a92c\u003c/code\u003e\u003c/a\u003e issue 147: force-compute nested structs before parent structs.  Occurs mainly...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=cffi\u0026package-manager=pip\u0026previous-version=1.17.1\u0026new-version=2.0.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/IBM/oic-i-agentic-ai-tutorials/pull/27","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/IBM%2Foic-i-agentic-ai-tutorials/issues/27","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/27/packages"},{"uuid":"3755433246","node_id":"PR_kwDOAozSis66Opa_","number":516,"state":"open","title":"Bump the all-deps group across 1 directory with 72 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":"2025-12-22T22:32:38.000Z","updated_at":"2025-12-22T22:35:08.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"all-deps","update_count":72,"packages":[{"name":"aiofiles","old_version":"24.1.0","new_version":"25.1.0","repository_url":"https://github.com/Tinche/aiofiles"},{"name":"aiosqlite","old_version":"0.20.0","new_version":"0.22.0","repository_url":"https://github.com/omnilib/aiosqlite"},{"name":"antlr4-python3-runtime","old_version":"4.13.1","new_version":"4.13.2"},{"name":"asyncua","old_version":"1.1.5","new_version":"1.1.8","repository_url":"https://github.com/FreeOpcUa/opcua-asyncio"},{"name":"atomicwrites","old_version":"1.4.0","new_version":"1.4.1","repository_url":"https://github.com/untitaker/python-atomicwrites"},{"name":"autobahn","old_version":"21.3.1","new_version":"25.12.2","repository_url":"https://github.com/crossbario/autobahn-python"},{"name":"awkward","old_version":"2.6.10","new_version":"2.8.11","repository_url":"https://github.com/scikit-hep/awkward-1.0"},{"name":"awkward-cpp","old_version":"40","new_version":"51","repository_url":"https://github.com/scikit-hep/awkward-1.0"},{"name":"blinker","old_version":"1.8.2","new_version":"1.9.0","repository_url":"https://github.com/pallets-eco/blinker"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"click","old_version":"8.1.7","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"comtypes","old_version":"1.4.12","new_version":"1.4.14","repository_url":"https://github.com/enthought/comtypes"},{"name":"configparser","old_version":"7.1.0","new_version":"7.2.0","repository_url":"https://github.com/jaraco/configparser"},{"name":"contourpy","old_version":"1.1.1","new_version":"1.3.3","repository_url":"https://github.com/contourpy/contourpy"},{"name":"cpylog","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/SteveDoyle2/cpylog"},{"name":"docutils","old_version":"0.20.1","new_version":"0.22.4","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"ezdxf","old_version":"1.1.4","new_version":"1.4.3","repository_url":"https://github.com/mozman/ezdxf"},{"name":"fonttools","old_version":"4.57.0","new_version":"4.61.1","repository_url":"https://github.com/fonttools/fonttools"},{"name":"fsspec","old_version":"2025.3.0","new_version":"2025.12.0","repository_url":"https://github.com/fsspec/filesystem_spec"},{"name":"geomdl","old_version":"5.3.1","new_version":"5.4.0","repository_url":"https://github.com/orbingol/NURBS-Python"},{"name":"ijson","old_version":"3.3.0","new_version":"3.4.0.post0","repository_url":"https://github.com/ICRAR/ijson"},{"name":"imageio","old_version":"2.35.1","new_version":"2.37.2","repository_url":"https://github.com/imageio/imageio"},{"name":"importlib-metadata","old_version":"8.5.0","new_version":"8.7.1","repository_url":"https://github.com/python/importlib_metadata"},{"name":"importlib-resources","old_version":"6.4.5","new_version":"6.5.2","repository_url":"https://github.com/python/importlib_resources"},{"name":"joblib","old_version":"1.4.2","new_version":"1.5.3","repository_url":"https://github.com/joblib/joblib"},{"name":"kiwisolver","old_version":"1.4.7","new_version":"1.4.9","repository_url":"https://github.com/nucleic/kiwi"},{"name":"llvmlite","old_version":"0.41.1","new_version":"0.46.0","repository_url":"https://github.com/numba/llvmlite"},{"name":"markdown","old_version":"3.7","new_version":"3.10","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"markdown-it-py","old_version":"3.0.0","new_version":"4.0.0","repository_url":"https://github.com/executablebooks/markdown-it-py"},{"name":"matplotlib","old_version":"3.7.5","new_version":"3.10.8","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"msgpack","old_version":"1.1.1","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"networkx","old_version":"3.1","new_version":"3.6.1","repository_url":"https://github.com/networkx/networkx"},{"name":"numba","old_version":"0.58.1","new_version":"0.63.1","repository_url":"https://github.com/numba/numba"},{"name":"numpy","old_version":"1.24.4","new_version":"2.4.0","repository_url":"https://github.com/numpy/numpy"},{"name":"pandas","old_version":"2.0.3","new_version":"2.3.3","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"pillow","old_version":"10.4.0","new_version":"12.0.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.3.6","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"posthog","old_version":"4.2.0","new_version":"7.4.2","repository_url":"https://github.com/posthog/posthog-python"},{"name":"protobuf","old_version":"5.29.5","new_version":"6.33.2","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pyfakefs","old_version":"5.10.2","new_version":"6.0.0","repository_url":"https://github.com/pytest-dev/pyfakefs"},{"name":"pygit2","old_version":"1.13.3","new_version":"1.19.0","repository_url":"https://github.com/libgit2/pygit2"},{"name":"pyjwt","old_version":"2.9.0","new_version":"2.10.1","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"pynastran","old_version":"1.3.4","new_version":"1.4.1","repository_url":"https://github.com/SteveDoyle2/pyNastran"},{"name":"pyopenxr","old_version":"1.1.4601","new_version":"1.1.5301","repository_url":"https://github.com/cmbruns/pyopenxr"},{"name":"pyoptools","old_version":"0.2.1","new_version":"0.3.7"},{"name":"pyparsing","old_version":"3.1.4","new_version":"3.3.0","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"pypresence","old_version":"4.3.0","new_version":"4.6.1","repository_url":"https://github.com/qwertyquerty/pypresence"},{"name":"pyproj","old_version":"3.5.0","new_version":"3.7.2","repository_url":"https://github.com/pyproj4/pyproj"},{"name":"python-docx","old_version":"1.1.2","new_version":"1.2.0","repository_url":"https://github.com/python-openxml/python-docx"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"pyvista","old_version":"0.44.2","new_version":"0.46.4","repository_url":"https://github.com/pyvista/pyvista"},{"name":"pywavelets","old_version":"1.4.1","new_version":"1.9.0","repository_url":"https://github.com/PyWavelets/pywt"},{"name":"requests","old_version":"2.32.4","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"scikit-image","old_version":"0.21.0","new_version":"0.26.0","repository_url":"https://github.com/scikit-image/scikit-image"},{"name":"scikit-learn","old_version":"1.3.2","new_version":"1.8.0","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"scipy","old_version":"1.10.1","new_version":"1.16.3","repository_url":"https://github.com/scipy/scipy"},{"name":"sentry-sdk","old_version":"2.47.0","new_version":"2.48.0","repository_url":"https://github.com/getsentry/sentry-python"},{"name":"shapely","old_version":"2.0.7","new_version":"2.1.2","repository_url":"https://github.com/shapely/shapely"},{"name":"soupsieve","old_version":"2.7","new_version":"2.8.1","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"streamdeck","old_version":"0.9.6","new_version":"0.9.8","repository_url":"https://github.com/abcminiuser/python-elgato-streamdeck"},{"name":"sympy","old_version":"1.13.3","new_version":"1.14.0","repository_url":"https://github.com/sympy/sympy"},{"name":"testtools","old_version":"2.7.2","new_version":"2.8.2","repository_url":"https://github.com/testing-cabal/testtools"},{"name":"threadpoolctl","old_version":"3.5.0","new_version":"3.6.0","repository_url":"https://github.com/joblib/threadpoolctl"},{"name":"tifffile","old_version":"2023.7.10","new_version":"2025.12.20","repository_url":"https://github.com/cgohlke/tifffile"},{"name":"txaio","old_version":"23.1.1","new_version":"25.12.2","repository_url":"https://github.com/crossbario/txaio"},{"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":"tzlocal","old_version":"5.2","new_version":"5.3.1","repository_url":"https://github.com/regebro/tzlocal"},{"name":"urllib3","old_version":"2.2.3","new_version":"2.6.2","repository_url":"https://github.com/urllib3/urllib3"},{"name":"vtk","old_version":"9.3.1","new_version":"9.5.2"},{"name":"xarray","old_version":"2023.1.0","new_version":"2025.12.0","repository_url":"https://github.com/pydata/xarray"},{"name":"zipp","old_version":"3.20.2","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"}],"path":null,"ecosystem":"pip"},"body":"Bumps the all-deps group with 72 updates in the /constraints directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [aiofiles](https://github.com/Tinche/aiofiles) | `24.1.0` | `25.1.0` |\n| [aiosqlite](https://github.com/omnilib/aiosqlite) | `0.20.0` | `0.22.0` |\n| [antlr4-python3-runtime](http://www.antlr.org) | `4.13.1` | `4.13.2` |\n| [asyncua](https://github.com/FreeOpcUa/opcua-asyncio) | `1.1.5` | `1.1.8` |\n| [atomicwrites](https://github.com/untitaker/python-atomicwrites) | `1.4.0` | `1.4.1` |\n| [autobahn](https://github.com/crossbario/autobahn-python) | `21.3.1` | `25.12.2` |\n| [awkward](https://github.com/scikit-hep/awkward-1.0) | `2.6.10` | `2.8.11` |\n| [awkward-cpp](https://github.com/scikit-hep/awkward-1.0) | `40` | `51` |\n| [blinker](https://github.com/pallets-eco/blinker) | `1.8.2` | `1.9.0` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.1` | `2.0.0` |\n| [click](https://github.com/pallets/click) | `8.1.7` | `8.3.1` |\n| [comtypes](https://github.com/enthought/comtypes) | `1.4.12` | `1.4.14` |\n| [configparser](https://github.com/jaraco/configparser) | `7.1.0` | `7.2.0` |\n| [contourpy](https://github.com/contourpy/contourpy) | `1.1.1` | `1.3.3` |\n| [cpylog](https://github.com/SteveDoyle2/cpylog) | `1.5.0` | `1.6.0` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.20.1` | `0.22.4` |\n| [ezdxf](https://github.com/mozman/ezdxf) | `1.1.4` | `1.4.3` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.57.0` | `4.61.1` |\n| [fsspec](https://github.com/fsspec/filesystem_spec) | `2025.3.0` | `2025.12.0` |\n| [geomdl](https://github.com/orbingol/NURBS-Python) | `5.3.1` | `5.4.0` |\n| [ijson](https://github.com/ICRAR/ijson) | `3.3.0` | `3.4.0.post0` |\n| [imageio](https://github.com/imageio/imageio) | `2.35.1` | `2.37.2` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `8.5.0` | `8.7.1` |\n| [importlib-resources](https://github.com/python/importlib_resources) | `6.4.5` | `6.5.2` |\n| [joblib](https://github.com/joblib/joblib) | `1.4.2` | `1.5.3` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.4.7` | `1.4.9` |\n| [llvmlite](https://github.com/numba/llvmlite) | `0.41.1` | `0.46.0` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.7` | `3.10` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `3.0.0` | `4.0.0` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.7.5` | `3.10.8` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.1` | `1.1.2` |\n| [networkx](https://github.com/networkx/networkx) | `3.1` | `3.6.1` |\n| [numba](https://github.com/numba/numba) | `0.58.1` | `0.63.1` |\n| [numpy](https://github.com/numpy/numpy) | `1.24.4` | `2.4.0` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.0.3` | `2.3.3` |\n| [pillow](https://github.com/python-pillow/Pillow) | `10.4.0` | `12.0.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.3.6` | `4.5.1` |\n| [posthog](https://github.com/posthog/posthog-python) | `4.2.0` | `7.4.2` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.5` | `6.33.2` |\n| [pyfakefs](https://github.com/pytest-dev/pyfakefs) | `5.10.2` | `6.0.0` |\n| [pygit2](https://github.com/libgit2/pygit2) | `1.13.3` | `1.19.0` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.9.0` | `2.10.1` |\n| [pynastran](https://github.com/SteveDoyle2/pyNastran) | `1.3.4` | `1.4.1` |\n| [pyopenxr](https://github.com/cmbruns/pyopenxr) | `1.1.4601` | `1.1.5301` |\n| pyoptools | `0.2.1` | `0.3.7` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.1.4` | `3.3.0` |\n| [pypresence](https://github.com/qwertyquerty/pypresence) | `4.3.0` | `4.6.1` |\n| [pyproj](https://github.com/pyproj4/pyproj) | `3.5.0` | `3.7.2` |\n| [python-docx](https://github.com/python-openxml/python-docx) | `1.1.2` | `1.2.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [pyvista](https://github.com/pyvista/pyvista) | `0.44.2` | `0.46.4` |\n| [pywavelets](https://github.com/PyWavelets/pywt) | `1.4.1` | `1.9.0` |\n| [requests](https://github.com/psf/requests) | `2.32.4` | `2.32.5` |\n| [scikit-image](https://github.com/scikit-image/scikit-image) | `0.21.0` | `0.26.0` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.3.2` | `1.8.0` |\n| [scipy](https://github.com/scipy/scipy) | `1.10.1` | `1.16.3` |\n| [sentry-sdk](https://github.com/getsentry/sentry-python) | `2.47.0` | `2.48.0` |\n| [shapely](https://github.com/shapely/shapely) | `2.0.7` | `2.1.2` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.8.1` |\n| [streamdeck](https://github.com/abcminiuser/python-elgato-streamdeck) | `0.9.6` | `0.9.8` |\n| [sympy](https://github.com/sympy/sympy) | `1.13.3` | `1.14.0` |\n| [testtools](https://github.com/testing-cabal/testtools) | `2.7.2` | `2.8.2` |\n| [threadpoolctl](https://github.com/joblib/threadpoolctl) | `3.5.0` | `3.6.0` |\n| [tifffile](https://github.com/cgohlke/tifffile) | `2023.7.10` | `2025.12.20` |\n| [txaio](https://github.com/crossbario/txaio) | `23.1.1` | `25.12.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| [tzlocal](https://github.com/regebro/tzlocal) | `5.2` | `5.3.1` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.2.3` | `2.6.2` |\n| [vtk](https://vtk.org) | `9.3.1` | `9.5.2` |\n| [xarray](https://github.com/pydata/xarray) | `2023.1.0` | `2025.12.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.20.2` | `3.23.0` |\n\n\nUpdates `aiofiles` from 24.1.0 to 25.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Tinche/aiofiles/releases\"\u003eaiofiles's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev25.1.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSwitch to \u003ca href=\"https://docs.astral.sh/uv/\"\u003euv\u003c/a\u003e + add Python v3.14 support.  (\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eruff\u003c/code\u003e formatter and linter. \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/216\"\u003e#216\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8 support. If you require it, use version 24.1.0. \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/204\"\u003e#204\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/danielsmyers\"\u003e\u003ccode\u003e@​danielsmyers\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/185\"\u003eTinche/aiofiles#185\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stankudrow\"\u003e\u003ccode\u003e@​stankudrow\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/192\"\u003eTinche/aiofiles#192\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/waketzheng\"\u003e\u003ccode\u003e@​waketzheng\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/221\"\u003eTinche/aiofiles#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/Tinche/aiofiles/compare/v24.1.0...v25.1.0\"\u003ehttps://github.com/Tinche/aiofiles/compare/v24.1.0...v25.1.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Tinche/aiofiles/blob/main/CHANGELOG.md\"\u003eaiofiles's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e25.1.0 (2025-10-09)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSwitch to \u003ca href=\"https://docs.astral.sh/uv/\"\u003euv\u003c/a\u003e + add Python v3.14 support.\n(\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eruff\u003c/code\u003e formatter and linter.\n\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/216\"\u003e#216\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8 support. If you require it, use version 24.1.0.\n\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/204\"\u003e#204\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/Tinche/aiofiles/commit/348f5ef6561c2b2c8a7497bd10487eab4102332f\"\u003e\u003ccode\u003e348f5ef\u003c/code\u003e\u003c/a\u003e v25.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/5e1bb8f12b09bce440cc9d1e28387d239cbc2577\"\u003e\u003ccode\u003e5e1bb8f\u003c/code\u003e\u003c/a\u003e docs: update readme to use ruff badge (\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/issues/221\"\u003e#221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/6fdc25c7812d6738ccf51c5e7d4cd68500053a52\"\u003e\u003ccode\u003e6fdc25c\u003c/code\u003e\u003c/a\u003e Move to uv. (\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/issues/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/1989132423dc300c61e22434abd02725e922ddeb\"\u003e\u003ccode\u003e1989132\u003c/code\u003e\u003c/a\u003e set 'function' as a default fixture loop scope value\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/8986452a1b28b109903078f8e9a805ec01e248a6\"\u003e\u003ccode\u003e8986452\u003c/code\u003e\u003c/a\u003e add the 'asyncio_default_fixture_loop_scope=session' option\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/ccab1ff77640c59b353046cb528c25ffa11caa73\"\u003e\u003ccode\u003eccab1ff\u003c/code\u003e\u003c/a\u003e update pytest-asyncio==1.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/8727c96f5be46235af412a9fe504ba7c149df7f3\"\u003e\u003ccode\u003e8727c96\u003c/code\u003e\u003c/a\u003e add PR \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/issues/216\"\u003e#216\u003c/a\u003e into the CHANGELOG\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/a9388e5f8de9142c3e920917775e741bbf9f73b2\"\u003e\u003ccode\u003ea9388e5\u003c/code\u003e\u003c/a\u003e add TID and ignore TID252\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/760366489aed1fb041ef35652e2babb1870973d0\"\u003e\u003ccode\u003e7603664\u003c/code\u003e\u003c/a\u003e remove [ruff].exclude keyval\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/7c49a5c5f2520233198487145423a7842805d740\"\u003e\u003ccode\u003e7c49a5c\u003c/code\u003e\u003c/a\u003e add final newlines\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Tinche/aiofiles/compare/v24.1.0...v25.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `aiosqlite` from 0.20.0 to 0.22.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/omnilib/aiosqlite/blob/main/CHANGELOG.md\"\u003eaiosqlite's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.22.0\u003c/h2\u003e\n\u003cp\u003eFeature release\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003eset_authorizer\u003c/code\u003e query access controls (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/349\"\u003e#349\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWait for transaction queue to complete when closing connection (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/305\"\u003e#305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEmit warning when connection goes out of scope without being closed (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/355\"\u003e#355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove dependency on \u003ccode\u003etyping_extensions\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/365\"\u003e#365\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre lang=\"text\"\u003e\u003ccode\u003e$ git shortlog -s v0.21.0...v0.22.0\n     1\tAlec Berryman\n     1\tAmethyst Reese\n     1\tDavid Andreoletti\n     1\tMarkus Heidelberg\n     1\tbeerpsi\n    19\tdependabot[bot]\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003ev0.21.0\u003c/h2\u003e\n\u003cp\u003eMaintenance release\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix: close connection correctly when BaseException raised in connection (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/317\"\u003e#317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMetadata improvements\u003c/li\u003e\n\u003cli\u003eTested and supported on Python 3.13\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.8\u003c/li\u003e\n\u003cli\u003eDrop testing on PyPy\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre lang=\"text\"\u003e\u003ccode\u003e$ git shortlog -s v0.20.0...v0.21.0\n     6\tAmethyst Reese\n     1\tGabriel\n     1\tStanley Kudrow\n    11\tdependabot[bot]\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aiosqlite/commit/a869d73678adbc14472e4ac2c31f4e706efe8ef3\"\u003e\u003ccode\u003ea869d73\u003c/code\u003e\u003c/a\u003e Version bump v0.22.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aiosqlite/commit/1cd60adcab12347577150a6fa6c7d92b7b86d989\"\u003e\u003ccode\u003e1cd60ad\u003c/code\u003e\u003c/a\u003e Emit warning if connection is deleted before it is closed (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/355\"\u003e#355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aiosqlite/commit/611d7b4f29fc3d7df6c173b2e79b0892e9d249aa\"\u003e\u003ccode\u003e611d7b4\u003c/code\u003e\u003c/a\u003e Add set_authorizer support for fine-grained access control (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/349\"\u003e#349\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aiosqlite/commit/81d00c8f1676851c8634ca98f99e0973083ea75f\"\u003e\u003ccode\u003e81d00c8\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5 to 6 (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/357\"\u003e#357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aiosqlite/commit/7a26722f7e6da6a1ae0febf515b4624794173fcc\"\u003e\u003ccode\u003e7a26722\u003c/code\u003e\u003c/a\u003e Bump coverage[toml] from 7.8.0 to 7.10.7 (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aiosqlite/commit/445754087ec452f888cc152debf79590d8a25d86\"\u003e\u003ccode\u003e4457540\u003c/code\u003e\u003c/a\u003e Bump flake8 from 7.2.0 to 7.3.0 (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/346\"\u003e#346\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aiosqlite/commit/b650dad318ad72e582b7ba1143cc05f270f8ab6b\"\u003e\u003ccode\u003eb650dad\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aiosqlite/commit/065ffdd1291693c5e69d2f3efff17e351d9a0163\"\u003e\u003ccode\u003e065ffdd\u003c/code\u003e\u003c/a\u003e Bump mypy from 1.15.0 to 1.19.0 (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aiosqlite/commit/3a6d7b03bf86054551b6fd90498056f652671c52\"\u003e\u003ccode\u003e3a6d7b0\u003c/code\u003e\u003c/a\u003e Remove obsolete dependency on typing_extensions (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/365\"\u003e#365\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aiosqlite/commit/e9d6b44af028e7704293b5d7a31ae02077fea5e6\"\u003e\u003ccode\u003ee9d6b44\u003c/code\u003e\u003c/a\u003e Bump black from 25.1.0 to 25.11.0 (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/364\"\u003e#364\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/omnilib/aiosqlite/compare/v0.20.0...v0.22.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `antlr4-python3-runtime` from 4.13.1 to 4.13.2\n\nUpdates `asyncua` from 1.1.5 to 1.1.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/FreeOpcUa/opcua-asyncio/releases\"\u003easyncua's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.1.8\u003c/h2\u003e\n\u003cp\u003efix release script and upload\u003c/p\u003e\n\u003ch2\u003ev1.1.7\u003c/h2\u003e\n\u003cp\u003eorigin/master, origin/HEAD) Replace time.time() with time.monotonic() in asyncua core modules\nb3dd3a17ffdd554807df230b6b34403b8c946c30 make pytest loop scope explicit\na5d72a2dc2a53e21d84c5f3b9091e27ae14e007e finally unfreeze pytest-asyncio\ncc874c30e2154e86a43523006ecb5839412cc157 Feat: Support import/export of struct and enum Field descriptions (\u003ca href=\"https://redirect.github.com/FreeOpcUa/opcua-asyncio/issues/1851\"\u003e#1851\u003c/a\u003e)\n97095b909c141daf9b7d300114f7d5d924444b76 Support pre 1.04 struct length fields for B\u0026amp;R\n5b1091795dc7745efb94acd94381db17274779e8 fix  connecting to new prosys opcua server (\u003ca href=\"https://redirect.github.com/FreeOpcUa/opcua-asyncio/issues/1827\"\u003e#1827\u003c/a\u003e)\n120d2e8c090fe0dbe34fb27a3e2f723dcb83ab8d Fix small bug if imported xml has also the stardard namespace included (\u003ca href=\"https://redirect.github.com/FreeOpcUa/opcua-asyncio/issues/1832\"\u003e#1832\u003c/a\u003e)\nd52d319b7ccf8c52f0e0fce469d06b9a10db0a24 Enhancement: Chunked Build ETree Function (\u003ca href=\"https://redirect.github.com/FreeOpcUa/opcua-asyncio/issues/1833\"\u003e#1833\u003c/a\u003e)\n6b6f4bb220b47b7d6d5612dc4d8daccf386373b0 Fix: Issues with missing namespace URIs when importing and exporting XMLs (\u003ca href=\"https://redirect.github.com/FreeOpcUa/opcua-asyncio/issues/1830\"\u003e#1830\u003c/a\u003e)\nf12f3e19b3e7a3bc3db38add30176eef0cecd300 fix ClientNonce and/or peer_certificate may be None\ne3e02e3cfaca19647aec9348e9452594c6ebd657 Include support for x509 certificate chains in DER format (\u003ca href=\"https://redirect.github.com/FreeOpcUa/opcua-asyncio/issues/1822\"\u003e#1822\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003ev1.1.6\u003c/h2\u003e\n\u003cp\u003eupdate ua adresse space to 1.0.5\nParse ExtensionObjects with missing length (= -1)\nadd: Number in uatypes.py\nAllow setting password to None.\nFix usage of X509IdentityToken\u003c/p\u003e\n\u003cp\u003ebug fixes\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/FreeOpcUa/opcua-asyncio/commit/d8a5de3fe4050f82f39690bb43157a4b8e20c545\"\u003e\u003ccode\u003ed8a5de3\u003c/code\u003e\u003c/a\u003e new release v1.1.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/FreeOpcUa/opcua-asyncio/commit/fe795e16ad86a4aea8ee09905ab080f9a0841748\"\u003e\u003ccode\u003efe795e1\u003c/code\u003e\u003c/a\u003e fix release script\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/FreeOpcUa/opcua-asyncio/commit/cacd6a0c355cd5d5e3af9e1d50c8829b69c2ed88\"\u003e\u003ccode\u003ecacd6a0\u003c/code\u003e\u003c/a\u003e Replace time.time() with time.monotonic() in asyncua core modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/FreeOpcUa/opcua-asyncio/commit/b3dd3a17ffdd554807df230b6b34403b8c946c30\"\u003e\u003ccode\u003eb3dd3a1\u003c/code\u003e\u003c/a\u003e make pytest loop scope explicit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/FreeOpcUa/opcua-asyncio/commit/a5d72a2dc2a53e21d84c5f3b9091e27ae14e007e\"\u003e\u003ccode\u003ea5d72a2\u003c/code\u003e\u003c/a\u003e finally unfreeze pytest-asyncio\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/FreeOpcUa/opcua-asyncio/commit/cc874c30e2154e86a43523006ecb5839412cc157\"\u003e\u003ccode\u003ecc874c3\u003c/code\u003e\u003c/a\u003e Feat: Support import/export of struct and enum Field descriptions (\u003ca href=\"https://redirect.github.com/FreeOpcUa/opcua-asyncio/issues/1851\"\u003e#1851\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/FreeOpcUa/opcua-asyncio/commit/97095b909c141daf9b7d300114f7d5d924444b76\"\u003e\u003ccode\u003e97095b9\u003c/code\u003e\u003c/a\u003e Support pre 1.04 struct length fields for B\u0026amp;R\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/FreeOpcUa/opcua-asyncio/commit/5b1091795dc7745efb94acd94381db17274779e8\"\u003e\u003ccode\u003e5b10917\u003c/code\u003e\u003c/a\u003e fix  connecting to new prosys opcua server (\u003ca href=\"https://redirect.github.com/FreeOpcUa/opcua-asyncio/issues/1827\"\u003e#1827\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/FreeOpcUa/opcua-asyncio/commit/120d2e8c090fe0dbe34fb27a3e2f723dcb83ab8d\"\u003e\u003ccode\u003e120d2e8\u003c/code\u003e\u003c/a\u003e Fix small bug if imported xml has also the stardard namespace included (\u003ca href=\"https://redirect.github.com/FreeOpcUa/opcua-asyncio/issues/1832\"\u003e#1832\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/FreeOpcUa/opcua-asyncio/commit/d52d319b7ccf8c52f0e0fce469d06b9a10db0a24\"\u003e\u003ccode\u003ed52d319\u003c/code\u003e\u003c/a\u003e Enhancement: Chunked Build ETree Function (\u003ca href=\"https://redirect.github.com/FreeOpcUa/opcua-asyncio/issues/1833\"\u003e#1833\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/FreeOpcUa/opcua-asyncio/compare/v1.1.5...v1.1.8\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `atomicwrites` from 1.4.0 to 1.4.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/untitaker/python-atomicwrites/commit/e05d8c985a10176ad43eefb9c4bfa6d7ab176719\"\u003e\u003ccode\u003ee05d8c9\u003c/code\u003e\u003c/a\u003e version 1.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/untitaker/python-atomicwrites/commit/ea90c67ffe5f38cd39d89625022d417da1966522\"\u003e\u003ccode\u003eea90c67\u003c/code\u003e\u003c/a\u003e fix name typo (\u003ca href=\"https://redirect.github.com/untitaker/python-atomicwrites/issues/60\"\u003e#60\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/untitaker/python-atomicwrites/commit/c35cd32eb364d5a4210e64bf38fd1a55f329f316\"\u003e\u003ccode\u003ec35cd32\u003c/code\u003e\u003c/a\u003e Add Power Support ppc64le (\u003ca href=\"https://redirect.github.com/untitaker/python-atomicwrites/issues/57\"\u003e#57\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/untitaker/python-atomicwrites/commit/9f8db6527db8a7d20879756ff83d86009df8c9c5\"\u003e\u003ccode\u003e9f8db65\u003c/code\u003e\u003c/a\u003e wrap line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/untitaker/python-atomicwrites/commit/6699a1fc44bc5cea2ee258cf960a8bd6cc584e21\"\u003e\u003ccode\u003e6699a1f\u003c/code\u003e\u003c/a\u003e migrate to travis-ci.com\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/untitaker/python-atomicwrites/commit/ec443a88e5e6cfbc9b667b1bcfd52e5a0a485f7e\"\u003e\u003ccode\u003eec443a8\u003c/code\u003e\u003c/a\u003e Add documentation for open_kwargs, fix \u003ca href=\"https://redirect.github.com/untitaker/python-atomicwrites/issues/56\"\u003e#56\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/untitaker/python-atomicwrites/commit/de33f6fac140f32a6eff9eb002feaa6dc7182182\"\u003e\u003ccode\u003ede33f6f\u003c/code\u003e\u003c/a\u003e Update README.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/untitaker/python-atomicwrites/commit/d17830127887b97f404f1596ac76d46d730e31f5\"\u003e\u003ccode\u003ed178301\u003c/code\u003e\u003c/a\u003e Update README.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/untitaker/python-atomicwrites/commit/72b5dcc9c5225fc8b54559f0f9c02d3211dfd403\"\u003e\u003ccode\u003e72b5dcc\u003c/code\u003e\u003c/a\u003e Update README.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/untitaker/python-atomicwrites/commit/14e7f1f5407344f215f0b06b5cbe49fe65e90d1d\"\u003e\u003ccode\u003e14e7f1f\u003c/code\u003e\u003c/a\u003e Clean up some FAQ/Frequently asked question repetition in readme (\u003ca href=\"https://redirect.github.com/untitaker/python-atomicwrites/issues/53\"\u003e#53\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/untitaker/python-atomicwrites/compare/1.4.0...1.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `autobahn` from 21.3.1 to 25.12.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/crossbario/autobahn-python/releases\"\u003eautobahn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eRelease v25_12_2\u003c/h1\u003e\n\u003cp\u003eOfficial release v25_12_2\u003c/p\u003e\n\u003ch2\u003eIncluded Platforms\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eLinux\u003c/strong\u003e: x86_64, ARM64 (manylinux_2_34 wheels with NVX)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003emacOS\u003c/strong\u003e: Apple Silicon ARM64 (binary wheels with NVX)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eWindows\u003c/strong\u003e: x86_64 (binary wheels with NVX)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePython Versions\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eCPython\u003c/strong\u003e: 3.11, 3.12, 3.13, 3.14\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePyPy\u003c/strong\u003e: 3.11\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstallation\u003c/h2\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003epip install autobahn[all]==v25_12_2\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr download wheels directly from this release.\u003c/p\u003e\n\u003ch2\u003eBuild Information\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eRelease Date\u003c/strong\u003e: 2025-12-15 11:12:00 UTC\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTotal Wheels\u003c/strong\u003e: 16\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSource Distributions\u003c/strong\u003e: 3\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cp\u003eAutobahn|Python provides:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eWebSocket\u003c/strong\u003e client and server implementations (RFC 6455)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eWAMP\u003c/strong\u003e client library for both Twisted and asyncio\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNVX acceleration\u003c/strong\u003e for high-performance networking (binary wheels)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePure Python fallback\u003c/strong\u003e wheels for maximum compatibility\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://autobahn.readthedocs.io\"\u003eRead the Docs\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crossbario/autobahn-python\"\u003eGitHub Repository\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://wamp-proto.org\"\u003eWAMP Protocol\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eDevelopment Build fork-7ce4f0c4-oberstet_autobahn_python-sync_autobahn_zlmdb-202512132337\u003c/h1\u003e\n\u003cp\u003eDevelopment build from pull request\u003c/p\u003e\n\u003ch2\u003eBuild Information\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/crossbario/autobahn-python/blob/master/docs/changelog.rst\"\u003eautobahn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e25.12.2\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBuild \u0026amp; CI/CD\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSynchronize CI/CD, FlatBuffers vendoring, and wamp-ai/wamp-cicd submodules between autobahn-python and zlmdb (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1822\"\u003e#1822\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSwitch manylinux container from 2_34 to 2_28 for x86_64 ISA compatibility (fixes auditwheel flatc bundling)\u003c/li\u003e\n\u003cli\u003eIncrease ARM64 build timeout to 60 minutes for QEMU emulation\u003c/li\u003e\n\u003cli\u003eAdd .github/workflows/README.md documenting CI/CD architecture\u003c/li\u003e\n\u003cli\u003eConsolidate download-github-release and download-release-artifacts recipes\u003c/li\u003e\n\u003cli\u003eAdd checksum verification to artifact download workflow\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFlatBuffers\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSimplify vendored FlatBuffers - use upstream as-is\u003c/li\u003e\n\u003cli\u003eTrack vendored FlatBuffers in git (like zlmdb approach)\u003c/li\u003e\n\u003cli\u003eAdd version() function to vendored FlatBuffers runtime\u003c/li\u003e\n\u003cli\u003eAdd check_zlmdb_flatbuffers_version_in_sync() for cross-project compatibility\u003c/li\u003e\n\u003cli\u003eGenerate .bfbs files for WAMP schemas during wheel build\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eOther\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRename install-flatc to install-flatc-system with prominent warning\u003c/li\u003e\n\u003cli\u003eRemove legacy readthedocs.yml to activate .readthedocs.yaml\u003c/li\u003e\n\u003cli\u003eRemove dev-latest optional dependency (PyPI rejects direct URLs)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e25.12.1\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd vendored Flatbuffers (v25.9.23) (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1761\"\u003e#1761\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd WAMP serdes functional and benchmark testing; WAMP-Flatbuffers; WAMP Serializer Composition (transport/payload) (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1765\"\u003e#1765\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFix\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix 1757 (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1758\"\u003e#1758\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix 1767 (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1769\"\u003e#1769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix 1771 complete (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1774\"\u003e#1774\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eOther\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRel v25.10.2 (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1734\"\u003e#1734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRel v25.10.2 part2 (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1741\"\u003e#1741\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWAMP Flatbuffers serialization test coverage; WAMP message classes refactoring (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1773\"\u003e#1773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eModernization phase 1.1 (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1785\"\u003e#1785\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePhase 1.2: Build Tooling Modernization (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1788\"\u003e#1788\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePhase 1.3: CI/CD Modernization (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1791\"\u003e#1791\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRel25 12 1 (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1794\"\u003e#1794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eModernization phase 1.4 (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1797\"\u003e#1797\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crossbario/autobahn-python/commit/5e4f7e086a074892231377f465099946e8f66ac4\"\u003e\u003ccode\u003e5e4f7e0\u003c/code\u003e\u003c/a\u003e docs: add changelog and release notes for v25.12.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crossbario/autobahn-python/commit/e97953b3cdc42b103075146dabe9eb9f30111c8b\"\u003e\u003ccode\u003ee97953b\u003c/code\u003e\u003c/a\u003e fix: add checksum verification and unify artifact download paths\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crossbario/autobahn-python/commit/05f1193cb2b2cdf71a92edfd2d12965083000a68\"\u003e\u003ccode\u003e05f1193\u003c/code\u003e\u003c/a\u003e fix: download-github-release now downloads all release artifacts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crossbario/autobahn-python/commit/467581c1ef461c97e3c24ece03d61119bbc0e126\"\u003e\u003ccode\u003e467581c\u003c/code\u003e\u003c/a\u003e Synchronize CI/CD, Flatbuffers vendoring and wamp-ai and wamp-cicd Submodules...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crossbario/autobahn-python/commit/60f226c5356feaab3545f7d015c0655924d9444c\"\u003e\u003ccode\u003e60f226c\u003c/code\u003e\u003c/a\u003e build: remove legacy readthedocs.yml to activate .readthedocs.yaml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crossbario/autobahn-python/commit/0dac159de6194c94d4be19b1958bddf627aba856\"\u003e\u003ccode\u003e0dac159\u003c/code\u003e\u003c/a\u003e Add missing docs deps to dev, ignore CFFI build artifacts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crossbario/autobahn-python/commit/e2503361b7c6f7cfd9fd38b5e2093703f3035166\"\u003e\u003ccode\u003ee250336\u003c/code\u003e\u003c/a\u003e Simplify vendored flatbuffers - use upstream as-is\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crossbario/autobahn-python/commit/03e2e157268713e71e10f5322e521349bc485116\"\u003e\u003ccode\u003e03e2e15\u003c/code\u003e\u003c/a\u003e Track vendored flatbuffers in git (like zlmdb approach)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crossbario/autobahn-python/commit/41f7e3c6595b911c482f332f5ea40de7f9c0bc1c\"\u003e\u003ccode\u003e41f7e3c\u003c/code\u003e\u003c/a\u003e Move vendor-flatbuffers logic to external Python script\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crossbario/autobahn-python/commit/8db464888d9c738fb51b78544706c130cc1c47a6\"\u003e\u003ccode\u003e8db4648\u003c/code\u003e\u003c/a\u003e bump package version\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/crossbario/autobahn-python/compare/v21.3.1...v25.12.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `awkward` from 2.6.10 to 2.8.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scikit-hep/awkward-1.0/releases\"\u003eawkward's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.8.11\u003c/h2\u003e\n\u003ch2\u003eNew features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: add behavior cls validation hook by \u003ca href=\"https://github.com/pfackeldey\"\u003e\u003ccode\u003e@​pfackeldey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3710\"\u003escikit-hep/awkward#3710\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add a playground for cccl studies by \u003ca href=\"https://github.com/pfackeldey\"\u003e\u003ccode\u003e@​pfackeldey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3734\"\u003escikit-hep/awkward#3734\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add cuda.compute implementation to CCCL study by \u003ca href=\"https://github.com/shwina\"\u003e\u003ccode\u003e@​shwina\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3748\"\u003escikit-hep/awkward#3748\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: ability to optionally disable the caching of virtual arrays on themselves by \u003ca href=\"https://github.com/ikrommyd\"\u003e\u003ccode\u003e@​ikrommyd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3741\"\u003escikit-hep/awkward#3741\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug-fixes and performance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: string array numpy conversion fails with int32 offsets from parquet by \u003ca href=\"https://github.com/DylanModesitt\"\u003e\u003ccode\u003e@​DylanModesitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3697\"\u003escikit-hep/awkward#3697\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: only check length against empty form in \u003ccode\u003eak.from_buffers\u003c/code\u003e if it is known by \u003ca href=\"https://github.com/ikrommyd\"\u003e\u003ccode\u003e@​ikrommyd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3714\"\u003escikit-hep/awkward#3714\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: typestr respects now limit_cols for .show and \u003cem\u003erepr_mimebundle\u003c/em\u003e by \u003ca href=\"https://github.com/pfackeldey\"\u003e\u003ccode\u003e@​pfackeldey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3712\"\u003escikit-hep/awkward#3712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: \u003ccode\u003eArrayBuilder.__bool__ \u003c/code\u003e raises \u003ccode\u003eTypeError\u003c/code\u003e when builder length is 1 by \u003ca href=\"https://github.com/T90REAL\"\u003e\u003ccode\u003e@​T90REAL\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3738\"\u003escikit-hep/awkward#3738\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: prevent teardown from crashing GPU test suite by \u003ca href=\"https://github.com/ianna\"\u003e\u003ccode\u003e@​ianna\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3747\"\u003escikit-hep/awkward#3747\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: hide awkward.ak_* and awkward.str.akstr_* from 'awkward' and 'awkward.str' module by \u003ca href=\"https://github.com/pfackeldey\"\u003e\u003ccode\u003e@​pfackeldey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3752\"\u003escikit-hep/awkward#3752\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: align multi-level indices before merge in \u003ccode\u003eto_dataframe()\u003c/code\u003e by \u003ca href=\"https://github.com/TaiSakuma\"\u003e\u003ccode\u003e@​TaiSakuma\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3733\"\u003escikit-hep/awkward#3733\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: numba test failures on Python 3.14 by \u003ca href=\"https://github.com/ianna\"\u003e\u003ccode\u003e@​ianna\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3757\"\u003escikit-hep/awkward#3757\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: incorrect passing of \u003ccode\u003eIndex\u003c/code\u003e inside nplike function in \u003ccode\u003eto_IndexedOptionArray64\u003c/code\u003e by \u003ca href=\"https://github.com/ikrommyd\"\u003e\u003ccode\u003e@​ikrommyd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3727\"\u003escikit-hep/awkward#3727\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: weights should not be raised to the power n in the n-th moment calculation by \u003ca href=\"https://github.com/ikrommyd\"\u003e\u003ccode\u003e@​ikrommyd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3729\"\u003escikit-hep/awkward#3729\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: \u003ccode\u003eak.Record\u003c/code\u003e creation from iterable with nested dicts by \u003ca href=\"https://github.com/ikrommyd\"\u003e\u003ccode\u003e@​ikrommyd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3728\"\u003escikit-hep/awkward#3728\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: keep track of buffer key instead of field path for VirtualNDArrays \u0026amp; PlaceholderArrays by \u003ca href=\"https://github.com/pfackeldey\"\u003e\u003ccode\u003e@​pfackeldey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3751\"\u003escikit-hep/awkward#3751\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: typetracer nplike's \u003ccode\u003eall\u003c/code\u003e function leads to infinite recursion for \u003ccode\u003eaxis=None\u003c/code\u003e by \u003ca href=\"https://github.com/ikrommyd\"\u003e\u003ccode\u003e@​ikrommyd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3765\"\u003escikit-hep/awkward#3765\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eOther\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: fix compilation on self-hosted CI and test with multiple versions of CUDA by \u003ca href=\"https://github.com/ariostas\"\u003e\u003ccode\u003e@​ariostas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3704\"\u003escikit-hep/awkward#3704\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: update acknowledgements to include NumFOCUS affiliation by \u003ca href=\"https://github.com/ianna\"\u003e\u003ccode\u003e@​ianna\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3708\"\u003escikit-hep/awkward#3708\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: update pre-commit hooks 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/scikit-hep/awkward/pull/3709\"\u003escikit-hep/awkward#3709\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: pytest log_level is better than log_cli_level by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3719\"\u003escikit-hep/awkward#3719\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: update requirements files for latest possible python versions by \u003ca href=\"https://github.com/ikrommyd\"\u003e\u003ccode\u003e@​ikrommyd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3739\"\u003escikit-hep/awkward#3739\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump the actions group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3744\"\u003escikit-hep/awkward#3744\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: update pre-commit hooks 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/scikit-hep/awkward/pull/3754\"\u003escikit-hep/awkward#3754\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: Remove CUDA 11 support by \u003ca href=\"https://github.com/shwina\"\u003e\u003ccode\u003e@​shwina\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3758\"\u003escikit-hep/awkward#3758\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(ci): use macos-15-intel for x86 wheel building and testing by \u003ca href=\"https://github.com/ariostas\"\u003e\u003ccode\u003e@​ariostas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3720\"\u003escikit-hep/awkward#3720\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: add new versions to version selector by \u003ca href=\"https://github.com/ariostas\"\u003e\u003ccode\u003e@​ariostas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3707\"\u003escikit-hep/awkward#3707\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: 3.14 is supported by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3717\"\u003escikit-hep/awkward#3717\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: add T90REAL as a contributor for code by \u003ca href=\"https://github.com/allcontributors\"\u003e\u003ccode\u003e@​allcontributors\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3742\"\u003escikit-hep/awkward#3742\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Add dependency and version change guidelines by \u003ca href=\"https://github.com/ianna\"\u003e\u003ccode\u003e@​ianna\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3745\"\u003escikit-hep/awkward#3745\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: add shwina as a contributor for code by \u003ca href=\"https://github.com/allcontributors\"\u003e\u003ccode\u003e@​allcontributors\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3759\"\u003escikit-hep/awkward#3759\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Add an example summation reducer using cccl by \u003ca href=\"https://github.com/maxymnaumchyk\"\u003e\u003ccode\u003e@​maxymnaumchyk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3762\"\u003escikit-hep/awkward#3762\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/T90REAL\"\u003e\u003ccode\u003e@​T90REAL\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3738\"\u003escikit-hep/awkward#3738\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shwina\"\u003e\u003ccode\u003e@​shwina\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3748\"\u003escikit-hep/awkward#3748\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/scikit-hep/awkward/compare/v2.8.10...v2.8.11\"\u003ehttps://github.com/scikit-hep/awkward/compare/v2.8.10...v2.8.11\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 2.8.10\u003c/h2\u003e\n\u003ch2\u003eNew features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: preserve field order when replacing existing fields in with_field by \u003ca href=\"https://github.com/DylanModesitt\"\u003e\u003ccode\u003e@​DylanModesitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3681\"\u003escikit-hep/awkward#3681\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add to_/from_safetensors by \u003ca href=\"https://github.com/pfackeldey\"\u003e\u003ccode\u003e@​pfackeldey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3685\"\u003escikit-hep/awkward#3685\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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-hep/awkward/commit/c4a2e57b47f6738670ffc0e4781a3990e7c3ff03\"\u003e\u003ccode\u003ec4a2e57\u003c/code\u003e\u003c/a\u003e awkward 2.8.11 and awkward-cpp 51\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-hep/awkward/commit/60072263c91fd8d5df48b487427319c5a10ae70d\"\u003e\u003ccode\u003e6007226\u003c/code\u003e\u003c/a\u003e awkward 2.8.11 and awkward-cpp 51\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-hep/awkward/commit/0ad8b1e25b0bd493508bade8ab8d79a383a854a0\"\u003e\u003ccode\u003e0ad8b1e\u003c/code\u003e\u003c/a\u003e fix: typetracer nplike's \u003ccode\u003eall\u003c/code\u003e function leads to infinite recursion for `axis...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-hep/awkward/commit/0941b378a8236a660990bd02d2c14e4d6593f28e\"\u003e\u003ccode\u003e0941b37\u003c/code\u003e\u003c/a\u003e fix: keep track of buffer key instead of field path for VirtualNDArrays \u0026amp; Pla...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-hep/awkward/commit/efea08c134963bc37c1013adc4ab320ebeb4d7a3\"\u003e\u003ccode\u003eefea08c\u003c/code\u003e\u003c/a\u003e chore(ci): use macos-15-intel for x86 wheel building and testing (\u003ca href=\"https://redirect.github.com/scikit-hep/awkward-1.0/issues/3720\"\u003e#3720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-hep/awkward/commit/87765b6adb379ba27b0f6b984607c250443b170c\"\u003e\u003ccode\u003e87765b6\u003c/code\u003e\u003c/a\u003e fix: \u003ccode\u003eak.Record\u003c/code\u003e creation from iterable with nested dicts (\u003ca href=\"https://redirect.github.com/scikit-hep/awkward-1.0/issues/3728\"\u003e#3728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-hep/awkward/commit/306274c1fd6028ed549fa0f9a5e47a8bd76e693c\"\u003e\u003ccode\u003e306274c\u003c/code\u003e\u003c/a\u003e fix: weights should not be raised to the power n in the n-th moment calculati...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-hep/awkward/commit/8872e1f4ffd781b07c2a661c235dc2d0a5f5bade\"\u003e\u003ccode\u003e8872e1f\u003c/code\u003e\u003c/a\u003e fix: incorrect passing of \u003ccode\u003eIndex\u003c/code\u003e inside nplike function in `to_IndexedOption...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-hep/awkward/commit/1594a70bb0d39e174996275dd251305a13f83b2b\"\u003e\u003ccode\u003e1594a70\u003c/code\u003e\u003c/a\u003e fix: numba test failures on Python 3.14 (\u003ca href=\"https://redirect.github.com/scikit-hep/awkward-1.0/issues/3757\"\u003e#3757\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-hep/awkward/commit/ca066ddc96dd690d52956535fc7422de71ed92e3\"\u003e\u003ccode\u003eca066dd\u003c/code\u003e\u003c/a\u003e feat: ability to optionally disable the caching of virtual arrays on themselv...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scikit-hep/awkward-1.0/compare/v2.6.10...v2.8.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `awkward-cpp` from 40 to 51\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/scikit-hep/awkward-1.0/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `blinker` from 1.8.2 to 1.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets-eco/blinker/releases\"\u003eblinker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.0\u003c/h2\u003e\n\u003cp\u003eThis is the Blinker 1.9.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecations, or introduce potentially breaking changes. 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\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/blinker/1.9.0/\"\u003ehttps://pypi.org/project/blinker/1.9.0/\u003c/a\u003e\nChanges: \u003ca href=\"https://blinker.readthedocs.io/en/stable/#version-1-9-0\"\u003ehttps://blinker.readthedocs.io/en/stable/#version-1-9-0\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets-eco/blinker/milestone/1?closed=1\"\u003ehttps://github.com/pallets-eco/blinker/milestone/1?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. \u003ca href=\"https://redirect.github.com/pallets-eco/blinker/issues/175\"\u003e#175\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove previously deprecated \u003ccode\u003e__version__\u003c/code\u003e, \u003ccode\u003ereceiver_connected\u003c/code\u003e, \u003ccode\u003eSignal.temporarily_connected_to\u003c/code\u003e and \u003ccode\u003eWeakNamespace\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets-eco/blinker/issues/172\"\u003e#172\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSkip weakref signal cleanup if the interpreter is shutting down. \u003ca href=\"https://redirect.github.com/pallets-eco/blinker/issues/173\"\u003e#173\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-eco/blinker/blob/main/CHANGES.rst\"\u003eblinker's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.9.0\u003c/h2\u003e\n\u003cp\u003eReleased 2024-11-08\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. :pr:\u003ccode\u003e175\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRemove previously deprecated \u003ccode\u003e__version__\u003c/code\u003e, \u003ccode\u003ereceiver_connected\u003c/code\u003e,\n\u003ccode\u003eSignal.temporarily_connected_to\u003c/code\u003e and \u003ccode\u003eWeakNamespace\u003c/code\u003e. :pr:\u003ccode\u003e172\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSkip weakref signal cleanup if the interpreter is shutting down.\n:issue:\u003ccode\u003e173\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-eco/blinker/commit/669f3a027828d19786e708b511277fabcd6b9532\"\u003e\u003ccode\u003e669f3a0\u003c/code\u003e\u003c/a\u003e release version 1.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/blinker/commit/cfe116fa7912d8dcb0deee4907aa63d1efaadf5b\"\u003e\u003ccode\u003ecfe116f\u003c/code\u003e\u003c/a\u003e try disabling attestions on test pypi\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/blinker/commit/16e4bd70a19353d9d7cf47e4df7de54936296377\"\u003e\u003ccode\u003e16e4bd7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pallets-eco/blinker/issues/174\"\u003e#174\u003c/a\u003e from projectgus/bugfix/weakref_disconnect_shutdown\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/blinker/commit/42561fdf065032f5c39aea04d8c3fb4db93f73f3\"\u003e\u003ccode\u003e42561fd\u003c/code\u003e\u003c/a\u003e Fix \u0026quot;Exception ignored\u0026quot; in weakref callback during interpreter shutdown.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/blinker/commit/dcce3e97743494433025e0b68f742f3582b6ba6a\"\u003e\u003ccode\u003edcce3e9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pallets-eco/blinker/issues/175\"\u003e#175\u003c/a\u003e from pallets-eco/drop-python3.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/blinker/commit/efa95eaa080b0d4a8dcfc46ad1f387ea1ddebd97\"\u003e\u003ccode\u003eefa95ea\u003c/code\u003e\u003c/a\u003e drop support for python 3.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/blinker/commit/82305185358d8ce21619ec0f324688a14a89c23b\"\u003e\u003ccode\u003e8230518\u003c/code\u003e\u003c/a\u003e update dev dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/blinker/commit/94f1202f08c6d00a9fe1ecf5c8cba9da84e4b22f\"\u003e\u003ccode\u003e94f1202\u003c/code\u003e\u003c/a\u003e update dev dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/blinker/commit/8c983ecd764e1d113d24522838c2a7312460b7eb\"\u003e\u003ccode\u003e8c983ec\u003c/code\u003e\u003c/a\u003e remove previously deprecated code (\u003ca href=\"https://redirect.github.com/pallets-eco/blinker/issues/172\"\u003e#172\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/blinker/commit/f5915f3bfcd9f9da0caf6cd4858bf68068c52963\"\u003e\u003ccode\u003ef5915f3\u003c/code\u003e\u003c/a\u003e set up pre-commit lite workflow\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets-eco/blinker/compare/1.8.2...1.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cffi` from 1.17.1 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only) - huge thanks to the folks at Quansight Labs for all the work to get this one sorted!\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.0.0b1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only).\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/6366c01d84e9a78e7e85f12ebe9760ba5d19b6d3\"\u003e\u003ccode\u003e6366c01\u003c/code\u003e\u003c/a\u003e release 2.0.0 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/95c847663aec401e4003927a274e4de9b8595f4f\"\u003e\u003ccode\u003e95c8476\u003c/code\u003e\u003c/a\u003e 2.0.0 post beta backports (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/195cbda66b6be9297ef6d584644e50cfdcca4e8a\"\u003e\u003ccode\u003e195cbda\u003c/code\u003e\u003c/a\u003e Release 2.0.0b1 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b4bbe7940d3f76027534db1aecbae9b61c35221a\"\u003e\u003ccode\u003eb4bbe79\u003c/code\u003e\u003c/a\u003e fix version test to support beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/7ed073de66e713cf791b6fdfa23685c81fdfd6ad\"\u003e\u003ccode\u003e7ed073d\u003c/code\u003e\u003c/a\u003e Add support for the free-threaded build (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/178\"\u003e#178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/67a170dc7972dc9361743690b38da3d963b200ef\"\u003e\u003ccode\u003e67a170d\u003c/code\u003e\u003c/a\u003e Change the license from MIT to MIT-no-attribution, which is the same without ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/92645ec9329feb03e3fa86240b40fe0fc37469d1\"\u003e\u003ccode\u003e92645ec\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support/testing (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/177\"\u003e#177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/2b81170583a898478a6996c9705d8c38ab7f73a1\"\u003e\u003ccode\u003e2b81170\u003c/code\u003e\u003c/a\u003e doc: update test commands in Section Testing/development tips (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/25172b84cf51cf58241f074ccd1efd9c7648cb43\"\u003e\u003ccode\u003e25172b8\u003c/code\u003e\u003c/a\u003e doc: update year (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b57a92c03eb2078a99c900519a37d18b4d52324f\"\u003e\u003ccode\u003eb57a92c\u003c/code\u003e\u003c/a\u003e issue 147: force-compute nested structs before parent structs.  Occurs mainly...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.1.7 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.7...8.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `comtypes` from 1.4.12 to 1.4.14\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/enthought/comtypes/releases\"\u003ecomtypes's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.14\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eReplace \u003ccode\u003esetup.py\u003c/code\u003e with \u003ccode\u003epyproject.toml\u003c/code\u003e. By \u003ca href=\"https://github.com/moi15moi\"\u003e\u003ccode\u003e@​moi15moi\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eUpdate codebases for PEP585 compliance. By \u003ca href=\"https://github.com/junkmd\"\u003e\u003ccode\u003e@​junkmd\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.4.13\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove Python 3.8 and add Python 3.14 to the CI pipelines. By \u003ca href=\"https://github.com/junkmd\"\u003e\u003ccode\u003e@​junkmd\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eDeclare the minimum Python version as 3.9. By \u003ca href=\"https://github.com/junkmd\"\u003e\u003ccode\u003e@​junkmd\u003c/code\u003e\u003c/a\u003e. By \u003ca href=\"https://github.com/junkmd\"\u003e\u003ccode\u003e@​junkmd\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003ePyCArgObject.value\u003c/code\u003e for Python 3.14 compatibility. By \u003ca href=\"https://github.com/junkmd\"\u003e\u003ccode\u003e@​junkmd\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd version bridges for the \u003ccode\u003e__pointer_type__\u003c/code\u003e attribute protocol. By \u003ca href=\"https://github.com/junkmd\"\u003e\u003ccode\u003e@​junkmd\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/enthought/comtypes/blob/main/CHANGES.txt\"\u003ecomtypes's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 1.4.14\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eReplace \u003ccode\u003esetup.py\u003c/code\u003e with \u003ccode\u003epyproject.toml\u003c/code\u003e. By \u003ca href=\"https://github.com/moi15moi\"\u003e\u003ccode\u003e@​moi15moi\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eUpdate codebases for PEP585 compliance. By \u003ca href=\"https://github.com/junkmd\"\u003e\u003ccode\u003e@​junkmd\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 1.4.13\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove Python 3.8 and add Python 3.14 to the CI pipelines. By \u003ca href=\"https://github.com/junkmd\"\u003e\u003ccode\u003e@​junkmd\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eDeclare the minimum Python version as 3.9. By \u003ca href=\"https://github.com/junkmd\"\u003e\u003ccode\u003e@​junkmd\u003c/code\u003e\u003c/a\u003e. By \u003ca href=\"https://github.com/junkmd\"\u003e\u003ccode\u003e@​junkmd\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003ePyCArgObject.value\u003c/code\u003e for Python 3.14 compatibility. By \u003ca href=\"https://github.com/junkmd\"\u003e\u003ccode\u003e@​junkmd\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd version bridges for the \u003ccode\u003e__pointer_type__\u003c/code\u003e attribute protocol. By \u003ca href=\"https://github.com/junkmd\"\u003e\u003ccode\u003e@​junkmd\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/enthought/comtypes/commit/b4226687d1df5ccaa6d0ee0df596c0c9adc50b0a\"\u003e\u003ccode\u003eb422668\u003c/code\u003e\u003c/a\u003e Bump version and update change log for 1.4.14 (\u003ca href=\"https://redirect.github.com/enthought/comtypes/issues/882\"\u003e#882\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/enthought/comtypes/commit/ee4320fc96134277bf72cd42df4221772bcd902b\"\u003e\u003ccode\u003eee4320f\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003ecollections.abc.Iterator\u003c/code\u003e in \u003ccode\u003etypeannotator\u003c/code\u003e to align with PEP 585. (\u003ca href=\"https://redirect.github.com/enthought/comtypes/issues/881\"\u003e#881\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/enthought/comtypes/commit/4c95d110d0d5fd286378bae0dc211b69c01f837d\"\u003e\u003ccode\u003e4c95d11\u003c/code\u003e\u003c/a\u003e Replace setup.py with pyproject.toml (\u003ca href=\"https://redirect.github.com/enthought/comtypes/issues/848\"\u003e#848\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/enthought/comtypes/commit/f2bd6052aa6daf3d3791e30b40bdd3fd85e3bfdd\"\u003e\u003ccode\u003ef2bd605\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003e*.py\u003c/code\u003e and \u003ccode\u003e_post_coinit/*.py\u003c/code\u003e files for PEP585 compliance. (\u003ca href=\"https://redirect.github.com/enthought/comtypes/issues/880\"\u003e#880\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/enthought/comtypes/commit/ab2b95e8c76b2fa6ddc24cc911742845ede79f54\"\u003e\u003ccode\u003eab2b95e\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003etools/**/*.py\u003c/code\u003e, \u003ccode\u003eserver/*.py\u003c/code\u003e and \u003ccode\u003eclient/*.py\u003c/code\u003e files for PEP585 comp...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/enthought/comtypes/commit/4134455d4c290a10e084a97c9b18ccb5ef62aaf4\"\u003e\u003ccode\u003e4134455\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003etest/*.py\u003c/code\u003e files for PEP585 compliance. (\u003ca href=\"https://redirect.github.com/enthought/comtypes/issues/878\"\u003e#878\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/enthought/comtypes/commit/5fd01e33d9f2fc571a0f02fffab1f4ed8b241931\"\u003e\u003ccode\u003e5fd01e3\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003ehints.pyi\u003c/code\u003e and the type symbols under \u003ccode\u003eTYPE_CHECKING\u003c/code\u003e blocks in the g...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/enthought/comtypes/commit/6d80cc6a742623130564469aaa543582e10c6301\"\u003e\u003ccode\u003e6d80cc6\u003c/code\u003e\u003c/a\u003e Improve \u003ccode\u003eGetModuleFileName\u003c/code\u003e tests and clarify virtual environment behavior. (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/enthought/comtypes/commit/fb8fd5823d83f866df43ce6f15d1b8dfd7f51f8c\"\u003e\u003ccode\u003efb8fd58\u003c/code\u003e\u003c/a\u003e Bump version and update change log for 1.4.13 (\u003ca href=\"https://redirect.github.com/enthought/comtypes/issues/874\"\u003e#874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/enthought/comtypes/commit/2429d3461e30387daa901cf59fdab02aae851696\"\u003e\u003ccode\u003e2429d34\u003c/code\u003e\u003c/a\u003e Support Python 3.14 and drop Python 3.8. (\u003ca href=\"https://redirect.github.com/enthought/comtypes/issues/839\"\u003e#839\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/enthought/comtypes/compare/1.4.12...1.4.14\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `configparser` from 7.1.0 to 7.2.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jaraco/configparser/blob/main/NEWS.rst\"\u003econfigparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev7.2.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRefreshed with implementation from CPython main (3.14).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/configparser/commit/196691a5900488f11cdf276af745e36776e2209a\"\u003e\u003ccode\u003e196691a\u003c/code\u003e\u003c/a\u003e Finalize\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j...\n\n_Description has been truncated_","html_url":"https://github.com/FreeCAD/FreeCAD-addons/pull/516","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/FreeCAD%2FFreeCAD-addons/issues/516","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/516/packages"}],"issue_packages":[{"old_version":"1.17.1","new_version":"2.0.0","update_type":"major","path":null,"pr_created_at":"2026-03-29T00:49:15.000Z","version_change":"1.17.1 → 2.0.0","issue":{"uuid":"4162088608","node_id":"PR_kwDONnmdmc7OVDSr","number":11,"state":"open","title":"chore(deps): bump the dependencies group across 1 directory with 42 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-29T00:49:15.000Z","updated_at":"2026-04-10T06:08:07.938Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"dependencies","update_count":42,"packages":[{"name":"setuptools","old_version":"75.8.0","new_version":"82.0.1","repository_url":"https://github.com/pypa/setuptools"},{"name":"ansible-runner","old_version":"2.4.0","new_version":"2.4.3","repository_url":"https://github.com/ansible/ansible-runner"},{"name":"babel","old_version":"2.17.0","new_version":"2.18.0","repository_url":"https://github.com/python-babel/babel"},{"name":"backrefs","old_version":"6.1","new_version":"6.2","repository_url":"https://github.com/facelessuser/backrefs"},{"name":"bcrypt","old_version":"4.2.1","new_version":"5.0.0","repository_url":"https://github.com/pyca/bcrypt"},{"name":"build","old_version":"1.4.0","new_version":"1.4.2","repository_url":"https://github.com/pypa/build"},{"name":"certifi","old_version":"2024.12.14","new_version":"2026.2.25","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.6","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"cryptography","old_version":"44.0.0","new_version":"46.0.6","repository_url":"https://github.com/pyca/cryptography"},{"name":"docutils","old_version":"0.21.2","new_version":"0.22.4","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"jaraco-context","old_version":"6.0.1","new_version":"6.1.1","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":"jinja2","old_version":"3.1.5","new_version":"3.1.6","repository_url":"https://github.com/pallets/jinja"},{"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":"mkdocs-autorefs","old_version":"1.4.3","new_version":"1.4.4","repository_url":"https://github.com/mkdocstrings/autorefs"},{"name":"mkdocs-get-deps","old_version":"0.2.0","new_version":"0.2.2","repository_url":"https://github.com/mkdocs/get-deps"},{"name":"mkdocs-material","old_version":"9.7.1","new_version":"9.7.6","repository_url":"https://github.com/squidfunk/mkdocs-material"},{"name":"more-itertools","old_version":"10.5.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"nh3","old_version":"0.2.20","new_version":"0.3.4","repository_url":"https://github.com/messense/nh3"},{"name":"packaging","old_version":"24.2","new_version":"26.0","repository_url":"https://github.com/pypa/packaging"},{"name":"paramiko","old_version":"3.5.0","new_version":"4.0.0","repository_url":"https://github.com/paramiko/paramiko"},{"name":"pathspec","old_version":"1.0.3","new_version":"1.0.4","repository_url":"https://github.com/cpburnz/python-pathspec"},{"name":"pkginfo","old_version":"1.12.0","new_version":"1.12.1.2"},{"name":"pycparser","old_version":"2.22","new_version":"2.23","repository_url":"https://github.com/eliben/pycparser"},{"name":"pydantic","old_version":"2.11.7","new_version":"2.12.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-core","old_version":"2.33.2","new_version":"2.44.0","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":"pymdown-extensions","old_version":"10.20","new_version":"10.21","repository_url":"https://github.com/facelessuser/pymdown-extensions"},{"name":"pynacl","old_version":"1.5.0","new_version":"1.6.2","repository_url":"https://github.com/pyca/pynacl"},{"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":"resolvelib","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/sarugaku/resolvelib"},{"name":"rich","old_version":"13.9.4","new_version":"14.3.3","repository_url":"https://github.com/Textualize/rich"},{"name":"twine","old_version":"6.0.1","new_version":"6.2.0","repository_url":"https://github.com/pypa/twine"},{"name":"typing-inspection","old_version":"0.4.1","new_version":"0.4.2","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"typing-extensions","old_version":"4.14.0","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":"virtualenv","old_version":"20.36.1","new_version":"21.2.0","repository_url":"https://github.com/pypa/virtualenv"},{"name":"wheel","old_version":"0.45.1","new_version":"0.46.3","repository_url":"https://github.com/pypa/wheel"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dependencies group with 42 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [setuptools](https://github.com/pypa/setuptools) | `75.8.0` | `82.0.1` |\n| [ansible-runner](https://github.com/ansible/ansible-runner) | `2.4.0` | `2.4.3` |\n| [babel](https://github.com/python-babel/babel) | `2.17.0` | `2.18.0` |\n| [backrefs](https://github.com/facelessuser/backrefs) | `6.1` | `6.2` |\n| [bcrypt](https://github.com/pyca/bcrypt) | `4.2.1` | `5.0.0` |\n| [build](https://github.com/pypa/build) | `1.4.0` | `1.4.2` |\n| [certifi](https://github.com/certifi/python-certifi) | `2024.12.14` | `2026.2.25` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.1` | `2.0.0` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.6` |\n| [cryptography](https://github.com/pyca/cryptography) | `44.0.0` | `46.0.6` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.21.2` | `0.22.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [jaraco-context](https://github.com/jaraco/jaraco.context) | `6.0.1` | `6.1.1` |\n| [jaraco-functools](https://github.com/jaraco/jaraco.functools) | `4.1.0` | `4.4.0` |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.5` | `3.1.6` |\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| [mkdocs-autorefs](https://github.com/mkdocstrings/autorefs) | `1.4.3` | `1.4.4` |\n| [mkdocs-get-deps](https://github.com/mkdocs/get-deps) | `0.2.0` | `0.2.2` |\n| [mkdocs-material](https://github.com/squidfunk/mkdocs-material) | `9.7.1` | `9.7.6` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.5.0` | `10.8.0` |\n| [nh3](https://github.com/messense/nh3) | `0.2.20` | `0.3.4` |\n| [packaging](https://github.com/pypa/packaging) | `24.2` | `26.0` |\n| [paramiko](https://github.com/paramiko/paramiko) | `3.5.0` | `4.0.0` |\n| [pathspec](https://github.com/cpburnz/python-pathspec) | `1.0.3` | `1.0.4` |\n| [pkginfo](https://code.launchpad.net/~tseaver/pkginfo/trunk) | `1.12.0` | `1.12.1.2` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `2.23` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.7` | `2.12.5` |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.33.2` | `2.44.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) | `10.20` | `10.21` |\n| [pynacl](https://github.com/pyca/pynacl) | `1.5.0` | `1.6.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| [resolvelib](https://github.com/sarugaku/resolvelib) | `1.0.1` | `1.2.1` |\n| [rich](https://github.com/Textualize/rich) | `13.9.4` | `14.3.3` |\n| [twine](https://github.com/pypa/twine) | `6.0.1` | `6.2.0` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.1` | `0.4.2` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.14.0` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.6.3` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.36.1` | `21.2.0` |\n| [wheel](https://github.com/pypa/wheel) | `0.45.1` | `0.46.3` |\n\n\nUpdates `setuptools` from 75.8.0 to 82.0.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/setuptools/blob/main/NEWS.rst\"\u003esetuptools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev82.0.1\u003c/h1\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix the loading of \u003ccode\u003elauncher manifest.xml\u003c/code\u003e file. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5047\"\u003e#5047\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReplaced deprecated \u003ccode\u003ejson.__version__\u003c/code\u003e with fixture in tests. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5186\"\u003e#5186\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImproved Documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd advice about how to improve predictability when installing sdists. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5168\"\u003e#5168\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMisc\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/4941\"\u003e#4941\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5157\"\u003e#5157\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5169\"\u003e#5169\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5175\"\u003e#5175\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev82.0.0\u003c/h1\u003e\n\u003ch2\u003eDeprecations and Removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epkg_resources\u003c/code\u003e has been removed from Setuptools. Most common uses of \u003ccode\u003epkg_resources\u003c/code\u003e have been superseded by the \u003ccode\u003eimportlib.resources \u0026lt;https://docs.python.org/3/library/importlib.resources.html\u0026gt;\u003c/code\u003e_ and \u003ccode\u003eimportlib.metadata \u0026lt;https://docs.python.org/3/library/importlib.metadata.html\u0026gt;\u003c/code\u003e_ projects. Projects and environments relying on \u003ccode\u003epkg_resources\u003c/code\u003e for namespace packages or other behavior should depend on older versions of \u003ccode\u003esetuptools\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/3085\"\u003e#3085\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev81.0.0\u003c/h1\u003e\n\u003ch2\u003eDeprecations and Removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved support for the --dry-run parameter to setup.py. This one feature by its nature threads through lots of core and ancillary functionality, adding complexity and friction. Removal of this parameter will help decouple the compiler functionality from distutils and thus the eventual full integration of distutils. These changes do affect some class and function signatures, so any derivative functionality may require some compatibility shims to support their expected interface. Please report any issues to the Setuptools project for investigation. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/4872\"\u003e#4872\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev80.10.2\u003c/h1\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate vendored dependencies. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5159\"\u003e#5159\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMisc\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/pypa/setuptools/commit/5a13876673a41e3cd21d4d6e587f53d0fb4fd8e5\"\u003e\u003ccode\u003e5a13876\u003c/code\u003e\u003c/a\u003e Bump version: 82.0.0 → 82.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/51ab8f183f1c4112675d8d6ec6b004406d518ee8\"\u003e\u003ccode\u003e51ab8f1\u003c/code\u003e\u003c/a\u003e Avoid using (deprecated) 'json.\u003cstrong\u003eversion\u003c/strong\u003e' in tests (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5194\"\u003e#5194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/f9c37b20bb0ed11203f676f9683452a4c3ace6f6\"\u003e\u003ccode\u003ef9c37b2\u003c/code\u003e\u003c/a\u003e Docs/CI: Fix intersphinx references (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5195\"\u003e#5195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/8173db2a4fc0f6cb28926b3dba59116b79f435c8\"\u003e\u003ccode\u003e8173db2\u003c/code\u003e\u003c/a\u003e Docs: Fix intersphinx references\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/09bafbc74923f2a3591b5b098be75d6af6ca5141\"\u003e\u003ccode\u003e09bafbc\u003c/code\u003e\u003c/a\u003e Fix past tense on newsfragment\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/461ea56c8e629819a23920f44d9298d4f041abde\"\u003e\u003ccode\u003e461ea56\u003c/code\u003e\u003c/a\u003e Add news fragment\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/c4ffe535b58235ff9f9ebe90d24a2cffb57e70ae\"\u003e\u003ccode\u003ec4ffe53\u003c/code\u003e\u003c/a\u003e Avoid using (deprecated) 'json.\u003cstrong\u003eversion\u003c/strong\u003e' in tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/749258b1a96c7accc05ea7d842fb19fc378866fe\"\u003e\u003ccode\u003e749258b\u003c/code\u003e\u003c/a\u003e Cleanup \u003ccode\u003epkg_resources\u003c/code\u003e dependencies and configuration (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5175\"\u003e#5175\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/2019c16701667db1010c62ec11c6ef78c2e58206\"\u003e\u003ccode\u003e2019c16\u003c/code\u003e\u003c/a\u003e Parse \u003ccode\u003eext-module.define-macros\u003c/code\u003e from \u003ccode\u003epyproject.toml\u003c/code\u003e as list of tuples (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5169\"\u003e#5169\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/b809c86a37d97fcce290d5f51d4c293ab40bc685\"\u003e\u003ccode\u003eb809c86\u003c/code\u003e\u003c/a\u003e Sync setuptools schema with validate-pyproject (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5157\"\u003e#5157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/setuptools/compare/v75.8.0...v82.0.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ansible-runner` from 2.4.0 to 2.4.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ansible/ansible-runner/releases\"\u003eansible-runner's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003eget_option\u003c/code\u003e api from callback plugins (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/pull/1488\"\u003eansible/ansible-runner#1488\u003c/a\u003e). This fixes some problems around using custom callback plugins.\u003c/li\u003e\n\u003cli\u003eFix container --tty detection in subprocess mode (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/pull/1489\"\u003eansible/ansible-runner#1489\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/ansible/ansible-runner/compare/2.4.2...2.4.3\"\u003ehttps://github.com/ansible/ansible-runner/compare/2.4.2...2.4.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.4.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eShort circuit display wrapper of the callback plugin within forks (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/pull/1414\"\u003eansible/ansible-runner#1414\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove EOF log messages when streaming (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/pull/1458\"\u003eansible/ansible-runner#1458\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/ansible/ansible-runner/compare/2.4.1...2.4.2\"\u003ehttps://github.com/ansible/ansible-runner/compare/2.4.1...2.4.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.4.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eModify volume mount behavior when source does not exist (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1408\"\u003e#1408\u003c/a\u003e). Volumes specified using the \u003ccode\u003econtainer-volume-mount\u003c/code\u003e option will now be passed through to the underlying container engine unverified and unmodified. This now allows you to mount individual files (vs. the parent directory) and non-existing source volumes. The behavior encountered with a non-existing source volume depends on which container engine is in use (\u003ccode\u003edocker\u003c/code\u003e creates the volume, \u003ccode\u003epodman\u003c/code\u003e will error).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eVarious documentation updates.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/ansible/ansible-runner/compare/2.4.0...2.4.1\"\u003ehttps://github.com/ansible/ansible-runner/compare/2.4.0...2.4.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/ansible/ansible-runner/commit/dafa5b56fdcb89b379e4d276155d8a79cfc2ad2a\"\u003e\u003ccode\u003edafa5b5\u003c/code\u003e\u003c/a\u003e 📦 Fix \u003ccode\u003esetuptools-scm\u003c/code\u003e warnings on git archival (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1492\"\u003e#1492\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1493\"\u003e#1493\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/27d5fa622408ab5d81d898ce2f36ed5d441ac9b3\"\u003e\u003ccode\u003e27d5fa6\u003c/code\u003e\u003c/a\u003e Fix container --tty detection in subprocess mode (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1306\"\u003e#1306\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1489\"\u003e#1489\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/92d751dd18672e6c7f8d38e54aaf1267c02fd68f\"\u003e\u003ccode\u003e92d751d\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003eget_option\u003c/code\u003e api from callback plugins (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1142\"\u003e#1142\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1488\"\u003e#1488\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/f9b33f3bac874204bb26dbfedc8d4921fb07d8bb\"\u003e\u003ccode\u003ef9b33f3\u003c/code\u003e\u003c/a\u003e Fix GH issue templates (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1430\"\u003e#1430\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1487\"\u003e#1487\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/5e9f56bea23ccc88375830ac95f921ef74b25b07\"\u003e\u003ccode\u003e5e9f56b\u003c/code\u003e\u003c/a\u003e Fix test_invalid_registry_host() integration test (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1485\"\u003e#1485\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1486\"\u003e#1486\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/a098dccae910b118f140e8ab8927e608618a91ee\"\u003e\u003ccode\u003ea098dcc\u003c/code\u003e\u003c/a\u003e Clarify automount of SSH dir in docs (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1462\"\u003e#1462\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1463\"\u003e#1463\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/aa1d85044c197f8bd03ba1824c6de4510bab30ee\"\u003e\u003ccode\u003eaa1d850\u003c/code\u003e\u003c/a\u003e Improve EOF log messages when streaming (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1454\"\u003e#1454\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1458\"\u003e#1458\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/23d1720a2f29ef2518e4bede106e88545ad2625f\"\u003e\u003ccode\u003e23d1720\u003c/code\u003e\u003c/a\u003e Fix container build cache issue (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1449\"\u003e#1449\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1450\"\u003e#1450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/342cfc58f46c6bf0b6b6f23d91b726fa27091637\"\u003e\u003ccode\u003e342cfc5\u003c/code\u003e\u003c/a\u003e Remove wheel building from CI (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1443\"\u003e#1443\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1445\"\u003e#1445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/3dde1ffdeec743b07c9d3ef90c587db40bea8d62\"\u003e\u003ccode\u003e3dde1ff\u003c/code\u003e\u003c/a\u003e Change keepalive test boundary to 15\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ansible/ansible-runner/compare/2.4.0...2.4.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `babel` from 2.17.0 to 2.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-babel/babel/releases\"\u003ebabel's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.18.0\u003c/h2\u003e\n\u003cp\u003eHappy 2026! Like last year's release (ahem...), this one too is being made from FOSDEM 2026, in Brussels, Belgium. 🇧🇪\nWe'll aspire for a less glacial release cycle for 2.19. 😁\u003c/p\u003e\n\u003cp\u003ePlease see \u003ca href=\"https://github.com/python-babel/babel/blob/56c63caf50b18b152541b5dcafd51f645d867074/CHANGES.rst\"\u003eCHANGELOG.rst\u003c/a\u003e for the detailed change log.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-babel/babel/compare/v2.17.0...v2.18.0\"\u003ehttps://github.com/python-babel/babel/compare/v2.17.0...v2.18.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-babel/babel/blob/master/CHANGES.rst\"\u003ebabel's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.18.0\u003c/h2\u003e\n\u003cp\u003eHappy 2026! This release is, coincidentally, also being made from FOSDEM.\u003c/p\u003e\n\u003cp\u003eWe will aspire for a slightly less glacial release cadence in this year;\nthere are interesting features in the pipeline.\u003c/p\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Core: Add `babel.core.get_cldr_version()` by @akx in :gh:`1242`\n* Core: Use CLDR 47 by @tomasr8 in :gh:`1210`\n* Core: Use canonical IANA zone names in zone_territories by @akx in :gh:`1220`\n* Messages: Improve extract performance via ignoring directories early during os.walk by @akx in :gh:`968`\n* Messages: Merge in per-format keywords and auto_comments by @akx in :gh:`1243`\n* Messages: Update keywords for extraction of dpgettext and dnpgettext by @mardiros in :gh:`1235`\n* Messages: Validate all plurals in Python format checker by @tomasr8 in :gh:`1188`\n* Time: Use standard library `timezone` instead of `FixedOffsetTimezone` by @akx in :gh:`1203`\n\u003cp\u003eBugfixes\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCore: Fix formatting for \u0026quot;Empty locale identifier\u0026quot; exception added in \u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1164\"\u003e#1164\u003c/a\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1184\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCore: Improve handling of no-inheritance-marker in timezone data by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1194\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCore: Make the number pattern regular expression more efficient by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1213\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMessages: Keep translator comments next to the translation function call by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1196\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eNumbers: Fix KeyError that occurred when formatting compact currencies of exactly one thousand in several locales  by \u003ca href=\"https://github.com/bartbroere\"\u003e\u003ccode\u003e@​bartbroere\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1246\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther improvements\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Core: Avoid unnecessary uses of `map()` by @akx in :gh:`1180`\n* Messages: Have init-catalog create directories too by @akx in :gh:`1244`\n* Messages: Optimizations for read_po by @akx in :gh:`1200`\n* Messages: Use pathlib.Path() in catalog frontend; improve test coverage by @akx in :gh:`1204`\n\u003cp\u003eInfrastructure and documentation\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCI: Renovate CI \u0026amp; lint tools by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1228\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCI: Tighten up CI with Zizmor by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1230\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCI: make job permissions explicit by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1227\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Add SECURITY.md by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1229\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Remove u string prefix from docs by \u003ca href=\"https://github.com/verhovsky\"\u003e\u003ccode\u003e@​verhovsky\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1174\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Update dates.rst with current unicode.org tr35 link by \u003ca href=\"https://github.com/clach04\"\u003e\u003ccode\u003e@​clach04\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1189\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Add some PyPI classifiers by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1186\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Apply reformatting by hand and with Ruff by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1202\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Test on and declare support for Python 3.14 by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1233\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/python-babel/babel/commit/56c63caf50b18b152541b5dcafd51f645d867074\"\u003e\u003ccode\u003e56c63ca\u003c/code\u003e\u003c/a\u003e Prepare for 2.18.0 (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1248\"\u003e#1248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/73015a1217b90398fe76dcdc3b6e110ce26eb6d3\"\u003e\u003ccode\u003e73015a1\u003c/code\u003e\u003c/a\u003e Add user-agent to CLDR downloader (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1247\"\u003e#1247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/29bd3624463f9b8694d09a308f67f353373c76af\"\u003e\u003ccode\u003e29bd362\u003c/code\u003e\u003c/a\u003e Fix formatting compact currencies of exactly one thousand in several locales ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/851db43b2b175c6bdf69ae6977cd6ad642506046\"\u003e\u003ccode\u003e851db43\u003c/code\u003e\u003c/a\u003e Reuse InitCatalog's guts in UpdateCatalog (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1244\"\u003e#1244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/fd00e60adf7e0c74821a77ff2a8b564e9985fd8e\"\u003e\u003ccode\u003efd00e60\u003c/code\u003e\u003c/a\u003e Extract: Merge in per-format keywords and auto_comments (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1243\"\u003e#1243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/12a14b6b3f09b6f5c8c745791dd4928f1d58fda0\"\u003e\u003ccode\u003e12a14b6\u003c/code\u003e\u003c/a\u003e Add dpgettext and dnpgettext support (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1235\"\u003e#1235\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/7110e6206fd5ddc66db9613935fea8b8c668b7d5\"\u003e\u003ccode\u003e7110e62\u003c/code\u003e\u003c/a\u003e Use canonical IANA zone names in zone_territories (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1220\"\u003e#1220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/e91c3467b0f3bdc4433eab6820819fe69784c2bf\"\u003e\u003ccode\u003ee91c346\u003c/code\u003e\u003c/a\u003e Improve extract performance via ignoring directories early during os.walk (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/968\"\u003e#968\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/0c4f37838c3cb34cf527dd9890c1b69e98db1354\"\u003e\u003ccode\u003e0c4f378\u003c/code\u003e\u003c/a\u003e Convert Unittest testcases with setup/teardown to fixtures (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1240\"\u003e#1240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/218c96ee305aad95bccb6402af4b4be60ad17ab1\"\u003e\u003ccode\u003e218c96e\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003ebabel.core.get_cldr_version()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1242\"\u003e#1242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-babel/babel/compare/v2.17.0...v2.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `backrefs` from 6.1 to 6.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facelessuser/backrefs/releases\"\u003ebackrefs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e Add alias \u003ccode\u003eprefixmatch\u003c/code\u003e for \u003ccode\u003ematch\u003c/code\u003e in both \u003ccode\u003ebre\u003c/code\u003e and \u003ccode\u003ebregex\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/facelessuser/backrefs/commit/6f9d90d4876e22ca1e928bd2d125804f2381e5ff\"\u003e\u003ccode\u003e6f9d90d\u003c/code\u003e\u003c/a\u003e Add alias \u003ccode\u003eprefixmatch\u003c/code\u003e for \u003ccode\u003ematch\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/facelessuser/backrefs/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/220132ee39102b383048bbeb79b54f773c02bc1c\"\u003e\u003ccode\u003e220132e\u003c/code\u003e\u003c/a\u003e Update to a more common syntax for admonitions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/56c24eb6e593c266aafc695e5114ff2c6932ced8\"\u003e\u003ccode\u003e56c24eb\u003c/code\u003e\u003c/a\u003e Update doc theme and copyright\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/facelessuser/backrefs/compare/6.1...6.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bcrypt` from 4.2.1 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\u003ch2\u003e4.3.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.7.\u003c/li\u003e\n\u003cli\u003eWe now support free-threaded Python 3.13.\u003c/li\u003e\n\u003cli\u003eWe now support PyPy 3.11.\u003c/li\u003e\n\u003cli\u003eWe now publish wheels for free-threaded Python 3.13, for PyPy 3.11 on\n\u003ccode\u003emanylinux\u003c/code\u003e, and for ARMv7l on \u003ccode\u003emanylinux\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/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.2.1...5.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `build` from 1.4.0 to 1.4.2\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.4.2\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix(uv): always pass the python to use by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/996\"\u003epypa/build#996\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(release): detect pre-commit environment inconsistencies by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1001\"\u003epypa/build#1001\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 fix(towncrier): match docstrfmt RST formatting expectations by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1002\"\u003epypa/build#1002\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix _has_valid_outer_pip when pip is missing 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/build/pull/1003\"\u003epypa/build#1003\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: release changelog issue by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1006\"\u003epypa/build#1006\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/notatallshaw\"\u003e\u003ccode\u003e@​notatallshaw\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1003\"\u003epypa/build#1003\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.1...1.4.2\"\u003ehttps://github.com/pypa/build/compare/1.4.1...1.4.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.4.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix documentation grammar and typos by \u003ca href=\"https://github.com/DimitriPapadopoulos\"\u003e\u003ccode\u003e@​DimitriPapadopoulos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/979\"\u003epypa/build#979\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow setting build constraints by \u003ca href=\"https://github.com/layday\"\u003e\u003ccode\u003e@​layday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/963\"\u003epypa/build#963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: pip hack workaround by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/980\"\u003epypa/build#980\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 docs: reorganize using Diataxis framework by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/988\"\u003epypa/build#988\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ feat(ci): automate releases and harden workflows by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/991\"\u003epypa/build#991\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: avoid template injection zizmor issue by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/994\"\u003epypa/build#994\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: fix PR template by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/995\"\u003epypa/build#995\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: fix fix job by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/997\"\u003epypa/build#997\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(ci): resolve pre-release auth failure and change detection by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/999\"\u003epypa/build#999\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(deps): add pre-commit to release dependency group by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1000\"\u003epypa/build#1000\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.0...1.4.1\"\u003ehttps://github.com/pypa/build/compare/1.4.0...1.4.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/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003chr /\u003e\n\u003cp\u003e1.4.2 (2026-03-25)\u003c/p\u003e\n\u003chr /\u003e\n\u003ch1\u003e==========\nBugfixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure the \u003ccode\u003euv\u003c/code\u003e installer uses the current version of Python, avoiding an issue if \u003ccode\u003eUV_PYTHON\u003c/code\u003e is set, for example. (:issue:\u003ccode\u003e977\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e_has_valid_outer_pip\u003c/code\u003e returning \u003ccode\u003eTrue\u003c/code\u003e when pip is missing, causing build to try using a non-existent pip\ninstead of falling back to virtualenv. (:issue:\u003ccode\u003e1003\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.1 (2026-03-24)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eAllow setting build constraints - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e (:issue:\u003ccode\u003e963\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAutomate releases with pre-release workflow and trusted publishing - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e (:issue:\u003ccode\u003e991\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eDocumentation\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eFix documentation grammar and typos (:issue:\u003ccode\u003e979\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eReorganize documentation using Diataxis framework - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e (:issue:\u003ccode\u003e988\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eDocument release process and workflow security practices in contributing guide (:issue:\u003ccode\u003e991\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e991\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eFix pip hack workaround - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e (:issue:\u003ccode\u003e980\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003cp\u003e####################\n1.4.0 (2026-01-08)\n####################\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/pypa/build/commit/7b7ae078aa1dabff33ea72d07ed15dd298acf80a\"\u003e\u003ccode\u003e7b7ae07\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.4.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/17f3b57c7cde11a9785b3164d7b92237846c56ce\"\u003e\u003ccode\u003e17f3b57\u003c/code\u003e\u003c/a\u003e fix: release changelog issue (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1006\"\u003e#1006\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b9457525a02bb4de40c59a39a092306a03e3a24d\"\u003e\u003ccode\u003eb945752\u003c/code\u003e\u003c/a\u003e fix: _has_valid_outer_pip when pip is missing (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1003\"\u003e#1003\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/74ae997a9a227303f7d02bf4b226922c7ba4efd1\"\u003e\u003ccode\u003e74ae997\u003c/code\u003e\u003c/a\u003e 🔧 fix(towncrier): match docstrfmt RST formatting expectations (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1002\"\u003e#1002\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/378692921af6501596572bfc068420391c744ca8\"\u003e\u003ccode\u003e3786929\u003c/code\u003e\u003c/a\u003e 🐛 fix(release): detect pre-commit environment inconsistencies (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1001\"\u003e#1001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/737bdb784406ab966ba666446e79c9e19bdfe237\"\u003e\u003ccode\u003e737bdb7\u003c/code\u003e\u003c/a\u003e fix(uv): always pass the python to use (\u003ca href=\"https://redirect.github.com/pypa/build/issues/996\"\u003e#996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/bd889569a1b9e2e7722682378c2d0cec469166a2\"\u003e\u003ccode\u003ebd88956\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/062e7e2caa1a33cfad8b6fe4740c5aa41d384bdc\"\u003e\u003ccode\u003e062e7e2\u003c/code\u003e\u003c/a\u003e 🐛 fix(deps): add pre-commit to release dependency group (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1000\"\u003e#1000\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/3d8e260f635febc10b5e9cd0e5402746deeb6dcd\"\u003e\u003ccode\u003e3d8e260\u003c/code\u003e\u003c/a\u003e 🐛 fix(ci): resolve pre-release auth failure and change detection (\u003ca href=\"https://redirect.github.com/pypa/build/issues/999\"\u003e#999\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/f2a26104d4fd6d13fdb75a29fd067ee80271f497\"\u003e\u003ccode\u003ef2a2610\u003c/code\u003e\u003c/a\u003e chore: fix fix job (\u003ca href=\"https://redirect.github.com/pypa/build/issues/997\"\u003e#997\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.4.0...1.4.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2024.12.14 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/2024.12.14...2026.02.25\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cffi` from 1.17.1 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only) - huge thanks to the folks at Quansight Labs for all the work to get this one sorted!\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.0.0b1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only).\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/6366c01d84e9a78e7e85f12ebe9760ba5d19b6d3\"\u003e\u003ccode\u003e6366c01\u003c/code\u003e\u003c/a\u003e release 2.0.0 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/95c847663aec401e4003927a274e4de9b8595f4f\"\u003e\u003ccode\u003e95c8476\u003c/code\u003e\u003c/a\u003e 2.0.0 post beta backports (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/195cbda66b6be9297ef6d584644e50cfdcca4e8a\"\u003e\u003ccode\u003e195cbda\u003c/code\u003e\u003c/a\u003e Release 2.0.0b1 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b4bbe7940d3f76027534db1aecbae9b61c35221a\"\u003e\u003ccode\u003eb4bbe79\u003c/code\u003e\u003c/a\u003e fix version test to support beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/7ed073de66e713cf791b6fdfa23685c81fdfd6ad\"\u003e\u003ccode\u003e7ed073d\u003c/code\u003e\u003c/a\u003e Add support for the free-threaded build (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/178\"\u003e#178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/67a170dc7972dc9361743690b38da3d963b200ef\"\u003e\u003ccode\u003e67a170d\u003c/code\u003e\u003c/a\u003e Change the license from MIT to MIT-no-attribution, which is the same without ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/92645ec9329feb03e3fa86240b40fe0fc37469d1\"\u003e\u003ccode\u003e92645ec\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support/testing (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/177\"\u003e#177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/2b81170583a898478a6996c9705d8c38ab7f73a1\"\u003e\u003ccode\u003e2b81170\u003c/code\u003e\u003c/a\u003e doc: update test commands in Section Testing/development tips (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/25172b84cf51cf58241f074ccd1efd9c7648cb43\"\u003e\u003ccode\u003e25172b8\u003c/code\u003e\u003c/a\u003e doc: update year (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b57a92c03eb2078a99c900519a37d18b4d52324f\"\u003e\u003ccode\u003eb57a92c\u003c/code\u003e\u003c/a\u003e issue 147: force-compute nested structs before parent structs.  Occurs mainly...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.1 to 3.4.6\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.6\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.5...3.4.6\"\u003e3.4.6\u003c/a\u003e (2026-03-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFlattened the logic in \u003ccode\u003echarset_normalizer.md\u003c/code\u003e for higher performance. Removed \u003ccode\u003eeligible(..)\u003c/code\u003e and \u003ccode\u003efeed(...)\u003c/code\u003e\nin favor of \u003ccode\u003efeed_info(...)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound for mypy[c] to 1.20, for our optimized version.\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eUNICODE_RANGES_COMBINED\u003c/code\u003e using Unicode blocks v17.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEdge case where noise difference between two candidates can be almost insignificant. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/672\"\u003e#672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCLI \u003ccode\u003e--normalize\u003c/code\u003e writing to wrong path when passing multiple files in. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/702\"\u003e#702\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFreethreaded pre-built wheels now shipped in PyPI starting with 3.14t. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/616\"\u003e#616\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.5\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.4...3.4.5\"\u003e3.4.5\u003c/a\u003e (2026-03-06)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003esetuptools\u003c/code\u003e constraint to \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=82\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.19.1\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd explicit link to lib math in our optimized build. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/692\"\u003e#692\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLogger level not restored correctly for empty byte sequences. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/701\"\u003e#701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTypeError when passing bytearray to from_bytes. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/703\"\u003e#703\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eApplied safe micro-optimizations in both our noise detector and language detector.\u003c/li\u003e\n\u003cli\u003eRewrote the \u003ccode\u003equery_yes_no\u003c/code\u003e function (inside CLI) to avoid using ambiguous licensed code.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ecd.py\u003c/code\u003e submodule into mypyc optional compilation to reduce further the performance impact.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003cbr /\u003e\nmypyc changed the usual binary output for the optimized wheel. Beware, especially if using PyInstaller or alike. See \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/714\"\u003ejawah/charset_normalizer#714\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\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\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.5...3.4.6\"\u003e3.4.6\u003c/a\u003e (2026-03-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFlattened the logic in \u003ccode\u003echarset_normalizer.md\u003c/code\u003e for higher performance. Removed \u003ccode\u003eeligible(..)\u003c/code\u003e and \u003ccode\u003efeed(...)\u003c/code\u003e\nin favor of \u003ccode\u003efeed_info(...)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound for mypy[c] to 1.20, for our optimized version.\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eUNICODE_RANGES_COMBINED\u003c/code\u003e using Unicode blocks v17.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEdge case where noise difference between two candidates can be almost insignificant. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/672\"\u003e#672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCLI \u003ccode\u003e--normalize\u003c/code\u003e writing to wrong path when passing multiple files in. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/702\"\u003e#702\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFreethreaded pre-built wheels now shipped in PyPI starting with 3.14t. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/616\"\u003e#616\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.4...3.4.5\"\u003e3.4.5\u003c/a\u003e (2026-03-06)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003esetuptools\u003c/code\u003e constraint to \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=82\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.19.1\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd explicit link to lib math in our optimized build. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/692\"\u003e#692\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLogger level not restored correctly for empty byte sequences. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/701\"\u003e#701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTypeError when passing bytearray to from_bytes. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/703\"\u003e#703\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eApplied safe micro-optimizations in both our noise detector and language detector.\u003c/li\u003e\n\u003cli\u003eRewrote the \u003ccode\u003equery_yes_no\u003c/code\u003e function (inside CLI) to avoid using ambiguous licensed code.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ecd.py\u003c/code\u003e submodule into mypyc optional compilation to reduce further the performance impact.\u003c/li\u003e\n\u003c/ul\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\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/5478b84058a2a04e2d67a5dabbe0a273706707aa\"\u003e\u003ccode\u003e5478b84\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/715\"\u003e#715\u003c/a\u003e from jawah/release-3.4.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/5c0a09e2caf1b3977df691916e949e1de4b8a738\"\u003e\u003ccode\u003e5c0a09e\u003c/code\u003e\u003c/a\u003e :heavy_check_mark: add confidence for threading usage, mostly due to lru_cach...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ef826b28d9f21e0059c93acc69a8bf364126c179\"\u003e\u003ccode\u003eef826b2\u003c/code\u003e\u003c/a\u003e :pencil: update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/5564f1aebe56584150a988f565ff69ee316dcefe\"\u003e\u003ccode\u003e5564f1a\u003c/code\u003e\u003c/a\u003e :pencil: update docs accordingly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0f2cf7d86e7c3ef4b77790a754b048bfada4fd09\"\u003e\u003ccode\u003e0f2cf7d\u003c/code\u003e\u003c/a\u003e :pencil: update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/54a189446becf4f2b42772f0dce89a5ef79fe8cc\"\u003e\u003ccode\u003e54a1894\u003c/code\u003e\u003c/a\u003e :bug: fix --normalize writing to wrong path with multiple files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/2177e28828bb7fcc2f1bed2a2d4463161a180812\"\u003e\u003ccode\u003e2177e28\u003c/code\u003e\u003c/a\u003e :pencil: update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b2497a54ba545dae84be01649d66fd52a7fcfc2d\"\u003e\u003ccode\u003eb2497a5\u003c/code\u003e\u003c/a\u003e :bug: edge case where noise difference between two candidates can be almost i...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/13a5d0b471cfb9b60b8cda84c78b7874c0267123\"\u003e\u003ccode\u003e13a5d0b\u003c/code\u003e\u003c/a\u003e :wrench: upgrade ci requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b9ffbd4e8314b0f733ddb34eef32d80490eb947c\"\u003e\u003ccode\u003eb9ffbd4\u003c/code\u003e\u003c/a\u003e :wrench: enable 3.14t nox mypyc session\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.1...3.4.6\"\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 46.0.6\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\u003e46.0.6 - 2026-03-25\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* **SECURITY ISSUE**: Fixed a bug where name constraints were not applied\n  to peer names during verification when the leaf certificate contains a\n  wildcard DNS SAN. Ordinary X.509 topologies are not affected by this bug,\n  including those used by the Web PKI. Credit to **Oleh Konko (1seal)** for\n  reporting the issue. **CVE-2026-34073**\n\u003cp\u003e.. _v46-0-5:\u003c/p\u003e\n\u003cp\u003e46.0.5 - 2026-02-10\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAn attacker could create a malicious public key that reveals portions of your\nprivate key when using certain uncommon elliptic curves (binary curves).\nThis version now includes additional security checks to prevent this attack.\nThis issue only affects binary elliptic curves, which are rarely used in\nreal-world applications. Credit to \u003cstrong\u003eXlabAI Team of Tencent Xuanwu Lab and\nAtuin Automated Vulnerability Discovery Engine\u003c/strong\u003e for reporting the issue.\n\u003cstrong\u003eCVE-2026-26007\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003eSupport for \u003ccode\u003eSECT*\u003c/code\u003e binary elliptic curves is deprecated and will be\nremoved in the next release.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. v46-0-4:\u003c/p\u003e\n\u003cp\u003e46.0.4 - 2026-01-27\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* `Dropped support for win_arm64 wheels`_.\n* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.5.\n\u003cp\u003e.. _v46-0-3:\u003c/p\u003e\n\u003cp\u003e46.0.3 - 2025-10-15\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed compilation when using LibreSSL 4.2.0.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v46-0-2:\u003c/p\u003e\n\u003cp\u003e46.0.2 - 2025-09-30\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.4.\n\u003cp\u003e.. _v46-0-1:\u003c/p\u003e\n\u003cp\u003e46.0.1 - 2025-09-16\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/91d728897bdad30cd5c79a2b23e207f1f050d587\"\u003e\u003ccode\u003e91d7288\u003c/code\u003e\u003c/a\u003e Cherry-pick \u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14542\"\u003e#14542\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14543\"\u003e#14543\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/06e120e682cb200e3f7050c02f0bcdac90c4c6ad\"\u003e\u003ccode\u003e06e120e\u003c/code\u003e\u003c/a\u003e bump version for 46.0.5 release (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14289\"\u003e#14289\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/0eebb9dbb6343d9bc1d91e5a2482ed4e054a6d8c\"\u003e\u003ccode\u003e0eebb9d\u003c/code\u003e\u003c/a\u003e EC check key on cofactor \u0026gt; 1 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14287\"\u003e#14287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/bedf6e186b814f69a3f54f51252c23a71d44ed2e\"\u003e\u003ccode\u003ebedf6e1\u003c/code\u003e\u003c/a\u003e fix openssl version on 46 branch (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14220\"\u003e#14220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e6f44fc8e6391f05d719fb9d369692325b87a471\"\u003e\u003ccode\u003ee6f44fc\u003c/code\u003e\u003c/a\u003e bump for 46.0.4 and drop win arm64 due to CI issues (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14217\"\u003e#14217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/c0af4dd7b75921bbe9f1d41a03dbd4b64a9e3403\"\u003e\u003ccode\u003ec0af4dd\u003c/code\u003e\u003c/a\u003e release 46.0.3 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13681\"\u003e#13681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/99efe5ad150a56efadafacaffd0e3ee319373904\"\u003e\u003ccode\u003e99efe5a\u003c/code\u003e\u003c/a\u003e bump version for 46.0.2 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13531\"\u003e#13531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e735cfc27502320101c130335c556394a125ba52\"\u003e\u003ccode\u003ee735cfc\u003c/code\u003e\u003c/a\u003e release 46.0.1 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13450\"\u003e#13450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/4e457ffba43a6d87efc63c33041e2081438dd8a4\"\u003e\u003ccode\u003e4e457ff\u003c/code\u003e\u003c/a\u003e Explicitly specify python in mac uv build invocation (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13447\"\u003e#13447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/2726efdb6d67f1c90cf9c6062d9fe051965586f8\"\u003e\u003ccode\u003e2726efd\u003c/code\u003e\u003c/a\u003e Depend on CFFI 2.0.0 or newer on Python \u0026gt; 3.8 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13448\"\u003e#13448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/cryptography/compare/44.0.0...46.0.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `docutils` from 0.21.2 to 0.22.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/rtfd/recommonmark/commits\"\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 `jaraco-context` from 6.0.1 to 6.1.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jaraco/jaraco.context/blob/main/NEWS.rst\"\u003ejaraco-context's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev6.1.1\u003c/h1\u003e\n\u003cp\u003eNo significant changes.\u003c/p\u003e\n\u003ch1\u003ev6.1.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eIn tarfile.context, ensure that the default filter honors the data filter to avoid path traversal vulnerabilities.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev6.0.2\u003c/h1\u003e\n\u003cp\u003eNo significant changes.\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/jaraco/jaraco.context/commit/47979d7b6a55353170f61f3e54d17f5973cb8e1c\"\u003e\u003ccode\u003e47979d7\u003c/code\u003e\u003c/a\u003e Finalize\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/35a7a79bf20a94250f2119ab087dd4c6b2c667ea\"\u003e\u003ccode\u003e35a7a79\u003c/code\u003e\u003c/a\u003e Remove Python 3.8 compatibility in the doc tests.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/675aaf5bfb926bdafcded1b0e08ca011d6e0f599\"\u003e\u003ccode\u003e675aaf5\u003c/code\u003e\u003c/a\u003e Finalize\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/7b26a42b525735e4085d2e994e13802ea339d5f9\"\u003e\u003ccode\u003e7b26a42\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jaraco/jaraco.context/issues/18\"\u003e#18\u003c/a\u003e from jaraco/security/extraction-safety\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/398390e0ac4faf43e6449374964bbe76f0663bc1\"\u003e\u003ccode\u003e398390e\u003c/code\u003e\u003c/a\u003e Suppress failure (missed expectation) on Python 3.12.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/54a1bc6028838c102ed2c3c27dfca65afbedd326\"\u003e\u003ccode\u003e54a1bc6\u003c/code\u003e\u003c/a\u003e Use the filter argument to tarfile.extract to avoid the deprecation warning.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/7eb62b11d7071d3873facfab7361b2d2bf8a8f44\"\u003e\u003ccode\u003e7eb62b1\u003c/code\u003e\u003c/a\u003e Also extract the member, for completeness.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/3b5ac92dbc7fc13bfe89087c2ae80653314f845b\"\u003e\u003ccode\u003e3b5ac92\u003c/code\u003e\u003c/a\u003e Add another case, demonstrating legitimate use of parent dir.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/3b16eec9f80db260bd072acdb85d0bd2d530a563\"\u003e\u003ccode\u003e3b16eec\u003c/code\u003e\u003c/a\u003e In tarfile.context, ensure that the default filter honors the data filter to ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/52602fa4dceb8cb0b79f7be98b3c698626eb00bb\"\u003e\u003ccode\u003e52602fa\u003c/code\u003e\u003c/a\u003e Update implementation to have different expectations for different cases.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jaraco/jaraco.context/compare/v6.0.1...v6.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jaraco-functools` from 4.1.0 to 4.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jaraco/jaraco.functools/blob/main/NEWS.rst\"\u003ejaraco-functools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev4.4.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd noop.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev4.3.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd none_as function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev4.2.1\u003c/h1\u003e\n\u003cp\u003eNo significant changes.\u003c/p\u003e\n\u003ch1\u003ev4.2.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd 'passthrough' function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded missing \u003ccode\u003esplat\u003c/code\u003e in stubs -- by :user:\u003ccode\u003eAvasam\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/jaraco/jaraco.functools/issues/29\"\u003e#29\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/jaraco/jaraco.functools/commit/b57bb859e09f10f1e2ad7e64e9d71723793517f2\"\u003e\u003ccode\u003eb57bb85\u003c/code\u003e\u003c/a\u003e Finalize\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/21bcec01fb9104296737b6ab2a7ac61d5ed68cb0\"\u003e\u003ccode\u003e21bcec0\u003c/code\u003e\u003c/a\u003e Add noop.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/105d8ca2a61e703881d60302c45a31706f441453\"\u003e\u003ccode\u003e105d8ca\u003c/code\u003e\u003c/a\u003e 👹 Feed the hobgoblins (delint).\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/7f0b09aebbffd846374b2dd886035bb780d9ab20\"\u003e\u003ccode\u003e7f0b09a\u003c/code\u003e\u003c/a\u003e Merge \u003ca href=\"https://github.com/jaraco/skeleton\"\u003ehttps://github.com/jaraco/skeleton\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/8f3d95e7db0114e26e57dd95932b141ead74f7c5\"\u003e\u003ccode\u003e8f3d95e\u003c/code\u003e\u003c/a\u003e Pin mypy on PyPy.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/d47a969ed4567bbdee26034ccaaa8b8169f44fcf\"\u003e\u003ccode\u003ed47a969\u003c/code\u003e\u003c/a\u003e Specify the directory for news fragments.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/9f4e0e2849659969577f40be40cabe026dd5fb0f\"\u003e\u003ccode\u003e9f4e0e2\u003c/code\u003e\u003c/a\u003e Finalize\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/680b9aeed7c2f22f7a662b8c87af013d6ec4a076\"\u003e\u003ccode\u003e680b9ae\u003c/code\u003e\u003c/a\u003e Add none_as function.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/8c5810ed39f431598f8498499e7e8fa38a8ed455\"\u003e\u003ccode\u003e8c5810e\u003c/code\u003e\u003c/a\u003e\u003ccode\u003ejaraco/skeleton#177\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/04ff5549ee93f907bcebb1db570ad291ae55fd29\"\u003e\u003ccode\u003e04ff554\u003c/code\u003e\u003c/a\u003e\u003ccode\u003ejaraco/skeleton#181\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jaraco/jaraco.functools/compare/v4.1.0...v4.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jinja2` from 3.1.5 to 3.1.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/jinja/releases\"\u003ejinja2's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.6\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.6 security release, which fixes security issues 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/Jinja2/3.1.6/\"\u003ehttps://pypi.org/project/Jinja2/3.1.6/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\"\u003ehttps://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup, allowing the sandbox to apply its checks. \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\"\u003ehttps://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\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/jinja/blob/main/CHANGES.rst\"\u003ejinja2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.6\u003c/h2\u003e\n\u003cp\u003eReleased 2025-03-05\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup,\nallowing the sandbox to apply its checks. :ghsa:\u003ccode\u003ecpwx-vrp4-4pq7\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/jinja/commit/15206881c006c79667fe5154fe80c01c65410679\"\u003e\u003ccode\u003e1520688\u003c/code\u003e\u003c/a\u003e release version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/90457bbf33b8662926ae65cdde4c4c32e756e403\"\u003e\u003ccode\u003e90457bb\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/065334d1ee5b7210e1a0a93c37238c86858f2af7\"\u003e\u003ccode\u003e065334d\u003c/code\u003e\u003c/a\u003e attr filter uses env.getattr\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/033c20015c7ca899ab52eb921bb0f08e6d3dd145\"\u003e\u003ccode\u003e033c200\u003c/code\u003e\u003c/a\u003e start version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/bc68d4efa99c5f77334f0e519628558059ae8c35\"\u003e\u003ccode\u003ebc68d4e\u003c/code\u003e\u003c/a\u003e use global contributing guide (\u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2070\"\u003e#2070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/247de5e0c5062a792eb378e50e13e692885ee486\"\u003e\u003ccode\u003e247de5e\u003c/code\u003e\u003c/a\u003e use global contributing guide\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/ab8218c7a1b66b62e0ad6b941bd514e3a64a358f\"\u003e\u003ccode\u003eab8218c\u003c/code\u003e\u003c/a\u003e use project advisory link instead of global\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://g...\n\n_Description has been truncated_","html_url":"https://github.com/thesunnysinha/vm_tool/pull/11","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/thesunnysinha%2Fvm_tool/issues/11","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/11/packages"}},{"old_version":"1.17.1","new_version":"2.0.0","update_type":"major","path":null,"pr_created_at":"2026-03-09T06:14:34.000Z","version_change":"1.17.1 → 2.0.0","issue":{"uuid":"4043582019","node_id":"PR_kwDOPWL5l87I-DBX","number":14,"state":"open","title":"deps-dev(deps-dev): bump cffi from 1.17.1 to 2.0.0","user":"dependabot[bot]","labels":[],"assignees":["SatvikPraveen"],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-09T06:14:34.000Z","updated_at":"2026-03-09T06:14:35.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps-dev(deps-dev)","packages":[{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"}],"path":null,"ecosystem":"pip"},"body":"Bumps [cffi](https://github.com/python-cffi/cffi) from 1.17.1 to 2.0.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only) - huge thanks to the folks at Quansight Labs for all the work to get this one sorted!\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.0.0b1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only).\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/6366c01d84e9a78e7e85f12ebe9760ba5d19b6d3\"\u003e\u003ccode\u003e6366c01\u003c/code\u003e\u003c/a\u003e release 2.0.0 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/95c847663aec401e4003927a274e4de9b8595f4f\"\u003e\u003ccode\u003e95c8476\u003c/code\u003e\u003c/a\u003e 2.0.0 post beta backports (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/195cbda66b6be9297ef6d584644e50cfdcca4e8a\"\u003e\u003ccode\u003e195cbda\u003c/code\u003e\u003c/a\u003e Release 2.0.0b1 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b4bbe7940d3f76027534db1aecbae9b61c35221a\"\u003e\u003ccode\u003eb4bbe79\u003c/code\u003e\u003c/a\u003e fix version test to support beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/7ed073de66e713cf791b6fdfa23685c81fdfd6ad\"\u003e\u003ccode\u003e7ed073d\u003c/code\u003e\u003c/a\u003e Add support for the free-threaded build (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/178\"\u003e#178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/67a170dc7972dc9361743690b38da3d963b200ef\"\u003e\u003ccode\u003e67a170d\u003c/code\u003e\u003c/a\u003e Change the license from MIT to MIT-no-attribution, which is the same without ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/92645ec9329feb03e3fa86240b40fe0fc37469d1\"\u003e\u003ccode\u003e92645ec\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support/testing (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/177\"\u003e#177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/2b81170583a898478a6996c9705d8c38ab7f73a1\"\u003e\u003ccode\u003e2b81170\u003c/code\u003e\u003c/a\u003e doc: update test commands in Section Testing/development tips (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/25172b84cf51cf58241f074ccd1efd9c7648cb43\"\u003e\u003ccode\u003e25172b8\u003c/code\u003e\u003c/a\u003e doc: update year (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b57a92c03eb2078a99c900519a37d18b4d52324f\"\u003e\u003ccode\u003eb57a92c\u003c/code\u003e\u003c/a\u003e issue 147: force-compute nested structs before parent structs.  Occurs mainly...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=cffi\u0026package-manager=pip\u0026previous-version=1.17.1\u0026new-version=2.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/SatvikPraveen/ScipyMasterPro/pull/14","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/SatvikPraveen%2FScipyMasterPro/issues/14","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/14/packages"}},{"old_version":"2.0.0b1","new_version":"2.0.0","update_type":null,"path":null,"pr_created_at":"2026-02-27T12:35:30.000Z","version_change":"2.0.0b1 → 2.0.0","issue":{"uuid":"4000829233","node_id":"PR_kwDOMiUinc7G0JyV","number":25,"state":"closed","title":"Bump cffi from 2.0.0b1 to 2.0.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-02-27T12:52:33.000Z","author_association":null,"state_reason":null,"created_at":"2026-02-27T12:35:30.000Z","updated_at":"2026-02-27T12:52:35.000Z","time_to_close":1023,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"cffi","old_version":"2.0.0b1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"}],"path":null,"ecosystem":"pip"},"body":"Bumps [cffi](https://github.com/python-cffi/cffi) from 2.0.0b1 to 2.0.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only) - huge thanks to the folks at Quansight Labs for all the work to get this one sorted!\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/6366c01d84e9a78e7e85f12ebe9760ba5d19b6d3\"\u003e\u003ccode\u003e6366c01\u003c/code\u003e\u003c/a\u003e release 2.0.0 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/95c847663aec401e4003927a274e4de9b8595f4f\"\u003e\u003ccode\u003e95c8476\u003c/code\u003e\u003c/a\u003e 2.0.0 post beta backports (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v2.0.0b1...v2.0.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=cffi\u0026package-manager=pip\u0026previous-version=2.0.0b1\u0026new-version=2.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/Infineon/StreamGen/pull/25","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Infineon%2FStreamGen/issues/25","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/25/packages"}},{"old_version":"1.17.1","new_version":"2.0.0","update_type":"major","path":null,"pr_created_at":"2026-02-20T22:02:47.000Z","version_change":"1.17.1 → 2.0.0","issue":{"uuid":"3970559722","node_id":"PR_kwDOQaAaZ87FRPAD","number":56,"state":"open","title":"Bump cffi from 1.17.1 to 2.0.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-02-20T22:02:47.000Z","updated_at":"2026-02-21T00:01:09.444Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"}],"path":null,"ecosystem":"pip"},"body":"Bumps [cffi](https://github.com/python-cffi/cffi) from 1.17.1 to 2.0.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only) - huge thanks to the folks at Quansight Labs for all the work to get this one sorted!\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.0.0b1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only).\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/6366c01d84e9a78e7e85f12ebe9760ba5d19b6d3\"\u003e\u003ccode\u003e6366c01\u003c/code\u003e\u003c/a\u003e release 2.0.0 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/95c847663aec401e4003927a274e4de9b8595f4f\"\u003e\u003ccode\u003e95c8476\u003c/code\u003e\u003c/a\u003e 2.0.0 post beta backports (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/195cbda66b6be9297ef6d584644e50cfdcca4e8a\"\u003e\u003ccode\u003e195cbda\u003c/code\u003e\u003c/a\u003e Release 2.0.0b1 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b4bbe7940d3f76027534db1aecbae9b61c35221a\"\u003e\u003ccode\u003eb4bbe79\u003c/code\u003e\u003c/a\u003e fix version test to support beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/7ed073de66e713cf791b6fdfa23685c81fdfd6ad\"\u003e\u003ccode\u003e7ed073d\u003c/code\u003e\u003c/a\u003e Add support for the free-threaded build (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/178\"\u003e#178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/67a170dc7972dc9361743690b38da3d963b200ef\"\u003e\u003ccode\u003e67a170d\u003c/code\u003e\u003c/a\u003e Change the license from MIT to MIT-no-attribution, which is the same without ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/92645ec9329feb03e3fa86240b40fe0fc37469d1\"\u003e\u003ccode\u003e92645ec\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support/testing (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/177\"\u003e#177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/2b81170583a898478a6996c9705d8c38ab7f73a1\"\u003e\u003ccode\u003e2b81170\u003c/code\u003e\u003c/a\u003e doc: update test commands in Section Testing/development tips (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/25172b84cf51cf58241f074ccd1efd9c7648cb43\"\u003e\u003ccode\u003e25172b8\u003c/code\u003e\u003c/a\u003e doc: update year (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b57a92c03eb2078a99c900519a37d18b4d52324f\"\u003e\u003ccode\u003eb57a92c\u003c/code\u003e\u003c/a\u003e issue 147: force-compute nested structs before parent structs.  Occurs mainly...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=cffi\u0026package-manager=pip\u0026previous-version=1.17.1\u0026new-version=2.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/muditsinha01/multi-lang-minimal/pull/56","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/muditsinha01%2Fmulti-lang-minimal/issues/56","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/56/packages"}},{"old_version":"1.17.1","new_version":"2.0.0","update_type":"major","path":null,"pr_created_at":"2026-02-15T00:49:22.000Z","version_change":"1.17.1 → 2.0.0","issue":{"uuid":"3942720280","node_id":"PR_kwDONnmdmc7D2BhW","number":8,"state":"open","title":"chore(deps): bump the dependencies group across 1 directory with 37 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-02-15T00:49:22.000Z","updated_at":"2026-02-15T00:49:38.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"dependencies","update_count":37,"packages":[{"name":"setuptools","old_version":"75.8.0","new_version":"82.0.0","repository_url":"https://github.com/pypa/setuptools"},{"name":"ansible-runner","old_version":"2.4.0","new_version":"2.4.2","repository_url":"https://github.com/ansible/ansible-runner"},{"name":"babel","old_version":"2.17.0","new_version":"2.18.0","repository_url":"https://github.com/python-babel/babel"},{"name":"bcrypt","old_version":"4.2.1","new_version":"5.0.0","repository_url":"https://github.com/pyca/bcrypt"},{"name":"certifi","old_version":"2024.12.14","new_version":"2026.1.4","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"cryptography","old_version":"44.0.0","new_version":"46.0.5","repository_url":"https://github.com/pyca/cryptography"},{"name":"docutils","old_version":"0.21.2","new_version":"0.22.4","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"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":"jinja2","old_version":"3.1.5","new_version":"3.1.6","repository_url":"https://github.com/pallets/jinja"},{"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":"mkdocs-autorefs","old_version":"1.4.3","new_version":"1.4.4","repository_url":"https://github.com/mkdocstrings/autorefs"},{"name":"more-itertools","old_version":"10.5.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"nh3","old_version":"0.2.20","new_version":"0.3.3","repository_url":"https://github.com/messense/nh3"},{"name":"packaging","old_version":"24.2","new_version":"26.0","repository_url":"https://github.com/pypa/packaging"},{"name":"paramiko","old_version":"3.5.0","new_version":"4.0.0","repository_url":"https://github.com/paramiko/paramiko"},{"name":"pathspec","old_version":"1.0.3","new_version":"1.0.4","repository_url":"https://github.com/cpburnz/python-pathspec"},{"name":"pkginfo","old_version":"1.12.0","new_version":"1.12.1.2"},{"name":"pycparser","old_version":"2.22","new_version":"2.23","repository_url":"https://github.com/eliben/pycparser"},{"name":"pydantic","old_version":"2.11.7","new_version":"2.12.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-core","old_version":"2.33.2","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":"pymdown-extensions","old_version":"10.20","new_version":"10.20.1","repository_url":"https://github.com/facelessuser/pymdown-extensions"},{"name":"pynacl","old_version":"1.5.0","new_version":"1.6.2","repository_url":"https://github.com/pyca/pynacl"},{"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":"resolvelib","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/sarugaku/resolvelib"},{"name":"rich","old_version":"13.9.4","new_version":"14.3.2","repository_url":"https://github.com/Textualize/rich"},{"name":"twine","old_version":"6.0.1","new_version":"6.2.0","repository_url":"https://github.com/pypa/twine"},{"name":"typing-inspection","old_version":"0.4.1","new_version":"0.4.2","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"typing-extensions","old_version":"4.14.0","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":"wheel","old_version":"0.45.1","new_version":"0.46.3","repository_url":"https://github.com/pypa/wheel"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dependencies group with 37 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [setuptools](https://github.com/pypa/setuptools) | `75.8.0` | `82.0.0` |\n| [ansible-runner](https://github.com/ansible/ansible-runner) | `2.4.0` | `2.4.2` |\n| [babel](https://github.com/python-babel/babel) | `2.17.0` | `2.18.0` |\n| [bcrypt](https://github.com/pyca/bcrypt) | `4.2.1` | `5.0.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2024.12.14` | `2026.1.4` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.1` | `2.0.0` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [cryptography](https://github.com/pyca/cryptography) | `44.0.0` | `46.0.5` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.21.2` | `0.22.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\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| [jinja2](https://github.com/pallets/jinja) | `3.1.5` | `3.1.6` |\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| [mkdocs-autorefs](https://github.com/mkdocstrings/autorefs) | `1.4.3` | `1.4.4` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.5.0` | `10.8.0` |\n| [nh3](https://github.com/messense/nh3) | `0.2.20` | `0.3.3` |\n| [packaging](https://github.com/pypa/packaging) | `24.2` | `26.0` |\n| [paramiko](https://github.com/paramiko/paramiko) | `3.5.0` | `4.0.0` |\n| [pathspec](https://github.com/cpburnz/python-pathspec) | `1.0.3` | `1.0.4` |\n| [pkginfo](https://code.launchpad.net/~tseaver/pkginfo/trunk) | `1.12.0` | `1.12.1.2` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `2.23` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.7` | `2.12.5` |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.33.2` | `2.41.5` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) | `10.20` | `10.20.1` |\n| [pynacl](https://github.com/pyca/pynacl) | `1.5.0` | `1.6.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| [resolvelib](https://github.com/sarugaku/resolvelib) | `1.0.1` | `1.2.1` |\n| [rich](https://github.com/Textualize/rich) | `13.9.4` | `14.3.2` |\n| [twine](https://github.com/pypa/twine) | `6.0.1` | `6.2.0` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.1` | `0.4.2` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.14.0` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.6.3` |\n| [wheel](https://github.com/pypa/wheel) | `0.45.1` | `0.46.3` |\n\n\nUpdates `setuptools` from 75.8.0 to 82.0.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/setuptools/blob/main/NEWS.rst\"\u003esetuptools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev82.0.0\u003c/h1\u003e\n\u003ch2\u003eDeprecations and Removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epkg_resources\u003c/code\u003e has been removed from Setuptools. Most common uses of \u003ccode\u003epkg_resources\u003c/code\u003e have been superseded by the \u003ccode\u003eimportlib.resources \u0026lt;https://docs.python.org/3/library/importlib.resources.html\u0026gt;\u003c/code\u003e_ and \u003ccode\u003eimportlib.metadata \u0026lt;https://docs.python.org/3/library/importlib.metadata.html\u0026gt;\u003c/code\u003e_ projects. Projects and environments relying on \u003ccode\u003epkg_resources\u003c/code\u003e for namespace packages or other behavior should depend on older versions of \u003ccode\u003esetuptools\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/3085\"\u003e#3085\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev81.0.0\u003c/h1\u003e\n\u003ch2\u003eDeprecations and Removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved support for the --dry-run parameter to setup.py. This one feature by its nature threads through lots of core and ancillary functionality, adding complexity and friction. Removal of this parameter will help decouple the compiler functionality from distutils and thus the eventual full integration of distutils. These changes do affect some class and function signatures, so any derivative functionality may require some compatibility shims to support their expected interface. Please report any issues to the Setuptools project for investigation. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/4872\"\u003e#4872\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev80.10.2\u003c/h1\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate vendored dependencies. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5159\"\u003e#5159\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMisc\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5115\"\u003e#5115\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5128\"\u003e#5128\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev80.10.1\u003c/h1\u003e\n\u003ch2\u003eMisc\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5152\"\u003e#5152\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev80.10.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove post-release tags on setuptools' own build. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/4530\"\u003e#4530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRefreshed vendored dependencies. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5139\"\u003e#5139\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/03f3615362c4eb19c770b71be5bd58e38f235528\"\u003e\u003ccode\u003e03f3615\u003c/code\u003e\u003c/a\u003e Bump version: 81.0.0 → 82.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/530d11498af526c4210d8eeaa1ed6c63f44a390f\"\u003e\u003ccode\u003e530d114\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5007\"\u003e#5007\u003c/a\u003e from pypa/feature/remove-more-pkg_resources\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/11efe9f552290bf536515d458aa85752a0606aa8\"\u003e\u003ccode\u003e11efe9f\u003c/code\u003e\u003c/a\u003e Merge branch 'maint/75.3'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/118f129dd0fb319058bd05f382c50188fd60a60e\"\u003e\u003ccode\u003e118f129\u003c/code\u003e\u003c/a\u003e Bump version: 75.3.3 → 75.3.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/90561ffde1220a590b7644745f48b5837b1a130d\"\u003e\u003ccode\u003e90561ff\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5150\"\u003e#5150\u003c/a\u003e from UladzimirTrehubenka/backport_cve_47273\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/4595034db8aab4ea33035a47a068b04fd8aa00cc\"\u003e\u003ccode\u003e4595034\u003c/code\u003e\u003c/a\u003e Add news fragment.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/fc008006fc072af02eb7e0b601172c67eba395e3\"\u003e\u003ccode\u003efc00800\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5171\"\u003e#5171\u003c/a\u003e from cclauss/ruff-v0.15.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/127e561362a2b4e560faabe9e979ed848106b62d\"\u003e\u003ccode\u003e127e561\u003c/code\u003e\u003c/a\u003e Remove tests reliant on pkg_resources, rather than xfailing them.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/64bc21e10b5d749b1b75fa334caedb67cc7414c4\"\u003e\u003ccode\u003e64bc21e\u003c/code\u003e\u003c/a\u003e Reference the superseding libraries.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/cf1ff459ea997b615a75d99304f6c9aa1fc94c06\"\u003e\u003ccode\u003ecf1ff45\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into debt/pbr-without-pkg_resources\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/setuptools/compare/v75.8.0...v82.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ansible-runner` from 2.4.0 to 2.4.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ansible/ansible-runner/releases\"\u003eansible-runner's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eShort circuit display wrapper of the callback plugin within forks (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/pull/1414\"\u003eansible/ansible-runner#1414\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove EOF log messages when streaming (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/pull/1458\"\u003eansible/ansible-runner#1458\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/ansible/ansible-runner/compare/2.4.1...2.4.2\"\u003ehttps://github.com/ansible/ansible-runner/compare/2.4.1...2.4.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.4.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eModify volume mount behavior when source does not exist (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1408\"\u003e#1408\u003c/a\u003e). Volumes specified using the \u003ccode\u003econtainer-volume-mount\u003c/code\u003e option will now be passed through to the underlying container engine unverified and unmodified. This now allows you to mount individual files (vs. the parent directory) and non-existing source volumes. The behavior encountered with a non-existing source volume depends on which container engine is in use (\u003ccode\u003edocker\u003c/code\u003e creates the volume, \u003ccode\u003epodman\u003c/code\u003e will error).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eVarious documentation updates.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/ansible/ansible-runner/compare/2.4.0...2.4.1\"\u003ehttps://github.com/ansible/ansible-runner/compare/2.4.0...2.4.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/ansible/ansible-runner/commit/aa1d85044c197f8bd03ba1824c6de4510bab30ee\"\u003e\u003ccode\u003eaa1d850\u003c/code\u003e\u003c/a\u003e Improve EOF log messages when streaming (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1454\"\u003e#1454\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1458\"\u003e#1458\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/23d1720a2f29ef2518e4bede106e88545ad2625f\"\u003e\u003ccode\u003e23d1720\u003c/code\u003e\u003c/a\u003e Fix container build cache issue (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1449\"\u003e#1449\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1450\"\u003e#1450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/342cfc58f46c6bf0b6b6f23d91b726fa27091637\"\u003e\u003ccode\u003e342cfc5\u003c/code\u003e\u003c/a\u003e Remove wheel building from CI (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1443\"\u003e#1443\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1445\"\u003e#1445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/3dde1ffdeec743b07c9d3ef90c587db40bea8d62\"\u003e\u003ccode\u003e3dde1ff\u003c/code\u003e\u003c/a\u003e Change keepalive test boundary to 15\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/823bba55e5905fc3d9408464a62efa244fc0b579\"\u003e\u003ccode\u003e823bba5\u003c/code\u003e\u003c/a\u003e Fix CI for core 2.19.0 (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1435\"\u003e#1435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/d9bcdd514bbe6e28b950c40b542c1fe2c37cdf00\"\u003e\u003ccode\u003ed9bcdd5\u003c/code\u003e\u003c/a\u003e Remove outdated skipif fixtures\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/d72b2ee9d2951b8eb06100a101500d4267b5e690\"\u003e\u003ccode\u003ed72b2ee\u003c/code\u003e\u003c/a\u003e Short circuit display wrapper in forks (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1414\"\u003e#1414\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/388135bcf6b7e786d197315e02d042d246388d4f\"\u003e\u003ccode\u003e388135b\u003c/code\u003e\u003c/a\u003e [PR \u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1425\"\u003e#1425\u003c/a\u003e/827f5f65 backport][release_2.4] 🧪 Use \u003ccode\u003ereusable-tox.yml\u003c/code\u003e @ `tox-dev...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/ac1a759d95e1953549bc9af46bf46285bec99b70\"\u003e\u003ccode\u003eac1a759\u003c/code\u003e\u003c/a\u003e Bump core integration tests for core 2.18 release (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1401\"\u003e#1401\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/4ff8ce3af4ace1fb1dc488bfe93e1257deedacf4\"\u003e\u003ccode\u003e4ff8ce3\u003c/code\u003e\u003c/a\u003e Modify volume mount behavior when source does not exist (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1408\"\u003e#1408\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ansible/ansible-runner/compare/2.4.0...2.4.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `babel` from 2.17.0 to 2.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-babel/babel/releases\"\u003ebabel's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.18.0\u003c/h2\u003e\n\u003cp\u003eHappy 2026! Like last year's release (ahem...), this one too is being made from FOSDEM 2026, in Brussels, Belgium. 🇧🇪\nWe'll aspire for a less glacial release cycle for 2.19. 😁\u003c/p\u003e\n\u003cp\u003ePlease see \u003ca href=\"https://github.com/python-babel/babel/blob/56c63caf50b18b152541b5dcafd51f645d867074/CHANGES.rst\"\u003eCHANGELOG.rst\u003c/a\u003e for the detailed change log.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-babel/babel/compare/v2.17.0...v2.18.0\"\u003ehttps://github.com/python-babel/babel/compare/v2.17.0...v2.18.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-babel/babel/blob/master/CHANGES.rst\"\u003ebabel's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.18.0\u003c/h2\u003e\n\u003cp\u003eHappy 2026! This release is, coincidentally, also being made from FOSDEM.\u003c/p\u003e\n\u003cp\u003eWe will aspire for a slightly less glacial release cadence in this year;\nthere are interesting features in the pipeline.\u003c/p\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Core: Add `babel.core.get_cldr_version()` by @akx in :gh:`1242`\n* Core: Use CLDR 47 by @tomasr8 in :gh:`1210`\n* Core: Use canonical IANA zone names in zone_territories by @akx in :gh:`1220`\n* Messages: Improve extract performance via ignoring directories early during os.walk by @akx in :gh:`968`\n* Messages: Merge in per-format keywords and auto_comments by @akx in :gh:`1243`\n* Messages: Update keywords for extraction of dpgettext and dnpgettext by @mardiros in :gh:`1235`\n* Messages: Validate all plurals in Python format checker by @tomasr8 in :gh:`1188`\n* Time: Use standard library `timezone` instead of `FixedOffsetTimezone` by @akx in :gh:`1203`\n\u003cp\u003eBugfixes\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCore: Fix formatting for \u0026quot;Empty locale identifier\u0026quot; exception added in \u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1164\"\u003e#1164\u003c/a\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1184\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCore: Improve handling of no-inheritance-marker in timezone data by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1194\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCore: Make the number pattern regular expression more efficient by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1213\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMessages: Keep translator comments next to the translation function call by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1196\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eNumbers: Fix KeyError that occurred when formatting compact currencies of exactly one thousand in several locales  by \u003ca href=\"https://github.com/bartbroere\"\u003e\u003ccode\u003e@​bartbroere\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1246\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther improvements\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Core: Avoid unnecessary uses of `map()` by @akx in :gh:`1180`\n* Messages: Have init-catalog create directories too by @akx in :gh:`1244`\n* Messages: Optimizations for read_po by @akx in :gh:`1200`\n* Messages: Use pathlib.Path() in catalog frontend; improve test coverage by @akx in :gh:`1204`\n\u003cp\u003eInfrastructure and documentation\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCI: Renovate CI \u0026amp; lint tools by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1228\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCI: Tighten up CI with Zizmor by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1230\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCI: make job permissions explicit by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1227\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Add SECURITY.md by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1229\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Remove u string prefix from docs by \u003ca href=\"https://github.com/verhovsky\"\u003e\u003ccode\u003e@​verhovsky\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1174\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Update dates.rst with current unicode.org tr35 link by \u003ca href=\"https://github.com/clach04\"\u003e\u003ccode\u003e@​clach04\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1189\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Add some PyPI classifiers by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1186\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Apply reformatting by hand and with Ruff by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1202\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Test on and declare support for Python 3.14 by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1233\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/python-babel/babel/commit/56c63caf50b18b152541b5dcafd51f645d867074\"\u003e\u003ccode\u003e56c63ca\u003c/code\u003e\u003c/a\u003e Prepare for 2.18.0 (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1248\"\u003e#1248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/73015a1217b90398fe76dcdc3b6e110ce26eb6d3\"\u003e\u003ccode\u003e73015a1\u003c/code\u003e\u003c/a\u003e Add user-agent to CLDR downloader (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1247\"\u003e#1247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/29bd3624463f9b8694d09a308f67f353373c76af\"\u003e\u003ccode\u003e29bd362\u003c/code\u003e\u003c/a\u003e Fix formatting compact currencies of exactly one thousand in several locales ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/851db43b2b175c6bdf69ae6977cd6ad642506046\"\u003e\u003ccode\u003e851db43\u003c/code\u003e\u003c/a\u003e Reuse InitCatalog's guts in UpdateCatalog (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1244\"\u003e#1244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/fd00e60adf7e0c74821a77ff2a8b564e9985fd8e\"\u003e\u003ccode\u003efd00e60\u003c/code\u003e\u003c/a\u003e Extract: Merge in per-format keywords and auto_comments (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1243\"\u003e#1243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/12a14b6b3f09b6f5c8c745791dd4928f1d58fda0\"\u003e\u003ccode\u003e12a14b6\u003c/code\u003e\u003c/a\u003e Add dpgettext and dnpgettext support (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1235\"\u003e#1235\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/7110e6206fd5ddc66db9613935fea8b8c668b7d5\"\u003e\u003ccode\u003e7110e62\u003c/code\u003e\u003c/a\u003e Use canonical IANA zone names in zone_territories (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1220\"\u003e#1220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/e91c3467b0f3bdc4433eab6820819fe69784c2bf\"\u003e\u003ccode\u003ee91c346\u003c/code\u003e\u003c/a\u003e Improve extract performance via ignoring directories early during os.walk (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/968\"\u003e#968\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/0c4f37838c3cb34cf527dd9890c1b69e98db1354\"\u003e\u003ccode\u003e0c4f378\u003c/code\u003e\u003c/a\u003e Convert Unittest testcases with setup/teardown to fixtures (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1240\"\u003e#1240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/218c96ee305aad95bccb6402af4b4be60ad17ab1\"\u003e\u003ccode\u003e218c96e\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003ebabel.core.get_cldr_version()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1242\"\u003e#1242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-babel/babel/compare/v2.17.0...v2.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bcrypt` from 4.2.1 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\u003ch2\u003e4.3.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.7.\u003c/li\u003e\n\u003cli\u003eWe now support free-threaded Python 3.13.\u003c/li\u003e\n\u003cli\u003eWe now support PyPy 3.11.\u003c/li\u003e\n\u003cli\u003eWe now publish wheels for free-threaded Python 3.13, for PyPy 3.11 on\n\u003ccode\u003emanylinux\u003c/code\u003e, and for ARMv7l on \u003ccode\u003emanylinux\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/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.2.1...5.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2024.12.14 to 2026.1.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\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\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/27ca98ad845ee6d130a88301622c137893f71620\"\u003e\u003ccode\u003e27ca98a\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7.0.9 to 7.0.11 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/56c59a63909cfd3162b37e7bc16956e64df0f737\"\u003e\u003ccode\u003e56c59a6\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.0 to 6.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ae0021cd43a77bfba67d20a041469cdf6996570e\"\u003e\u003ccode\u003eae0021c\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.0.0 to 6.1.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/380\"\u003e#380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddf5d0b5d2a3d55fd92a79f141dbb5e074caf924\"\u003e\u003ccode\u003eddf5d0b\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5.0.1 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2024.12.14...2026.01.04\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cffi` from 1.17.1 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only) - huge thanks to the folks at Quansight Labs for all the work to get this one sorted!\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.0.0b1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only).\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/6366c01d84e9a78e7e85f12ebe9760ba5d19b6d3\"\u003e\u003ccode\u003e6366c01\u003c/code\u003e\u003c/a\u003e release 2.0.0 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/95c847663aec401e4003927a274e4de9b8595f4f\"\u003e\u003ccode\u003e95c8476\u003c/code\u003e\u003c/a\u003e 2.0.0 post beta backports (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/195cbda66b6be9297ef6d584644e50cfdcca4e8a\"\u003e\u003ccode\u003e195cbda\u003c/code\u003e\u003c/a\u003e Release 2.0.0b1 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b4bbe7940d3f76027534db1aecbae9b61c35221a\"\u003e\u003ccode\u003eb4bbe79\u003c/code\u003e\u003c/a\u003e fix version test to support beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/7ed073de66e713cf791b6fdfa23685c81fdfd6ad\"\u003e\u003ccode\u003e7ed073d\u003c/code\u003e\u003c/a\u003e Add support for the free-threaded build (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/178\"\u003e#178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/67a170dc7972dc9361743690b38da3d963b200ef\"\u003e\u003ccode\u003e67a170d\u003c/code\u003e\u003c/a\u003e Change the license from MIT to MIT-no-attribution, which is the same without ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/92645ec9329feb03e3fa86240b40fe0fc37469d1\"\u003e\u003ccode\u003e92645ec\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support/testing (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/177\"\u003e#177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/2b81170583a898478a6996c9705d8c38ab7f73a1\"\u003e\u003ccode\u003e2b81170\u003c/code\u003e\u003c/a\u003e doc: update test commands in Section Testing/development tips (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/25172b84cf51cf58241f074ccd1efd9c7648cb43\"\u003e\u003ccode\u003e25172b8\u003c/code\u003e\u003c/a\u003e doc: update year (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b57a92c03eb2078a99c900519a37d18b4d52324f\"\u003e\u003ccode\u003eb57a92c\u003c/code\u003e\u003c/a\u003e issue 147: force-compute nested structs before parent structs.  Occurs mainly...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.1 to 3.4.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 `cryptography` from 44.0.0 to 46.0.5\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\u003e46.0.5 - 2026-02-10\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* An attacker could create a malicious public key that reveals portions of your\n  private key when using certain uncommon elliptic curves (binary curves).\n  This version now includes additional security checks to prevent this attack.\n  This issue only affects binary elliptic curves, which are rarely used in\n  real-world applications. Credit to **XlabAI Team of Tencent Xuanwu Lab and\n  Atuin Automated Vulnerability Discovery Engine** for reporting the issue.\n  **CVE-2026-26007**\n* Support for ``SECT*`` binary elliptic curves is deprecated and will be\n  removed in the next release.\n\u003cp\u003e.. v46-0-4:\u003c/p\u003e\n\u003cp\u003e46.0.4 - 2026-01-27\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eDropped support for win_arm64 wheels\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eUpdated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.5.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v46-0-3:\u003c/p\u003e\n\u003cp\u003e46.0.3 - 2025-10-15\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Fixed compilation when using LibreSSL 4.2.0.\n\u003cp\u003e.. _v46-0-2:\u003c/p\u003e\n\u003cp\u003e46.0.2 - 2025-09-30\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.4.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v46-0-1:\u003c/p\u003e\n\u003cp\u003e46.0.1 - 2025-09-16\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Fixed an issue where users installing via ``pip`` on Python 3.14 development\n  versions would not properly install a dependency.\n* Fixed an issue building the free-threaded macOS 3.14 wheels.\n\u003cp\u003e.. _v46-0-0:\u003c/p\u003e\n\u003cp\u003e46.0.0 - 2025-09-16\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Support for Python 3.7 has been removed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/06e120e682cb200e3f7050c02f0bcdac90c4c6ad\"\u003e\u003ccode\u003e06e120e\u003c/code\u003e\u003c/a\u003e bump version for 46.0.5 release (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14289\"\u003e#14289\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/0eebb9dbb6343d9bc1d91e5a2482ed4e054a6d8c\"\u003e\u003ccode\u003e0eebb9d\u003c/code\u003e\u003c/a\u003e EC check key on cofactor \u0026gt; 1 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14287\"\u003e#14287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/bedf6e186b814f69a3f54f51252c23a71d44ed2e\"\u003e\u003ccode\u003ebedf6e1\u003c/code\u003e\u003c/a\u003e fix openssl version on 46 branch (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14220\"\u003e#14220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e6f44fc8e6391f05d719fb9d369692325b87a471\"\u003e\u003ccode\u003ee6f44fc\u003c/code\u003e\u003c/a\u003e bump for 46.0.4 and drop win arm64 due to CI issues (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14217\"\u003e#14217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/c0af4dd7b75921bbe9f1d41a03dbd4b64a9e3403\"\u003e\u003ccode\u003ec0af4dd\u003c/code\u003e\u003c/a\u003e release 46.0.3 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13681\"\u003e#13681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/99efe5ad150a56efadafacaffd0e3ee319373904\"\u003e\u003ccode\u003e99efe5a\u003c/code\u003e\u003c/a\u003e bump version for 46.0.2 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13531\"\u003e#13531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e735cfc27502320101c130335c556394a125ba52\"\u003e\u003ccode\u003ee735cfc\u003c/code\u003e\u003c/a\u003e release 46.0.1 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13450\"\u003e#13450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/4e457ffba43a6d87efc63c33041e2081438dd8a4\"\u003e\u003ccode\u003e4e457ff\u003c/code\u003e\u003c/a\u003e Explicitly specify python in mac uv build invocation (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13447\"\u003e#13447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/2726efdb6d67f1c90cf9c6062d9fe051965586f8\"\u003e\u003ccode\u003e2726efd\u003c/code\u003e\u003c/a\u003e Depend on CFFI 2.0.0 or newer on Python \u0026gt; 3.8 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13448\"\u003e#13448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/62230623d183706632c0eb7822c96ac95e3710a8\"\u003e\u003ccode\u003e6223062\u003c/code\u003e\u003c/a\u003e release 46.0.0 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13446\"\u003e#13446\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/cryptography/compare/44.0.0...46.0.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `docutils` from 0.21.2 to 0.22.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/rtfd/recommonmark/commits\"\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 `jaraco-context` from 6.0.1 to 6.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jaraco/jaraco.context/blob/main/NEWS.rst\"\u003ejaraco-context's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev6.1.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eIn tarfile.context, ensure that the default filter honors the data filter to avoid path traversal vulnerabilities.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev6.0.2\u003c/h1\u003e\n\u003cp\u003eNo significant changes.\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/jaraco/jaraco.context/commit/675aaf5bfb926bdafcded1b0e08ca011d6e0f599\"\u003e\u003ccode\u003e675aaf5\u003c/code\u003e\u003c/a\u003e Finalize\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/7b26a42b525735e4085d2e994e13802ea339d5f9\"\u003e\u003ccode\u003e7b26a42\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jaraco/jaraco.context/issues/18\"\u003e#18\u003c/a\u003e from jaraco/security/extraction-safety\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/398390e0ac4faf43e6449374964bbe76f0663bc1\"\u003e\u003ccode\u003e398390e\u003c/code\u003e\u003c/a\u003e Suppress failure (missed expectation) on Python 3.12.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/54a1bc6028838c102ed2c3c27dfca65afbedd326\"\u003e\u003ccode\u003e54a1bc6\u003c/code\u003e\u003c/a\u003e Use the filter argument to tarfile.extract to avoid the deprecation warning.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/7eb62b11d7071d3873facfab7361b2d2bf8a8f44\"\u003e\u003ccode\u003e7eb62b1\u003c/code\u003e\u003c/a\u003e Also extract the member, for completeness.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/3b5ac92dbc7fc13bfe89087c2ae80653314f845b\"\u003e\u003ccode\u003e3b5ac92\u003c/code\u003e\u003c/a\u003e Add another case, demonstrating legitimate use of parent dir.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/3b16eec9f80db260bd072acdb85d0bd2d530a563\"\u003e\u003ccode\u003e3b16eec\u003c/code\u003e\u003c/a\u003e In tarfile.context, ensure that the default filter honors the data filter to ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/52602fa4dceb8cb0b79f7be98b3c698626eb00bb\"\u003e\u003ccode\u003e52602fa\u003c/code\u003e\u003c/a\u003e Update implementation to have different expectations for different cases.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/e066131ed7a882351a42499c9f72a1313a572c55\"\u003e\u003ccode\u003ee066131\u003c/code\u003e\u003c/a\u003e Convert the repro to a parameterized unit test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/d4c5567280aaba7fef8521dccedc49e2cb06ebc6\"\u003e\u003ccode\u003ed4c5567\u003c/code\u003e\u003c/a\u003e 👹 Feed the hobgoblins (delint).\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jaraco/jaraco.context/compare/v6.0.1...v6.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jaraco-functools` from 4.1.0 to 4.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jaraco/jaraco.functools/blob/main/NEWS.rst\"\u003ejaraco-functools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev4.4.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd noop.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev4.3.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd none_as function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev4.2.1\u003c/h1\u003e\n\u003cp\u003eNo significant changes.\u003c/p\u003e\n\u003ch1\u003ev4.2.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd 'passthrough' function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded missing \u003ccode\u003esplat\u003c/code\u003e in stubs -- by :user:\u003ccode\u003eAvasam\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/jaraco/jaraco.functools/issues/29\"\u003e#29\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/jaraco/jaraco.functools/commit/b57bb859e09f10f1e2ad7e64e9d71723793517f2\"\u003e\u003ccode\u003eb57bb85\u003c/code\u003e\u003c/a\u003e Finalize\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/21bcec01fb9104296737b6ab2a7ac61d5ed68cb0\"\u003e\u003ccode\u003e21bcec0\u003c/code\u003e\u003c/a\u003e Add noop.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/105d8ca2a61e703881d60302c45a31706f441453\"\u003e\u003ccode\u003e105d8ca\u003c/code\u003e\u003c/a\u003e 👹 Feed the hobgoblins (delint).\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/7f0b09aebbffd846374b2dd886035bb780d9ab20\"\u003e\u003ccode\u003e7f0b09a\u003c/code\u003e\u003c/a\u003e Merge \u003ca href=\"https://github.com/jaraco/skeleton\"\u003ehttps://github.com/jaraco/skeleton\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/8f3d95e7db0114e26e57dd95932b141ead74f7c5\"\u003e\u003ccode\u003e8f3d95e\u003c/code\u003e\u003c/a\u003e Pin mypy on PyPy.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/d47a969ed4567bbdee26034ccaaa8b8169f44fcf\"\u003e\u003ccode\u003ed47a969\u003c/code\u003e\u003c/a\u003e Specify the directory for news fragments.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/9f4e0e2849659969577f40be40cabe026dd5fb0f\"\u003e\u003ccode\u003e9f4e0e2\u003c/code\u003e\u003c/a\u003e Finalize\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/680b9aeed7c2f22f7a662b8c87af013d6ec4a076\"\u003e\u003ccode\u003e680b9ae\u003c/code\u003e\u003c/a\u003e Add none_as function.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/8c5810ed39f431598f8498499e7e8fa38a8ed455\"\u003e\u003ccode\u003e8c5810e\u003c/code\u003e\u003c/a\u003e\u003ccode\u003ejaraco/skeleton#177\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/04ff5549ee93f907bcebb1db570ad291ae55fd29\"\u003e\u003ccode\u003e04ff554\u003c/code\u003e\u003c/a\u003e\u003ccode\u003ejaraco/skeleton#181\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jaraco/jaraco.functools/compare/v4.1.0...v4.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jinja2` from 3.1.5 to 3.1.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/jinja/releases\"\u003ejinja2's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.6\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.6 security release, which fixes security issues 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/Jinja2/3.1.6/\"\u003ehttps://pypi.org/project/Jinja2/3.1.6/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\"\u003ehttps://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup, allowing the sandbox to apply its checks. \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\"\u003ehttps://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\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/jinja/blob/main/CHANGES.rst\"\u003ejinja2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.6\u003c/h2\u003e\n\u003cp\u003eReleased 2025-03-05\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup,\nallowing the sandbox to apply its checks. :ghsa:\u003ccode\u003ecpwx-vrp4-4pq7\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/jinja/commit/15206881c006c79667fe5154fe80c01c65410679\"\u003e\u003ccode\u003e1520688\u003c/code\u003e\u003c/a\u003e release version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/90457bbf33b8662926ae65cdde4c4c32e756e403\"\u003e\u003ccode\u003e90457bb\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/065334d1ee5b7210e1a0a93c37238c86858f2af7\"\u003e\u003ccode\u003e065334d\u003c/code\u003e\u003c/a\u003e attr filter uses env.getattr\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/033c20015c7ca899ab52eb921bb0f08e6d3dd145\"\u003e\u003ccode\u003e033c200\u003c/code\u003e\u003c/a\u003e start version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/bc68d4efa99c5f77334f0e519628558059ae8c35\"\u003e\u003ccode\u003ebc68d4e\u003c/code\u003e\u003c/a\u003e use global contributing guide (\u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2070\"\u003e#2070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/247de5e0c5062a792eb378e50e13e692885ee486\"\u003e\u003ccode\u003e247de5e\u003c/code\u003e\u003c/a\u003e use global contributing guide\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/ab8218c7a1b66b62e0ad6b941bd514e3a64a358f\"\u003e\u003ccode\u003eab8218c\u003c/code\u003e\u003c/a\u003e use project advisory link instead of global\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/b4ffc8ff299dfd360064bea4cd2f862364601ad2\"\u003e\u003ccode\u003eb4ffc8f\u003c/code\u003e\u003c/a\u003e release version 3.1.5 (\u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2066\"\u003e#2066\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pallets/jinja/compare/3.1.5...3.1.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `keyring` from 25.6.0 to 25.7.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jaraco/keyring/blob/main/NEWS.rst\"\u003ekeyring's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev25.7.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImproved support for KWallet 6. (\u003ca href=\"https://redirect.github.com/jaraco/keyring/issues/728\"\u003e#728\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved cruft from Python 3.8. (\u003ca href=\"https://redirect.github.com/jaraco/keyring/issues/722\"\u003e#722\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/jaraco/keyring/commit/38c040133559682902f25fe96496756ee6849820\"\u003e\u003ccode\u003e38c0401\u003c/code\u003e\u003c/a\u003e Finalize\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/keyring/commit/e5b7d2a20931fa7f4d53e28eb5dffceb2e82ba6b\"\u003e\u003ccode\u003ee5b7d2a\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Disable type checking on filter call. Fixes \u003ca href=\"https://redirect.github.com/jaraco/keyring/issues/659\"\u003e#659\u003c/a\u003e.\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/keyring/commit/2ce2d465050d73db8b1b7662c4e53c7b6fa7aafc\"\u003e\u003ccode\u003e2ce2d46\u003c/code\u003e\u003c/a\u003e Add news fragment.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/keyring/commit/4bb5ece9a6959ee71ec464595f64e88951d00fb6\"\u003e\u003ccode\u003e4bb5ece\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jaraco/keyring/issues/722\"\u003e#722\u003c/a\u003e from hugovk/rm-3.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/keyring/commit/d7c0aa4e1dbfcde3064c1448dc1fd09c76e93d1d\"\u003e\u003ccode\u003ed7c0aa4\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into rm-3.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/keyring/commit/ea1d763bfd80bf7cedd95fb040d38fc1d29c3e87\"\u003e\u003ccode\u003eea1d763\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jaraco/keyring/issues/721\"\u003e#721\u003c/a\u003e from hugovk/fix-tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/keyring/commit/30eea9d7769b167be0667ea3aa3722c762e20659\"\u003e\u003ccode\u003e30eea9d\u003c/code\u003e\u003c/a\u003e Merge \u003ca href=\"https://github.com/jaraco/skeleton\"\u003ehttps://github.com/jaraco/skeleton\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/keyring/commit/fb6e52cf3f511242f0a9ff2441eb7e29c67f7268\"\u003e\u003ccode\u003efb6e52c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jaraco/keyring/issues/724\"\u003e#724\u003c/a\u003e from dachucky/patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/keyring/commit/9ff845920c4c72031343b17c6a3d605e6247f081\"\u003e\u003ccode\u003e9ff8459\u003c/code\u003e\u003c/a\u003e Generalize the guidance around tox.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/keyring/commit/e7fbfa76a1f675bede0f5654e99add3a0cd66370\"\u003e\u003ccode\u003ee7fbfa7\u003c/code\u003e\u003c/a\u003e Prefer imperative third-person voice.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jaraco/keyring/compare/v25.6.0...v25.7.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 `mkdocs-autorefs` from 1.4.3 to 1.4.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mkdocstrings/autorefs/releases\"\u003emkdocs-autorefs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/mkdocstrings/autorefs/releases/tag/1.4.4\"\u003e1.4.4\u003c/a\u003e - 2026-02-10\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/mkdocstrings/autorefs/compare/1.4.3...1.4.4\"\u003eCompare with 1.4.3\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eCode Refactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRegister headings with a Markdown processor rather than the \u003ccode\u003eon_page_content\u003c/code\u003e hook and the table of contents (\u003ca href=\"https://github.com/mkdocstrings/autorefs/commit/17665e2b2bd265e1029e36597fce11b3f78f2ae0\"\u003e17665e2\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mkdocstrings/autorefs/blob/main/CHANGELOG.md\"\u003emkdocs-autorefs's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/mkdocstrings/autorefs/releases/tag/1.4.4\"\u003e1.4.4\u003c/a\u003e - 2026-02-10\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/mkdocstrings/autorefs/compare/1.4.3...1.4.4\"\u003eCompare with 1.4.3\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eCode Refactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRegister headings with a Markdown processor rather than the \u003ccode\u003eon_page_content\u003c/code\u003e hook and the table of contents (\u003ca href=\"https://github.com/mkdocstrings/autorefs/commit/17665e2b2bd265e1029e36597fce11b3f78f2ae0\"\u003e17665e2\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/autorefs/commit/73c897a0d486d84d54b460b86f9a0a3d435f62f8\"\u003e\u003ccode\u003e73c897a\u003c/code\u003e\u003c/a\u003e chore: Prepare release 1.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/autorefs/commit/1753b0a9e0bd5e26a153875c8f96004a1288dd7e\"\u003e\u003ccode\u003e1753b0a\u003c/code\u003e\u003c/a\u003e ci: Ignore unused type ignore comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/autorefs/commit/62cfc22dc2a7b518d3685183faadbb1a66e11bd8\"\u003e\u003ccode\u003e62cfc22\u003c/code\u003e\u003c/a\u003e chore: Symbol reorganization\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/autorefs/commit/17665e2b2bd265e1029e36597fce11b3f78f2ae0\"\u003e\u003ccode\u003e17665e2\u003c/code\u003e\u003c/a\u003e refactor: Register headings with a Markdown processor rather than the `on_pag...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/autorefs/commit/4664b97da4d686cb2814e74bcfa3e011477f3fd1\"\u003e\u003ccode\u003e4664b97\u003c/code\u003e\u003c/a\u003e ci: Ignore type warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/autorefs/commit/632d8e9ea79d71dc9e45e00b9bbb1bcc4db3e6c2\"\u003e\u003ccode\u003e632d8e9\u003c/code\u003e\u003c/a\u003e chore: Update YORE comment\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/autorefs/commit/3e9bc2fe5f7778a40a6b8752f5bd9f8a8a40aea1\"\u003e\u003ccode\u003e3e9bc2f\u003c/code\u003e\u003c/a\u003e docs: Explain how to find out the anchor of a heading\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/mkdocstrings/autorefs/compare/1.4.3...1.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `more-itertools` from 10.5.0 to 10.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/more-itertools/more-itertools/releases\"\u003emore-itertools's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 10.8.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix typo in version history for 10.7.0 by bbayles in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/981\"\u003emore-itertools/more-itertools#981\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIssue 980: Fix variable names: iterable vs iterator by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/982\"\u003emore-itertools/more-itertools#982\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove docstrings for dft, idft, and multinomial by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/983\"\u003emore-itertools/more-itertools#983\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a note about polynomial endianness by bbayles in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/984\"\u003emore-itertools/more-itertools#984\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SPDX license identifier by cdce8p in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/978\"\u003emore-itertools/more-itertools#978\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove setup.py file by cdce8p in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/979\"\u003emore-itertools/more-itertools#979\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude \u003ccode\u003ederangements\u003c/code\u003e by itself by bbayles in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/985\"\u003emore-itertools/more-itertools#985\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd derangements by debruijn in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/946\"\u003emore-itertools/more-itertools#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIssue 986: argmin and argmax by bbayles in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/988\"\u003emore-itertools/more-itertools#988\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSplit-out the integer math functions by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/990\"\u003emore-itertools/more-itertools#990\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSpelling, grammar, punctuation, and usage by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/991\"\u003emore-itertools/more-itertools#991\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix the return type of more_itertools.batched by qobilidop in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertool...\n\n_Description has been truncated_","html_url":"https://github.com/thesunnysinha/vm_tool/pull/8","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/thesunnysinha%2Fvm_tool/issues/8","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/8/packages"}},{"old_version":"1.17.1","new_version":"2.0.0","update_type":"major","path":null,"pr_created_at":"2026-02-09T15:45:38.000Z","version_change":"1.17.1 → 2.0.0","issue":{"uuid":"3917033024","node_id":"PR_kwDOObAYC87ChDKj","number":412,"state":"closed","title":"chore(deps): bump the python-dependencies group with 26 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-02-16T15:00:59.000Z","author_association":null,"state_reason":null,"created_at":"2026-02-09T15:45:38.000Z","updated_at":"2026-02-16T15:01:01.000Z","time_to_close":602121,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-dependencies","update_count":26,"packages":[{"name":"django-allauth","old_version":"65.14.0","new_version":"65.14.1","repository_url":"https://github.com/sponsors/pennersr"},{"name":"django-crispy-forms","old_version":"2.4","new_version":"2.5","repository_url":"https://github.com/django-crispy-forms/django-crispy-forms"},{"name":"markdown","old_version":"3.10.1","new_version":"3.10.2","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"django-tinymce","old_version":"4.1.0","new_version":"5.0.0","repository_url":"https://github.com/jazzband/django-tinymce"},{"name":"asgiref","old_version":"3.8.1","new_version":"3.11.1","repository_url":"https://github.com/django/asgiref"},{"name":"asttokens","old_version":"3.0.0","new_version":"3.0.1","repository_url":"https://github.com/gristlabs/asttokens"},{"name":"billiard","old_version":"4.2.2","new_version":"4.2.4","repository_url":"https://github.com/celery/billiard"},{"name":"certifi","old_version":"2025.4.26","new_version":"2026.1.4","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.4.2","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.2.1","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"cryptography","old_version":"44.0.3","new_version":"46.0.4","repository_url":"https://github.com/pyca/cryptography"},{"name":"django-appconf","old_version":"1.1.0","new_version":"1.2.0","repository_url":"https://github.com/django-compressor/django-appconf"},{"name":"executing","old_version":"2.2.0","new_version":"2.2.1","repository_url":"https://github.com/alexmojaki/executing"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"matplotlib-inline","old_version":"0.1.7","new_version":"0.2.1","repository_url":"https://github.com/ipython/matplotlib-inline"},{"name":"packaging","old_version":"25.0","new_version":"26.0","repository_url":"https://github.com/pypa/packaging"},{"name":"parso","old_version":"0.8.4","new_version":"0.8.5","repository_url":"https://github.com/davidhalter/parso"},{"name":"prompt-toolkit","old_version":"3.0.51","new_version":"3.0.52","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"pycparser","old_version":"2.22","new_version":"3.0","repository_url":"https://github.com/eliben/pycparser"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"python-fsutil","old_version":"0.15.0","new_version":"0.16.0","repository_url":"https://github.com/fabiocaccamo/python-fsutil"},{"name":"redis","old_version":"6.0.0","new_version":"7.1.0","repository_url":"https://github.com/redis/redis-py"},{"name":"sqlparse","old_version":"0.5.3","new_version":"0.5.5","repository_url":"https://github.com/andialbrecht/sqlparse"},{"name":"tzdata","old_version":"2025.2","new_version":"2025.3","repository_url":"https://github.com/python/tzdata"},{"name":"wcwidth","old_version":"0.2.13","new_version":"0.6.0","repository_url":"https://github.com/jquast/wcwidth"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 26 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [django-allauth](https://github.com/sponsors/pennersr) | `65.14.0` | `65.14.1` |\n| [django-crispy-forms](https://github.com/django-crispy-forms/django-crispy-forms) | `2.4` | `2.5` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.10.1` | `3.10.2` |\n| [django-tinymce](https://github.com/jazzband/django-tinymce) | `4.1.0` | `5.0.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.8.1` | `3.11.1` |\n| [asttokens](https://github.com/gristlabs/asttokens) | `3.0.0` | `3.0.1` |\n| [billiard](https://github.com/celery/billiard) | `4.2.2` | `4.2.4` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.4.26` | `2026.1.4` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.1` | `2.0.0` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.2.1` | `8.3.1` |\n| [cryptography](https://github.com/pyca/cryptography) | `44.0.3` | `46.0.4` |\n| [django-appconf](https://github.com/django-compressor/django-appconf) | `1.1.0` | `1.2.0` |\n| [executing](https://github.com/alexmojaki/executing) | `2.2.0` | `2.2.1` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [matplotlib-inline](https://github.com/ipython/matplotlib-inline) | `0.1.7` | `0.2.1` |\n| [packaging](https://github.com/pypa/packaging) | `25.0` | `26.0` |\n| [parso](https://github.com/davidhalter/parso) | `0.8.4` | `0.8.5` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.51` | `3.0.52` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `3.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [python-fsutil](https://github.com/fabiocaccamo/python-fsutil) | `0.15.0` | `0.16.0` |\n| [redis](https://github.com/redis/redis-py) | `6.0.0` | `7.1.0` |\n| [sqlparse](https://github.com/andialbrecht/sqlparse) | `0.5.3` | `0.5.5` |\n| [tzdata](https://github.com/python/tzdata) | `2025.2` | `2025.3` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.2.13` | `0.6.0` |\n\nUpdates `django-allauth` from 65.14.0 to 65.14.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/pennersr/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-crispy-forms` from 2.4 to 2.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/releases\"\u003edjango-crispy-forms's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.5\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eConfirmed support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eConfirmed support for Django 6.0.\u003c/li\u003e\n\u003cli\u003eDropped 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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/blob/main/CHANGELOG.md\"\u003edjango-crispy-forms's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.5 (2025-11-06)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eConfirmed support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eConfirmed support for Django 6.0.\u003c/li\u003e\n\u003cli\u003eDropped 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/django-crispy-forms/django-crispy-forms/commit/65fa8ae065638da101851807937bb89ae1b5687e\"\u003e\u003ccode\u003e65fa8ae\u003c/code\u003e\u003c/a\u003e 2.5 Release. (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1424\"\u003e#1424\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/ca4ca14da2aeac3ce934b83861f1b2a558b736fd\"\u003e\u003ccode\u003eca4ca14\u003c/code\u003e\u003c/a\u003e PEP 639 licenses  (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1413\"\u003e#1413\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/aaabe68c0d5a2eee98101ff661b2c5cab28a0777\"\u003e\u003ccode\u003eaaabe68\u003c/code\u003e\u003c/a\u003e Updated pre-commit hook versions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/125dd1632a460b4dd7b1c8ab0738863d0470c2cb\"\u003e\u003ccode\u003e125dd16\u003c/code\u003e\u003c/a\u003e Pyupgrade 3.9+\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/1f9c8ecc24a3159c86219403ae26e7d0c67e15b7\"\u003e\u003ccode\u003e1f9c8ec\u003c/code\u003e\u003c/a\u003e Confirmed support for Python 3.14, Django. Drop support for Python 3.8.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/93cb8c8e817870e19a6c426a3e5716ae748a6535\"\u003e\u003ccode\u003e93cb8c8\u003c/code\u003e\u003c/a\u003e Correct names in special thanks section (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1421\"\u003e#1421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/e327548f80a531bba5ac1049b73108a0681eebf4\"\u003e\u003ccode\u003ee327548\u003c/code\u003e\u003c/a\u003e Added security policy. (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1419\"\u003e#1419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/64813429d54b39c10d7bb7ad2db4ab0e0e2c418f\"\u003e\u003ccode\u003e6481342\u003c/code\u003e\u003c/a\u003e Enabled GitHub code of conduct (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1416\"\u003e#1416\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/dabd719113c8e7e43fa8d5e254bfa938d169e6e8\"\u003e\u003ccode\u003edabd719\u003c/code\u003e\u003c/a\u003e Add Project Logo. (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1415\"\u003e#1415\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/compare/2.4...2.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `markdown` from 3.10.1 to 3.10.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Python-Markdown/markdown/releases\"\u003emarkdown's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 3.10.2\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a regression related to comment handling (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1590\"\u003e#1590\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMore reliable fix for \u003ccode\u003e\u0026lt;/\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1593\"\u003e#1593\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/Python-Markdown/markdown/blob/master/docs/changelog.md\"\u003emarkdown's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.10.2] - 2026-02-09\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a regression related to comment handling (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1590\"\u003e#1590\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMore reliable fix for \u003ccode\u003e\u0026lt;/\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1593\"\u003e#1593\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-Markdown/markdown/commit/e7a0efb3a7c36d6b8005403122705662bc17c904\"\u003e\u003ccode\u003ee7a0efb\u003c/code\u003e\u003c/a\u003e Bump version to 3.10.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/630183336bda57c258becc3ed229105481876a7e\"\u003e\u003ccode\u003e6301833\u003c/code\u003e\u003c/a\u003e Document HTML sanitation policy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/7f29f1a69d236f5bb11645c2fa03fcf701487c8c\"\u003e\u003ccode\u003e7f29f1a\u003c/code\u003e\u003c/a\u003e More reliable fix for \u003ccode\u003e\u0026lt;/\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/c4386475a6b6daea43b7d7717add4271adc9a3c1\"\u003e\u003ccode\u003ec438647\u003c/code\u003e\u003c/a\u003e Fix regression of special comments\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Python-Markdown/markdown/compare/3.10.1...3.10.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-tinymce` from 4.1.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/jazzband/django-tinymce/blob/master/CHANGELOG.rst\"\u003edjango-tinymce's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e5.0.0 (2025-10-21)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade embedded TinyMCE from 6.8.4 to 7.8.0.\u003c/li\u003e\n\u003cli\u003eDrop support for Django \u0026lt; 4.2.\u003c/li\u003e\n\u003cli\u003eAdd support for Django 5.1 and 5.2.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.8 and add support for Python 3.13.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003etemplate\u003c/code\u003e plugin has been removed in TinyMCE 7.\u003c/li\u003e\n\u003cli\u003eImproved styling of textareas with the AdminTinyMCE widget.\u003c/li\u003e\n\u003cli\u003eIf present, a \u003ccode\u003emedia_url_resolver\u003c/code\u003e function is evaluated during the JS setup\nphase.\u003c/li\u003e\n\u003cli\u003eDocumentation for \u003ccode\u003eimage_list\u003c/code\u003e and \u003ccode\u003elink_list\u003c/code\u003e was improved.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e4.0.1 (2024-06-21)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade embedded TinyMCE from 6.8.3 to 6.8.4\u003c/li\u003e\n\u003cli\u003eRenamed toolbar elements (namely \u003ccode\u003eformatselect\u003c/code\u003e is now \u003ccode\u003eblocks\u003c/code\u003e) to follow\nTinyMCE 6 renames. Also removed from the docs examples some buttons only\navailable through paid subscriptions (\u003ca href=\"https://redirect.github.com/jazzband/django-tinymce/issues/470\"\u003e#470\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e4.0.0 (2024-03-27)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade embedded TinyMCE from 5.10.7 to 6.8.3\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe spellchecker plugin is gone (including \u003ccode\u003eUSE_SPELLCHECKER\u003c/code\u003e setting). Use\nthe \u003ccode\u003ebrowser_spellcheck\u003c/code\u003e TinyMCE option (activated by default) to enable\nbrowser-based spellchecking.\u003c/p\u003e\n\u003ch1\u003e3.7.1 (2024-02-06)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eReintroduce the \u003ccode\u003eMANIFEST.in\u003c/code\u003e file to properly build the package.\nRelease 3.7.0 on PyPI was unusable (\u003ca href=\"https://redirect.github.com/jazzband/django-tinymce/issues/454\"\u003e#454\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e3.7.0 (2024-02-06)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Django 2.2, 4.0, and 4.1.\u003c/li\u003e\n\u003cli\u003eAdd support for Django 4.2 and 5.0.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.7 and add support for Python 3.11 and 3.12.\u003c/li\u003e\n\u003cli\u003eNew \u003ccode\u003epyproject.toml\u003c/code\u003e replaces the legacy \u003ccode\u003esetup.py\u003c/code\u003e project config.\u003c/li\u003e\n\u003cli\u003eUse staticfiles storage API to find tinymce location (\u003ca href=\"https://redirect.github.com/jazzband/django-tinymce/issues/420\"\u003e#420\u003c/a\u003e). It was already\ndone in 3.6.0, but had to be reverted in 3.6.1 (see \u003ca href=\"https://redirect.github.com/jazzband/django-tinymce/issues/430\"\u003e#430\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed selector usage for elements with \u003ccode\u003e__prefix__\u003c/code\u003e (typically inlines).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eTINYMCE_JS_ROOT\u003c/code\u003e setting has been removed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e3.6.1 (2023-03-20)\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/django-tinymce/commit/6b413f4e9bdedb9268c8ef25886fdfc994780097\"\u003e\u003ccode\u003e6b413f4\u003c/code\u003e\u003c/a\u003e Prepare release for 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/django-tinymce/commit/a5dd6ff70cc76586d42c364456163b6a3082e42e\"\u003e\u003ccode\u003ea5dd6ff\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jazzband/django-tinymce/issues/498\"\u003e#498\u003c/a\u003e from jazzband/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/django-tinymce/commit/daf55516f0d5801dd731b1f581f812b6dd9d74ee\"\u003e\u003ccode\u003edaf5551\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/django-tinymce/commit/0e5987de48110e89e788a7f5e3eee710f1f78e45\"\u003e\u003ccode\u003e0e5987d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/django-tinymce/commit/fb9785137833640a089a84bbfd25446b16dc0399\"\u003e\u003ccode\u003efb97851\u003c/code\u003e\u003c/a\u003e Update TinyMCE image_list and link_list documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/django-tinymce/commit/685236d36af37afbb8e069099879b3489bbe8216\"\u003e\u003ccode\u003e685236d\u003c/code\u003e\u003c/a\u003e Add changelog notes for TinyMCE 7 upgrade.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/django-tinymce/commit/7e7f11d43227e5cdcbdbee289c15b85739d37a73\"\u003e\u003ccode\u003e7e7f11d\u003c/code\u003e\u003c/a\u003e Update TinyMCE version number in README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/django-tinymce/commit/2ef037cca2736753de709c106722eef612b75db7\"\u003e\u003ccode\u003e2ef037c\u003c/code\u003e\u003c/a\u003e Update package license information\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/django-tinymce/commit/d0822830a7e6171b82960b7eb5155f1579bb8aac\"\u003e\u003ccode\u003ed082283\u003c/code\u003e\u003c/a\u003e Import latest language pack for TinyMCE 7.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/django-tinymce/commit/44ab9a710b359d8b204ae1d69cb7f16d0d24b72c\"\u003e\u003ccode\u003e44ab9a7\u003c/code\u003e\u003c/a\u003e Import TinyMCE 7.8.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jazzband/django-tinymce/compare/4.1.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 `asgiref` from 3.8.1 to 3.11.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django/asgiref/blob/main/CHANGELOG.txt\"\u003easgiref's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.11.1 (2026-02-03)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSECURITY FIX CVE-2025-14550: There was a potential DoS vector for users of\nthe \u003ccode\u003easgiref.wsgi.WsgiToAsgi\u003c/code\u003e adapter. Malicious requests, including an unreasonably\nlarge number of values for the same header, could lead to resource exhaustion\nwhen building the WSGI environment.\u003c/p\u003e\n\u003cp\u003eTo mitigate this, the algorithm is changed to be more efficient, and\n\u003ccode\u003eWsgiToAsgi\u003c/code\u003e gains a new optional \u003ccode\u003eduplicate_header_limit\u003c/code\u003e parameter,\nwhich defaults to 100. This specifies the number of times a single header may\nbe repeated before the request is rejected as malformed.\u003c/p\u003e\n\u003cp\u003eYou may override \u003ccode\u003eduplicate_header_limit\u003c/code\u003e when configuring your application::\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eapplication = WsgiToAsgi(wsgi_app, duplicate_header_limit=200)\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSet \u003ccode\u003eduplicate_header_limit=None\u003c/code\u003e if you wish to disable this check.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed a regression in 3.11.0 in \u003ccode\u003esync_to_async\u003c/code\u003e when wrapping a callable\nwith an attribute named \u003ccode\u003econtext\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/537\"\u003e#537\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\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\u003eFixed deletion of Local values affecting other contexts. (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/523\"\u003e#523\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/d97a7339524c89798c510de6c142b663fe40400c\"\u003e\u003ccode\u003ed97a733\u003c/code\u003e\u003c/a\u003e Releasing 3.11.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/a50968a52a50a0bcb0f339ba41e8b52cbf74c604\"\u003e\u003ccode\u003ea50968a\u003c/code\u003e\u003c/a\u003e CVE-2025-14550: Fixed duplicate header handling in WsgiToAsgi.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/0fb85a4352b079ab8191cc593865bd99c987141f\"\u003e\u003ccode\u003e0fb85a4\u003c/code\u003e\u003c/a\u003e Fixed sync_to_async wrapping callables with attribute named \u003ccode\u003econtext\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/asgiref/commit/2b28409ab83b3e4cf6fed9019403b71f8d7d1c51\"\u003e\u003ccode\u003e2b28409\u003c/code\u003e\u003c/a\u003e Updated Hypercorn homepage URL (\u003ca href=\"https://redirect.github.com/django/asgiref/issues/539\"\u003e#539\u003c/a\u003e)\u003c/li\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\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/asgiref/compare/3.8.1...3.11.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asttokens` from 3.0.0 to 3.0.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/bdbf396fc0e006912ba82f1137dfd6b2d5aa9af2\"\u003e\u003ccode\u003ebdbf396\u003c/code\u003e\u003c/a\u003e Update mypy; add 3.14 to the CI; drop python 3.8 support (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/167\"\u003e#167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/f859c055e8453650e1987c5aefaaec36582d3a07\"\u003e\u003ccode\u003ef859c05\u003c/code\u003e\u003c/a\u003e Add tests for astroid v2, v3, and v4 to the CI (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/166\"\u003e#166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/84ef059ba28d08816d3d881e363b9ed42bbeae3a\"\u003e\u003ccode\u003e84ef059\u003c/code\u003e\u003c/a\u003e Adapt asttokens for astroid 4.x (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/165\"\u003e#165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/9db9335648659520c7c8453bc39550fa4f95d539\"\u003e\u003ccode\u003e9db9335\u003c/code\u003e\u003c/a\u003e Various links improvements (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3371ebf7f48f6a731d409fffd6ba235e6a95d85b\"\u003e\u003ccode\u003e3371ebf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/161\"\u003e#161\u003c/a\u003e from gristlabs/dependabot/pip/docs/requests-2.32.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3a60115d3efdb01efc8a6442b59fdd0071518e70\"\u003e\u003ccode\u003e3a60115\u003c/code\u003e\u003c/a\u003e Bump requests from 2.32.2 to 2.32.4 in /docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/584b51c6c084455ad4597886657783d1b661ddfa\"\u003e\u003ccode\u003e584b51c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/160\"\u003e#160\u003c/a\u003e from gristlabs/dependabot/pip/docs/urllib3-2.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3e9d703323ce94987bf9e030bd010eae13fa15b4\"\u003e\u003ccode\u003e3e9d703\u003c/code\u003e\u003c/a\u003e Bump urllib3 from 2.2.2 to 2.5.0 in /docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/64d3f7c3637775fef832a9a9cdb78ec02da494e6\"\u003e\u003ccode\u003e64d3f7c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/158\"\u003e#158\u003c/a\u003e from gristlabs/dependabot/pip/docs/jinja2-3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/9b5fb1abfb171cfb1f01c2d996cbd31e9d1f0660\"\u003e\u003ccode\u003e9b5fb1a\u003c/code\u003e\u003c/a\u003e Bump jinja2 from 3.1.4 to 3.1.6 in /docs\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gristlabs/asttokens/compare/v3.0.0...v3.0.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `billiard` from 4.2.2 to 4.2.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/celery/billiard/releases\"\u003ebilliard's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.2.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEliminate usage of 'return' in 'finally' blocks by \u003ca href=\"https://github.com/torarvid\"\u003e\u003ccode\u003e@​torarvid\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/438\"\u003ecelery/billiard#438\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for release: v4.2.4 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/billiard/pull/439\"\u003ecelery/billiard#439\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/torarvid\"\u003e\u003ccode\u003e@​torarvid\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/438\"\u003ecelery/billiard#438\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/billiard/compare/v4.2.3...v4.2.4\"\u003ehttps://github.com/celery/billiard/compare/v4.2.3...v4.2.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.2.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure that task results are delivered during pool 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/billiard/pull/435\"\u003ecelery/billiard#435\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for release: v4.2.3 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/billiard/pull/436\"\u003ecelery/billiard#436\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/weetster\"\u003e\u003ccode\u003e@​weetster\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/billiard/pull/435\"\u003ecelery/billiard#435\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/billiard/compare/v4.2.2...v4.2.3\"\u003ehttps://github.com/celery/billiard/compare/v4.2.2...v4.2.3\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/celery/billiard/blob/main/CHANGES.txt\"\u003ebilliard's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.2.4 - 2025-11-30\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEliminate usage of 'return' in 'finally' blocks (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/438\"\u003e#438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrepare for release: v4.2.4 (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/439\"\u003e#439\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.2.3 - 2025-11-16\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure that task results are delivered during pool shutdown (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/435\"\u003e#435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrepare for release: v4.2.3 (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/436\"\u003e#436\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/celery/billiard/commit/69c2f296c2b36622a90c548f26c940712cb9a1df\"\u003e\u003ccode\u003e69c2f29\u003c/code\u003e\u003c/a\u003e Prepare for release: v4.2.4 (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/439\"\u003e#439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/billiard/commit/973c773fee4ccd1ab1151d0801905176b284075d\"\u003e\u003ccode\u003e973c773\u003c/code\u003e\u003c/a\u003e Eliminate usage of 'return' in 'finally' blocks (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/438\"\u003e#438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/billiard/commit/51153949934c247ac23de990eee4073adcf08083\"\u003e\u003ccode\u003e5115394\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/437\"\u003e#437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/billiard/commit/e8f51d1995cf251787001683dbf443098d8b0ed7\"\u003e\u003ccode\u003ee8f51d1\u003c/code\u003e\u003c/a\u003e Prepare for release: v4.2.3 (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/436\"\u003e#436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/billiard/commit/8603172ab818f5069dd191dfaa3eb0a7653c6dda\"\u003e\u003ccode\u003e8603172\u003c/code\u003e\u003c/a\u003e Ensure that task results are delivered during pool shutdown (\u003ca href=\"https://redirect.github.com/celery/billiard/issues/435\"\u003e#435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/billiard/commit/849a3e8414cae0ba953d7c164129c1320e2a241d\"\u003e\u003ccode\u003e849a3e8\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action from 3 to 4 in the github-actions group\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/celery/billiard/compare/v4.2.2...v4.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 2026.1.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\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\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/27ca98ad845ee6d130a88301622c137893f71620\"\u003e\u003ccode\u003e27ca98a\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7.0.9 to 7.0.11 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/56c59a63909cfd3162b37e7bc16956e64df0f737\"\u003e\u003ccode\u003e56c59a6\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.0 to 6.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ae0021cd43a77bfba67d20a041469cdf6996570e\"\u003e\u003ccode\u003eae0021c\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.0.0 to 6.1.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/380\"\u003e#380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddf5d0b5d2a3d55fd92a79f141dbb5e074caf924\"\u003e\u003ccode\u003eddf5d0b\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5.0.1 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.04.26...2026.01.04\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cffi` from 1.17.1 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only) - huge thanks to the folks at Quansight Labs for all the work to get this one sorted!\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.0.0b1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only).\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/6366c01d84e9a78e7e85f12ebe9760ba5d19b6d3\"\u003e\u003ccode\u003e6366c01\u003c/code\u003e\u003c/a\u003e release 2.0.0 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/95c847663aec401e4003927a274e4de9b8595f4f\"\u003e\u003ccode\u003e95c8476\u003c/code\u003e\u003c/a\u003e 2.0.0 post beta backports (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/195cbda66b6be9297ef6d584644e50cfdcca4e8a\"\u003e\u003ccode\u003e195cbda\u003c/code\u003e\u003c/a\u003e Release 2.0.0b1 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b4bbe7940d3f76027534db1aecbae9b61c35221a\"\u003e\u003ccode\u003eb4bbe79\u003c/code\u003e\u003c/a\u003e fix version test to support beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/7ed073de66e713cf791b6fdfa23685c81fdfd6ad\"\u003e\u003ccode\u003e7ed073d\u003c/code\u003e\u003c/a\u003e Add support for the free-threaded build (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/178\"\u003e#178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/67a170dc7972dc9361743690b38da3d963b200ef\"\u003e\u003ccode\u003e67a170d\u003c/code\u003e\u003c/a\u003e Change the license from MIT to MIT-no-attribution, which is the same without ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/92645ec9329feb03e3fa86240b40fe0fc37469d1\"\u003e\u003ccode\u003e92645ec\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support/testing (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/177\"\u003e#177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/2b81170583a898478a6996c9705d8c38ab7f73a1\"\u003e\u003ccode\u003e2b81170\u003c/code\u003e\u003c/a\u003e doc: update test commands in Section Testing/development tips (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/25172b84cf51cf58241f074ccd1efd9c7648cb43\"\u003e\u003ccode\u003e25172b8\u003c/code\u003e\u003c/a\u003e doc: update year (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b57a92c03eb2078a99c900519a37d18b4d52324f\"\u003e\u003ccode\u003eb57a92c\u003c/code\u003e\u003c/a\u003e issue 147: force-compute nested structs before parent structs.  Occurs mainly...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.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 `click` from 8.2.1 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.2.1...8.3.1\"\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.3 to 46.0.4\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\u003e46.0.4 - 2026-01-27\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* `Dropped support for win_arm64 wheels`_.\n* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.5.\n\u003cp\u003e.. _v46-0-3:\u003c/p\u003e\n\u003cp\u003e46.0.3 - 2025-10-15\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed compilation when using LibreSSL 4.2.0.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v46-0-2:\u003c/p\u003e\n\u003cp\u003e46.0.2 - 2025-09-30\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.4.\n\u003cp\u003e.. _v46-0-1:\u003c/p\u003e\n\u003cp\u003e46.0.1 - 2025-09-16\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed an issue where users installing via \u003ccode\u003epip\u003c/code\u003e on Python 3.14 development\nversions would not properly install a dependency.\u003c/li\u003e\n\u003cli\u003eFixed an issue building the free-threaded macOS 3.14 wheels.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v46-0-0:\u003c/p\u003e\n\u003cp\u003e46.0.0 - 2025-09-16\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* **BACKWARDS INCOMPATIBLE:** Support for Python 3.7 has been removed.\n* Support for OpenSSL \u0026lt; 3.0 is deprecated and will be removed in the next\n  release.\n* Support for ``x86_64`` macOS (including publishing wheels) is deprecated\n  and will be removed in two releases. We will switch to publishing an\n  ``arm64`` only wheel for macOS.\n* Support for 32-bit Windows (including publishing wheels) is deprecated\n  and will be removed in two releases. Users should move to a 64-bit\n  Python installation.\n* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.3.\n* We now build ``ppc64le`` ``manylinux`` wheels and publish them to PyPI.\n* We now build ``win_arm64`` (Windows on Arm) wheels and publish them to PyPI.\n* Added support for free-threaded Python 3.14.\n* Removed the deprecated ``get_attribute_for_oid`` method on\n  :class:`~cryptography.x509.CertificateSigningRequest`. Users should use\n  :meth:`~cryptography.x509.Attributes.get_attribute_for_oid` instead.\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/pyca/cryptography/commit/e6f44fc8e6391f05d719fb9d369692325b87a471\"\u003e\u003ccode\u003ee6f44fc\u003c/code\u003e\u003c/a\u003e bump for 46.0.4 and drop win arm64 due to CI issues (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14217\"\u003e#14217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/c0af4dd7b75921bbe9f1d41a03dbd4b64a9e3403\"\u003e\u003ccode\u003ec0af4dd\u003c/code\u003e\u003c/a\u003e release 46.0.3 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13681\"\u003e#13681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/99efe5ad150a56efadafacaffd0e3ee319373904\"\u003e\u003ccode\u003e99efe5a\u003c/code\u003e\u003c/a\u003e bump version for 46.0.2 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13531\"\u003e#13531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e735cfc27502320101c130335c556394a125ba52\"\u003e\u003ccode\u003ee735cfc\u003c/code\u003e\u003c/a\u003e release 46.0.1 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13450\"\u003e#13450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/4e457ffba43a6d87efc63c33041e2081438dd8a4\"\u003e\u003ccode\u003e4e457ff\u003c/code\u003e\u003c/a\u003e Explicitly specify python in mac uv build invocation (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13447\"\u003e#13447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/2726efdb6d67f1c90cf9c6062d9fe051965586f8\"\u003e\u003ccode\u003e2726efd\u003c/code\u003e\u003c/a\u003e Depend on CFFI 2.0.0 or newer on Python \u0026gt; 3.8 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13448\"\u003e#13448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/62230623d183706632c0eb7822c96ac95e3710a8\"\u003e\u003ccode\u003e6223062\u003c/code\u003e\u003c/a\u003e release 46.0.0 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13446\"\u003e#13446\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/563c4915b0931455706f761a4579c26698824eae\"\u003e\u003ccode\u003e563c491\u003c/code\u003e\u003c/a\u003e Update comment for pyopenssl-release tag (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13445\"\u003e#13445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/d2f6f7faced35b73277bc624ff496f8af696b172\"\u003e\u003ccode\u003ed2f6f7f\u003c/code\u003e\u003c/a\u003e Bump downstream dependencies in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13439\"\u003e#13439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e7ab02bd679d0b4f55d93486fe27e62554ef15d4\"\u003e\u003ccode\u003ee7ab02b\u003c/code\u003e\u003c/a\u003e we'll ship this with 3.5.3 why not (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13442\"\u003e#13442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/cryptography/compare/44.0.3...46.0.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-appconf` from 1.1.0 to 1.2.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-compressor/django-appconf/blob/develop/docs/changelog.rst\"\u003edjango-appconf's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.2.0 (2025-11-08)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14 and Django 6.0\u003c/li\u003e\n\u003cli\u003eDropped support for EOL Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-compressor/django-appconf/commit/0329fd859713ad14a54ad8c92de4e0ac51f30835\"\u003e\u003ccode\u003e0329fd8\u003c/code\u003e\u003c/a\u003e Added support for Python 3.14 and Django 6.0. (\u003ca href=\"https://redirect.github.com/django-compressor/django-appconf/issues/106\"\u003e#106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-compressor/django-appconf/commit/cda368cce42ae3eb9c108494808ead3212c325b8\"\u003e\u003ccode\u003ecda368c\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/django-compressor/django-appconf/issues/105\"\u003e#105\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-compressor/django-appconf/commit/7cad097eb8c05915f7682e431df22895a733bdf7\"\u003e\u003ccode\u003e7cad097\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 in the github-actions group (\u003ca href=\"https://redirect.github.com/django-compressor/django-appconf/issues/104\"\u003e#104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/django-compressor/django-appconf/compare/v1.1.0...v1.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `executing` from 2.2.0 to 2.2.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/bafb305d96572bc8fb668b6564787bbb4fff2809\"\u003e\u003ccode\u003ebafb305\u003c/code\u003e\u003c/a\u003e Add 3.14 to classifiers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/5ed2ba36c2df94c91fefabd919880ffe061dc0f2\"\u003e\u003ccode\u003e5ed2ba3\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/alexmojaki/executing/issues/97\"\u003e#97\u003c/a\u003e from alexmojaki/3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/28095d447af50c49e154de5a27b9423611462f3d\"\u003e\u003ccode\u003e28095d4\u003c/code\u003e\u003c/a\u003e refactor: review changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/bb09dc677da7988a2c9555878b3727afa995b2c0\"\u003e\u003ccode\u003ebb09dc6\u003c/code\u003e\u003c/a\u003e refactor: some cleanup\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/dabc70ef5cc9a45eb57432822cdcf674af2e1db8\"\u003e\u003ccode\u003edabc70e\u003c/code\u003e\u003c/a\u003e fix: inst.argval can be a tuple for sometimes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/0772f918c432d6451594bcb6ffccba62e32e794c\"\u003e\u003ccode\u003e0772f91\u003c/code\u003e\u003c/a\u003e fix: removed comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/bacc5b699405e6f27d882dd2a71bb0ec30167f37\"\u003e\u003ccode\u003ebacc5b6\u003c/code\u003e\u003c/a\u003e fix: moved verification for CALL_INTRINSIC_2 back to 3.13\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/ec090751a1645cd14bfcb20a79b02371ffd6172b\"\u003e\u003ccode\u003eec09075\u003c/code\u003e\u003c/a\u003e test: added sample_results for 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/9405fed0769af3ee22dd4f433249f6494688638e\"\u003e\u003ccode\u003e9405fed\u003c/code\u003e\u003c/a\u003e fix: handle synthetic code to store annotation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/f09e4cd194aa3480c12a9f5afab3524d2a7222f2\"\u003e\u003ccode\u003ef09e4cd\u003c/code\u003e\u003c/a\u003e fix: TypeVar defaults\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/alexmojaki/executing/compare/v2.2.0...v2.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 `matplotlib-inline` from 0.1.7 to 0.2.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/matplotlib-inline/commit/30bf01b0774d92bbff91a7738b9eef3ba4a55fa6\"\u003e\u003ccode\u003e30bf01b\u003c/code\u003e\u003c/a\u003e Release version 0.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/matplotlib-inline/commit/0237ddd89ab410c49a7b08d4535ad6ce817decd7\"\u003e\u003ccode\u003e0237ddd\u003c/code\u003e\u003c/a\u003e Fix Misc Building issues. (\u003ca href=\"https://redirect.github.com/ipython/matplotlib-inline/issues/52\"\u003e#52\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/matplotlib-inline/commit/6673aa631ccdf68ac52012da43c5d56ea15ffe66\"\u003e\u003ccode\u003e6673aa6\u003c/code\u003e\u003c/a\u003e Docstring of set_matplotlib_formats (\u003ca href=\"https://redirect.github.com/ipython/matplotlib-inline/issues/51\"\u003e#51\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/matplotlib-inline/commit/20f78c4483350eb8fcd71d7a29d91a061ed284ab\"\u003e\u003ccode\u003e20f78c4\u003c/code\u003e\u003c/a\u003e Help string of %config InlineBackend\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/matplotlib-inline/commit/9caad5b890ca79b4a6c11be90ae6573099432748\"\u003e\u003ccode\u003e9caad5b\u003c/code\u003e\u003c/a\u003e test building wheel works\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/matplotlib-inline/commit/251a8c81702ebd1b0cde5c36377a318bb28c74a6\"\u003e\u003ccode\u003e251a8c8\u003c/code\u003e\u003c/a\u003e remove problematic License-expression\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/matplotlib-inline/commit/45ec4f11963f34ef6fe92298cc691eea569d62f5\"\u003e\u003ccode\u003e45ec4f1\u003c/code\u003e\u003c/a\u003e Correcting by Carreau reviewe\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/matplotlib-inline/commit/c91c036723dd58a37c0f46a6662a9a837d611553\"\u003e\u003ccode\u003ec91c036\u003c/code\u003e\u003c/a\u003e Correcting for docstring of set_matplotlib_formats\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/matplotlib-inline/commit/9390396c7a775576a83278807cca7dbd1195793a\"\u003e\u003ccode\u003e9390396\u003c/code\u003e\u003c/a\u003e Docstring of set_matplotlib_formats\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/matplotlib-inline/commit/011561d372b5a4ac8414e22a771275e7993c74d6\"\u003e\u003ccode\u003e011561d\u003c/code\u003e\u003c/a\u003e Release version 0.2.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ipython/matplotlib-inline/compare/0.1.7...0.2.1\"\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...\n\n_Description has been truncated_","html_url":"https://github.com/EngageMedia-video/cinematacms/pull/412","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/EngageMedia-video%2Fcinematacms/issues/412","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/412/packages"}},{"old_version":"1.17.1","new_version":"2.0.0","update_type":"major","path":null,"pr_created_at":"2026-02-09T05:57:37.000Z","version_change":"1.17.1 → 2.0.0","issue":{"uuid":"3914615887","node_id":"PR_kwDOPjXchc7CY_Fy","number":17,"state":"closed","title":"Bump the dependencies group across 1 directory with 41 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-03-09T05:51:03.000Z","author_association":null,"state_reason":null,"created_at":"2026-02-09T05:57:37.000Z","updated_at":"2026-03-09T05:51:05.000Z","time_to_close":2418806,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"dependencies","update_count":41,"packages":[{"name":"cryptography","old_version":"43.0.3","new_version":"46.0.4","repository_url":"https://github.com/pyca/cryptography"},{"name":"sigstore","old_version":"3.6.1","new_version":"4.1.0","repository_url":"https://github.com/sigstore/sigstore-python"},{"name":"pykcs11","old_version":"1.5.17","new_version":"1.5.18","repository_url":"https://github.com/LudovicRousseau/PyKCS11"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"pycparser","old_version":"2.22","new_version":"2.23","repository_url":"https://github.com/eliben/pycparser"},{"name":"anyio","old_version":"4.9.0","new_version":"4.12.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"betterproto","old_version":"2.0.0b6","new_version":"2.0.0b7","repository_url":"https://github.com/danielgtaylor/python-betterproto"},{"name":"certifi","old_version":"2025.1.31","new_version":"2026.1.4","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"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [cryptography](https://github.com/pyca/cryptography), [sigstore](https://github.com/sigstore/sigstore-python), [pykcs11](https://github.com/LudovicRousseau/PyKCS11), [cffi](https://github.com/python-cffi/cffi), [pycparser](https://github.com/eliben/pycparser), [anyio](https://github.com/agronholm/anyio), [betterproto](https://github.com/danielgtaylor/python-betterproto), [certifi](https://github.com/certifi/python-certifi), [charset-normalizer](https://github.com/jawah/charset_normalizer), [email-validator](https://github.com/JoshData/python-email-validator), [fastapi](https://github.com/fastapi/fastapi), [fonttools](https://github.com/fonttools/fonttools), [grpclib](https://github.com/vmagamedov/grpclib), [h11](https://github.com/python-hyper/h11), [h2](https://github.com/python-hyper/h2), [id](https://github.com/di/id), [idna](https://github.com/kjd/idna), [multidict](https://github.com/aio-libs/multidict), [packaging](https://github.com/pypa/packaging), [pandas](https://github.com/pandas-dev/pandas), [pillow](https://github.com/python-pillow/Pillow), [platformdirs](https://github.com/tox-dev/platformdirs), [pyasn1](https://github.com/pyasn1/pyasn1), [pydantic](https://github.com/pydantic/pydantic), [pydantic-core](https://github.com/pydantic/pydantic-core), [pygments](https://github.com/pygments/pygments), [pyjwt](https://github.com/jpadilla/pyjwt), [pyopenssl](https://github.com/pyca/pyopenssl), [pyparsing](https://github.com/pyparsing/pyparsing), [requests](https://github.com/psf/requests), [rfc3161-client](https://github.com/trailofbits/rfc3161-client), [rich](https://github.com/Textualize/rich), [sigstore-protobuf-specs](https://github.com/sigstore/protobuf-specs), [starlette](https://github.com/Kludex/starlette), [typing-extensions](https://github.com/python/typing_extensions), [tzdata](https://github.com/python/tzdata), [urllib3](https://github.com/urllib3/urllib3), [uvicorn](https://github.com/Kludex/uvicorn), [hvac](https://github.com/hvac/hvac), [boto3](https://github.com/boto/boto3) and [botocore](https://github.com/boto/botocore) to permit the latest version.\nUpdates `cryptography` from 43.0.3 to 46.0.4\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\u003e46.0.4 - 2026-01-27\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* `Dropped support for win_arm64 wheels`_.\n* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.5.\n\u003cp\u003e.. _v46-0-3:\u003c/p\u003e\n\u003cp\u003e46.0.3 - 2025-10-15\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed compilation when using LibreSSL 4.2.0.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v46-0-2:\u003c/p\u003e\n\u003cp\u003e46.0.2 - 2025-09-30\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.4.\n\u003cp\u003e.. _v46-0-1:\u003c/p\u003e\n\u003cp\u003e46.0.1 - 2025-09-16\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed an issue where users installing via \u003ccode\u003epip\u003c/code\u003e on Python 3.14 development\nversions would not properly install a dependency.\u003c/li\u003e\n\u003cli\u003eFixed an issue building the free-threaded macOS 3.14 wheels.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v46-0-0:\u003c/p\u003e\n\u003cp\u003e46.0.0 - 2025-09-16\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* **BACKWARDS INCOMPATIBLE:** Support for Python 3.7 has been removed.\n* Support for OpenSSL \u0026lt; 3.0 is deprecated and will be removed in the next\n  release.\n* Support for ``x86_64`` macOS (including publishing wheels) is deprecated\n  and will be removed in two releases. We will switch to publishing an\n  ``arm64`` only wheel for macOS.\n* Support for 32-bit Windows (including publishing wheels) is deprecated\n  and will be removed in two releases. Users should move to a 64-bit\n  Python installation.\n* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.3.\n* We now build ``ppc64le`` ``manylinux`` wheels and publish them to PyPI.\n* We now build ``win_arm64`` (Windows on Arm) wheels and publish them to PyPI.\n* Added support for free-threaded Python 3.14.\n* Removed the deprecated ``get_attribute_for_oid`` method on\n  :class:`~cryptography.x509.CertificateSigningRequest`. Users should use\n  :meth:`~cryptography.x509.Attributes.get_attribute_for_oid` instead.\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/pyca/cryptography/commit/e6f44fc8e6391f05d719fb9d369692325b87a471\"\u003e\u003ccode\u003ee6f44fc\u003c/code\u003e\u003c/a\u003e bump for 46.0.4 and drop win arm64 due to CI issues (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14217\"\u003e#14217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/c0af4dd7b75921bbe9f1d41a03dbd4b64a9e3403\"\u003e\u003ccode\u003ec0af4dd\u003c/code\u003e\u003c/a\u003e release 46.0.3 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13681\"\u003e#13681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/99efe5ad150a56efadafacaffd0e3ee319373904\"\u003e\u003ccode\u003e99efe5a\u003c/code\u003e\u003c/a\u003e bump version for 46.0.2 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13531\"\u003e#13531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e735cfc27502320101c130335c556394a125ba52\"\u003e\u003ccode\u003ee735cfc\u003c/code\u003e\u003c/a\u003e release 46.0.1 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13450\"\u003e#13450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/4e457ffba43a6d87efc63c33041e2081438dd8a4\"\u003e\u003ccode\u003e4e457ff\u003c/code\u003e\u003c/a\u003e Explicitly specify python in mac uv build invocation (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13447\"\u003e#13447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/2726efdb6d67f1c90cf9c6062d9fe051965586f8\"\u003e\u003ccode\u003e2726efd\u003c/code\u003e\u003c/a\u003e Depend on CFFI 2.0.0 or newer on Python \u0026gt; 3.8 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13448\"\u003e#13448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/62230623d183706632c0eb7822c96ac95e3710a8\"\u003e\u003ccode\u003e6223062\u003c/code\u003e\u003c/a\u003e release 46.0.0 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13446\"\u003e#13446\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/563c4915b0931455706f761a4579c26698824eae\"\u003e\u003ccode\u003e563c491\u003c/code\u003e\u003c/a\u003e Update comment for pyopenssl-release tag (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13445\"\u003e#13445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/d2f6f7faced35b73277bc624ff496f8af696b172\"\u003e\u003ccode\u003ed2f6f7f\u003c/code\u003e\u003c/a\u003e Bump downstream dependencies in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13439\"\u003e#13439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e7ab02bd679d0b4f55d93486fe27e62554ef15d4\"\u003e\u003ccode\u003ee7ab02b\u003c/code\u003e\u003c/a\u003e we'll ship this with 3.5.3 why not (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13442\"\u003e#13442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/cryptography/compare/43.0.3...46.0.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sigstore` from 3.6.1 to 4.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sigstore/sigstore-python/releases\"\u003esigstore's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.1.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecli: Support using other Sigstore instances with \u003ccode\u003e--instance URL\u003c/code\u003e.\nNew instances are trusted with new top level command \u003ccode\u003etrust-instance ROOTFILE\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1548\"\u003e#1548\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded cryptography 46 to list of compatible cryptography releases\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1544\"\u003e#1544\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved error message when verifying bundles with unsupported log entry versions\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1569\"\u003e#1569\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecli: Always read/write UTF-8. This fixes an issue on Windows where the platform\ndefault encoding was used: the issue has existed for a while, but became more visible\nwith signature bundles that contain rekor2 entries.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1553\"\u003e#1553\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev4.0.0\u003c/h2\u003e\n\u003cp\u003eThis is a major release with a host of API and functionality changes. The major new feature\nis Rekor v2 support but many other changes are also included, see list below.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecli: Add \u003ccode\u003e--rekor-version\u003c/code\u003e to \u003ccode\u003esign\u003c/code\u003e command arguments: This can be useful\nif Sigstore instance provides multiple Rekor versions and user wants to\noverride the default choice\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1471\"\u003e#1471\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecli: Support parallel signing. When multiple artifacts are signed, the Rekor\nrequests are submitted in parallel: this is especially useful with Rekor v2.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1468\"\u003e#1468\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1478\"\u003e#1478\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1485\"\u003e#1485\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eoidc (API): Allow custom audience claims via API\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1402\"\u003e#1402\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erekor (API): Support Rekor v2 (aka rekor-tiles) in both verification and signing.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1370\"\u003e#1370\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1422\"\u003e#1422\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1432\"\u003e#1432\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etrust (API): Make TrustedRoot, SigningConfig and ClientTrustConfig public API\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1496\"\u003e#1496\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecli: Improve verify UX when wrong instance is used\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1510\"\u003e#1510\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edeps: replace sigstore_protobuf_specs dependency with sigstore-models\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1470\"\u003e#1470\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- 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/sigstore/sigstore-python/blob/main/CHANGELOG.md\"\u003esigstore's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[4.1.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecli: Support using other Sigstore instances with \u003ccode\u003e--instance URL\u003c/code\u003e.\nNew instances are trusted with new top level command \u003ccode\u003etrust-instance ROOTFILE\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1548\"\u003e#1548\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded cryptography 46 to list of compatible cryptography releases\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1544\"\u003e#1544\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved error message when verifying bundles with unsupported log entry versions\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1569\"\u003e#1569\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecli: Always read/write UTF-8. This fixes an issue on Windows where the platform\ndefault encoding was used: the issue has existed for a while, but became more visible\nwith signature bundles that contain rekor2 entries.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1553\"\u003e#1553\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.0.0]\u003c/h2\u003e\n\u003cp\u003eThis is a major release with a host of API and functionality changes. The major new feature\nis Rekor v2 support but many other changes are also included, see list below.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecli: Add \u003ccode\u003e--rekor-version\u003c/code\u003e to \u003ccode\u003esign\u003c/code\u003e command arguments: This can be useful\nif Sigstore instance provides multiple Rekor versions and user wants to\noverride the default choice\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1471\"\u003e#1471\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecli: Support parallel signing. When multiple artifacts are signed, the Rekor\nrequests are submitted in parallel: this is especially useful with Rekor v2.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1468\"\u003e#1468\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1478\"\u003e#1478\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1485\"\u003e#1485\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eoidc (API): Allow custom audience claims via API\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1402\"\u003e#1402\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erekor (API): Support Rekor v2 (aka rekor-tiles) in both verification and signing.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1370\"\u003e#1370\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1422\"\u003e#1422\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1432\"\u003e#1432\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etrust (API): Make TrustedRoot, SigningConfig and ClientTrustConfig public API\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1496\"\u003e#1496\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecli: Improve verify UX when wrong instance is used\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1510\"\u003e#1510\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edeps: replace sigstore_protobuf_specs dependency with sigstore-models\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/3447f9603cfa0e9fe9d9c83d5bd5fb0bfe08a598\"\u003e\u003ccode\u003e3447f96\u003c/code\u003e\u003c/a\u003e Forward port entry kindversion error improvement, bump version to 4.1.0 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1569\"\u003e#1569\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/2dbe03ae34c36e7d04bec7e63822ebcbbed362aa\"\u003e\u003ccode\u003e2dbe03a\u003c/code\u003e\u003c/a\u003e build(deps): bump github/codeql-action in the actions group (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1572\"\u003e#1572\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/02daa6970d0eaff526fd846efd6af46067206618\"\u003e\u003ccode\u003e02daa69\u003c/code\u003e\u003c/a\u003e build(deps): bump rich from 14.1.0 to 14.2.0 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1571\"\u003e#1571\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/16159399b18178aa87001b1e13b7c730be6d36b6\"\u003e\u003ccode\u003e1615939\u003c/code\u003e\u003c/a\u003e build(deps): bump the actions group with 2 updates (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1568\"\u003e#1568\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/72b658140bd3718aa9bba955d2ec87a8de6cb7bb\"\u003e\u003ccode\u003e72b6581\u003c/code\u003e\u003c/a\u003e build(deps): update ruff requirement from \u0026lt;0.13.4 to \u0026lt;0.14.1 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1567\"\u003e#1567\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/64dbeba7394b028ac6e75ddf5f4b1875b4571631\"\u003e\u003ccode\u003e64dbeba\u003c/code\u003e\u003c/a\u003e cli: Support using other Sigstore instances (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1548\"\u003e#1548\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/508b0e77ec9e04e6aecc09b8b476ff4937bed538\"\u003e\u003ccode\u003e508b0e7\u003c/code\u003e\u003c/a\u003e build(deps): bump softprops/action-gh-release in the actions group (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1563\"\u003e#1563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/e31f481006755785e0fffc8a040e81e31aeee5b1\"\u003e\u003ccode\u003ee31f481\u003c/code\u003e\u003c/a\u003e build(deps): update ruff requirement from \u0026lt;0.13.3 to \u0026lt;0.13.4 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1562\"\u003e#1562\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/dec897bbda882b0d9f694da60047044c0f649468\"\u003e\u003ccode\u003edec897b\u003c/code\u003e\u003c/a\u003e build(deps): bump github/codeql-action in the actions group (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1561\"\u003e#1561\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/0a54b4fce6a26150954c9eea8ed3720af27f06bf\"\u003e\u003ccode\u003e0a54b4f\u003c/code\u003e\u003c/a\u003e build(deps): bump cryptography from 46.0.1 to 46.0.2 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1558\"\u003e#1558\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sigstore/sigstore-python/compare/v3.6.1...v4.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pykcs11` from 1.5.17 to 1.5.18\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/releases\"\u003epykcs11's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e1.5.18 - August 2025, Ludovic Rousseau\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eadd \u003ccode\u003eCKM_EXTRACT_KEY_FROM_KEY\u003c/code\u003e mechanism\u003c/li\u003e\n\u003cli\u003eadd \u003ccode\u003eCKM_EDDSA\u003c/code\u003e and \u003ccode\u003eCK_EDDSA_PARAMS\u003c/code\u003e support\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eC_Initialize()\u003c/code\u003e: allow OS locking\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePyKCS11.load()\u003c/code\u003e \u0026amp; \u003ccode\u003e.unload()\u003c/code\u003e: make the methods tread-safe\u003c/li\u003e\n\u003cli\u003ebugfix: store \u003ccode\u003eCKM_CONCATENATE_BASE_AND_KEY\u003c/code\u003e parameter in mechanism context\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eIsNum()\u003c/code\u003e: \u003ccode\u003eCKA_HW_FEATURE_TYPE\u003c/code\u003e is also a numeric value\u003c/li\u003e\n\u003cli\u003eimprove support for multi-part encryption/decryption\u003c/li\u003e\n\u003cli\u003efix some Python typing issues\u003c/li\u003e\n\u003cli\u003eFix issue with vendor defined (\u003ccode\u003eCKM_VENDOR_DEFINED\u003c/code\u003e) mechanisms\u003c/li\u003e\n\u003cli\u003efix/ignore all pylint warnings\u003c/li\u003e\n\u003cli\u003euse pytest for running tests\u003c/li\u003e\n\u003cli\u003eminor improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/upload-artifact 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/LudovicRousseau/PyKCS11/pull/125\"\u003eLudovicRousseau/PyKCS11#125\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd CKM_EXTRACT_KEY_FROM_KEY mechanism by \u003ca href=\"https://github.com/fuzzykat\"\u003e\u003ccode\u003e@​fuzzykat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/LudovicRousseau/PyKCS11/pull/128\"\u003eLudovicRousseau/PyKCS11#128\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/LudovicRousseau/PyKCS11/pull/132\"\u003eLudovicRousseau/PyKCS11#132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eimprove support for multi-part encryption/decryption by \u003ca href=\"https://github.com/fuzzykat\"\u003e\u003ccode\u003e@​fuzzykat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/LudovicRousseau/PyKCS11/pull/135\"\u003eLudovicRousseau/PyKCS11#135\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003euse ckbytelist as return type by \u003ca href=\"https://github.com/andreastedile\"\u003e\u003ccode\u003e@​andreastedile\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/LudovicRousseau/PyKCS11/pull/136\"\u003eLudovicRousseau/PyKCS11#136\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003euse CK_OBJECT_HANDLE as parameter type by \u003ca href=\"https://github.com/andreastedile\"\u003e\u003ccode\u003e@​andreastedile\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/LudovicRousseau/PyKCS11/pull/137\"\u003eLudovicRousseau/PyKCS11#137\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003euse CK_OBJECT_HANDLE as return type by \u003ca href=\"https://github.com/andreastedile\"\u003e\u003ccode\u003e@​andreastedile\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/LudovicRousseau/PyKCS11/pull/138\"\u003eLudovicRousseau/PyKCS11#138\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/LudovicRousseau/PyKCS11/pull/139\"\u003eLudovicRousseau/PyKCS11#139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd CKM_EDDSA and CK_EDDSA_PARAMS support by \u003ca href=\"https://github.com/fuzzykat\"\u003e\u003ccode\u003e@​fuzzykat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/LudovicRousseau/PyKCS11/pull/141\"\u003eLudovicRousseau/PyKCS11#141\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/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] made their first contribution in \u003ca href=\"https://redirect.github.com/LudovicRousseau/PyKCS11/pull/125\"\u003eLudovicRousseau/PyKCS11#125\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] made their first contribution in \u003ca href=\"https://redirect.github.com/LudovicRousseau/PyKCS11/pull/132\"\u003eLudovicRousseau/PyKCS11#132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/andreastedile\"\u003e\u003ccode\u003e@​andreastedile\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/LudovicRousseau/PyKCS11/pull/136\"\u003eLudovicRousseau/PyKCS11#136\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/compare/1.5.17...1.5.18\"\u003ehttps://github.com/LudovicRousseau/PyKCS11/compare/1.5.17...1.5.18\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/LudovicRousseau/PyKCS11/blob/master/Changes.txt\"\u003epykcs11's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e1.5.18 - August 2025, Ludovic Rousseau\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eadd CKM_EXTRACT_KEY_FROM_KEY mechanism\u003c/li\u003e\n\u003cli\u003eadd CKM_EDDSA and CK_EDDSA_PARAMS support\u003c/li\u003e\n\u003cli\u003eC_Initialize(): allow OS locking\u003c/li\u003e\n\u003cli\u003ePyKCS11.load() \u0026amp; .unload(): make the methods tread-safe\u003c/li\u003e\n\u003cli\u003ebugfix: store CKM_CONCATENATE_BASE_AND_KEY parameter in mechanism context\u003c/li\u003e\n\u003cli\u003eIsNum(): CKA_HW_FEATURE_TYPE is also a numeric value\u003c/li\u003e\n\u003cli\u003eimprove support for multi-part encryption/decryption\u003c/li\u003e\n\u003cli\u003efix some Python typing issues\u003c/li\u003e\n\u003cli\u003eFix issue with vendor defined (CKM_VENDOR_DEFINED) mechanisms\u003c/li\u003e\n\u003cli\u003efix/ignore all pylint warnings\u003c/li\u003e\n\u003cli\u003euse pytest for running tests\u003c/li\u003e\n\u003cli\u003eminor improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/commit/1f34853e9fb42bc4eedd7f3bc5057b5c4f2dffa7\"\u003e\u003ccode\u003e1f34853\u003c/code\u003e\u003c/a\u003e Release 1.5.18\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/commit/abea61f5261b6e206883307736f2d67a57524ee8\"\u003e\u003ccode\u003eabea61f\u003c/code\u003e\u003c/a\u003e fix load(): move os.getenv() outside of the _lock scope\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/commit/be5f5e31c90c6dd782c30eb570130fd1792a2eaf\"\u003e\u003ccode\u003ebe5f5e3\u003c/code\u003e\u003c/a\u003e fix: use self.assertRaises() in test_sign_integer\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/commit/2177a59dd7aa4522ba75a2dad2f55731d03c41dd\"\u003e\u003ccode\u003e2177a59\u003c/code\u003e\u003c/a\u003e add CKM_EDDSA and CK_EDDSA_PARAMS support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/commit/2094a494b27b618ca7dd6800af49bb026a812ccc\"\u003e\u003ccode\u003e2094a49\u003c/code\u003e\u003c/a\u003e IsNum(): CKA_HW_FEATURE_TYPE is also a numeric value\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/commit/383425ed17c362c4463bbb6d5d300ca64d55b441\"\u003e\u003ccode\u003e383425e\u003c/code\u003e\u003c/a\u003e Add information in PyKCS11Error(-2)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/commit/1a1bab33b4c2b7f9bd63f28119e57515d2b08151\"\u003e\u003ccode\u003e1a1bab3\u003c/code\u003e\u003c/a\u003e dev-requirements.txt: add pytest\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/commit/62e8b7eb8638bf3f88705f61deb83d2b248748da\"\u003e\u003ccode\u003e62e8b7e\u003c/code\u003e\u003c/a\u003e Makefile: use pytest to run tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/commit/8eec8e34bc051a62d8a0b2af34d7eb47f2537436\"\u003e\u003ccode\u003e8eec8e3\u003c/code\u003e\u003c/a\u003e Add run_pytest.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/commit/f7a962879f82017ac9217f64a53219873ba4fb55\"\u003e\u003ccode\u003ef7a9628\u003c/code\u003e\u003c/a\u003e PyKCS11.unload(): make the method thread safe\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/compare/1.5.17...1.5.18\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cffi` from 1.17.1 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only) - huge thanks to the folks at Quansight Labs for all the work to get this one sorted!\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.0.0b1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only).\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/6366c01d84e9a78e7e85f12ebe9760ba5d19b6d3\"\u003e\u003ccode\u003e6366c01\u003c/code\u003e\u003c/a\u003e release 2.0.0 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/95c847663aec401e4003927a274e4de9b8595f4f\"\u003e\u003ccode\u003e95c8476\u003c/code\u003e\u003c/a\u003e 2.0.0 post beta backports (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/195cbda66b6be9297ef6d584644e50cfdcca4e8a\"\u003e\u003ccode\u003e195cbda\u003c/code\u003e\u003c/a\u003e Release 2.0.0b1 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b4bbe7940d3f76027534db1aecbae9b61c35221a\"\u003e\u003ccode\u003eb4bbe79\u003c/code\u003e\u003c/a\u003e fix version test to support beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/7ed073de66e713cf791b6fdfa23685c81fdfd6ad\"\u003e\u003ccode\u003e7ed073d\u003c/code\u003e\u003c/a\u003e Add support for the free-threaded build (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/178\"\u003e#178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/67a170dc7972dc9361743690b38da3d963b200ef\"\u003e\u003ccode\u003e67a170d\u003c/code\u003e\u003c/a\u003e Change the license from MIT to MIT-no-attribution, which is the same without ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/92645ec9329feb03e3fa86240b40fe0fc37469d1\"\u003e\u003ccode\u003e92645ec\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support/testing (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/177\"\u003e#177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/2b81170583a898478a6996c9705d8c38ab7f73a1\"\u003e\u003ccode\u003e2b81170\u003c/code\u003e\u003c/a\u003e doc: update test commands in Section Testing/development tips (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/25172b84cf51cf58241f074ccd1efd9c7648cb43\"\u003e\u003ccode\u003e25172b8\u003c/code\u003e\u003c/a\u003e doc: update year (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b57a92c03eb2078a99c900519a37d18b4d52324f\"\u003e\u003ccode\u003eb57a92c\u003c/code\u003e\u003c/a\u003e issue 147: force-compute nested structs before parent structs.  Occurs mainly...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pycparser` from 2.22 to 2.23\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/eliben/pycparser/releases\"\u003epycparser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003erelease_v2.23\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow abstract declarator \u0026quot;static\u0026quot; (GH issue \u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/539\"\u003e#539\u003c/a\u003e) by \u003ca href=\"https://github.com/gperciva\"\u003e\u003ccode\u003e@​gperciva\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/545\"\u003eeliben/pycparser#545\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/550\"\u003eeliben/pycparser#550\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd dirent and socket typedefs. by \u003ca href=\"https://github.com/MegaManSec\"\u003e\u003ccode\u003e@​MegaManSec\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/558\"\u003eeliben/pycparser#558\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport for labels with no statement by \u003ca href=\"https://github.com/ignatirabo\"\u003e\u003ccode\u003e@​ignatirabo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/562\"\u003eeliben/pycparser#562\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept empty 'case' or 'default' labels by \u003ca href=\"https://github.com/ignatirabo\"\u003e\u003ccode\u003e@​ignatirabo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/564\"\u003eeliben/pycparser#564\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: preserve parentheses for statement exprs by \u003ca href=\"https://github.com/zawan-ila\"\u003e\u003ccode\u003e@​zawan-ila\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/566\"\u003eeliben/pycparser#566\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: hex float types by \u003ca href=\"https://github.com/zawan-ila\"\u003e\u003ccode\u003e@​zawan-ila\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/567\"\u003eeliben/pycparser#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExplicit error for comments, with README link by \u003ca href=\"https://github.com/cellularmitosis\"\u003e\u003ccode\u003e@​cellularmitosis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/569\"\u003eeliben/pycparser#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eshowemptyattrs option on Node.show() by \u003ca href=\"https://github.com/cellularmitosis\"\u003e\u003ccode\u003e@​cellularmitosis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/570\"\u003eeliben/pycparser#570\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd fake typedefs for GNU Extension 128-bit integers. by \u003ca href=\"https://github.com/dj-wednesday\"\u003e\u003ccode\u003e@​dj-wednesday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/577\"\u003eeliben/pycparser#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTypedef for __kernel_sa_family_t in linux/socket.h by \u003ca href=\"https://github.com/crosser\"\u003e\u003ccode\u003e@​crosser\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/578\"\u003eeliben/pycparser#578\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/gperciva\"\u003e\u003ccode\u003e@​gperciva\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/545\"\u003eeliben/pycparser#545\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MegaManSec\"\u003e\u003ccode\u003e@​MegaManSec\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/558\"\u003eeliben/pycparser#558\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ignatirabo\"\u003e\u003ccode\u003e@​ignatirabo\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/562\"\u003eeliben/pycparser#562\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zawan-ila\"\u003e\u003ccode\u003e@​zawan-ila\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/566\"\u003eeliben/pycparser#566\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cellularmitosis\"\u003e\u003ccode\u003e@​cellularmitosis\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/569\"\u003eeliben/pycparser#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dj-wednesday\"\u003e\u003ccode\u003e@​dj-wednesday\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/577\"\u003eeliben/pycparser#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crosser\"\u003e\u003ccode\u003e@​crosser\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/578\"\u003eeliben/pycparser#578\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/eliben/pycparser/compare/release_v2.22...release_v2.23\"\u003ehttps://github.com/eliben/pycparser/compare/release_v2.22...release_v2.23\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/5b60167602e7914139b3e277266ccdff5c24dbf2\"\u003e\u003ccode\u003e5b60167\u003c/code\u003e\u003c/a\u003e Prepare for release 2.23\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/7b24736bbb875a5c6c6f0520412f03aace75d0ee\"\u003e\u003ccode\u003e7b24736\u003c/code\u003e\u003c/a\u003e Typedef for __kernel_sa_family_t in _fake_typedefs.h (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/578\"\u003e#578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/90184f1f4eb1234fb9e7ae0c8b74eab9ea963482\"\u003e\u003ccode\u003e90184f1\u003c/code\u003e\u003c/a\u003e Add fake typedefs for GNU Extension 128-bit integers. (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/577\"\u003e#577\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/f04fdcde3d95be4a632948718d0c46eac09c50ce\"\u003e\u003ccode\u003ef04fdcd\u003c/code\u003e\u003c/a\u003e showemptyattrs option on Node.show() (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/570\"\u003e#570\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/156eae7f42843d8a3e78a68995d9cc7485577e38\"\u003e\u003ccode\u003e156eae7\u003c/code\u003e\u003c/a\u003e Explicit error for comments, with README link (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/569\"\u003e#569\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/2215299261306df71e2cec23bb3acd7b8f31f8db\"\u003e\u003ccode\u003e2215299\u003c/code\u003e\u003c/a\u003e fix: hex float types (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/567\"\u003e#567\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/037bd31d4e0e69e8c4d80e45311ae46abc15dd4e\"\u003e\u003ccode\u003e037bd31\u003c/code\u003e\u003c/a\u003e fix: preserve parentheses for statement exprs (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/566\"\u003e#566\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/9cecc090151b31d8821786bca3b25851a4a33272\"\u003e\u003ccode\u003e9cecc09\u003c/code\u003e\u003c/a\u003e Accept empty 'case' or 'default' labels (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/564\"\u003e#564\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/7ae671d3ac44e1000bcbe7108b24bdb9187443ac\"\u003e\u003ccode\u003e7ae671d\u003c/code\u003e\u003c/a\u003e Support for labels with no statement (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/562\"\u003e#562\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/42b542324859a108f2cf35bcfe21fe5877ceb091\"\u003e\u003ccode\u003e42b5423\u003c/code\u003e\u003c/a\u003e Add dirent and socket typedefs. (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/558\"\u003e#558\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/eliben/pycparser/compare/release_v2.22...release_v2.23\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\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 `betterproto` from 2.0.0b6 to 2.0.0b7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/danielgtaylor/python-betterproto/releases\"\u003ebetterproto's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0-beta7\u003c/h2\u003e\n\u003ch2\u003eEnhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eBreaking\u003c/strong\u003e: Support \u003ccode\u003ePydantic\u003c/code\u003e v2 and dropping support for v1 \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/588\"\u003e#588\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBreaking\u003c/strong\u003e: The attempting to access an unset \u003ccode\u003eoneof\u003c/code\u003e now raises an \u003ccode\u003eAttributeError\u003c/code\u003e field. To see how to access \u003ccode\u003eoneof\u003c/code\u003e fields now, refer to \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/558\"\u003e#558\u003c/a\u003e and \u003ca href=\"https://github.com/danielgtaylor/python-betterproto#one-of-support\"\u003eREADME.md\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBreaking\u003c/strong\u003e: A custom \u003ccode\u003eEnum\u003c/code\u003e has been implemented to match the behaviour of being an open set. Any checks for \u003ccode\u003eisinstance(enum_member, enum.Enum)\u003c/code\u003e and \u003ccode\u003eissubclass(EnumSubclass, enum.Enum)\u003c/code\u003e will now return \u003ccode\u003eFalse\u003c/code\u003e. This change also has the side effect of preventing any passthrough of \u003ccode\u003eEnum\u003c/code\u003e members (i.e. \u003ccode\u003eFoo.RED.GREEN\u003c/code\u003e doesn't work any more). See \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/293\"\u003e#293\u003c/a\u003e for more info, this fixed many bugs related to \u003ccode\u003eEnum\u003c/code\u003e handling.\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003epickle\u003c/code\u003e methods \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/535\"\u003e#535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eStruct\u003c/code\u003e and \u003ccode\u003eValue\u003c/code\u003e types \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/551\"\u003e#551\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ca href=\"https://rich.readthedocs.io/en/latest/index.html\"\u003e\u003ccode\u003eRich\u003c/code\u003e package\u003c/a\u003e for pretty printing \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/508\"\u003e#508\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove support for streaming messages \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/518\"\u003e#518\u003c/a\u003e \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/529\"\u003e#529\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove performance of serializing / de-serializing messages \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/545\"\u003e#545\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove the handling of message name collisions with typing by allowing the method / type of imports to be configured.\nRefer to \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/582\"\u003e#582\u003c/a\u003e and \u003ca href=\"https://github.com/danielgtaylor/python-betterproto#configuration-typing-imports\"\u003eREADME.md\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd a warning when calling a deprecated message \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/596\"\u003e#596\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix roundtrip parsing of \u003ccode\u003edatetime\u003c/code\u003es \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/534\"\u003e#534\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix accessing unset optional fields \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/523\"\u003e#523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eMessage\u003c/code\u003e equality comparison \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/513\"\u003e#513\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix behaviour with long comment messages \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/532\"\u003e#532\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/atomicflag\"\u003e\u003ccode\u003e@​atomicflag\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/513\"\u003edanielgtaylor/python-betterproto#513\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshuaLeivers\"\u003e\u003ccode\u003e@​JoshuaLeivers\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/518\"\u003edanielgtaylor/python-betterproto#518\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MicaelJarniac\"\u003e\u003ccode\u003e@​MicaelJarniac\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/508\"\u003edanielgtaylor/python-betterproto#508\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/124C41p\"\u003e\u003ccode\u003e@​124C41p\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/528\"\u003edanielgtaylor/python-betterproto#528\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/girtsf\"\u003e\u003ccode\u003e@​girtsf\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/306\"\u003edanielgtaylor/python-betterproto#306\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/spietras\"\u003e\u003ccode\u003e@​spietras\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/422\"\u003edanielgtaylor/python-betterproto#422\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lukasbindreiter\"\u003e\u003ccode\u003e@​lukasbindreiter\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/534\"\u003edanielgtaylor/python-betterproto#534\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cartesian-theatrics\"\u003e\u003ccode\u003e@​cartesian-theatrics\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/532\"\u003edanielgtaylor/python-betterproto#532\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/550\"\u003edanielgtaylor/python-betterproto#550\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/woodruffw\"\u003e\u003ccode\u003e@​woodruffw\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/551\"\u003edanielgtaylor/python-betterproto#551\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/atomicmac\"\u003e\u003ccode\u003e@​atomicmac\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/560\"\u003edanielgtaylor/python-betterproto#560\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arunsathiya\"\u003e\u003ccode\u003e@​arunsathiya\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/553\"\u003edanielgtaylor/python-betterproto#553\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ii64\"\u003e\u003ccode\u003e@​ii64\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/568\"\u003edanielgtaylor/python-betterproto#568\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/imcdo\"\u003e\u003ccode\u003e@​imcdo\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/587\"\u003edanielgtaylor/python-betterproto#587\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gatesn\"\u003e\u003ccode\u003e@​gatesn\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/588\"\u003edanielgtaylor/python-betterproto#588\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AdrienVannson\"\u003e\u003ccode\u003e@​AdrienVannson\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/596\"\u003edanielgtaylor/python-betterproto#596\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JitPackJoyride\"\u003e\u003ccode\u003e@​JitPackJoyride\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/593\"\u003edanielgtaylor/python-betterproto#593\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/danielgtaylor/python-betterproto/compare/v.2.0.0b6...v.2.0.0b7\"\u003ehttps://github.com/danielgtaylor/python-betterproto/compare/v.2.0.0b6...v.2.0.0b7\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/danielgtaylor/python-betterproto/blob/master/CHANGELOG.md\"\u003ebetterproto's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[2.0.0b7] - 2024-08-11\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eBreaking\u003c/strong\u003e: Support \u003ccode\u003ePydantic\u003c/code\u003e v2 and dropping support for v1 \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/588\"\u003e#588\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eBreaking\u003c/strong\u003e: The attempting to access an unset \u003ccode\u003eoneof\u003c/code\u003e now raises an \u003ccode\u003eAttributeError\u003c/code\u003e\nfield. To see how to access \u003ccode\u003eoneof\u003c/code\u003e fields now, refer to \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/558\"\u003e#558\u003c/a\u003e\nand \u003ca href=\"https://github.com/danielgtaylor/python-betterproto#one-of-support\"\u003eREADME.md\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eBreaking\u003c/strong\u003e: A custom \u003ccode\u003eEnum\u003c/code\u003e has been implemented to match the behaviour of being an open set. Any checks for \u003ccode\u003eisinstance(enum_member, enum.Enum)\u003c/code\u003e and \u003ccode\u003eissubclass(EnumSubclass, enum.Enum)\u003c/code\u003e will now return \u003ccode\u003eFalse\u003c/code\u003e. This change also has the side effect of\npreventing any passthrough of \u003ccode\u003eEnum\u003c/code\u003e members (i.e. \u003ccode\u003eFoo.RED.GREEN\u003c/code\u003e doesn't work any more). See \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/293\"\u003e#293\u003c/a\u003e for more info, this fixed many bugs related to \u003ccode\u003eEnum\u003c/code\u003e handling.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd support for \u003ccode\u003epickle\u003c/code\u003e methods \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/535\"\u003e#535\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd support for \u003ccode\u003eStruct\u003c/code\u003e and \u003ccode\u003eValue\u003c/code\u003e types \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/551\"\u003e#551\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd support for \u003ca href=\"https://rich.readthedocs.io/en/latest/index.html\"\u003e\u003ccode\u003eRich\u003c/code\u003e package\u003c/a\u003e for pretty printing \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/508\"\u003e#508\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove support for streaming messages \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/518\"\u003e#518\u003c/a\u003e \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/529\"\u003e#529\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove performance of serializing / de-serializing messages \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/545\"\u003e#545\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove the handling of message name collisions with typing by allowing the method / type of imports to be configured.\nRefer to \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/582\"\u003e#582\u003c/a\u003e\nand \u003ca href=\"https://github.com/danielgtaylor/python-betterproto#configuration-typing-imports\"\u003eREADME.md\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix roundtrip parsing of \u003ccode\u003edatetime\u003c/code\u003es \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/534\"\u003e#534\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix accessing unset optional fields \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/523\"\u003e#523\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003eMessage\u003c/code\u003e equality comparison \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/513\"\u003e#513\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix behaviour with long comment messages \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/532\"\u003e#532\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd a warning when calling a deprecated message \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/596\"\u003e#596\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/danielgtaylor/python-betterproto/commit/1538e156a1eadb88799eca009a238093d6bb40df\"\u003e\u003ccode\u003e1538e15\u003c/code\u003e\u003c/a\u003e Bump version to 2.0.0b7 (\u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/issues/593\"\u003e#593\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielgtaylor/python-betterproto/commit/4e9a17c227c1454a08a46ad41dbca0478aa46830\"\u003e\u003ccode\u003e4e9a17c\u003c/code\u003e\u003c/a\u003e Add warnings when calling deprecated method (\u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/issues/596\"\u003e#596\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielgtaylor/python-betterproto/commit/f96f51650ca28412640b3e93724f123d4f0d7b31\"\u003e\u003ccode\u003ef96f516\u003c/code\u003e\u003c/a\u003e fix: 3.10 style imports not resolving correctly (\u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/issues/594\"\u003e#594\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielgtaylor/python-betterproto/commit/5fdd0bb24fc43091599a2284a948fc06e1a55edb\"\u003e\u003ccode\u003e5fdd0bb\u003c/code\u003e\u003c/a\u003e Update to Pydantic V2 (\u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielgtaylor/python-betterproto/commit/8b5923485624fc9fe77df343fef9cca5c04ee45f\"\u003e\u003ccode\u003e8b59234\u003c/code\u003e\u003c/a\u003e Handle typing collisions and add validation to a files module for overlaping ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielgtaylor/python-betterproto/commit/7c6c6279382218fbe7f8e1ce85933e06221fc07f\"\u003e\u003ccode\u003e7c6c627\u003c/code\u003e\u003c/a\u003e Drop 3.7 from ci (\u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielgtaylor/python-betterproto/commit/1f88b67eeb9871d33da154fd2c859b9d1aed62c1\"\u003e\u003ccode\u003e1f88b67\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ebetterproto-rust-codec\u003c/code\u003e updated (\u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/issues/571\"\u003e#571\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielgtaylor/python-betterproto/commit/c3c20556e0d29e07abee05c7e3d2d6c481d26389\"\u003e\u003ccode\u003ec3c2055\u003c/code\u003e\u003c/a\u003e fix: support pydantic-version google pb (\u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/issues/568\"\u003e#568\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielgtaylor/python-betterproto/commit/df1ba911b75da04eec56b6b39bd93a3779d51b24\"\u003e\u003ccode\u003edf1ba91\u003c/code\u003e\u003c/a\u003e Add betterproto.Enum \u003cstrong\u003ecopy\u003c/strong\u003e and \u003cstrong\u003edeepcopy\u003c/strong\u003e implementations (\u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/issues/566\"\u003e#566\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielgtaylor/python-betterproto/commit/126b256b4c541832e1e5a5f898c1263dd4b06995\"\u003e\u003ccode\u003e126b256\u003c/code\u003e\u003c/a\u003e ci: Use GITHUB_OUTPUT envvar instead of set-output command (\u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/issues/553\"\u003e#553\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/danielgtaylor/python-betterproto/compare/v.2.0.0b6...v.2.0.0b7\"\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 2026.1.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\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\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/27ca98ad845ee6d130a88301622c137893f71620\"\u003e\u003ccode\u003e27ca98a\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7.0.9 to 7.0.11 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/56c59a63909cfd3162b37e7bc16956e64df0f737\"\u003e\u003ccode\u003e56c59a6\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.0 to 6.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ae0021cd43a77bfba67d20a041469cdf6996570e\"\u003e\u003ccode\u003eae0021c\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.0.0 to 6.1.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/380\"\u003e#380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddf5d0b5d2a3d55fd92a79f141dbb5e074caf924\"\u003e\u003ccode\u003eddf5d0b\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5.0.1 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.01.31...2026.01.04\"\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\u003eC...\n\n_Description has been truncated_","html_url":"https://github.com/openreview-bot7/securesystemslib/pull/17","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/openreview-bot7%2Fsecuresystemslib/issues/17","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/17/packages"}},{"old_version":"1.15.1","new_version":"2.0.0","update_type":"major","path":null,"pr_created_at":"2026-02-04T22:11:40.000Z","version_change":"1.15.1 → 2.0.0","issue":{"uuid":"3898648370","node_id":"PR_kwDOIn5GJc7Bk1FF","number":291,"state":"closed","title":"Bump the pip-updates group across 1 directory with 27 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-02-11T22:13:01.000Z","author_association":null,"state_reason":null,"created_at":"2026-02-04T22:11:40.000Z","updated_at":"2026-02-11T22:13:03.000Z","time_to_close":604881,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"pip-updates","update_count":27,"packages":[{"name":"beautifulsoup4","old_version":"4.11.1","new_version":"4.14.3"},{"name":"black","old_version":"25.1.0","new_version":"26.1.0","repository_url":"https://github.com/psf/black"},{"name":"cachetools","old_version":"5.2.0","new_version":"7.0.0","repository_url":"https://github.com/tkem/cachetools"},{"name":"celery","old_version":"5.5.3","new_version":"5.6.2"},{"name":"cffi","old_version":"1.15.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"click-datetime","old_version":"0.2","new_version":"0.4.0"},{"name":"cryptography","old_version":"44.0.3","new_version":"46.0.4","repository_url":"https://github.com/pyca/cryptography"},{"name":"flake8","old_version":"7.1.1","new_version":"7.3.0","repository_url":"https://github.com/pycqa/flake8"},{"name":"flake8-bugbear","old_version":"22.9.23","new_version":"25.11.29","repository_url":"https://github.com/PyCQA/flake8-bugbear"},{"name":"flask","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/flask"},{"name":"flask-marshmallow","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/marshmallow-code/flask-marshmallow"},{"name":"flask-migrate","old_version":"3.1.0","new_version":"4.1.0","repository_url":"https://github.com/miguelgrinberg/flask-migrate"},{"name":"freezegun","old_version":"1.2.2","new_version":"1.5.5","repository_url":"https://github.com/spulec/freezegun"},{"name":"iso8601","old_version":"1.1.0","new_version":"2.1.0","repository_url":"https://github.com/micktwomey/pyiso8601"},{"name":"isort","old_version":"5.12.0","new_version":"7.0.0","repository_url":"https://github.com/PyCQA/isort"},{"name":"itsdangerous","old_version":"2.1.2","new_version":"2.2.0","repository_url":"https://github.com/pallets/itsdangerous"},{"name":"jsonschema","old_version":"4.16.0","new_version":"4.26.0"},{"name":"lxml","old_version":"5.4.0","new_version":"6.0.2","repository_url":"https://github.com/lxml/lxml"},{"name":"marshmallow","old_version":"3.18.0","new_version":"4.2.2","repository_url":"https://github.com/marshmallow-code/marshmallow"},{"name":"marshmallow-sqlalchemy","old_version":"0.28.1","new_version":"1.4.2","repository_url":"https://github.com/marshmallow-code/marshmallow-sqlalchemy"},{"name":"moto","old_version":"5.1.3","new_version":"5.1.20","repository_url":"https://github.com/getmoto/moto"},{"name":"notifications-python-client","old_version":"8.0.0","new_version":"10.0.1","repository_url":"https://github.com/alphagov/notifications-python-client"},{"name":"psycopg2-binary","old_version":"2.9.10","new_version":"2.9.11","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"pyjwt","old_version":"2.5.0","new_version":"2.11.0","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"pytest","old_version":"9.0.1","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"requests-mock","old_version":"1.10.0","new_version":"1.12.1","repository_url":"https://github.com/jamielennox/requests-mock"},{"name":"sqlalchemy","old_version":"1.4.41","new_version":"2.0.46","repository_url":"https://github.com/sqlalchemy/sqlalchemy"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-updates group with 27 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.11.1` | `4.14.3` |\n| [black](https://github.com/psf/black) | `25.1.0` | `26.1.0` |\n| [cachetools](https://github.com/tkem/cachetools) | `5.2.0` | `7.0.0` |\n| [celery[sqs]](https://github.com/celery/celery) | `5.5.3` | `5.6.2` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.15.1` | `2.0.0` |\n| click-datetime | `0.2` | `0.4.0` |\n| [cryptography](https://github.com/pyca/cryptography) | `44.0.3` | `46.0.4` |\n| [flake8](https://github.com/pycqa/flake8) | `7.1.1` | `7.3.0` |\n| [flake8-bugbear](https://github.com/PyCQA/flake8-bugbear) | `22.9.23` | `25.11.29` |\n| [flask](https://github.com/pallets/flask) | `3.0.2` | `3.0.3` |\n| [flask-marshmallow](https://github.com/marshmallow-code/flask-marshmallow) | `1.3.0` | `1.4.0` |\n| [flask-migrate](https://github.com/miguelgrinberg/flask-migrate) | `3.1.0` | `4.1.0` |\n| [freezegun](https://github.com/spulec/freezegun) | `1.2.2` | `1.5.5` |\n| [iso8601](https://github.com/micktwomey/pyiso8601) | `1.1.0` | `2.1.0` |\n| [isort](https://github.com/PyCQA/isort) | `5.12.0` | `7.0.0` |\n| [itsdangerous](https://github.com/pallets/itsdangerous) | `2.1.2` | `2.2.0` |\n| [jsonschema[format]](https://github.com/python-jsonschema/jsonschema) | `4.16.0` | `4.26.0` |\n| [lxml](https://github.com/lxml/lxml) | `5.4.0` | `6.0.2` |\n| [marshmallow](https://github.com/marshmallow-code/marshmallow) | `3.18.0` | `4.2.2` |\n| [marshmallow-sqlalchemy](https://github.com/marshmallow-code/marshmallow-sqlalchemy) | `0.28.1` | `1.4.2` |\n| [moto](https://github.com/getmoto/moto) | `5.1.3` | `5.1.20` |\n| [notifications-python-client](https://github.com/alphagov/notifications-python-client) | `8.0.0` | `10.0.1` |\n| [psycopg2-binary](https://github.com/psycopg/psycopg2) | `2.9.10` | `2.9.11` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.5.0` | `2.11.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.1` | `9.0.2` |\n| [requests-mock](https://github.com/jamielennox/requests-mock) | `1.10.0` | `1.12.1` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `1.4.41` | `2.0.46` |\n\n\nUpdates `beautifulsoup4` from 4.11.1 to 4.14.3\n\nUpdates `black` from 25.1.0 to 26.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/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.1.0...26.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cachetools` from 5.2.0 to 7.0.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tkem/cachetools/blob/master/CHANGELOG.rst\"\u003ecachetools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev7.0.0 (2026-02-01)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequire Python 3.10 or later (breaking change).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrop support for passing \u003ccode\u003einfo\u003c/code\u003e as fourth positional parameter to\n\u003ccode\u003e@cached\u003c/code\u003e (breaking change).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDrop support for \u003ccode\u003ecache(self)\u003c/code\u003e returning \u003ccode\u003eNone\u003c/code\u003e with\n\u003ccode\u003e@cachedmethod\u003c/code\u003e (breaking change).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eConvert the \u003ccode\u003e@cachedmethod\u003c/code\u003e wrappers to descriptors, deprecating\nits use with class methods and instances that do not provide a\nmutable \u003ccode\u003e__dict__\u003c/code\u003e attribute (potentially breaking change).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eConvert the previously undocumented \u003ccode\u003e@cachedmethod\u003c/code\u003e attributes\n(\u003ccode\u003ecache\u003c/code\u003e, \u003ccode\u003ecache_lock\u003c/code\u003e, etc.) to properties for instance\nmethods, providing official support and documentation (potentially\nbreaking change).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd an optional \u003ccode\u003einfo\u003c/code\u003e parameter to the \u003ccode\u003e@cachedmethod\u003c/code\u003e\ndecorator for reporting per-instance cache statistics.  Note that\nthis requires the instance's \u003ccode\u003e__dict__\u003c/code\u003e attribute to be a mutable\nmapping.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev6.2.6 (2026-01-27)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove typedkey performance.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMinor documentation improvements.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMinor testing improvements.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMinor code readability improvements.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev6.2.5 (2026-01-25)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove documentation regarding \u003ccode\u003e@cachedmethod\u003c/code\u003e with \u003ccode\u003elock\u003c/code\u003e\nparameter.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd test cases for cache stampede scenarios.\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\u003cp\u003ev6.2.4 (2025-12-15)\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/tkem/cachetools/commit/28bbcba53fbd939858ed02f52579e362e3b4fce9\"\u003e\u003ccode\u003e28bbcba\u003c/code\u003e\u003c/a\u003e Release v7.0.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/45776b23b1bf33dbad62bd74290f64ed205ce669\"\u003e\u003ccode\u003e45776b2\u003c/code\u003e\u003c/a\u003e Minor code and documentation improvements.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/51a70a9740981883c36bd1812b7cacd707ea264e\"\u003e\u003ccode\u003e51a70a9\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/357\"\u003e#357\u003c/a\u003e: Update documentation.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/bb72c21aab48bdd720fbe173ff1938bd5d923e43\"\u003e\u003ccode\u003ebb72c21\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/357\"\u003e#357\u003c/a\u003e: Add cache_info() support for \u003ca href=\"https://github.com/cachedmethod\"\u003e\u003ccode\u003e@​cachedmethod\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/86352aed2bedb23aa0cc461a58e76bd667617eaa\"\u003e\u003ccode\u003e86352ae\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/357\"\u003e#357\u003c/a\u003e: Convert \u003ca href=\"https://github.com/cachedmethod\"\u003e\u003ccode\u003e@​cachedmethod\u003c/code\u003e\u003c/a\u003e decorators to descriptors.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/263cf3185fcec33aceb93704252e5f34e8f9d3e3\"\u003e\u003ccode\u003e263cf31\u003c/code\u003e\u003c/a\u003e Prepare v7.0.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/59d4db25cd7e75a49886bdf5e1a01665811b935f\"\u003e\u003ccode\u003e59d4db2\u003c/code\u003e\u003c/a\u003e Drop support for cache(self) returning None in \u003ca href=\"https://github.com/cachedmethod\"\u003e\u003ccode\u003e@​cachedmethod\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/c933a9767348d43a570397de47455b98ecd6c191\"\u003e\u003ccode\u003ec933a97\u003c/code\u003e\u003c/a\u003e Drop support for passing \u0026quot;info\u0026quot; as fourth positional parameter of \u003ca href=\"https://github.com/cached\"\u003e\u003ccode\u003e@​cached\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/ae3d6bd7954ed14385501b40af6cfb486750f825\"\u003e\u003ccode\u003eae3d6bd\u003c/code\u003e\u003c/a\u003e Drop support for Python 3.9.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/a12c3b05a179f6d15e926784652935133d376755\"\u003e\u003ccode\u003ea12c3b0\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.1 to 6.0.2\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tkem/cachetools/compare/v5.2.0...v7.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `celery[sqs]` from 5.5.3 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[sqs]'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[sqs]'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.5.3...v5.6.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cffi` from 1.15.1 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only) - huge thanks to the folks at Quansight Labs for all the work to get this one sorted!\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.0.0b1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only).\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.17.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix failing \u003ccode\u003edistutils.msvc9compiler\u003c/code\u003e imports under Windows (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/118\"\u003e#118\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003effibuilder.emit_python_code()\u003c/code\u003e and \u003ccode\u003effibuiler.emit_c_code()\u003c/code\u003e accept file-like objects (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/115\"\u003e#115\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003effiplatform\u003c/code\u003e calls are bypassed by \u003ccode\u003effibuilder.emit_python_code()\u003c/code\u003e and \u003ccode\u003effibuilder.emit_c_code()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/81\"\u003e#81\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.0...v1.17.1\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.0...v1.17.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.17.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.13.\n\u003cul\u003e\n\u003cli\u003eFree-threaded CPython builds (i.e. \u003ccode\u003epython3.13t\u003c/code\u003e and the \u003ccode\u003e3.13t\u003c/code\u003e ABI) are not currently supported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eIn API mode, when you get a function from a C library by writing\n\u003ccode\u003efn = lib.myfunc\u003c/code\u003e, you get an object of a special type for performance\nreasons, instead of a \u003ccode\u003e\u0026lt;cdata 'C-function-type'\u0026gt;\u003c/code\u003e.  Before version 1.17\nyou could only call such objects.  You could write\n\u003ccode\u003effi.addressof(lib, \u0026quot;myfunc\u0026quot;)\u003c/code\u003e in order to get a real \u003ccode\u003e\u0026lt;cdata\u0026gt;\u003c/code\u003e object,\nbased on the idea that in these cases in C you'd usually write \u003ccode\u003e\u0026amp;myfunc\u003c/code\u003e\ninstead of \u003ccode\u003emyfunc\u003c/code\u003e.  In version 1.17, the special object\n\u003ccode\u003elib.myfunc\u003c/code\u003e can now be passed in many places where CFFI expects\na regular \u003ccode\u003e\u0026lt;cdata\u0026gt;\u003c/code\u003e object.  For example, you can now pass\nit as a callback to a C function call, or write it inside a C\nstructure field of the correct pointer-to-function type, or use\n\u003ccode\u003effi.cast()\u003c/code\u003e or \u003ccode\u003effi.typeof()\u003c/code\u003e on it.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.16.0...v1.17.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.16.0...v1.17.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.17.0rc1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.13.\u003c/li\u003e\n\u003cli\u003eIn API mode, when you get a function from a C library by writing fn = lib.myfunc, you get an object of a special type for performance reasons, instead of a \u0026lt;cdata ‘C-function-type’\u0026gt;. Before version 1.17 you could only call such objects. You could write ffi.addressof(lib, “myfunc”) in order to get a real \u003c!-- raw HTML omitted --\u003e object, based on the idea that in these cases in C you’d usually write \u0026amp;myfunc instead of myfunc. In version 1.17, the special object lib.myfunc can now be passed in many places where CFFI expects a regular \u003c!-- raw HTML omitted --\u003e object. For example, you can now pass it as a callback to a C function call, or write it inside a C structure field of the correct pointer-to-function type, or use ffi.cast() or ffi.typeof() on it.\u003c/li\u003e\n\u003cli\u003eBuild wheels for musllinux aarch64.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/6366c01d84e9a78e7e85f12ebe9760ba5d19b6d3\"\u003e\u003ccode\u003e6366c01\u003c/code\u003e\u003c/a\u003e release 2.0.0 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/95c847663aec401e4003927a274e4de9b8595f4f\"\u003e\u003ccode\u003e95c8476\u003c/code\u003e\u003c/a\u003e 2.0.0 post beta backports (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/195cbda66b6be9297ef6d584644e50cfdcca4e8a\"\u003e\u003ccode\u003e195cbda\u003c/code\u003e\u003c/a\u003e Release 2.0.0b1 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b4bbe7940d3f76027534db1aecbae9b61c35221a\"\u003e\u003ccode\u003eb4bbe79\u003c/code\u003e\u003c/a\u003e fix version test to support beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/7ed073de66e713cf791b6fdfa23685c81fdfd6ad\"\u003e\u003ccode\u003e7ed073d\u003c/code\u003e\u003c/a\u003e Add support for the free-threaded build (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/178\"\u003e#178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/67a170dc7972dc9361743690b38da3d963b200ef\"\u003e\u003ccode\u003e67a170d\u003c/code\u003e\u003c/a\u003e Change the license from MIT to MIT-no-attribution, which is the same without ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/92645ec9329feb03e3fa86240b40fe0fc37469d1\"\u003e\u003ccode\u003e92645ec\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support/testing (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/177\"\u003e#177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/2b81170583a898478a6996c9705d8c38ab7f73a1\"\u003e\u003ccode\u003e2b81170\u003c/code\u003e\u003c/a\u003e doc: update test commands in Section Testing/development tips (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/25172b84cf51cf58241f074ccd1efd9c7648cb43\"\u003e\u003ccode\u003e25172b8\u003c/code\u003e\u003c/a\u003e doc: update year (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b57a92c03eb2078a99c900519a37d18b4d52324f\"\u003e\u003ccode\u003eb57a92c\u003c/code\u003e\u003c/a\u003e issue 147: force-compute nested structs before parent structs.  Occurs mainly...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.15.1...v2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click-datetime` from 0.2 to 0.4.0\n\nUpdates `cryptography` from 44.0.3 to 46.0.4\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\u003e46.0.4 - 2026-01-27\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* `Dropped support for win_arm64 wheels`_.\n* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.5.\n\u003cp\u003e.. _v46-0-3:\u003c/p\u003e\n\u003cp\u003e46.0.3 - 2025-10-15\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed compilation when using LibreSSL 4.2.0.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v46-0-2:\u003c/p\u003e\n\u003cp\u003e46.0.2 - 2025-09-30\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.4.\n\u003cp\u003e.. _v46-0-1:\u003c/p\u003e\n\u003cp\u003e46.0.1 - 2025-09-16\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed an issue where users installing via \u003ccode\u003epip\u003c/code\u003e on Python 3.14 development\nversions would not properly install a dependency.\u003c/li\u003e\n\u003cli\u003eFixed an issue building the free-threaded macOS 3.14 wheels.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v46-0-0:\u003c/p\u003e\n\u003cp\u003e46.0.0 - 2025-09-16\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* **BACKWARDS INCOMPATIBLE:** Support for Python 3.7 has been removed.\n* Support for OpenSSL \u0026lt; 3.0 is deprecated and will be removed in the next\n  release.\n* Support for ``x86_64`` macOS (including publishing wheels) is deprecated\n  and will be removed in two releases. We will switch to publishing an\n  ``arm64`` only wheel for macOS.\n* Support for 32-bit Windows (including publishing wheels) is deprecated\n  and will be removed in two releases. Users should move to a 64-bit\n  Python installation.\n* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.3.\n* We now build ``ppc64le`` ``manylinux`` wheels and publish them to PyPI.\n* We now build ``win_arm64`` (Windows on Arm) wheels and publish them to PyPI.\n* Added support for free-threaded Python 3.14.\n* Removed the deprecated ``get_attribute_for_oid`` method on\n  :class:`~cryptography.x509.CertificateSigningRequest`. Users should use\n  :meth:`~cryptography.x509.Attributes.get_attribute_for_oid` instead.\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/pyca/cryptography/commit/e6f44fc8e6391f05d719fb9d369692325b87a471\"\u003e\u003ccode\u003ee6f44fc\u003c/code\u003e\u003c/a\u003e bump for 46.0.4 and drop win arm64 due to CI issues (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14217\"\u003e#14217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/c0af4dd7b75921bbe9f1d41a03dbd4b64a9e3403\"\u003e\u003ccode\u003ec0af4dd\u003c/code\u003e\u003c/a\u003e release 46.0.3 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13681\"\u003e#13681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/99efe5ad150a56efadafacaffd0e3ee319373904\"\u003e\u003ccode\u003e99efe5a\u003c/code\u003e\u003c/a\u003e bump version for 46.0.2 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13531\"\u003e#13531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e735cfc27502320101c130335c556394a125ba52\"\u003e\u003ccode\u003ee735cfc\u003c/code\u003e\u003c/a\u003e release 46.0.1 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13450\"\u003e#13450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/4e457ffba43a6d87efc63c33041e2081438dd8a4\"\u003e\u003ccode\u003e4e457ff\u003c/code\u003e\u003c/a\u003e Explicitly specify python in mac uv build invocation (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13447\"\u003e#13447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/2726efdb6d67f1c90cf9c6062d9fe051965586f8\"\u003e\u003ccode\u003e2726efd\u003c/code\u003e\u003c/a\u003e Depend on CFFI 2.0.0 or newer on Python \u0026gt; 3.8 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13448\"\u003e#13448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/62230623d183706632c0eb7822c96ac95e3710a8\"\u003e\u003ccode\u003e6223062\u003c/code\u003e\u003c/a\u003e release 46.0.0 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13446\"\u003e#13446\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/563c4915b0931455706f761a4579c26698824eae\"\u003e\u003ccode\u003e563c491\u003c/code\u003e\u003c/a\u003e Update comment for pyopenssl-release tag (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13445\"\u003e#13445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/d2f6f7faced35b73277bc624ff496f8af696b172\"\u003e\u003ccode\u003ed2f6f7f\u003c/code\u003e\u003c/a\u003e Bump downstream dependencies in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13439\"\u003e#13439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e7ab02bd679d0b4f55d93486fe27e62554ef15d4\"\u003e\u003ccode\u003ee7ab02b\u003c/code\u003e\u003c/a\u003e we'll ship this with 3.5.3 why not (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13442\"\u003e#13442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/cryptography/compare/44.0.3...46.0.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flake8` from 7.1.1 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.1.1...7.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flake8-bugbear` from 22.9.23 to 25.11.29\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/flake8-bugbear/releases\"\u003eflake8-bugbear's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e25.11.29\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eB043: Add new check to state don't call delattr with constant (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/514\"\u003e#514\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eB042: ignore overloaded init, ignore if str+pickle dunder, improve README\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e25.10.21\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eB042: New check for reminding to call super().\u003cstrong\u003einit\u003c/strong\u003e in custom exceptions\u003c/li\u003e\n\u003cli\u003eB028: Skip if skip_file_prefixes is used (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/503\"\u003e#503\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eB912: New check for \u003ccode\u003emap()\u003c/code\u003e without an explicit \u003ccode\u003estrict=\u003c/code\u003e parameter. (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/516\"\u003e#516\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd python3.14 Support / CI\u003c/li\u003e\n\u003cli\u003eRemove python3.9 support / CI\u003c/li\u003e\n\u003cli\u003eflake8-bugbear now requires at least Python 3.10, like the next release of flake8\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e24.12.12\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eB012 and B025 now also handle try/except* (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/500\"\u003e#500\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSkip B028 if warnings.warn is called with \u003ccode\u003e*args\u003c/code\u003e or \u003ccode\u003e**kwargs\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/501\"\u003e#501\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd B911: itertools.batched without strict= (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/502\"\u003e#502\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReadme has anchors per check (they do not seem to render on GitHub tho)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e24.10.31\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eB041: New dictionary same key AND value check (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/496\"\u003e#496\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eB037: Fix typo in error message\u003c/li\u003e\n\u003cli\u003eB024: No longer treats assigned class variables as abstract (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/471\"\u003e#471\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump required attrs version to 22.2.0\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e24.8.19\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eB910: implement to suggest using Counter() instead of defaultdict(int) (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/489\"\u003e#489\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eB901: Do not trigger with explicit Generator return type (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/481\"\u003e#481\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eB008: add some comments, rename b008_extend_immutable_calls (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/476\"\u003e#476\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eB040: exception with note added not reraised or used (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/477\"\u003e#477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eB039, Add \u003ccode\u003eContextVar\u003c/code\u003e with mutable literal or function call as default\u003c/li\u003e\n\u003cli\u003eB040: Add Exception with added note not reraised. (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/474\"\u003e#474\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRun tests in Python 3.13\u003c/li\u003e\n\u003cli\u003eType annotated code (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/481\"\u003e#481\u003c/a\u003e + \u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/483\"\u003e#483\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReplace hash with unsafe_hash (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/486\"\u003e#486\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e24.4.26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eB909: Fix false positive affecting containers of mutables (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/469\"\u003e#469\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e24.4.21\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eB950: Add pragma comment to line length ignores (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/463\"\u003e#463\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eB909: Add more cases to detect + more container mutating functions (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/460\"\u003e#460\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e24.2.6\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eB902: Remove decorators named validator and root_validator from B902 checks (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/459\"\u003e#459\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eB038: Change B038 to B909 and make it optional (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/456\"\u003e#456\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e24.1.17\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eB038: Restrict rule to mutation functions only (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/453\"\u003e#453\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e24.1.16\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8-bugbear/commit/a5ace0a2fe0697c42bca1c37cebc3d95e2c10df9\"\u003e\u003ccode\u003ea5ace0a\u003c/code\u003e\u003c/a\u003e Update CHANGES + move to version 25.11.29 to release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8-bugbear/commit/0afdcce2e33cf8fcbfe22d2d6f24e33b2f66eb1a\"\u003e\u003ccode\u003e0afdcce\u003c/code\u003e\u003c/a\u003e b042: ignore overloaded init, ignore if str+pickle dunder, improve README (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8-bugbear/commit/2d2fd4d8abb1e3c5c831253ca8afd1717d4221e2\"\u003e\u003ccode\u003e2d2fd4d\u003c/code\u003e\u003c/a\u003e Add B043: Do not call delattr with constant (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/514\"\u003e#514\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8-bugbear/commit/9677fa878cdb35f82e79a51b37d635256edd84df\"\u003e\u003ccode\u003e9677fa8\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/530\"\u003e#530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8-bugbear/commit/ad43575c1a2cc58efca7148f5036ed3d9cd54cdc\"\u003e\u003ccode\u003ead43575\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/529\"\u003e#529\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8-bugbear/commit/cdd75f1942294a152f864c978376f59b2ec08558\"\u003e\u003ccode\u003ecdd75f1\u003c/code\u003e\u003c/a\u003e Update CHANGES + move to version 25.10.21 to release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8-bugbear/commit/4601fe6e1993d7a8309dd26105a55d8c77aeae0d\"\u003e\u003ccode\u003e4601fe6\u003c/code\u003e\u003c/a\u003e Drop 3.9 support + add 3.14 CI (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/524\"\u003e#524\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8-bugbear/commit/39699611b4b399a6e81d726e76c58cbcdffa25ab\"\u003e\u003ccode\u003e3969961\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/523\"\u003e#523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8-bugbear/commit/6276149b6807114307569d67be8516dae306beab\"\u003e\u003ccode\u003e6276149\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/522\"\u003e#522\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8-bugbear/commit/d264420dec52a034efe05f160c4ac157f053c6e8\"\u003e\u003ccode\u003ed264420\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/PyCQA/flake8-bugbear/issues/520\"\u003e#520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PyCQA/flake8-bugbear/compare/22.9.23...25.11.29\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flask` 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/flask/releases\"\u003eflask'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 a fix release for the 3.0.x feature branch.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/Flask/3.0.3/\"\u003ehttps://pypi.org/project/Flask/3.0.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://flask.palletsprojects.com/en/3.0.x/changes/#version-3-0-3\"\u003ehttps://flask.palletsprojects.com/en/3.0.x/changes/#version-3-0-3\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/flask/milestone/35?closed=1\"\u003ehttps://github.com/pallets/flask/milestone/35?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe default \u003ccode\u003ehashlib.sha1\u003c/code\u003e may not be available in FIPS builds. Don't access it at import time so the developer has time to change the default. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5448\"\u003e#5448\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't initialize the \u003ccode\u003ecli\u003c/code\u003e attribute in the sansio scaffold, but rather in the \u003ccode\u003eFlask\u003c/code\u003e concrete class. \u003ca href=\"https://redirect.github.com/pallets/flask/issues/5270\"\u003e#5270\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/flask/blob/main/CHANGES.rst\"\u003eflask's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.0.3\u003c/h2\u003e\n\u003cp\u003eReleased 2024-04-07\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe default \u003ccode\u003ehashlib.sha1\u003c/code\u003e may not be available in FIPS builds. Don't\naccess it at import time so the developer has time to change the default.\n:issue:\u003ccode\u003e5448\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDon't initialize the \u003ccode\u003ecli\u003c/code\u003e attribute in the sansio scaffold, but rather in\nthe \u003ccode\u003eFlask\u003c/code\u003e concrete class. :pr:\u003ccode\u003e5270\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/c12a5d874c5a014495eb2db8a73f40037bc813ac\"\u003e\u003ccode\u003ec12a5d8\u003c/code\u003e\u003c/a\u003e release version 3.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/5e22cc9eec0d1da2da706ccf724fde702b30d5f2\"\u003e\u003ccode\u003e5e22cc9\u003c/code\u003e\u003c/a\u003e Don't set the cli attribute in the sansio scaffold (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5270\"\u003e#5270\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/5fdce4c331ac530280cc941179d364a07f4a1088\"\u003e\u003ccode\u003e5fdce4c\u003c/code\u003e\u003c/a\u003e Don't set the cli attribute in the sansio scaffold\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/adb7dd99c295a28726c8d818fba54c7b3f958ecc\"\u003e\u003ccode\u003eadb7dd9\u003c/code\u003e\u003c/a\u003e don't access app.logger when configuring app.logger\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/b73939095564ec5c088c53e7595b00d174a018f5\"\u003e\u003ccode\u003eb739390\u003c/code\u003e\u003c/a\u003e support FIPS builds without SHA-1 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5460\"\u003e#5460\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/db461112c70d5f2bf93c7a6ac27eeb665c232dd0\"\u003e\u003ccode\u003edb46111\u003c/code\u003e\u003c/a\u003e access sha1 lazily\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/7320e311a0a3f190351173f8be90cab31dadbf73\"\u003e\u003ccode\u003e7320e31\u003c/code\u003e\u003c/a\u003e start version 3.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/87d5f5b9a9697434e6d972b021201105eabb54e6\"\u003e\u003ccode\u003e87d5f5b\u003c/code\u003e\u003c/a\u003e update project files (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5457\"\u003e#5457\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/flask/commit/d5e321b792cd6f3cd7b072d175f47eacbd5ee14f\"\u003e\u003ccode\u003ed5e321b\u003c/code\u003e\u003c/a\u003e release version 3.0.2 (\u003ca href=\"https://redirect.github.com/pallets/flask/issues/5403\"\u003e#5403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pallets/flask/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 `flask-marshmallow` from 1.3.0 to 1.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/marshmallow-code/flask-marshmallow/blob/dev/CHANGELOG.rst\"\u003eflask-marshmallow's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e1.4.0 (2026-02-04)\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd missing commas in error message for \u003ccode\u003evalidate.FileType\u003c/code\u003e (:pr:\u003ccode\u003e374\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eSupport:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Python 3.10-3.14 (:pr:\u003ccode\u003e376\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/marshmallow-code/flask-marshmallow/commit/eae69c2504bcd949632cfcf42fbfb64b933e564b\"\u003e\u003ccode\u003eeae69c2\u003c/code\u003e\u003c/a\u003e Bump version and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/flask-marshmallow/commit/e0bf754102a1c973f5416df921b4635133bf9216\"\u003e\u003ccode\u003ee0bf754\u003c/code\u003e\u003c/a\u003e Support Python 3.10-3.14 (\u003ca href=\"https://redirect.github.com/marshmallow-code/flask-marshmallow/issues/376\"\u003e#376\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/flask-marshmallow/commit/e51f8c857eab28c541dde285d3cfab2d9804757b\"\u003e\u003ccode\u003ee51f8c8\u003c/code\u003e\u003c/a\u003e Add missing commas to error message for validate.FileType (\u003ca href=\"https://redirect.github.com/marshmallow-code/flask-marshmallow/issues/374\"\u003e#374\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/flask-marshmallow/commit/b63a02c6a0d1e4ad9923c627c47c4096ebc0f3f7\"\u003e\u003ccode\u003eb63a02c\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/marshmallow-code/flask-marshmallow/issues/375\"\u003e#375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/flask-marshmallow/commit/651969863a670baae611460e59353bdd12b5e85a\"\u003e\u003ccode\u003e6519698\u003c/code\u003e\u003c/a\u003e Update tox.ini to be in line with marshmallow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/flask-marshmallow/commit/d703f74c76afb2f3e8c47f47589bd3b143d44924\"\u003e\u003ccode\u003ed703f74\u003c/code\u003e\u003c/a\u003e build(deps-dev): bump sphinx from 8.2.3 to 9.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/flask-marshmallow/commit/5e7ccf0c04e3a153b96483eb98e9aea744b4c0b0\"\u003e\u003ccode\u003e5e7ccf0\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/marshmallow-code/flask-marshmallow/issues/372\"\u003e#372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/flask-marshmallow/commit/e534f457fab3127ca0430eb198da30be569dc7ce\"\u003e\u003ccode\u003ee534f45\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 5 to 6 (\u003ca href=\"https://redirect.github.com/marshmallow-code/flask-marshmallow/issues/370\"\u003e#370\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/flask-marshmallow/commit/65dbf7fb46e663d4579afccf93a67dc212560b67\"\u003e\u003ccode\u003e65dbf7f\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/marshmallow-code/flask-marshmallow/issues/371\"\u003e#371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marshmallow-code/flask-marshmallow/commit/d43651abfdb47b4a86a0300aa330d0e597c3aee7\"\u003e\u003ccode\u003ed43651a\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 (\u003ca href=\"https://redirect.github.com/marshmallow-code/flask-marshmallow/issues/368\"\u003e#368\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/marshmallow-code/flask-marshmallow/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 `flask-migrate` from 3.1.0 to 4.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/releases\"\u003eflask-migrate's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 4.1.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/blob/main/CHANGES.md\"\u003eCHANGES.md\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 4.0.7\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/blob/main/CHANGES.md\"\u003eCHANGES.md\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 4.0.6\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/blob/main/CHANGES.md\"\u003eCHANGES.md\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 4.0.5\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/blob/main/CHANGES.md\"\u003eCHANGES.md\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 4.0.4\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/blob/main/CHANGES.md\"\u003eCHANGE.LOG\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 4.0.3\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/blob/main/CHANGES.md\"\u003eCHANGE.LOG\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 4.0.2\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/blob/main/CHANGES.md\"\u003eCHANGE.LOG\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 4.0.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/blob/main/CHANGES.md\"\u003eCHANGE.LOG\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003ch2\u003eRelease 4.0.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/blob/main/CHANGES.md\"\u003eCHANGE.LOG\u003c/a\u003e for release notes.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/miguelgrinberg/Flask-Migrate/blob/main/CHANGES.md\"\u003eflask-migrate's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eFlask-Migrate Change Log\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 4.1.0\u003c/strong\u003e - 2025-01-10\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAccept arguments such as \u003ccode\u003e--directory\u003c/code\u003e in environment variables \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-migrate/issues/553\"\u003e#553\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/commit/12a181ce0542659f10b4ce154a10cfd41fa1f501\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix minor typos in documentation \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-migrate/issues/552\"\u003e#552\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/commit/3b073a2c500303894c495d2e4fa0ef449b6a2833\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eKevin Kirsche\u003c/strong\u003e!)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 4.0.7\u003c/strong\u003e - 2024-03-11\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRegression from \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-migrate/issues/438\"\u003e#438\u003c/a\u003e: check \u003ccode\u003eg.x_arg\u003c/code\u003e exists before accessing it \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-migrate/issues/541\"\u003e#541\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/commit/7e8032c61e5c47f4e50b03dcf98c3b20dd5a8e55\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eSkye Im\u003c/strong\u003e!)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 4.0.6\u003c/strong\u003e - 2024-03-09\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAccept \u003ccode\u003e-x\u003c/code\u003e options for all db commands \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-migrate/issues/438\"\u003e#438\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/commit/6f3f889c36030134f87dc1db327c2385d873a4d6\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--purge\u003c/code\u003e flag to the \u003ccode\u003estamp\u003c/code\u003e command \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-migrate/issues/540\"\u003e#540\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/commit/af67bb093df5652c867b88880c5934bfc68313cc\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eJono N\u003c/strong\u003e!)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 4.0.5\u003c/strong\u003e - 2023-09-12\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCompatibility fixes for Flask-SQLAlchemy \u0026gt;= 3.1 \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-migrate/issues/526\"\u003e#526\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/commit/f562178bbe1912912f3cb6877cbae8b0899c74da\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eDavid Lord\u003c/strong\u003e!)\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eprocess_revision_directives\u003c/code\u003e option to be configurable \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-migrate/issues/523\"\u003e#523\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/commit/821e37fcc4a5e339f197153cdbb4dd2316cbd44b\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003ellc\u003c/strong\u003e!)\u003c/li\u003e\n\u003cli\u003eStop testing Python 3.7, as Flask-SQLAlchemy 3.1 stopped supporting it (\u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/commit/8d175193f00bf4e5578f0142d011093d8cd53d57\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 4.0.4\u003c/strong\u003e - 2023-02-02\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCorrectly obtain database URL with SQLAlchemy 2.0 \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-migrate/issues/505\"\u003e#505\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/commit/c8cd02c5d3d43bbab462b863db5417b5d69228bb\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 4.0.3\u003c/strong\u003e - 2023-01-29\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove legacy \u003cstrong\u003efuture\u003c/strong\u003e import in Alembic templates \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-migrate/issues/504\"\u003e#504\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/commit/7a388cfe320254735f4ed65ac655caaf0cae8b28\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003ePamela Fox\u003c/strong\u003e!)\u003c/li\u003e\n\u003cli\u003eAdd SQLAlchemy 1.4 and 2.0 to the test matrix (\u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/commit/7a725f2e3267f1c3bb4920cd3bff3a9ff1d7eb6e\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSwitch to pytest as test runner (\u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/commit/5acd794048d050f85b5dea93052f96abd8a583f2\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 4.0.2\u003c/strong\u003e - 2023-01-18\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u0026quot;check\u0026quot; command \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-migrate/issues/502\"\u003e#502\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/commit/1a893b4fca280f82b1aada6458b7c866c6d3c953\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eMasamitsu MURASE\u003c/strong\u003e!)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 4.0.1\u003c/strong\u003e - 2023-01-05\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDo not use deprecated functions in Flask-SQLAlchemy 3.0 (\u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/commit/7cb4236327ea04fc6be8a17bbfadae6de7bfbc8b\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStop building Python 3.6 (\u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/commit/c9534b39df49884e1b62592c486ed0d5565b3321\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove tests from pypi package (\u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/commit/2dd0c25caa5c43b452109f64c8e33ccc048ca210\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eRelease 4.0.0\u003c/strong\u003e - 2022-11-13\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdates for Flask-SQLAlchemy 3.x compatibility (\u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/commit/51752948aabdb68f7c032e1c1fc8317f895e10a6\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnable type comparison and batch mode by default (\u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/commit/a3085b34e5b1865d2b773248b37468764df7c312\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOption to rename \u0026quot;db\u0026quot; command group to a custom name (\u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/commit/b9c9d35744a08f4f62084ce6e3ddf30d21431dc7\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBetter handling of MetaData instances in templates (\u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/commit/c051a000c1518a71e0a5d045c1f8065b9add5122\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSet options correctly when \u003ccode\u003erevision --autogenerate\u003c/code\u003e is used \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-migrate/issues/463\"\u003e#463\u003c/a\u003e (\u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/commit/f7f15e2623866110974fddcdbea87ccbf1d74a40\"\u003ecommit\u003c/a\u003e) (thanks \u003cstrong\u003eFrazer McLean\u003c/strong\u003e!)\u003c/li\u003e\n\u003cli\u003eDocumentation section on configuring Alembic (\u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/commit/28522143f4e1371f08fa8bac8d3ba1f6b04e0f72\"\u003ecommit\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/Flask-Migrate/commit/dd098cc0057d6fc260e034b897a133cb3ede5902\"\u003e\u003ccode\u003edd098cc\u003c/code\u003e\u003c/a\u003e Release 4.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/Flask-Migrate/commit/12a181ce0542659f10b4ce154a10cfd41fa1f501\"\u003e\u003ccode\u003e12a181c\u003c/code\u003e\u003c/a\u003e Accept arguments such as --directory via environment variables (Fixes \u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-migrate/issues/553\"\u003e#553\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/Flask-Migrate/commit/0c0e82814fc3145919c56bac9b014619155d9614\"\u003e\u003ccode\u003e0c0e828\u003c/code\u003e\u003c/a\u003e revert to default funding file #nolog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/Flask-Migrate/commit/3b073a2c500303894c495d2e4fa0ef449b6a2833\"\u003e\u003ccode\u003e3b073a2\u003c/code\u003e\u003c/a\u003e Fix: minor typos (\u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-migrate/issues/552\"\u003e#552\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/Flask-Migrate/commit/f5f70fba7e0b82d666db117b00f368b1b368ded0\"\u003e\u003ccode\u003ef5f70fb\u003c/code\u003e\u003c/a\u003e add a .readthedocs.yml configuration #nolog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/Flask-Migrate/commit/f312c2e31f82bb5319b93c20228ec06c384ff7cd\"\u003e\u003ccode\u003ef312c2e\u003c/code\u003e\u003c/a\u003e Version 4.0.8.dev0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/Flask-Migrate/commit/faf06d1460bc76fe6951e9497352fcd3d3dfce98\"\u003e\u003ccode\u003efaf06d1\u003c/code\u003e\u003c/a\u003e Release 4.0.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/Flask-Migrate/commit/7e8032c61e5c47f4e50b03dcf98c3b20dd5a8e55\"\u003e\u003ccode\u003e7e8032c\u003c/code\u003e\u003c/a\u003e Check g.x_arg exists before working on it (\u003ca href=\"https://redirect.github.com/miguelgrinberg/flask-migrate/issues/541\"\u003e#541\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/Flask-Migrate/commit/9c0adacb973930797544f70578773060f1f854ec\"\u003e\u003ccode\u003e9c0adac\u003c/code\u003e\u003c/a\u003e Version 4.0.7.dev0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelgrinberg/Flask-Migrate/commit/e8689cac888e6781faf1cb7ab83e35390ff0b00c\"\u003e\u003ccode\u003ee8689ca\u003c/code\u003e\u003c/a\u003e Release 4.0.6\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/miguelgrinberg/flask-migrate/compare/v3.1.0...v4.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `freezegun` from 1.2.2 to 1.5.5\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/spulec/freezegun/blob/master/CHANGELOG\"\u003efreezegun's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.5\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow parametrized arguments called 'func' (Broken in 1.5.4...\n\n_Description has been truncated_","html_url":"https://github.com/alphagov/emergency-alerts-api/pull/291","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/alphagov%2Femergency-alerts-api/issues/291","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/291/packages"}},{"old_version":"1.17.1","new_version":"2.0.0","update_type":"major","path":null,"pr_created_at":"2026-02-02T05:59:23.000Z","version_change":"1.17.1 → 2.0.0","issue":{"uuid":"3884145371","node_id":"PR_kwDOPjXchc7A0mAr","number":16,"state":"closed","title":"Bump the dependencies group across 1 directory with 40 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-02-09T05:55:20.000Z","author_association":null,"state_reason":null,"created_at":"2026-02-02T05:59:23.000Z","updated_at":"2026-02-09T05:55:21.000Z","time_to_close":604557,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"dependencies","update_count":40,"packages":[{"name":"cryptography","old_version":"43.0.3","new_version":"46.0.4","repository_url":"https://github.com/pyca/cryptography"},{"name":"sigstore","old_version":"3.6.1","new_version":"4.1.0","repository_url":"https://github.com/sigstore/sigstore-python"},{"name":"pykcs11","old_version":"1.5.17","new_version":"1.5.18","repository_url":"https://github.com/LudovicRousseau/PyKCS11"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"pycparser","old_version":"2.22","new_version":"2.23","repository_url":"https://github.com/eliben/pycparser"},{"name":"anyio","old_version":"4.9.0","new_version":"4.12.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"betterproto","old_version":"2.0.0b6","new_version":"2.0.0b7","repository_url":"https://github.com/danielgtaylor/python-betterproto"},{"name":"certifi","old_version":"2025.1.31","new_version":"2026.1.4","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"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [cryptography](https://github.com/pyca/cryptography), [sigstore](https://github.com/sigstore/sigstore-python), [pykcs11](https://github.com/LudovicRousseau/PyKCS11), [cffi](https://github.com/python-cffi/cffi), [pycparser](https://github.com/eliben/pycparser), [anyio](https://github.com/agronholm/anyio), [betterproto](https://github.com/danielgtaylor/python-betterproto), [certifi](https://github.com/certifi/python-certifi), [charset-normalizer](https://github.com/jawah/charset_normalizer), [email-validator](https://github.com/JoshData/python-email-validator), [fastapi](https://github.com/fastapi/fastapi), [fonttools](https://github.com/fonttools/fonttools), [grpclib](https://github.com/vmagamedov/grpclib), [h11](https://github.com/python-hyper/h11), [h2](https://github.com/python-hyper/h2), [idna](https://github.com/kjd/idna), [multidict](https://github.com/aio-libs/multidict), [packaging](https://github.com/pypa/packaging), [pandas](https://github.com/pandas-dev/pandas), [pillow](https://github.com/python-pillow/Pillow), [platformdirs](https://github.com/tox-dev/platformdirs), [pyasn1](https://github.com/pyasn1/pyasn1), [pydantic](https://github.com/pydantic/pydantic), [pydantic-core](https://github.com/pydantic/pydantic-core), [pygments](https://github.com/pygments/pygments), [pyjwt](https://github.com/jpadilla/pyjwt), [pyopenssl](https://github.com/pyca/pyopenssl), [pyparsing](https://github.com/pyparsing/pyparsing), [requests](https://github.com/psf/requests), [rfc3161-client](https://github.com/trailofbits/rfc3161-client), [rich](https://github.com/Textualize/rich), [sigstore-protobuf-specs](https://github.com/sigstore/protobuf-specs), [starlette](https://github.com/Kludex/starlette), [typing-extensions](https://github.com/python/typing_extensions), [tzdata](https://github.com/python/tzdata), [urllib3](https://github.com/urllib3/urllib3), [uvicorn](https://github.com/Kludex/uvicorn), [hvac](https://github.com/hvac/hvac), [boto3](https://github.com/boto/boto3) and [botocore](https://github.com/boto/botocore) to permit the latest version.\nUpdates `cryptography` from 43.0.3 to 46.0.4\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\u003e46.0.4 - 2026-01-27\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* `Dropped support for win_arm64 wheels`_.\n* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.5.\n\u003cp\u003e.. _v46-0-3:\u003c/p\u003e\n\u003cp\u003e46.0.3 - 2025-10-15\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed compilation when using LibreSSL 4.2.0.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v46-0-2:\u003c/p\u003e\n\u003cp\u003e46.0.2 - 2025-09-30\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.4.\n\u003cp\u003e.. _v46-0-1:\u003c/p\u003e\n\u003cp\u003e46.0.1 - 2025-09-16\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed an issue where users installing via \u003ccode\u003epip\u003c/code\u003e on Python 3.14 development\nversions would not properly install a dependency.\u003c/li\u003e\n\u003cli\u003eFixed an issue building the free-threaded macOS 3.14 wheels.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v46-0-0:\u003c/p\u003e\n\u003cp\u003e46.0.0 - 2025-09-16\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* **BACKWARDS INCOMPATIBLE:** Support for Python 3.7 has been removed.\n* Support for OpenSSL \u0026lt; 3.0 is deprecated and will be removed in the next\n  release.\n* Support for ``x86_64`` macOS (including publishing wheels) is deprecated\n  and will be removed in two releases. We will switch to publishing an\n  ``arm64`` only wheel for macOS.\n* Support for 32-bit Windows (including publishing wheels) is deprecated\n  and will be removed in two releases. Users should move to a 64-bit\n  Python installation.\n* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.3.\n* We now build ``ppc64le`` ``manylinux`` wheels and publish them to PyPI.\n* We now build ``win_arm64`` (Windows on Arm) wheels and publish them to PyPI.\n* Added support for free-threaded Python 3.14.\n* Removed the deprecated ``get_attribute_for_oid`` method on\n  :class:`~cryptography.x509.CertificateSigningRequest`. Users should use\n  :meth:`~cryptography.x509.Attributes.get_attribute_for_oid` instead.\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/pyca/cryptography/commit/e6f44fc8e6391f05d719fb9d369692325b87a471\"\u003e\u003ccode\u003ee6f44fc\u003c/code\u003e\u003c/a\u003e bump for 46.0.4 and drop win arm64 due to CI issues (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14217\"\u003e#14217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/c0af4dd7b75921bbe9f1d41a03dbd4b64a9e3403\"\u003e\u003ccode\u003ec0af4dd\u003c/code\u003e\u003c/a\u003e release 46.0.3 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13681\"\u003e#13681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/99efe5ad150a56efadafacaffd0e3ee319373904\"\u003e\u003ccode\u003e99efe5a\u003c/code\u003e\u003c/a\u003e bump version for 46.0.2 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13531\"\u003e#13531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e735cfc27502320101c130335c556394a125ba52\"\u003e\u003ccode\u003ee735cfc\u003c/code\u003e\u003c/a\u003e release 46.0.1 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13450\"\u003e#13450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/4e457ffba43a6d87efc63c33041e2081438dd8a4\"\u003e\u003ccode\u003e4e457ff\u003c/code\u003e\u003c/a\u003e Explicitly specify python in mac uv build invocation (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13447\"\u003e#13447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/2726efdb6d67f1c90cf9c6062d9fe051965586f8\"\u003e\u003ccode\u003e2726efd\u003c/code\u003e\u003c/a\u003e Depend on CFFI 2.0.0 or newer on Python \u0026gt; 3.8 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13448\"\u003e#13448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/62230623d183706632c0eb7822c96ac95e3710a8\"\u003e\u003ccode\u003e6223062\u003c/code\u003e\u003c/a\u003e release 46.0.0 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13446\"\u003e#13446\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/563c4915b0931455706f761a4579c26698824eae\"\u003e\u003ccode\u003e563c491\u003c/code\u003e\u003c/a\u003e Update comment for pyopenssl-release tag (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13445\"\u003e#13445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/d2f6f7faced35b73277bc624ff496f8af696b172\"\u003e\u003ccode\u003ed2f6f7f\u003c/code\u003e\u003c/a\u003e Bump downstream dependencies in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13439\"\u003e#13439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e7ab02bd679d0b4f55d93486fe27e62554ef15d4\"\u003e\u003ccode\u003ee7ab02b\u003c/code\u003e\u003c/a\u003e we'll ship this with 3.5.3 why not (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13442\"\u003e#13442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/cryptography/compare/43.0.3...46.0.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sigstore` from 3.6.1 to 4.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sigstore/sigstore-python/releases\"\u003esigstore's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.1.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecli: Support using other Sigstore instances with \u003ccode\u003e--instance URL\u003c/code\u003e.\nNew instances are trusted with new top level command \u003ccode\u003etrust-instance ROOTFILE\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1548\"\u003e#1548\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded cryptography 46 to list of compatible cryptography releases\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1544\"\u003e#1544\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved error message when verifying bundles with unsupported log entry versions\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1569\"\u003e#1569\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecli: Always read/write UTF-8. This fixes an issue on Windows where the platform\ndefault encoding was used: the issue has existed for a while, but became more visible\nwith signature bundles that contain rekor2 entries.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1553\"\u003e#1553\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev4.0.0\u003c/h2\u003e\n\u003cp\u003eThis is a major release with a host of API and functionality changes. The major new feature\nis Rekor v2 support but many other changes are also included, see list below.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecli: Add \u003ccode\u003e--rekor-version\u003c/code\u003e to \u003ccode\u003esign\u003c/code\u003e command arguments: This can be useful\nif Sigstore instance provides multiple Rekor versions and user wants to\noverride the default choice\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1471\"\u003e#1471\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecli: Support parallel signing. When multiple artifacts are signed, the Rekor\nrequests are submitted in parallel: this is especially useful with Rekor v2.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1468\"\u003e#1468\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1478\"\u003e#1478\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1485\"\u003e#1485\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eoidc (API): Allow custom audience claims via API\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1402\"\u003e#1402\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erekor (API): Support Rekor v2 (aka rekor-tiles) in both verification and signing.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1370\"\u003e#1370\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1422\"\u003e#1422\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1432\"\u003e#1432\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etrust (API): Make TrustedRoot, SigningConfig and ClientTrustConfig public API\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1496\"\u003e#1496\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecli: Improve verify UX when wrong instance is used\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1510\"\u003e#1510\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edeps: replace sigstore_protobuf_specs dependency with sigstore-models\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1470\"\u003e#1470\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- 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/sigstore/sigstore-python/blob/main/CHANGELOG.md\"\u003esigstore's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[4.1.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecli: Support using other Sigstore instances with \u003ccode\u003e--instance URL\u003c/code\u003e.\nNew instances are trusted with new top level command \u003ccode\u003etrust-instance ROOTFILE\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1548\"\u003e#1548\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded cryptography 46 to list of compatible cryptography releases\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1544\"\u003e#1544\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved error message when verifying bundles with unsupported log entry versions\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1569\"\u003e#1569\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecli: Always read/write UTF-8. This fixes an issue on Windows where the platform\ndefault encoding was used: the issue has existed for a while, but became more visible\nwith signature bundles that contain rekor2 entries.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1553\"\u003e#1553\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[4.0.0]\u003c/h2\u003e\n\u003cp\u003eThis is a major release with a host of API and functionality changes. The major new feature\nis Rekor v2 support but many other changes are also included, see list below.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecli: Add \u003ccode\u003e--rekor-version\u003c/code\u003e to \u003ccode\u003esign\u003c/code\u003e command arguments: This can be useful\nif Sigstore instance provides multiple Rekor versions and user wants to\noverride the default choice\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1471\"\u003e#1471\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecli: Support parallel signing. When multiple artifacts are signed, the Rekor\nrequests are submitted in parallel: this is especially useful with Rekor v2.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1468\"\u003e#1468\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1478\"\u003e#1478\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1485\"\u003e#1485\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eoidc (API): Allow custom audience claims via API\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1402\"\u003e#1402\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erekor (API): Support Rekor v2 (aka rekor-tiles) in both verification and signing.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1370\"\u003e#1370\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1422\"\u003e#1422\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1432\"\u003e#1432\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etrust (API): Make TrustedRoot, SigningConfig and ClientTrustConfig public API\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1496\"\u003e#1496\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecli: Improve verify UX when wrong instance is used\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1510\"\u003e#1510\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edeps: replace sigstore_protobuf_specs dependency with sigstore-models\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/3447f9603cfa0e9fe9d9c83d5bd5fb0bfe08a598\"\u003e\u003ccode\u003e3447f96\u003c/code\u003e\u003c/a\u003e Forward port entry kindversion error improvement, bump version to 4.1.0 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1569\"\u003e#1569\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/2dbe03ae34c36e7d04bec7e63822ebcbbed362aa\"\u003e\u003ccode\u003e2dbe03a\u003c/code\u003e\u003c/a\u003e build(deps): bump github/codeql-action in the actions group (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1572\"\u003e#1572\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/02daa6970d0eaff526fd846efd6af46067206618\"\u003e\u003ccode\u003e02daa69\u003c/code\u003e\u003c/a\u003e build(deps): bump rich from 14.1.0 to 14.2.0 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1571\"\u003e#1571\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/16159399b18178aa87001b1e13b7c730be6d36b6\"\u003e\u003ccode\u003e1615939\u003c/code\u003e\u003c/a\u003e build(deps): bump the actions group with 2 updates (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1568\"\u003e#1568\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/72b658140bd3718aa9bba955d2ec87a8de6cb7bb\"\u003e\u003ccode\u003e72b6581\u003c/code\u003e\u003c/a\u003e build(deps): update ruff requirement from \u0026lt;0.13.4 to \u0026lt;0.14.1 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1567\"\u003e#1567\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/64dbeba7394b028ac6e75ddf5f4b1875b4571631\"\u003e\u003ccode\u003e64dbeba\u003c/code\u003e\u003c/a\u003e cli: Support using other Sigstore instances (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1548\"\u003e#1548\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/508b0e77ec9e04e6aecc09b8b476ff4937bed538\"\u003e\u003ccode\u003e508b0e7\u003c/code\u003e\u003c/a\u003e build(deps): bump softprops/action-gh-release in the actions group (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1563\"\u003e#1563\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/e31f481006755785e0fffc8a040e81e31aeee5b1\"\u003e\u003ccode\u003ee31f481\u003c/code\u003e\u003c/a\u003e build(deps): update ruff requirement from \u0026lt;0.13.3 to \u0026lt;0.13.4 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1562\"\u003e#1562\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/dec897bbda882b0d9f694da60047044c0f649468\"\u003e\u003ccode\u003edec897b\u003c/code\u003e\u003c/a\u003e build(deps): bump github/codeql-action in the actions group (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1561\"\u003e#1561\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/0a54b4fce6a26150954c9eea8ed3720af27f06bf\"\u003e\u003ccode\u003e0a54b4f\u003c/code\u003e\u003c/a\u003e build(deps): bump cryptography from 46.0.1 to 46.0.2 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1558\"\u003e#1558\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sigstore/sigstore-python/compare/v3.6.1...v4.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pykcs11` from 1.5.17 to 1.5.18\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/releases\"\u003epykcs11's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e1.5.18 - August 2025, Ludovic Rousseau\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eadd \u003ccode\u003eCKM_EXTRACT_KEY_FROM_KEY\u003c/code\u003e mechanism\u003c/li\u003e\n\u003cli\u003eadd \u003ccode\u003eCKM_EDDSA\u003c/code\u003e and \u003ccode\u003eCK_EDDSA_PARAMS\u003c/code\u003e support\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eC_Initialize()\u003c/code\u003e: allow OS locking\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePyKCS11.load()\u003c/code\u003e \u0026amp; \u003ccode\u003e.unload()\u003c/code\u003e: make the methods tread-safe\u003c/li\u003e\n\u003cli\u003ebugfix: store \u003ccode\u003eCKM_CONCATENATE_BASE_AND_KEY\u003c/code\u003e parameter in mechanism context\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eIsNum()\u003c/code\u003e: \u003ccode\u003eCKA_HW_FEATURE_TYPE\u003c/code\u003e is also a numeric value\u003c/li\u003e\n\u003cli\u003eimprove support for multi-part encryption/decryption\u003c/li\u003e\n\u003cli\u003efix some Python typing issues\u003c/li\u003e\n\u003cli\u003eFix issue with vendor defined (\u003ccode\u003eCKM_VENDOR_DEFINED\u003c/code\u003e) mechanisms\u003c/li\u003e\n\u003cli\u003efix/ignore all pylint warnings\u003c/li\u003e\n\u003cli\u003euse pytest for running tests\u003c/li\u003e\n\u003cli\u003eminor improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/upload-artifact 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/LudovicRousseau/PyKCS11/pull/125\"\u003eLudovicRousseau/PyKCS11#125\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd CKM_EXTRACT_KEY_FROM_KEY mechanism by \u003ca href=\"https://github.com/fuzzykat\"\u003e\u003ccode\u003e@​fuzzykat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/LudovicRousseau/PyKCS11/pull/128\"\u003eLudovicRousseau/PyKCS11#128\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/LudovicRousseau/PyKCS11/pull/132\"\u003eLudovicRousseau/PyKCS11#132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eimprove support for multi-part encryption/decryption by \u003ca href=\"https://github.com/fuzzykat\"\u003e\u003ccode\u003e@​fuzzykat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/LudovicRousseau/PyKCS11/pull/135\"\u003eLudovicRousseau/PyKCS11#135\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003euse ckbytelist as return type by \u003ca href=\"https://github.com/andreastedile\"\u003e\u003ccode\u003e@​andreastedile\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/LudovicRousseau/PyKCS11/pull/136\"\u003eLudovicRousseau/PyKCS11#136\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003euse CK_OBJECT_HANDLE as parameter type by \u003ca href=\"https://github.com/andreastedile\"\u003e\u003ccode\u003e@​andreastedile\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/LudovicRousseau/PyKCS11/pull/137\"\u003eLudovicRousseau/PyKCS11#137\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003euse CK_OBJECT_HANDLE as return type by \u003ca href=\"https://github.com/andreastedile\"\u003e\u003ccode\u003e@​andreastedile\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/LudovicRousseau/PyKCS11/pull/138\"\u003eLudovicRousseau/PyKCS11#138\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/LudovicRousseau/PyKCS11/pull/139\"\u003eLudovicRousseau/PyKCS11#139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd CKM_EDDSA and CK_EDDSA_PARAMS support by \u003ca href=\"https://github.com/fuzzykat\"\u003e\u003ccode\u003e@​fuzzykat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/LudovicRousseau/PyKCS11/pull/141\"\u003eLudovicRousseau/PyKCS11#141\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/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] made their first contribution in \u003ca href=\"https://redirect.github.com/LudovicRousseau/PyKCS11/pull/125\"\u003eLudovicRousseau/PyKCS11#125\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] made their first contribution in \u003ca href=\"https://redirect.github.com/LudovicRousseau/PyKCS11/pull/132\"\u003eLudovicRousseau/PyKCS11#132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/andreastedile\"\u003e\u003ccode\u003e@​andreastedile\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/LudovicRousseau/PyKCS11/pull/136\"\u003eLudovicRousseau/PyKCS11#136\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/compare/1.5.17...1.5.18\"\u003ehttps://github.com/LudovicRousseau/PyKCS11/compare/1.5.17...1.5.18\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/LudovicRousseau/PyKCS11/blob/master/Changes.txt\"\u003epykcs11's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e1.5.18 - August 2025, Ludovic Rousseau\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eadd CKM_EXTRACT_KEY_FROM_KEY mechanism\u003c/li\u003e\n\u003cli\u003eadd CKM_EDDSA and CK_EDDSA_PARAMS support\u003c/li\u003e\n\u003cli\u003eC_Initialize(): allow OS locking\u003c/li\u003e\n\u003cli\u003ePyKCS11.load() \u0026amp; .unload(): make the methods tread-safe\u003c/li\u003e\n\u003cli\u003ebugfix: store CKM_CONCATENATE_BASE_AND_KEY parameter in mechanism context\u003c/li\u003e\n\u003cli\u003eIsNum(): CKA_HW_FEATURE_TYPE is also a numeric value\u003c/li\u003e\n\u003cli\u003eimprove support for multi-part encryption/decryption\u003c/li\u003e\n\u003cli\u003efix some Python typing issues\u003c/li\u003e\n\u003cli\u003eFix issue with vendor defined (CKM_VENDOR_DEFINED) mechanisms\u003c/li\u003e\n\u003cli\u003efix/ignore all pylint warnings\u003c/li\u003e\n\u003cli\u003euse pytest for running tests\u003c/li\u003e\n\u003cli\u003eminor improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/commit/1f34853e9fb42bc4eedd7f3bc5057b5c4f2dffa7\"\u003e\u003ccode\u003e1f34853\u003c/code\u003e\u003c/a\u003e Release 1.5.18\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/commit/abea61f5261b6e206883307736f2d67a57524ee8\"\u003e\u003ccode\u003eabea61f\u003c/code\u003e\u003c/a\u003e fix load(): move os.getenv() outside of the _lock scope\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/commit/be5f5e31c90c6dd782c30eb570130fd1792a2eaf\"\u003e\u003ccode\u003ebe5f5e3\u003c/code\u003e\u003c/a\u003e fix: use self.assertRaises() in test_sign_integer\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/commit/2177a59dd7aa4522ba75a2dad2f55731d03c41dd\"\u003e\u003ccode\u003e2177a59\u003c/code\u003e\u003c/a\u003e add CKM_EDDSA and CK_EDDSA_PARAMS support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/commit/2094a494b27b618ca7dd6800af49bb026a812ccc\"\u003e\u003ccode\u003e2094a49\u003c/code\u003e\u003c/a\u003e IsNum(): CKA_HW_FEATURE_TYPE is also a numeric value\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/commit/383425ed17c362c4463bbb6d5d300ca64d55b441\"\u003e\u003ccode\u003e383425e\u003c/code\u003e\u003c/a\u003e Add information in PyKCS11Error(-2)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/commit/1a1bab33b4c2b7f9bd63f28119e57515d2b08151\"\u003e\u003ccode\u003e1a1bab3\u003c/code\u003e\u003c/a\u003e dev-requirements.txt: add pytest\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/commit/62e8b7eb8638bf3f88705f61deb83d2b248748da\"\u003e\u003ccode\u003e62e8b7e\u003c/code\u003e\u003c/a\u003e Makefile: use pytest to run tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/commit/8eec8e34bc051a62d8a0b2af34d7eb47f2537436\"\u003e\u003ccode\u003e8eec8e3\u003c/code\u003e\u003c/a\u003e Add run_pytest.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/commit/f7a962879f82017ac9217f64a53219873ba4fb55\"\u003e\u003ccode\u003ef7a9628\u003c/code\u003e\u003c/a\u003e PyKCS11.unload(): make the method thread safe\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/LudovicRousseau/PyKCS11/compare/1.5.17...1.5.18\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cffi` from 1.17.1 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only) - huge thanks to the folks at Quansight Labs for all the work to get this one sorted!\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.0.0b1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only).\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/6366c01d84e9a78e7e85f12ebe9760ba5d19b6d3\"\u003e\u003ccode\u003e6366c01\u003c/code\u003e\u003c/a\u003e release 2.0.0 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/95c847663aec401e4003927a274e4de9b8595f4f\"\u003e\u003ccode\u003e95c8476\u003c/code\u003e\u003c/a\u003e 2.0.0 post beta backports (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/195cbda66b6be9297ef6d584644e50cfdcca4e8a\"\u003e\u003ccode\u003e195cbda\u003c/code\u003e\u003c/a\u003e Release 2.0.0b1 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b4bbe7940d3f76027534db1aecbae9b61c35221a\"\u003e\u003ccode\u003eb4bbe79\u003c/code\u003e\u003c/a\u003e fix version test to support beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/7ed073de66e713cf791b6fdfa23685c81fdfd6ad\"\u003e\u003ccode\u003e7ed073d\u003c/code\u003e\u003c/a\u003e Add support for the free-threaded build (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/178\"\u003e#178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/67a170dc7972dc9361743690b38da3d963b200ef\"\u003e\u003ccode\u003e67a170d\u003c/code\u003e\u003c/a\u003e Change the license from MIT to MIT-no-attribution, which is the same without ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/92645ec9329feb03e3fa86240b40fe0fc37469d1\"\u003e\u003ccode\u003e92645ec\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support/testing (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/177\"\u003e#177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/2b81170583a898478a6996c9705d8c38ab7f73a1\"\u003e\u003ccode\u003e2b81170\u003c/code\u003e\u003c/a\u003e doc: update test commands in Section Testing/development tips (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/25172b84cf51cf58241f074ccd1efd9c7648cb43\"\u003e\u003ccode\u003e25172b8\u003c/code\u003e\u003c/a\u003e doc: update year (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b57a92c03eb2078a99c900519a37d18b4d52324f\"\u003e\u003ccode\u003eb57a92c\u003c/code\u003e\u003c/a\u003e issue 147: force-compute nested structs before parent structs.  Occurs mainly...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pycparser` from 2.22 to 2.23\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/eliben/pycparser/releases\"\u003epycparser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003erelease_v2.23\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow abstract declarator \u0026quot;static\u0026quot; (GH issue \u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/539\"\u003e#539\u003c/a\u003e) by \u003ca href=\"https://github.com/gperciva\"\u003e\u003ccode\u003e@​gperciva\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/545\"\u003eeliben/pycparser#545\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/550\"\u003eeliben/pycparser#550\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd dirent and socket typedefs. by \u003ca href=\"https://github.com/MegaManSec\"\u003e\u003ccode\u003e@​MegaManSec\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/558\"\u003eeliben/pycparser#558\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport for labels with no statement by \u003ca href=\"https://github.com/ignatirabo\"\u003e\u003ccode\u003e@​ignatirabo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/562\"\u003eeliben/pycparser#562\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept empty 'case' or 'default' labels by \u003ca href=\"https://github.com/ignatirabo\"\u003e\u003ccode\u003e@​ignatirabo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/564\"\u003eeliben/pycparser#564\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: preserve parentheses for statement exprs by \u003ca href=\"https://github.com/zawan-ila\"\u003e\u003ccode\u003e@​zawan-ila\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/566\"\u003eeliben/pycparser#566\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: hex float types by \u003ca href=\"https://github.com/zawan-ila\"\u003e\u003ccode\u003e@​zawan-ila\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/567\"\u003eeliben/pycparser#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExplicit error for comments, with README link by \u003ca href=\"https://github.com/cellularmitosis\"\u003e\u003ccode\u003e@​cellularmitosis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/569\"\u003eeliben/pycparser#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eshowemptyattrs option on Node.show() by \u003ca href=\"https://github.com/cellularmitosis\"\u003e\u003ccode\u003e@​cellularmitosis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/570\"\u003eeliben/pycparser#570\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd fake typedefs for GNU Extension 128-bit integers. by \u003ca href=\"https://github.com/dj-wednesday\"\u003e\u003ccode\u003e@​dj-wednesday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/577\"\u003eeliben/pycparser#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTypedef for __kernel_sa_family_t in linux/socket.h by \u003ca href=\"https://github.com/crosser\"\u003e\u003ccode\u003e@​crosser\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/578\"\u003eeliben/pycparser#578\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/gperciva\"\u003e\u003ccode\u003e@​gperciva\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/545\"\u003eeliben/pycparser#545\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MegaManSec\"\u003e\u003ccode\u003e@​MegaManSec\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/558\"\u003eeliben/pycparser#558\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ignatirabo\"\u003e\u003ccode\u003e@​ignatirabo\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/562\"\u003eeliben/pycparser#562\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zawan-ila\"\u003e\u003ccode\u003e@​zawan-ila\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/566\"\u003eeliben/pycparser#566\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cellularmitosis\"\u003e\u003ccode\u003e@​cellularmitosis\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/569\"\u003eeliben/pycparser#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dj-wednesday\"\u003e\u003ccode\u003e@​dj-wednesday\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/577\"\u003eeliben/pycparser#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crosser\"\u003e\u003ccode\u003e@​crosser\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/578\"\u003eeliben/pycparser#578\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/eliben/pycparser/compare/release_v2.22...release_v2.23\"\u003ehttps://github.com/eliben/pycparser/compare/release_v2.22...release_v2.23\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/5b60167602e7914139b3e277266ccdff5c24dbf2\"\u003e\u003ccode\u003e5b60167\u003c/code\u003e\u003c/a\u003e Prepare for release 2.23\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/7b24736bbb875a5c6c6f0520412f03aace75d0ee\"\u003e\u003ccode\u003e7b24736\u003c/code\u003e\u003c/a\u003e Typedef for __kernel_sa_family_t in _fake_typedefs.h (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/578\"\u003e#578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/90184f1f4eb1234fb9e7ae0c8b74eab9ea963482\"\u003e\u003ccode\u003e90184f1\u003c/code\u003e\u003c/a\u003e Add fake typedefs for GNU Extension 128-bit integers. (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/577\"\u003e#577\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/f04fdcde3d95be4a632948718d0c46eac09c50ce\"\u003e\u003ccode\u003ef04fdcd\u003c/code\u003e\u003c/a\u003e showemptyattrs option on Node.show() (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/570\"\u003e#570\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/156eae7f42843d8a3e78a68995d9cc7485577e38\"\u003e\u003ccode\u003e156eae7\u003c/code\u003e\u003c/a\u003e Explicit error for comments, with README link (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/569\"\u003e#569\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/2215299261306df71e2cec23bb3acd7b8f31f8db\"\u003e\u003ccode\u003e2215299\u003c/code\u003e\u003c/a\u003e fix: hex float types (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/567\"\u003e#567\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/037bd31d4e0e69e8c4d80e45311ae46abc15dd4e\"\u003e\u003ccode\u003e037bd31\u003c/code\u003e\u003c/a\u003e fix: preserve parentheses for statement exprs (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/566\"\u003e#566\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/9cecc090151b31d8821786bca3b25851a4a33272\"\u003e\u003ccode\u003e9cecc09\u003c/code\u003e\u003c/a\u003e Accept empty 'case' or 'default' labels (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/564\"\u003e#564\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/7ae671d3ac44e1000bcbe7108b24bdb9187443ac\"\u003e\u003ccode\u003e7ae671d\u003c/code\u003e\u003c/a\u003e Support for labels with no statement (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/562\"\u003e#562\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/42b542324859a108f2cf35bcfe21fe5877ceb091\"\u003e\u003ccode\u003e42b5423\u003c/code\u003e\u003c/a\u003e Add dirent and socket typedefs. (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/558\"\u003e#558\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/eliben/pycparser/compare/release_v2.22...release_v2.23\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\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 `betterproto` from 2.0.0b6 to 2.0.0b7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/danielgtaylor/python-betterproto/releases\"\u003ebetterproto's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0-beta7\u003c/h2\u003e\n\u003ch2\u003eEnhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eBreaking\u003c/strong\u003e: Support \u003ccode\u003ePydantic\u003c/code\u003e v2 and dropping support for v1 \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/588\"\u003e#588\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBreaking\u003c/strong\u003e: The attempting to access an unset \u003ccode\u003eoneof\u003c/code\u003e now raises an \u003ccode\u003eAttributeError\u003c/code\u003e field. To see how to access \u003ccode\u003eoneof\u003c/code\u003e fields now, refer to \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/558\"\u003e#558\u003c/a\u003e and \u003ca href=\"https://github.com/danielgtaylor/python-betterproto#one-of-support\"\u003eREADME.md\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBreaking\u003c/strong\u003e: A custom \u003ccode\u003eEnum\u003c/code\u003e has been implemented to match the behaviour of being an open set. Any checks for \u003ccode\u003eisinstance(enum_member, enum.Enum)\u003c/code\u003e and \u003ccode\u003eissubclass(EnumSubclass, enum.Enum)\u003c/code\u003e will now return \u003ccode\u003eFalse\u003c/code\u003e. This change also has the side effect of preventing any passthrough of \u003ccode\u003eEnum\u003c/code\u003e members (i.e. \u003ccode\u003eFoo.RED.GREEN\u003c/code\u003e doesn't work any more). See \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/293\"\u003e#293\u003c/a\u003e for more info, this fixed many bugs related to \u003ccode\u003eEnum\u003c/code\u003e handling.\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003epickle\u003c/code\u003e methods \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/535\"\u003e#535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eStruct\u003c/code\u003e and \u003ccode\u003eValue\u003c/code\u003e types \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/551\"\u003e#551\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ca href=\"https://rich.readthedocs.io/en/latest/index.html\"\u003e\u003ccode\u003eRich\u003c/code\u003e package\u003c/a\u003e for pretty printing \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/508\"\u003e#508\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove support for streaming messages \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/518\"\u003e#518\u003c/a\u003e \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/529\"\u003e#529\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove performance of serializing / de-serializing messages \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/545\"\u003e#545\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove the handling of message name collisions with typing by allowing the method / type of imports to be configured.\nRefer to \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/582\"\u003e#582\u003c/a\u003e and \u003ca href=\"https://github.com/danielgtaylor/python-betterproto#configuration-typing-imports\"\u003eREADME.md\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd a warning when calling a deprecated message \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/596\"\u003e#596\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix roundtrip parsing of \u003ccode\u003edatetime\u003c/code\u003es \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/534\"\u003e#534\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix accessing unset optional fields \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/523\"\u003e#523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eMessage\u003c/code\u003e equality comparison \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/513\"\u003e#513\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix behaviour with long comment messages \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/532\"\u003e#532\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/atomicflag\"\u003e\u003ccode\u003e@​atomicflag\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/513\"\u003edanielgtaylor/python-betterproto#513\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshuaLeivers\"\u003e\u003ccode\u003e@​JoshuaLeivers\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/518\"\u003edanielgtaylor/python-betterproto#518\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MicaelJarniac\"\u003e\u003ccode\u003e@​MicaelJarniac\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/508\"\u003edanielgtaylor/python-betterproto#508\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/124C41p\"\u003e\u003ccode\u003e@​124C41p\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/528\"\u003edanielgtaylor/python-betterproto#528\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/girtsf\"\u003e\u003ccode\u003e@​girtsf\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/306\"\u003edanielgtaylor/python-betterproto#306\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/spietras\"\u003e\u003ccode\u003e@​spietras\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/422\"\u003edanielgtaylor/python-betterproto#422\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lukasbindreiter\"\u003e\u003ccode\u003e@​lukasbindreiter\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/534\"\u003edanielgtaylor/python-betterproto#534\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cartesian-theatrics\"\u003e\u003ccode\u003e@​cartesian-theatrics\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/532\"\u003edanielgtaylor/python-betterproto#532\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/550\"\u003edanielgtaylor/python-betterproto#550\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/woodruffw\"\u003e\u003ccode\u003e@​woodruffw\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/551\"\u003edanielgtaylor/python-betterproto#551\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/atomicmac\"\u003e\u003ccode\u003e@​atomicmac\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/560\"\u003edanielgtaylor/python-betterproto#560\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arunsathiya\"\u003e\u003ccode\u003e@​arunsathiya\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/553\"\u003edanielgtaylor/python-betterproto#553\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ii64\"\u003e\u003ccode\u003e@​ii64\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/568\"\u003edanielgtaylor/python-betterproto#568\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/imcdo\"\u003e\u003ccode\u003e@​imcdo\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/587\"\u003edanielgtaylor/python-betterproto#587\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gatesn\"\u003e\u003ccode\u003e@​gatesn\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/588\"\u003edanielgtaylor/python-betterproto#588\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AdrienVannson\"\u003e\u003ccode\u003e@​AdrienVannson\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/596\"\u003edanielgtaylor/python-betterproto#596\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JitPackJoyride\"\u003e\u003ccode\u003e@​JitPackJoyride\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/593\"\u003edanielgtaylor/python-betterproto#593\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/danielgtaylor/python-betterproto/compare/v.2.0.0b6...v.2.0.0b7\"\u003ehttps://github.com/danielgtaylor/python-betterproto/compare/v.2.0.0b6...v.2.0.0b7\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/danielgtaylor/python-betterproto/blob/master/CHANGELOG.md\"\u003ebetterproto's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[2.0.0b7] - 2024-08-11\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eBreaking\u003c/strong\u003e: Support \u003ccode\u003ePydantic\u003c/code\u003e v2 and dropping support for v1 \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/588\"\u003e#588\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eBreaking\u003c/strong\u003e: The attempting to access an unset \u003ccode\u003eoneof\u003c/code\u003e now raises an \u003ccode\u003eAttributeError\u003c/code\u003e\nfield. To see how to access \u003ccode\u003eoneof\u003c/code\u003e fields now, refer to \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/558\"\u003e#558\u003c/a\u003e\nand \u003ca href=\"https://github.com/danielgtaylor/python-betterproto#one-of-support\"\u003eREADME.md\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eBreaking\u003c/strong\u003e: A custom \u003ccode\u003eEnum\u003c/code\u003e has been implemented to match the behaviour of being an open set. Any checks for \u003ccode\u003eisinstance(enum_member, enum.Enum)\u003c/code\u003e and \u003ccode\u003eissubclass(EnumSubclass, enum.Enum)\u003c/code\u003e will now return \u003ccode\u003eFalse\u003c/code\u003e. This change also has the side effect of\npreventing any passthrough of \u003ccode\u003eEnum\u003c/code\u003e members (i.e. \u003ccode\u003eFoo.RED.GREEN\u003c/code\u003e doesn't work any more). See \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/293\"\u003e#293\u003c/a\u003e for more info, this fixed many bugs related to \u003ccode\u003eEnum\u003c/code\u003e handling.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd support for \u003ccode\u003epickle\u003c/code\u003e methods \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/535\"\u003e#535\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd support for \u003ccode\u003eStruct\u003c/code\u003e and \u003ccode\u003eValue\u003c/code\u003e types \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/551\"\u003e#551\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd support for \u003ca href=\"https://rich.readthedocs.io/en/latest/index.html\"\u003e\u003ccode\u003eRich\u003c/code\u003e package\u003c/a\u003e for pretty printing \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/508\"\u003e#508\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove support for streaming messages \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/518\"\u003e#518\u003c/a\u003e \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/529\"\u003e#529\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove performance of serializing / de-serializing messages \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/545\"\u003e#545\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove the handling of message name collisions with typing by allowing the method / type of imports to be configured.\nRefer to \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/582\"\u003e#582\u003c/a\u003e\nand \u003ca href=\"https://github.com/danielgtaylor/python-betterproto#configuration-typing-imports\"\u003eREADME.md\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix roundtrip parsing of \u003ccode\u003edatetime\u003c/code\u003es \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/534\"\u003e#534\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix accessing unset optional fields \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/523\"\u003e#523\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003eMessage\u003c/code\u003e equality comparison \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/513\"\u003e#513\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix behaviour with long comment messages \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/532\"\u003e#532\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd a warning when calling a deprecated message \u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/pull/596\"\u003e#596\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/danielgtaylor/python-betterproto/commit/1538e156a1eadb88799eca009a238093d6bb40df\"\u003e\u003ccode\u003e1538e15\u003c/code\u003e\u003c/a\u003e Bump version to 2.0.0b7 (\u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/issues/593\"\u003e#593\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielgtaylor/python-betterproto/commit/4e9a17c227c1454a08a46ad41dbca0478aa46830\"\u003e\u003ccode\u003e4e9a17c\u003c/code\u003e\u003c/a\u003e Add warnings when calling deprecated method (\u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/issues/596\"\u003e#596\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielgtaylor/python-betterproto/commit/f96f51650ca28412640b3e93724f123d4f0d7b31\"\u003e\u003ccode\u003ef96f516\u003c/code\u003e\u003c/a\u003e fix: 3.10 style imports not resolving correctly (\u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/issues/594\"\u003e#594\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielgtaylor/python-betterproto/commit/5fdd0bb24fc43091599a2284a948fc06e1a55edb\"\u003e\u003ccode\u003e5fdd0bb\u003c/code\u003e\u003c/a\u003e Update to Pydantic V2 (\u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielgtaylor/python-betterproto/commit/8b5923485624fc9fe77df343fef9cca5c04ee45f\"\u003e\u003ccode\u003e8b59234\u003c/code\u003e\u003c/a\u003e Handle typing collisions and add validation to a files module for overlaping ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielgtaylor/python-betterproto/commit/7c6c6279382218fbe7f8e1ce85933e06221fc07f\"\u003e\u003ccode\u003e7c6c627\u003c/code\u003e\u003c/a\u003e Drop 3.7 from ci (\u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielgtaylor/python-betterproto/commit/1f88b67eeb9871d33da154fd2c859b9d1aed62c1\"\u003e\u003ccode\u003e1f88b67\u003c/code\u003e\u003c/a\u003e \u003ccode\u003ebetterproto-rust-codec\u003c/code\u003e updated (\u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/issues/571\"\u003e#571\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielgtaylor/python-betterproto/commit/c3c20556e0d29e07abee05c7e3d2d6c481d26389\"\u003e\u003ccode\u003ec3c2055\u003c/code\u003e\u003c/a\u003e fix: support pydantic-version google pb (\u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/issues/568\"\u003e#568\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielgtaylor/python-betterproto/commit/df1ba911b75da04eec56b6b39bd93a3779d51b24\"\u003e\u003ccode\u003edf1ba91\u003c/code\u003e\u003c/a\u003e Add betterproto.Enum \u003cstrong\u003ecopy\u003c/strong\u003e and \u003cstrong\u003edeepcopy\u003c/strong\u003e implementations (\u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/issues/566\"\u003e#566\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielgtaylor/python-betterproto/commit/126b256b4c541832e1e5a5f898c1263dd4b06995\"\u003e\u003ccode\u003e126b256\u003c/code\u003e\u003c/a\u003e ci: Use GITHUB_OUTPUT envvar instead of set-output command (\u003ca href=\"https://redirect.github.com/danielgtaylor/python-betterproto/issues/553\"\u003e#553\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/danielgtaylor/python-betterproto/compare/v.2.0.0b6...v.2.0.0b7\"\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 2026.1.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\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\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/27ca98ad845ee6d130a88301622c137893f71620\"\u003e\u003ccode\u003e27ca98a\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7.0.9 to 7.0.11 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/56c59a63909cfd3162b37e7bc16956e64df0f737\"\u003e\u003ccode\u003e56c59a6\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.0 to 6.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ae0021cd43a77bfba67d20a041469cdf6996570e\"\u003e\u003ccode\u003eae0021c\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.0.0 to 6.1.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/380\"\u003e#380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddf5d0b5d2a3d55fd92a79f141dbb5e074caf924\"\u003e\u003ccode\u003eddf5d0b\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5.0.1 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.01.31...2026.01.04\"\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\u003eSource...\n\n_Description has been truncated_","html_url":"https://github.com/openreview-bot7/securesystemslib/pull/16","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/openreview-bot7%2Fsecuresystemslib/issues/16","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/16/packages"}},{"old_version":"1.17.1","new_version":"2.0.0","update_type":"major","path":null,"pr_created_at":"2026-01-26T04:37:31.000Z","version_change":"1.17.1 → 2.0.0","issue":{"uuid":"3854485334","node_id":"PR_kwDOMftbFc6_Sm3X","number":190,"state":"closed","title":"Bump the py-updates group across 1 directory with 83 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-02-02T04:30:52.000Z","author_association":null,"state_reason":null,"created_at":"2026-01-26T04:37:31.000Z","updated_at":"2026-02-02T04:30:53.000Z","time_to_close":604401,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"py-updates","update_count":83,"packages":[{"name":"awscli","old_version":"1.40.17","new_version":"1.44.24","repository_url":"https://github.com/aws/aws-cli"},{"name":"polars","old_version":"1.28.1","new_version":"1.37.1","repository_url":"https://github.com/pola-rs/polars"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"biopython","old_version":"1.85","new_version":"1.86","repository_url":"https://github.com/biopython/biopython"},{"name":"boto3","old_version":"1.38.18","new_version":"1.42.34","repository_url":"https://github.com/boto/boto3"},{"name":"botocore","old_version":"1.38.18","new_version":"1.42.34","repository_url":"https://github.com/boto/botocore"},{"name":"certifi","old_version":"2025.4.26","new_version":"2026.1.4","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":"cloudpathlib","old_version":"0.21.1","new_version":"0.23.0","repository_url":"https://github.com/drivendataorg/cloudpathlib"},{"name":"docutils","old_version":"0.19","new_version":"0.22.4","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"jellyfish","old_version":"1.2.0","new_version":"1.2.1"},{"name":"jmespath","old_version":"1.0.1","new_version":"1.1.0","repository_url":"https://github.com/jmespath/jmespath.py"},{"name":"markdown-it-py","old_version":"3.0.0","new_version":"4.0.0","repository_url":"https://github.com/executablebooks/markdown-it-py"},{"name":"numpy","old_version":"2.2.5","new_version":"2.4.1","repository_url":"https://github.com/numpy/numpy"},{"name":"pandas","old_version":"2.2.3","new_version":"3.0.0","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"pyarrow","old_version":"20.0.0","new_version":"23.0.0","repository_url":"https://github.com/apache/arrow"},{"name":"pyasn1","old_version":"0.6.1","new_version":"0.6.2","repository_url":"https://github.com/pyasn1/pyasn1"},{"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":"rich","old_version":"14.0.0","new_version":"14.3.1","repository_url":"https://github.com/Textualize/rich"},{"name":"rsa","old_version":"4.7.2","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"s3transfer","old_version":"0.12.0","new_version":"0.16.0","repository_url":"https://github.com/boto/s3transfer"},{"name":"structlog","old_version":"25.3.0","new_version":"25.5.0","repository_url":"https://github.com/hynek/structlog"},{"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.3","repository_url":"https://github.com/urllib3/urllib3"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"boto3-stubs","old_version":"1.38.18","new_version":"1.42.34","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"botocore-stubs","old_version":"1.38.18","new_version":"1.42.34","repository_url":"https://github.com/youtype/botocore-stubs"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"coverage","old_version":"7.8.0","new_version":"7.13.2","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cryptography","old_version":"44.0.3","new_version":"46.0.3","repository_url":"https://github.com/pyca/cryptography"},{"name":"freezegun","old_version":"1.5.1","new_version":"1.5.5","repository_url":"https://github.com/spulec/freezegun"},{"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":"moto","old_version":"5.1.4","new_version":"5.1.20","repository_url":"https://github.com/getmoto/moto"},{"name":"mypy","old_version":"1.15.0","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"mypy-boto3-s3","old_version":"1.38.0","new_version":"1.42.21","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"packaging","old_version":"25.0","new_version":"26.0","repository_url":"https://github.com/pypa/packaging"},{"name":"pycparser","old_version":"2.22","new_version":"3.0","repository_url":"https://github.com/eliben/pycparser"},{"name":"pytest","old_version":"8.3.5","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-mock","old_version":"3.14.0","new_version":"3.15.1","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"responses","old_version":"0.25.7","new_version":"0.25.8","repository_url":"https://github.com/getsentry/responses"},{"name":"ruff","old_version":"0.11.10","new_version":"0.14.14","repository_url":"https://github.com/astral-sh/ruff"},{"name":"types-awscrt","old_version":"0.27.2","new_version":"0.31.1","repository_url":"https://github.com/youtype/types-awscrt"},{"name":"types-requests","old_version":"2.32.0.20250515","new_version":"2.32.4.20260107","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-s3transfer","old_version":"0.12.0","new_version":"0.16.0","repository_url":"https://github.com/youtype/types-s3transfer"},{"name":"typing-extensions","old_version":"4.13.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.5","repository_url":"https://github.com/pallets/werkzeug"},{"name":"xmltodict","old_version":"0.14.2","new_version":"1.0.2","repository_url":"https://github.com/martinblech/xmltodict"},{"name":"alabaster","old_version":"0.7.16","new_version":"1.0.0","repository_url":"https://github.com/sphinx-doc/alabaster"},{"name":"anyio","old_version":"4.9.0","new_version":"4.12.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.14.3"},{"name":"cachecontrol","old_version":"0.14.3","new_version":"0.14.4","repository_url":"https://github.com/psf/cachecontrol"},{"name":"click","old_version":"8.2.0","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"contourpy","old_version":"1.3.2","new_version":"1.3.3","repository_url":"https://github.com/contourpy/contourpy"},{"name":"filelock","old_version":"3.18.0","new_version":"3.20.3","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"fonttools","old_version":"4.58.0","new_version":"4.61.1","repository_url":"https://github.com/fonttools/fonttools"},{"name":"furo","old_version":"2024.8.6","new_version":"2025.12.19","repository_url":"https://github.com/pradyunsg/furo"},{"name":"kiwisolver","old_version":"1.4.8","new_version":"1.4.9","repository_url":"https://github.com/nucleic/kiwi"},{"name":"matplotlib","old_version":"3.10.3","new_version":"3.10.8","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"mdit-py-plugins","old_version":"0.4.2","new_version":"0.5.0","repository_url":"https://github.com/executablebooks/mdit-py-plugins"},{"name":"more-itertools","old_version":"10.7.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"msgpack","old_version":"1.1.0","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"myst-parser","old_version":"4.0.1","new_version":"5.0.0","repository_url":"https://github.com/executablebooks/MyST-Parser"},{"name":"pillow","old_version":"11.2.1","new_version":"12.1.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.3.8","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pyparsing","old_version":"3.2.3","new_version":"3.3.2","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"ruamel-yaml","old_version":"0.18.10","new_version":"0.19.1"},{"name":"ruamel-yaml-clib","old_version":"0.2.12","new_version":"0.2.15"},{"name":"soupsieve","old_version":"2.7","new_version":"2.8.3","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"sphinx","old_version":"7.3.7","new_version":"9.0.4","repository_url":"https://github.com/sphinx-doc/sphinx"},{"name":"sphinx-autobuild","old_version":"2024.10.3","new_version":"2025.8.25","repository_url":"https://github.com/sphinx-doc/sphinx-autobuild"},{"name":"sphinx-autodoc-typehints","old_version":"2.3.0","new_version":"3.6.1","repository_url":"https://github.com/tox-dev/sphinx-autodoc-typehints"},{"name":"sphinx-jinja2-compat","old_version":"0.3.0","new_version":"0.4.1","repository_url":"https://github.com/sphinx-toolbox/sphinx-jinja2-compat"},{"name":"sphinx-prompt","old_version":"1.8.0","new_version":"1.10.2","repository_url":"https://github.com/sbrunner/sphinx-prompt"},{"name":"sphinx-tabs","old_version":"3.4.5","new_version":"3.4.7","repository_url":"https://github.com/executablebooks/sphinx-tabs"},{"name":"sphinx-toolbox","old_version":"4.0.0","new_version":"4.1.2","repository_url":"https://github.com/sphinx-toolbox/sphinx-toolbox"},{"name":"sphinxext-opengraph","old_version":"0.10.0","new_version":"0.13.0","repository_url":"https://github.com/sphinx-doc/sphinxext-opengraph"},{"name":"starlette","old_version":"0.46.2","new_version":"0.52.1","repository_url":"https://github.com/Kludex/starlette"},{"name":"uvicorn","old_version":"0.34.2","new_version":"0.40.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"watchfiles","old_version":"1.0.5","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"websockets","old_version":"15.0.1","new_version":"16.0","repository_url":"https://github.com/python-websockets/websockets"}],"path":null,"ecosystem":"pip"},"body":"Bumps the py-updates group with 83 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [awscli](https://github.com/aws/aws-cli) | `1.40.17` | `1.44.24` |\n| [polars](https://github.com/pola-rs/polars) | `1.28.1` | `1.37.1` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [biopython](https://github.com/biopython/biopython) | `1.85` | `1.86` |\n| [boto3](https://github.com/boto/boto3) | `1.38.18` | `1.42.34` |\n| [botocore](https://github.com/boto/botocore) | `1.38.18` | `1.42.34` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.4.26` | `2026.1.4` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.4` |\n| [cloudpathlib](https://github.com/drivendataorg/cloudpathlib) | `0.21.1` | `0.23.0` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.19` | `0.22.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [jellyfish](https://jellyfish.jpt.sh/) | `1.2.0` | `1.2.1` |\n| [jmespath](https://github.com/jmespath/jmespath.py) | `1.0.1` | `1.1.0` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `3.0.0` | `4.0.0` |\n| [numpy](https://github.com/numpy/numpy) | `2.2.5` | `2.4.1` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `3.0.0` |\n| [pyarrow](https://github.com/apache/arrow) | `20.0.0` | `23.0.0` |\n| [pyasn1](https://github.com/pyasn1/pyasn1) | `0.6.1` | `0.6.2` |\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| [rich](https://github.com/Textualize/rich) | `14.0.0` | `14.3.1` |\n| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.7.2` | `4.9.1` |\n| [s3transfer](https://github.com/boto/s3transfer) | `0.12.0` | `0.16.0` |\n| [structlog](https://github.com/hynek/structlog) | `25.3.0` | `25.5.0` |\n| [tzdata](https://github.com/python/tzdata) | `2025.2` | `2025.3` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.4.0` | `2.6.3` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [boto3-stubs](https://github.com/youtype/mypy_boto3_builder) | `1.38.18` | `1.42.34` |\n| [botocore-stubs](https://github.com/youtype/botocore-stubs) | `1.38.18` | `1.42.34` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.1` | `2.0.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.8.0` | `7.13.2` |\n| [cryptography](https://github.com/pyca/cryptography) | `44.0.3` | `46.0.3` |\n| [freezegun](https://github.com/spulec/freezegun) | `1.5.1` | `1.5.5` |\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| [moto](https://github.com/getmoto/moto) | `5.1.4` | `5.1.20` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.19.1` |\n| [mypy-boto3-s3](https://github.com/youtype/mypy_boto3_builder) | `1.38.0` | `1.42.21` |\n| [packaging](https://github.com/pypa/packaging) | `25.0` | `26.0` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `3.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.5` | `9.0.2` |\n| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.14.0` | `3.15.1` |\n| [responses](https://github.com/getsentry/responses) | `0.25.7` | `0.25.8` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.11.10` | `0.14.14` |\n| [types-awscrt](https://github.com/youtype/types-awscrt) | `0.27.2` | `0.31.1` |\n| [types-requests](https://github.com/typeshed-internal/stub_uploader) | `2.32.0.20250515` | `2.32.4.20260107` |\n| [types-s3transfer](https://github.com/youtype/types-s3transfer) | `0.12.0` | `0.16.0` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.2` | `4.15.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.5` |\n| [xmltodict](https://github.com/martinblech/xmltodict) | `0.14.2` | `1.0.2` |\n| [alabaster](https://github.com/sphinx-doc/alabaster) | `0.7.16` | `1.0.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.12.1` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.14.3` |\n| [cachecontrol](https://github.com/psf/cachecontrol) | `0.14.3` | `0.14.4` |\n| [click](https://github.com/pallets/click) | `8.2.0` | `8.3.1` |\n| [contourpy](https://github.com/contourpy/contourpy) | `1.3.2` | `1.3.3` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.18.0` | `3.20.3` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.58.0` | `4.61.1` |\n| [furo](https://github.com/pradyunsg/furo) | `2024.8.6` | `2025.12.19` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.4.8` | `1.4.9` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.3` | `3.10.8` |\n| [mdit-py-plugins](https://github.com/executablebooks/mdit-py-plugins) | `0.4.2` | `0.5.0` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.7.0` | `10.8.0` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [myst-parser](https://github.com/executablebooks/MyST-Parser) | `4.0.1` | `5.0.0` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `12.1.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.3.8` | `4.5.1` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.3` | `3.3.2` |\n| ruamel-yaml | `0.18.10` | `0.19.1` |\n| ruamel-yaml-clib | `0.2.12` | `0.2.15` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.8.3` |\n| [sphinx](https://github.com/sphinx-doc/sphinx) | `7.3.7` | `9.0.4` |\n| [sphinx-autobuild](https://github.com/sphinx-doc/sphinx-autobuild) | `2024.10.3` | `2025.8.25` |\n| [sphinx-autodoc-typehints](https://github.com/tox-dev/sphinx-autodoc-typehints) | `2.3.0` | `3.6.1` |\n| [sphinx-jinja2-compat](https://github.com/sphinx-toolbox/sphinx-jinja2-compat) | `0.3.0` | `0.4.1` |\n| [sphinx-prompt](https://github.com/sbrunner/sphinx-prompt) | `1.8.0` | `1.10.2` |\n| [sphinx-tabs](https://github.com/executablebooks/sphinx-tabs) | `3.4.5` | `3.4.7` |\n| [sphinx-toolbox](https://github.com/sphinx-toolbox/sphinx-toolbox) | `4.0.0` | `4.1.2` |\n| [sphinxext-opengraph](https://github.com/sphinx-doc/sphinxext-opengraph) | `0.10.0` | `0.13.0` |\n| [starlette](https://github.com/Kludex/starlette) | `0.46.2` | `0.52.1` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.34.2` | `0.40.0` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.0.5` | `1.1.1` |\n| [websockets](https://github.com/python-websockets/websockets) | `15.0.1` | `16.0` |\n\n\nUpdates `awscli` from 1.40.17 to 1.44.24\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/3af1873c23374171e0bc9a6891a361221178fd8d\"\u003e\u003ccode\u003e3af1873\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.24'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/3db4f00603a7e7a76ffc0838593db9656e72799e\"\u003e\u003ccode\u003e3db4f00\u003c/code\u003e\u003c/a\u003e Bumping version to 1.44.24\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/2c19a9fcf0f35398a280868073b4170c02f4ef5a\"\u003e\u003ccode\u003e2c19a9f\u003c/code\u003e\u003c/a\u003e Update changelog based on model updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/80d79654015909384fe93f268867f5dec1e58705\"\u003e\u003ccode\u003e80d7965\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.23'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/75d1e11e5a5e06d8dcc5637ea26091874275eb99\"\u003e\u003ccode\u003e75d1e11\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.23' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/a220ab958493ad5a52289d964546d66538ee7711\"\u003e\u003ccode\u003ea220ab9\u003c/code\u003e\u003c/a\u003e Bumping version to 1.44.23\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/c48c8ab1a19bdf5f8b3510e9948016443eb7d2e0\"\u003e\u003ccode\u003ec48c8ab\u003c/code\u003e\u003c/a\u003e Update changelog based on model updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/39e70dfeaa3a5dad7c8c49d08c64b79bc299c58c\"\u003e\u003ccode\u003e39e70df\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.22'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/094e6fa721d66f284e1466e758e32120b8594ab7\"\u003e\u003ccode\u003e094e6fa\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.22' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/4cd22ade79f67568ad66b6d406882dcd02a6fa6c\"\u003e\u003ccode\u003e4cd22ad\u003c/code\u003e\u003c/a\u003e Bumping version to 1.44.22\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aws/aws-cli/compare/1.40.17...1.44.24\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `polars` from 1.28.1 to 1.37.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pola-rs/polars/releases\"\u003epolars's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePython Polars 1.37.1\u003c/h2\u003e\n\u003ch2\u003e🚀 Performance improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up \u003ccode\u003eSQL\u003c/code\u003e interface \u0026quot;UNION\u0026quot; clauses (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26039\"\u003e#26039\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🐞 Bug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eOptimize slicing support on compressed IPC (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26071\"\u003e#26071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCPU check for musl builds (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26076\"\u003e#26076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePropagate C Stream import errors instead of panicking (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26036\"\u003e#26036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix slicing on compressed IPC (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26066\"\u003e#26066\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e📖 Documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eClarify min_by/max_by behavior on ties (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26077\"\u003e#26077\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🛠️ Other improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMark top slow normal tests as slow (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26080\"\u003e#26080\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate breaking deps (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26055\"\u003e#26055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix for upstream url bug and update deps (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26052\"\u003e#26052\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eProperly pin chrono (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26051\"\u003e#26051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't run rust doctests (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26046\"\u003e#26046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate deps (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26042\"\u003e#26042\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIgnore very slow test (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26041\"\u003e#26041\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThank you to all our contributors for making this release possible!\n\u003ca href=\"https://github.com/Voultapher\"\u003e\u003ccode\u003e@​Voultapher\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/alexander-beedie\"\u003e\u003ccode\u003e@​alexander-beedie\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/kdn36\"\u003e\u003ccode\u003e@​kdn36\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/nameexhaustion\"\u003e\u003ccode\u003e@​nameexhaustion\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/orlp\"\u003e\u003ccode\u003e@​orlp\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/ritchie46\"\u003e\u003ccode\u003e@​ritchie46\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/wtn\"\u003e\u003ccode\u003e@​wtn\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ePython Polars 1.37.0\u003c/h2\u003e\n\u003ch2\u003e🚀 Performance improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up \u003ccode\u003eSQL\u003c/code\u003e interface \u0026quot;ORDER BY\u0026quot; clauses (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26037\"\u003e#26037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd fast kernel for is_nan and use it for numpy NaN-\u0026gt;null conversion (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26034\"\u003e#26034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize ArrayFromIter implementations for ObjectArray (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25712\"\u003e#25712\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNew streaming NDJSON sink pipeline (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25948\"\u003e#25948\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNew streaming CSV sink pipeline (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25900\"\u003e#25900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDispatch partitioned usage of \u003ccode\u003esink_*\u003c/code\u003e functions to new-streaming by default (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25910\"\u003e#25910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReplace ryu with faster zmij (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25885\"\u003e#25885\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReduce memory usage for .item() count in grouped first/last (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25787\"\u003e#25787\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSkip schema inference if schema provided for \u003ccode\u003escan_csv/ndjson\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25757\"\u003e#25757\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd width-aware chunking to prevent degradation with wide data (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25764\"\u003e#25764\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse new sink pipeline for write/sink_ipc (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25746\"\u003e#25746\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReduce memory usage when scanning multiple parquet files in streaming (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25747\"\u003e#25747\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't call cluster_with_columns optimization if not needed (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25724\"\u003e#25724\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e✨ Enhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd new \u003ccode\u003epl.PartitionBy\u003c/code\u003e API (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26004\"\u003e#26004\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eArrowStreamExportable and sink_delta (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25994\"\u003e#25994\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/bb79993c3aa91d0db7d20be8f75c8075cad97067\"\u003e\u003ccode\u003ebb79993\u003c/code\u003e\u003c/a\u003e Python Polars 1.37.1 (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26078\"\u003e#26078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/26a9d097af5ea7d35f72bb8514ab990ddbce4796\"\u003e\u003ccode\u003e26a9d09\u003c/code\u003e\u003c/a\u003e chore: Mark top slow normal tests as slow (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26080\"\u003e#26080\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/451f247ba33506c9822478d0409a5075fec5797c\"\u003e\u003ccode\u003e451f247\u003c/code\u003e\u003c/a\u003e refactor(rust): Simplify \u003ccode\u003ePlPath\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26053\"\u003e#26053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/b532aad910b0fe065b9fbe648944f3a580d3d104\"\u003e\u003ccode\u003eb532aad\u003c/code\u003e\u003c/a\u003e docs: Clarify min_by/max_by behavior on ties (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26077\"\u003e#26077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/707796731ab7cf51f296a9b56a0231a5537e4259\"\u003e\u003ccode\u003e7077967\u003c/code\u003e\u003c/a\u003e fix: Optimize slicing support on compressed IPC (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26071\"\u003e#26071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/44c139746390a0b81b3e908a8a6529cc6efdea1e\"\u003e\u003ccode\u003e44c1397\u003c/code\u003e\u003c/a\u003e fix: CPU check for musl builds (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26076\"\u003e#26076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/35ec39865a1952f60f46d17e461974881844b9c1\"\u003e\u003ccode\u003e35ec398\u003c/code\u003e\u003c/a\u003e chore: Update breaking deps (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26055\"\u003e#26055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/84fa66381626dbd826e2d5a663285fb193356d64\"\u003e\u003ccode\u003e84fa663\u003c/code\u003e\u003c/a\u003e fix(python): Propagate C Stream import errors instead of panicking (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26036\"\u003e#26036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/e9e20e468cb84f966eed1e37a7b23afaf842e88f\"\u003e\u003ccode\u003ee9e20e4\u003c/code\u003e\u003c/a\u003e fix: Fix slicing on compressed IPC (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26066\"\u003e#26066\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/b0fdbd34d430d934bda9a4ca3f75e136223bd95b\"\u003e\u003ccode\u003eb0fdbd3\u003c/code\u003e\u003c/a\u003e chore: Fix for upstream url bug and update deps (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26052\"\u003e#26052\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pola-rs/polars/compare/py-1.28.1...py-1.37.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.32.3 to 2.32.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.32.5\u003c/h2\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.32.4\u003c/h2\u003e\n\u003ch2\u003e2.32.4 (2025-06-10)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2024-47081 Fixed an issue where a maliciously crafted URL and trusted\nenvironment will retrieve credentials for the wrong hostname/machine from a\nnetrc file. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6965\"\u003e#6965\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNumerous documentation improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for pypy 3.11 for Linux and macOS. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6926\"\u003e#6926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDropped support for pypy 3.9 following its end of support. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6926\"\u003e#6926\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/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.32.4 (2025-06-10)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2024-47081 Fixed an issue where a maliciously crafted URL and trusted\nenvironment will retrieve credentials for the wrong hostname/machine from a\nnetrc file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNumerous documentation improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for pypy 3.11 for Linux and macOS.\u003c/li\u003e\n\u003cli\u003eDropped support for pypy 3.9 following its end of 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/psf/requests/commit/b25c87d7cb8d6a18a37fa12442b5f883f9e41741\"\u003e\u003ccode\u003eb25c87d\u003c/code\u003e\u003c/a\u003e v2.32.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/131e506079d97606e4214cc4d87b780ac478de7a\"\u003e\u003ccode\u003e131e506\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/7010\"\u003e#7010\u003c/a\u003e from psf/dependabot/github_actions/actions/checkout-...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b336cb2bc616a63a93c6470c558fc1f576b77f90\"\u003e\u003ccode\u003eb336cb2\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/46e939b5525d9c72b677340985582b04b128478a\"\u003e\u003ccode\u003e46e939b\u003c/code\u003e\u003c/a\u003e Update publish workflow to use \u003ccode\u003eartifact-id\u003c/code\u003e instead of \u003ccode\u003ename\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/4b9c546aa3f35fca6ca24945376fe7462bb007c4\"\u003e\u003ccode\u003e4b9c546\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/6999\"\u003e#6999\u003c/a\u003e from psf/dependabot/github_actions/step-security/har...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/7618dbef01d333f23ba4b9c4d97397b06dd89cb6\"\u003e\u003ccode\u003e7618dbe\u003c/code\u003e\u003c/a\u003e Bump step-security/harden-runner from 2.12.0 to 2.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/2edca11103c1c27dd8b572dab544b7f48cf3b446\"\u003e\u003ccode\u003e2edca11\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 and drop support for Python 3.8 (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6993\"\u003e#6993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/fec96cd5976ad763e45bac9a033d62cca1877a00\"\u003e\u003ccode\u003efec96cd\u003c/code\u003e\u003c/a\u003e Update Makefile rules (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6996\"\u003e#6996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/d58d8aa2f45c3575268d6d5250745ef69f9cf8b7\"\u003e\u003ccode\u003ed58d8aa\u003c/code\u003e\u003c/a\u003e docs: clarify timeout parameter uses seconds in Session.request (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6994\"\u003e#6994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/91a3eabd3dcc4d7f36dd8249e4777a90ef9b4305\"\u003e\u003ccode\u003e91a3eab\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action from 3.28.5 to 3.29.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.32.3...v2.32.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `biopython` from 1.85 to 1.86\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/biopython/biopython/blob/master/NEWS.rst\"\u003ebiopython's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e28 October 2025: Biopython 1.86\u003c/h1\u003e\n\u003cp\u003eThis release of Biopython supports Python 3.10, 3.11, 3.12, 3.13 and 3.14.  It\nhas also been tested on PyPy3.10 v7.3.19.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.SearchIO\u003c/code\u003e now supports parsing the tabular and plain text output of\n\u003ccode\u003eInfernal \u0026lt;http://eddylab.org/infernal/\u0026gt;\u003c/code\u003e (v1.0.0+) RNA search tool. The\nformat names are \u003ccode\u003einfernal-tab\u003c/code\u003e and \u003ccode\u003einfernal-text\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThe default value of the gap score of a \u003ccode\u003ePairwiseAligner\u003c/code\u003e object was changed\nin this release.  Previously, for consistency with \u003ccode\u003eBio.pairwise2\u003c/code\u003e, the\ndefault value for gap score was 0.  However, this means that a mismatch, an\ninsertion followed by a deletion, and a deletion followed by an insertion all\nget assigned a score of 0.  The aligner then finds a large number of alignments\nthat are logically the same, but have trivial differences between them.  For\nexample, aligning AAACAAA to AAAGAAA previously yielded the following three\nalignments, all with score 6::\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e AAACAAA        AAAC-AAA        AAA-CAAA\n AAAGAAA        AAA-GAAA        AAAG-AAA\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eWith the new default parameter for the gap score, only the first alignment is\nreturned.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.PDBIO\u003c/code\u003e now ensures that b-factor values are always at most 6 characters to\nensure that we do not violate the wwPDB specification. This should not have an impact\non the majority of uses, as b-factor values are generally small (less than 100). When\n1000 \u0026lt;= b-factor \u0026lt; 10_000, the value is rounded to a single decimal place. When,\n10_000 \u0026lt;= b-factor \u0026lt; 999_999, the value is rounded to zero decimal places. Values\nabove 999_999 are now clamped. The justification for this is the rise in the b-factor\nfield being used for additional metadata, typically from computational tools.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.Align\u003c/code\u003e now provides a method \u003ccode\u003eAlignment.from_alignments_with_same_reference\u003c/code\u003e\nto construct a multiple sequence alignment from a collection of alignments\nthat share the same reference sequence.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.PDBIO\u003c/code\u003e will now raise module specific warnings:\n\u003ccode\u003eBio.PDB.PDBExceptions.PDBIOWarning\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.SCADIO\u003c/code\u003e now supports object selection by color in the OpenSCAD\noutput file.  This enables generation of separate STL files for each color for\nprinting protein structures on multi-material 3D printers.\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003eiplotx\u003c/code\u003e library is mentioned in the Tutorial as an option to visualise\ntrees using complex style options.\u003c/p\u003e\n\u003cp\u003eMany thanks to the Biopython developers and community for making this release\npossible, especially the following contributors:\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\u003eSee full diff in \u003ca href=\"https://github.com/biopython/biopython/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.18 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.18...1.42.34\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `botocore` from 1.38.18 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/botocore/commit/d52e6ce4372810dc3a0d6701b366f54add0aedae\"\u003e\u003ccode\u003ed52e6ce\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.34'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/fce5268f1cd4063f30e3faec44da7efa309cae5f\"\u003e\u003ccode\u003efce5268\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.34\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/45e43f9baa8c57d13eb75d7566f1401366a1a188\"\u003e\u003ccode\u003e45e43f9\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/b9ed58fa2f31170724538f6ed86e8cbf833de8fd\"\u003e\u003ccode\u003eb9ed58f\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.33'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/48062d233b8173af5af60afb85443e04c6520146\"\u003e\u003ccode\u003e48062d2\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/botocore/commit/8eb5ab6cd38ba8d94d938fac2e6086bd918760dc\"\u003e\u003ccode\u003e8eb5ab6\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.33\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/05b651e910c4b59a971a2566afb4b82a51fb00fc\"\u003e\u003ccode\u003e05b651e\u003c/code\u003e\u003c/a\u003e Update endpoints model\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/aba67690e5aa14f58083dfa168d7fc09681c884a\"\u003e\u003ccode\u003eaba6769\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/3549e0136b656df25e985bdb85233f95da5851d3\"\u003e\u003ccode\u003e3549e01\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.32'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/0847d5e023fd0f7d0e19a154ee22a46e8f56bc38\"\u003e\u003ccode\u003e0847d5e\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/botocore/compare/1.38.18...1.42.34\"\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 2026.1.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\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\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/27ca98ad845ee6d130a88301622c137893f71620\"\u003e\u003ccode\u003e27ca98a\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7.0.9 to 7.0.11 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/56c59a63909cfd3162b37e7bc16956e64df0f737\"\u003e\u003ccode\u003e56c59a6\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.0 to 6.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ae0021cd43a77bfba67d20a041469cdf6996570e\"\u003e\u003ccode\u003eae0021c\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.0.0 to 6.1.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/380\"\u003e#380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddf5d0b5d2a3d55fd92a79f141dbb5e074caf924\"\u003e\u003ccode\u003eddf5d0b\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5.0.1 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.04.26...2026.01.04\"\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 `cloudpathlib` from 0.21.1 to 0.23.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/drivendataorg/cloudpathlib/releases\"\u003ecloudpathlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.23.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14 (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/529\"\u003e#529\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/530\"\u003e#530\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eChanged \u003ccode\u003eCloudPath.copy\u003c/code\u003e to have the first parameter named \u003ccode\u003etarget\u003c/code\u003e instead of \u003ccode\u003edestination\u003c/code\u003e and added new \u003ccode\u003efollow_symlinks\u003c/code\u003e and \u003ccode\u003epreserve_metadata\u003c/code\u003e kwargs. \u003cstrong\u003eBreaking change for users that relied on the first parameter being named \u003ccode\u003edestination\u003c/code\u003e instead of \u003ccode\u003etarget\u003c/code\u003e.\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.copy_into\u003c/code\u003e to copy a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move\u003c/code\u003e to move a file or directory to another location.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move_into\u003c/code\u003e to move a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPathInfo\u003c/code\u003e and \u003ccode\u003eCloudPath.info\u003c/code\u003e to get information about a file or directory.\u003c/li\u003e\n\u003cli\u003eAdded additional no-op kwargs to \u003ccode\u003emkdir\u003c/code\u003e, \u003ccode\u003etouch\u003c/code\u003e, \u003ccode\u003eglob\u003c/code\u003e, \u003ccode\u003erglob\u003c/code\u003e, \u003ccode\u003estat\u003c/code\u003e to match pathlib.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.22.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed issue with GS credentials, using default auth enables a wider set of authentication methods in GS (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/390\"\u003e#390\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/514\"\u003e#514\u003c/a\u003e, thanks \u003ca href=\"https://github.com/ljyanesm\"\u003e\u003ccode\u003e@​ljyanesm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for http(s) urls with \u003ccode\u003eHttpClient\u003c/code\u003e, \u003ccode\u003eHttpPath\u003c/code\u003e, \u003ccode\u003eHttpsClient\u003c/code\u003e, and \u003ccode\u003eHttpsPath\u003c/code\u003e. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/455\"\u003e#455\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/468\"\u003e#468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded experimental support for patching the builtins \u003ccode\u003eopen\u003c/code\u003e, \u003ccode\u003eos\u003c/code\u003e, \u003ccode\u003eos.path\u003c/code\u003e, and \u003ccode\u003eglob\u003c/code\u003e to work with \u003ccode\u003eCloudPath\u003c/code\u003e objects. It is off by default; see the new \u0026quot;Compatibility\u0026quot; section in the docs for more information. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/128\"\u003e#128\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003eCloudPath(*parts)\u003c/code\u003e to create a \u003ccode\u003eCloudPath\u003c/code\u003e object from a list of parts (to match \u003ccode\u003epathlib.Path\u003c/code\u003e). \u003cstrong\u003eThis is a potentially breaking change for users that relied on the second arg being the \u003ccode\u003eclient\u003c/code\u003e instead of making it an explicit kwarg.\u003c/strong\u003e (PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\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/drivendataorg/cloudpathlib/blob/master/HISTORY.md\"\u003ecloudpathlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.23.0 (2025-10-07)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14 (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/529\"\u003e#529\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/530\"\u003e#530\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eChanged \u003ccode\u003eCloudPath.copy\u003c/code\u003e to have the first parameter named \u003ccode\u003etarget\u003c/code\u003e instead of \u003ccode\u003edestination\u003c/code\u003e and added new \u003ccode\u003efollow_symlinks\u003c/code\u003e and \u003ccode\u003epreserve_metadata\u003c/code\u003e kwargs. \u003cstrong\u003eBreaking change for users that relied on the first parameter being named \u003ccode\u003edestination\u003c/code\u003e instead of \u003ccode\u003etarget\u003c/code\u003e.\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.copy_into\u003c/code\u003e to copy a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move\u003c/code\u003e to move a file or directory to another location.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move_into\u003c/code\u003e to move a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPathInfo\u003c/code\u003e and \u003ccode\u003eCloudPath.info\u003c/code\u003e to get information about a file or directory.\u003c/li\u003e\n\u003cli\u003eAdded additional no-op kwargs to \u003ccode\u003emkdir\u003c/code\u003e, \u003ccode\u003etouch\u003c/code\u003e, \u003ccode\u003eglob\u003c/code\u003e, \u003ccode\u003erglob\u003c/code\u003e, \u003ccode\u003estat\u003c/code\u003e to match pathlib.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.22.0 (2025-08-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed issue with GS credentials, using default auth enables a wider set of authentication methods in GS (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/390\"\u003e#390\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/514\"\u003e#514\u003c/a\u003e, thanks \u003ca href=\"https://github.com/ljyanesm\"\u003e\u003ccode\u003e@​ljyanesm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for http(s) urls with \u003ccode\u003eHttpClient\u003c/code\u003e, \u003ccode\u003eHttpPath\u003c/code\u003e, \u003ccode\u003eHttpsClient\u003c/code\u003e, and \u003ccode\u003eHttpsPath\u003c/code\u003e. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/455\"\u003e#455\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/468\"\u003e#468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded experimental support for patching the builtins \u003ccode\u003eopen\u003c/code\u003e, \u003ccode\u003eos\u003c/code\u003e, \u003ccode\u003eos.path\u003c/code\u003e, and \u003ccode\u003eglob\u003c/code\u003e to work with \u003ccode\u003eCloudPath\u003c/code\u003e objects. It is off by default; see the new \u0026quot;Compatibility\u0026quot; section in the docs for more information. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/128\"\u003e#128\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003eCloudPath(*parts)\u003c/code\u003e to create a \u003ccode\u003eCloudPath\u003c/code\u003e object from a list of parts (to match \u003ccode\u003epathlib.Path\u003c/code\u003e). \u003cstrong\u003eThis is a potentially breaking change for users that relied on the second arg being the \u003ccode\u003eclient\u003c/code\u003e instead of making it an explicit kwarg.\u003c/strong\u003e (PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\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/drivendataorg/cloudpathlib/commit/28f1d943078517262d045ae50136edf27a5298a1\"\u003e\u003ccode\u003e28f1d94\u003c/code\u003e\u003c/a\u003e WIP Support 3.14 (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/530\"\u003e#530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/fec5918d6725e9f1f52bee003528f4f854454980\"\u003e\u003ccode\u003efec5918\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish in /.github/workflows (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/e7900023bf4b32b70ca5b2d798f9ce52187582f8\"\u003e\u003ccode\u003ee790002\u003c/code\u003e\u003c/a\u003e version bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/bb1f1e4cb5eba0928cec2aaff30cb0f5ace1f108\"\u003e\u003ccode\u003ebb1f1e4\u003c/code\u003e\u003c/a\u003e WIP: Patch open, os and os.path builtins (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/12005505fc29ab4183968022a487416a31b1a1bd\"\u003e\u003ccode\u003e1200550\u003c/code\u003e\u003c/a\u003e Refactor GS authentication to use default credentials (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/526\"\u003e#526\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/b21cac14f0090021594f7e3afae9c48f5d7dbd46\"\u003e\u003ccode\u003eb21cac1\u003c/code\u003e\u003c/a\u003e Implement HTTP(s) support (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/468\"\u003e#468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/863e884cbf1cf141cdf7bf9c0623e0cd3d27841d\"\u003e\u003ccode\u003e863e884\u003c/code\u003e\u003c/a\u003e fix for azure typing differences (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/524\"\u003e#524\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/65c5c012bd4297ce4e812cfb8bbf9827db346e03\"\u003e\u003ccode\u003e65c5c01\u003c/code\u003e\u003c/a\u003e Set pytest-cases\u0026gt;=3.9.1 (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/520\"\u003e#520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/drivendataorg/cloudpathlib/compare/v0.21.1...v0.23.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `docutils` from 0.19 to 0.22.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/rtfd/recommonmark/commits\"\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 `jellyfish` from 1.2.0 to 1.2.1\n\nUpdates `jmespath` from 1.0.1 to 1.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jmespath/jmespath.py/blob/develop/CHANGELOG.rst\"\u003ejmespath's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.1.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix concurrency issue with cache\n(\u003ccode\u003epr [#335](https://github.com/jmespath/jmespath.py/issues/335) \u0026lt;https://github.com/jmespath/jmespath.py/pull/335\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.12-3.14 (\u003ccode\u003epr [#331](https://github.com/jmespath/jmespath.py/issues/331) \u0026lt;https://github.com/jmespath/jmespath.py/pull/331\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eRemoved support for Python 3.7-3.8 (\u003ccode\u003epr [#335](https://github.com/jmespath/jmespath.py/issues/335) \u0026lt;https://github.com/jmespath/jmespath.py/pull/335\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/jmespath/jmespath.py/commit/6ff419a8b171d055a9bfc6904605bceb8b7a80ef\"\u003e\u003ccode\u003e6ff419a\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.1.0'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/17e964f81911b49babb33e8697b34a31f869420f\"\u003e\u003ccode\u003e17e964f\u003c/code\u003e\u003c/a\u003e Bump version to 1.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/5ce13aab582ba08b07e1c615feeb3654a7cd8d62\"\u003e\u003ccode\u003e5ce13aa\u003c/code\u003e\u003c/a\u003e Merge branch 'v1.1.0' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/d8f0457f8f962724b2c1ae12f79d3ba65edf4d82\"\u003e\u003ccode\u003ed8f0457\u003c/code\u003e\u003c/a\u003e Revert versions back to current version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/8cb30825f62675f6018b812faa9e2c9566eba2e3\"\u003e\u003ccode\u003e8cb3082\u003c/code\u003e\u003c/a\u003e 1.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/6e379910c1bc0ec0339b05da73e32cad9d3dddbc\"\u003e\u003ccode\u003e6e37991\u003c/code\u003e\u003c/a\u003e Update permissions in codeql.yml workflow (\u003ca href=\"https://redirect.github.com/jmespath/jmespath.py/issues/338\"\u003e#338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/141734d98ac79c165ec31aa1c18dd29efc45ac49\"\u003e\u003ccode\u003e141734d\u003c/code\u003e\u003c/a\u003e Bring .github settings up-to-date (\u003ca href=\"https://redirect.github.com/jmespath/jmespath.py/issues/336\"\u003e#336\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/07e30cf011056386c3dade2502a53eb2b1d4b3c1\"\u003e\u003ccode\u003e07e30cf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jmespath/jmespath.py/issues/337\"\u003e#337\u003c/a\u003e from nateprewitt/python_changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/9170711017c2be9e3057a384e4a6061ef71bdc6f\"\u003e\u003ccode\u003e9170711\u003c/code\u003e\u003c/a\u003e Add missing changelog entries for Python support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmespath/jmespath.py/commit/cdb9327fd597dda1aff703e6e5b98d79503c6f4e\"\u003e\u003ccode\u003ecdb9327\u003c/code\u003e\u003c/a\u003e Fix file encoding for Windows\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jmespath/jmespath.py/compare/1.0.1...1.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `markdown-it-py` from 3.0.0 to 4.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/markdown-it-py/releases\"\u003emarkdown-it-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eThis primarily drops support for Python 3.8 and 3.9, adds support for Python 3.13,\nand updates the parser to comply with Commonmark 0.31.2 and Markdown-It v14.1.0.\u003c/p\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Drop Python 3.8, test 3.13 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/342\"\u003eexecutablebooks/markdown-it-py#342\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Drop support for Python 3.9 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/360\"\u003eexecutablebooks/markdown-it-py#360\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Comply with Commonmark 0.31.2 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/362\"\u003eexecutablebooks/markdown-it-py#362\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👌 Improve performance of \u0026quot;text\u0026quot; inline rule by \u003ca href=\"https://github.com/hukkin\"\u003e\u003ccode\u003e@​hukkin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/347\"\u003eexecutablebooks/markdown-it-py#347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Use \u003ccode\u003estr.removesuffix\u003c/code\u003e by \u003ca href=\"https://github.com/hukkin\"\u003e\u003ccode\u003e@​hukkin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/348\"\u003eexecutablebooks/markdown-it-py#348\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 limit the number of autocompleted cells in a table by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/364\"\u003eexecutablebooks/markdown-it-py#364\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 fix quadratic complexity in reference parser by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/367\"\u003eexecutablebooks/markdown-it-py#367\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix emphasis inside raw links bugs by \u003ca href=\"https://github.com/tsutsu3\"\u003e\u003ccode\u003e@​tsutsu3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/320\"\u003eexecutablebooks/markdown-it-py#320\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔧 Replace black and isort with ruff formatter by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/313\"\u003eexecutablebooks/markdown-it-py#313\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Fixed Code Style paragraph still referring to flake8 by \u003ca href=\"https://github.com/venthur\"\u003e\u003ccode\u003e@​venthur\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/309\"\u003eexecutablebooks/markdown-it-py#309\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Add \u0026quot;store_labels\u0026quot; to OptionsType by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/343\"\u003eexecutablebooks/markdown-it-py#343\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Move \u003ccode\u003ecode_style\u003c/code\u003e to dependency group by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/344\"\u003eexecutablebooks/markdown-it-py#344\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Update codecov action by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/345\"\u003eexecutablebooks/markdown-it-py#345\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Update pre-commit and upload-artifact by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/359\"\u003eexecutablebooks/markdown-it-py#359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Improve spec update script by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/361\"\u003eexecutablebooks/markdown-it-py#361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 simplify logic in scanDelims by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/365\"\u003eexecutablebooks/markdown-it-py#365\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 Add CI testing for Python 3.12 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/303\"\u003eexecutablebooks/markdown-it-py#303\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 Fix codecov by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/332\"\u003eexecutablebooks/markdown-it-py#332\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📚 Fix typo by \u003ca href=\"https://github.com/bwagner\"\u003e\u003ccode\u003e@​bwagner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/315\"\u003eexecutablebooks/markdown-it-py#315\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix RTD build by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/322\"\u003eexecutablebooks/markdown-it-py#322\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Fix a few old URLs by \u003ca href=\"https://github.com/elijahgreenstein\"\u003e\u003ccode\u003e@​elijahgreenstein\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/358\"\u003eexecutablebooks/markdown-it-py#358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Improve README by \u003ca href=\"https://github.com/mrmurilo75\"\u003e\u003ccode\u003e@​mrmurilo75\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/340\"\u003eexecutablebooks/markdown-it-py#340\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix CI badge link by \u003ca href=\"https://github.com/tsutsu3\"\u003e\u003ccode\u003e@​tsutsu3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/291\"\u003eexecutablebooks/markdown-it-py#291\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Update docs by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/292\"\u003eexecutablebooks/markdown-it-py#292\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Add icon to readme by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/293\"\u003eexecutablebooks/markdown-it-py#293\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Update icon by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/294\"\u003eexecutablebooks/markdown-it-py#294\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Clarify docs regarding security configuration by \u003ca href=\"https://github.com/djramones\"\u003e\u003ccode\u003e@​djramones\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/296\"\u003eexecutablebooks/markdown-it-py#296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix the RTD build by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/311\"\u003eexecutablebooks/markdown-it-py#311\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Fix typos by \u003ca href=\"https://github.com/elijahgreenstein\"\u003e\u003ccode\u003e@​elijahgreenstein\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/366\"\u003eexecutablebooks/markdown-it-py#366\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- 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/executablebooks/markdown-it-py/blob/master/CHANGELOG.md\"\u003emarkdown-it-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.0.0 - 2024-08-10\u003c/h2\u003e\n\u003cp\u003eThis primarily drops support for Python 3.9, adds support for Python 3.13,\nand updates the parser to comply with Commonmark 0.31.2 and Markdown-It v14.1.0.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Drop support for Python 3.9 in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/360\"\u003e#360\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Comply with Commonmark 0.31.2 in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/362\"\u003e#362\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Improve performance of \u0026quot;text\u0026quot; inline rule in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/347\"\u003e#347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Use \u003ccode\u003estr.removesuffix\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/348\"\u003e#348\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 limit the number of autocompleted cells in a table in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/364\"\u003e#364\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 fix quadratic complexity in reference parser in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/367\"\u003e#367\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 Fix emphasis inside raw links bugs in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/320\"\u003e#320\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.0\"\u003ehttps://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.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/executablebooks/markdown-it-py/commit/c62983f1554124391b47170180e6c62df4d476ca\"\u003e\u003ccode\u003ec62983f\u003c/code\u003e\u003c/a\u003e 🚀 RELEASE v4.0.0 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/368\"\u003e#368\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/9e93bd554147ffb8582581e14620c7611103d2ff\"\u003e\u003ccode\u003e9e93bd5\u003c/code\u003e\u003c/a\u003e 👌 fix quadratic complexity in reference parser (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/da45c8764b2077425c091fa1811bbb1c5f211bd1\"\u003e\u003ccode\u003eda45c87\u003c/code\u003e\u003c/a\u003e 📚 DOCS: Fix typos (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/87b16e272bf8207182084e07a63253b98fc437d7\"\u003e\u003ccode\u003e87b16e2\u003c/code\u003e\u003c/a\u003e 🔧 simplify logic in scanDelims (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/365\"\u003e#365\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/e4009641db528444b85d384af815e9cad997a016\"\u003e\u003ccode\u003ee400964\u003c/code\u003e\u003c/a\u003e 👌 limit the number of autocompleted cells in a table (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/364\"\u003e#364\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/4535d77edcb5f51450a266135687eeae8bcc5033\"\u003e\u003ccode\u003e4535d77\u003c/code\u003e\u003c/a\u003e ⬆️ Comply with Commonmark 0.31.2 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/8eb20ac1cb63e09dcd78e84a0c71dab8446bb73c\"\u003e\u003ccode\u003e8eb20ac\u003c/code\u003e\u003c/a\u003e 🔧 Improve spec update script (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/361\"\u003e#361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/fb9d3ab646e4f752dc8fd52e1dd7613c350ff190\"\u003e\u003ccode\u003efb9d3ab\u003c/code\u003e\u003c/a\u003e ⬆️ Drop support for Python 3.9 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/360\"\u003e#360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/9ffe841832d33264201aaff120349f001a02953a\"\u003e\u003ccode\u003e9ffe841\u003c/code\u003e\u003c/a\u003e 📚 DOCS: Fix a few old URLs (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/154fe43feb17947e2c933d0bb3e26618129909a8\"\u003e\u003ccode\u003e154fe43\u003c/code\u003e\u003c/a\u003e 🔧 Update pre-commit and upload-artifact (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `numpy` from 2.2.5 to 2.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/numpy/numpy/releases\"\u003enumpy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.1 (Jan 10, 2026)\u003c/h2\u003e\n\u003ch1\u003eNumPy 2.4.1 Release Notes\u003c/h1\u003e\n\u003cp\u003eThe NumPy 2.4.1 is a patch release that fixes bugs discoved after the\n2.4.0 release. In particular, the typo \u003ccode\u003eSeedlessSequence\u003c/code\u003e is preserved to\nenable wheels using the random Cython API and built against NumPy \u0026lt; 2.4.0\nto run without errors.\u003c/p\u003e\n\u003cp\u003eThis release supports Python versions 3.11-3.14\u003c/p\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003eA total of 9 people contributed to this release. People with a \u0026quot;+\u0026quot; by their\nnames contributed a patch for the first time.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAlexander Shadchin\u003c/li\u003e\n\u003cli\u003eBill Tompkins +\u003c/li\u003e\n\u003cli\u003eCharles Harris\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eMarten van Kerkwijk\u003c/li\u003e\n\u003cli\u003eNathan Goldbaum\u003c/li\u003e\n\u003cli\u003eRaghuveer Devulapalli\u003c/li\u003e\n\u003cli\u003eRalf Gommers\u003c/li\u003e\n\u003cli\u003eSebastian Berg\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePull requests merged\u003c/h2\u003e\n\u003cp\u003eA total of 15 pull requests were merged for this release.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30490\"\u003e#30490\u003c/a\u003e: MAINT: Prepare 2.4.x for further development\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30503\"\u003e#30503\u003c/a\u003e: DOC: \u003ccode\u003enumpy.select\u003c/code\u003e: fix \u003ccode\u003edefault\u003c/code\u003e parameter docstring...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30504\"\u003e#30504\u003c/a\u003e: REV: Revert part of \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30164\"\u003e#30164\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30500\"\u003e#30500\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30506\"\u003e#30506\u003c/a\u003e: TYP: \u003ccode\u003enumpy.select\u003c/code\u003e: allow passing array-like \u003ccode\u003edefault\u003c/code\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30507\"\u003e#30507\u003c/a\u003e: MNT: use if constexpr for compile-time branch selection\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30513\"\u003e#30513\u003c/a\u003e: BUG: Fix leak i...\n\n_Description has been truncated_","html_url":"https://github.com/reichlab/cladetime/pull/190","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/reichlab%2Fcladetime/issues/190","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/190/packages"}},{"old_version":"1.17.1","new_version":"2.0.0","update_type":"major","path":null,"pr_created_at":"2026-01-25T22:13:17.000Z","version_change":"1.17.1 → 2.0.0","issue":{"uuid":"3853936727","node_id":"PR_kwDOEkpJIs6_Q62l","number":205,"state":"open","title":"Bump the dependencies group across 1 directory with 65 updates","user":"dependabot[bot]","labels":["skip-changelog","dependabot-deps-updates"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-25T22:13:17.000Z","updated_at":"2026-02-02T00:01:30.944Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"dependencies","update_count":65,"packages":[{"name":"ansible-compat","old_version":"24.10.0","new_version":"25.12.0","repository_url":"https://github.com/ansible/ansible-compat"},{"name":"argparse-manpage","old_version":"4.6","new_version":"4.7","repository_url":"https://github.com/praiskup/argparse-manpage"},{"name":"asttokens","old_version":"3.0.0","new_version":"3.0.1","repository_url":"https://github.com/gristlabs/asttokens"},{"name":"attrs","old_version":"25.3.0","new_version":"25.4.0","repository_url":"https://github.com/sponsors/hynek"},{"name":"backrefs","old_version":"5.8","new_version":"6.1","repository_url":"https://github.com/facelessuser/backrefs"},{"name":"bracex","old_version":"2.5.post1","new_version":"2.6","repository_url":"https://github.com/facelessuser/bracex"},{"name":"cachetools","old_version":"6.0.0","new_version":"6.2.5","repository_url":"https://github.com/tkem/cachetools"},{"name":"certifi","old_version":"2025.6.15","new_version":"2026.1.4","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.4.2","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":"coverage","old_version":"7.9.1","new_version":"7.13.2","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cryptography","old_version":"45.0.4","new_version":"46.0.3","repository_url":"https://github.com/pyca/cryptography"},{"name":"distlib","old_version":"0.3.9","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"exceptiongroup","old_version":"1.3.0","new_version":"1.3.1","repository_url":"https://github.com/agronholm/exceptiongroup"},{"name":"execnet","old_version":"2.1.1","new_version":"2.1.2","repository_url":"https://github.com/pytest-dev/execnet"},{"name":"executing","old_version":"2.2.0","new_version":"2.2.1","repository_url":"https://github.com/alexmojaki/executing"},{"name":"filelock","old_version":"3.18.0","new_version":"3.20.3","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"gitpython","old_version":"3.1.44","new_version":"3.1.46","repository_url":"https://github.com/gitpython-developers/GitPython"},{"name":"griffe","old_version":"1.7.3","new_version":"1.15.0","repository_url":"https://github.com/mkdocstrings/griffe"},{"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":"importlib-resources","old_version":"5.0.7","new_version":"6.5.2","repository_url":"https://github.com/python/importlib_resources"},{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"ipython","old_version":"8.18.1","new_version":"9.9.0","repository_url":"https://github.com/ipython/ipython"},{"name":"jsonschema","old_version":"4.24.0","new_version":"4.26.0","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"jsonschema-specifications","old_version":"2025.4.1","new_version":"2025.9.1","repository_url":"https://github.com/python-jsonschema/jsonschema-specifications"},{"name":"markdown","old_version":"3.8","new_version":"3.10.1","repository_url":"https://github.com/Python-Markdown/markdown"},{"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":"matplotlib-inline","old_version":"0.1.7","new_version":"0.2.1","repository_url":"https://github.com/ipython/matplotlib-inline"},{"name":"mkdocs-autorefs","old_version":"1.4.2","new_version":"1.4.3","repository_url":"https://github.com/mkdocstrings/autorefs"},{"name":"mkdocs-git-revision-date-localized-plugin","old_version":"1.4.7","new_version":"1.5.0","repository_url":"https://github.com/timvink/mkdocs-git-revision-date-localized-plugin"},{"name":"mkdocs-material","old_version":"9.6.14","new_version":"9.7.1","repository_url":"https://github.com/squidfunk/mkdocs-material"},{"name":"mkdocstrings","old_version":"0.29.1","new_version":"1.0.2","repository_url":"https://github.com/mkdocstrings/mkdocstrings"},{"name":"mkdocstrings-python","old_version":"1.16.12","new_version":"2.0.1","repository_url":"https://github.com/mkdocstrings/python"},{"name":"molecule","old_version":"6.0.3","new_version":"25.12.0","repository_url":"https://github.com/ansible-community/molecule"},{"name":"packaging","old_version":"25.0","new_version":"26.0","repository_url":"https://github.com/pypa/packaging"},{"name":"parso","old_version":"0.8.4","new_version":"0.8.5","repository_url":"https://github.com/davidhalter/parso"},{"name":"pathspec","old_version":"0.12.1","new_version":"1.0.3","repository_url":"https://github.com/cpburnz/python-pathspec"},{"name":"pbr","old_version":"6.1.1","new_version":"7.0.3"},{"name":"pillow","old_version":"11.2.1","new_version":"12.1.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.3.8","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"prompt-toolkit","old_version":"3.0.51","new_version":"3.0.52","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"psutil","old_version":"7.0.0","new_version":"7.2.1","repository_url":"https://github.com/giampaolo/psutil"},{"name":"pycparser","old_version":"2.22","new_version":"3.0","repository_url":"https://github.com/eliben/pycparser"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pymdown-extensions","old_version":"10.15","new_version":"10.20.1","repository_url":"https://github.com/facelessuser/pymdown-extensions"},{"name":"pyproject-api","old_version":"1.9.1","new_version":"1.10.0","repository_url":"https://github.com/tox-dev/pyproject-api"},{"name":"pytest","old_version":"8.4.0","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-plus","old_version":"0.7.0","new_version":"0.8.1","repository_url":"https://github.com/pytest-dev/pytest-plus"},{"name":"pytest-sugar","old_version":"1.0.0","new_version":"1.1.1","repository_url":"https://github.com/Teemu/pytest-sugar"},{"name":"pytest-xdist","old_version":"3.7.0","new_version":"3.8.0","repository_url":"https://github.com/pytest-dev/pytest-xdist"},{"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":"requests","old_version":"2.32.4","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"rich","old_version":"14.0.0","new_version":"14.3.1","repository_url":"https://github.com/Textualize/rich"},{"name":"rpds-py","old_version":"0.25.1","new_version":"0.30.0","repository_url":"https://github.com/crate-py/rpds"},{"name":"setproctitle","old_version":"1.3.6","new_version":"1.3.7","repository_url":"https://github.com/dvarrazzo/py-setproctitle"},{"name":"termcolor","old_version":"3.1.0","new_version":"3.3.0","repository_url":"https://github.com/termcolor/termcolor"},{"name":"tinycss2","old_version":"1.4.0","new_version":"1.5.1","repository_url":"https://github.com/Kozea/tinycss2"},{"name":"tomli","old_version":"2.2.1","new_version":"2.4.0","repository_url":"https://github.com/hukkin/tomli"},{"name":"urllib3","old_version":"2.4.0","new_version":"2.6.3","repository_url":"https://github.com/urllib3/urllib3"},{"name":"wcmatch","old_version":"10.0","new_version":"10.1","repository_url":"https://github.com/facelessuser/wcmatch"},{"name":"wcwidth","old_version":"0.2.13","new_version":"0.3.5","repository_url":"https://github.com/jquast/wcwidth"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dependencies group with 65 updates in the /.config directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ansible-compat](https://github.com/ansible/ansible-compat) | `24.10.0` | `25.12.0` |\n| [argparse-manpage](https://github.com/praiskup/argparse-manpage) | `4.6` | `4.7` |\n| [asttokens](https://github.com/gristlabs/asttokens) | `3.0.0` | `3.0.1` |\n| [attrs](https://github.com/sponsors/hynek) | `25.3.0` | `25.4.0` |\n| [backrefs](https://github.com/facelessuser/backrefs) | `5.8` | `6.1` |\n| [bracex](https://github.com/facelessuser/bracex) | `2.5.post1` | `2.6` |\n| [cachetools](https://github.com/tkem/cachetools) | `6.0.0` | `6.2.5` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.6.15` | `2026.1.4` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.1` | `2.0.0` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.9.1` | `7.13.2` |\n| [cryptography](https://github.com/pyca/cryptography) | `45.0.4` | `46.0.3` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.9` | `0.4.0` |\n| [exceptiongroup](https://github.com/agronholm/exceptiongroup) | `1.3.0` | `1.3.1` |\n| [execnet](https://github.com/pytest-dev/execnet) | `2.1.1` | `2.1.2` |\n| [executing](https://github.com/alexmojaki/executing) | `2.2.0` | `2.2.1` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.18.0` | `3.20.3` |\n| [gitpython](https://github.com/gitpython-developers/GitPython) | `3.1.44` | `3.1.46` |\n| [griffe](https://github.com/mkdocstrings/griffe) | `1.7.3` | `1.15.0` |\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| [importlib-resources](https://github.com/python/importlib_resources) | `5.0.7` | `6.5.2` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.0` |\n| [ipython](https://github.com/ipython/ipython) | `8.18.1` | `9.9.0` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.24.0` | `4.26.0` |\n| [jsonschema-specifications](https://github.com/python-jsonschema/jsonschema-specifications) | `2025.4.1` | `2025.9.1` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.8` | `3.10.1` |\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| [matplotlib-inline](https://github.com/ipython/matplotlib-inline) | `0.1.7` | `0.2.1` |\n| [mkdocs-autorefs](https://github.com/mkdocstrings/autorefs) | `1.4.2` | `1.4.3` |\n| [mkdocs-git-revision-date-localized-plugin](https://github.com/timvink/mkdocs-git-revision-date-localized-plugin) | `1.4.7` | `1.5.0` |\n| [mkdocs-material](https://github.com/squidfunk/mkdocs-material) | `9.6.14` | `9.7.1` |\n| [mkdocstrings](https://github.com/mkdocstrings/mkdocstrings) | `0.29.1` | `1.0.2` |\n| [mkdocstrings-python](https://github.com/mkdocstrings/python) | `1.16.12` | `2.0.1` |\n| [molecule](https://github.com/ansible-community/molecule) | `6.0.3` | `25.12.0` |\n| [packaging](https://github.com/pypa/packaging) | `25.0` | `26.0` |\n| [parso](https://github.com/davidhalter/parso) | `0.8.4` | `0.8.5` |\n| [pathspec](https://github.com/cpburnz/python-pathspec) | `0.12.1` | `1.0.3` |\n| [pbr](https://docs.openstack.org/pbr/latest/) | `6.1.1` | `7.0.3` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `12.1.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.3.8` | `4.5.1` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.51` | `3.0.52` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.2.1` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `3.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) | `10.15` | `10.20.1` |\n| [pyproject-api](https://github.com/tox-dev/pyproject-api) | `1.9.1` | `1.10.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.0` | `9.0.2` |\n| [pytest-plus](https://github.com/pytest-dev/pytest-plus) | `0.7.0` | `0.8.1` |\n| [pytest-sugar](https://github.com/Teemu/pytest-sugar) | `1.0.0` | `1.1.1` |\n| [pytest-xdist](https://github.com/pytest-dev/pytest-xdist) | `3.7.0` | `3.8.0` |\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| [requests](https://github.com/psf/requests) | `2.32.4` | `2.32.5` |\n| [rich](https://github.com/Textualize/rich) | `14.0.0` | `14.3.1` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.25.1` | `0.30.0` |\n| [setproctitle](https://github.com/dvarrazzo/py-setproctitle) | `1.3.6` | `1.3.7` |\n| [termcolor](https://github.com/termcolor/termcolor) | `3.1.0` | `3.3.0` |\n| [tinycss2](https://github.com/Kozea/tinycss2) | `1.4.0` | `1.5.1` |\n| [tomli](https://github.com/hukkin/tomli) | `2.2.1` | `2.4.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.4.0` | `2.6.3` |\n| [wcmatch](https://github.com/facelessuser/wcmatch) | `10.0` | `10.1` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.2.13` | `0.3.5` |\n\n\nUpdates `ansible-compat` from 24.10.0 to 25.12.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ansible/ansible-compat/releases\"\u003eansible-compat's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev25.12.0\u003c/h2\u003e\n\u003ch2\u003eMaintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd platform version check (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/548\"\u003e#548\u003c/a\u003e) \u003ca href=\"https://github.com/cidrblock\"\u003e\u003ccode\u003e@​cidrblock\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/547\"\u003e#547\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/546\"\u003e#546\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: Temporarily disable tombi schema.strict for pyproject.toml (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/545\"\u003e#545\u003c/a\u003e) \u003ca href=\"https://github.com/alisonlhart\"\u003e\u003ccode\u003e@​alisonlhart\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/544\"\u003e#544\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev25.11.0\u003c/h2\u003e\n\u003ch2\u003eMaintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/543\"\u003e#543\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/542\"\u003e#542\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/540\"\u003e#540\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/539\"\u003e#539\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd finalize workflow for secure sonarcloud checks (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/538\"\u003e#538\u003c/a\u003e) \u003ca href=\"https://github.com/alisonlhart\"\u003e\u003ccode\u003e@​alisonlhart\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate sonar-project.properties configuration (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/536\"\u003e#536\u003c/a\u003e) \u003ca href=\"https://github.com/alisonlhart\"\u003e\u003ccode\u003e@​alisonlhart\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/537\"\u003e#537\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: tell uv to use unreleased ansible-core when running with py314 (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/535\"\u003e#535\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/534\"\u003e#534\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003epre-commit-ci[bot]\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev25.8.2\u003c/h2\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: add support for python 3.14 (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/533\"\u003e#533\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: remove tox.ini and adopt pep-735 (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/526\"\u003e#526\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMaintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/532\"\u003e#532\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: hooks update (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/531\"\u003e#531\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/530\"\u003e#530\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/529\"\u003e#529\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/527\"\u003e#527\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: configure renovate (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/524\"\u003e#524\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: update hooks (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/525\"\u003e#525\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 to 5 (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/515\"\u003e#515\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev25.8.1\u003c/h2\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRestore \u003ccode\u003eansible-lint\u0026lt;25.8.1\u003c/code\u003e behaviour for \u003ccode\u003eansible-lint\u0026lt;25.8.1\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/520\"\u003e#520\u003c/a\u003e) \u003ca href=\"https://github.com/cidrblock\"\u003e\u003ccode\u003e@​cidrblock\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev25.8.0\u003c/h2\u003e\n\u003ch2\u003eEnhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump the dependencies group in /.config with 5 updates (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/507\"\u003e#507\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump markdown-exec from 1.10.3 to 1.11.0 in /.config in the dependencies group (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/506\"\u003e#506\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the dependencies group across 1 directory with 3 updates (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/505\"\u003e#505\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/601b6905c7c7819efb1f2c820a853827b835ec4f\"\u003e\u003ccode\u003e601b690\u003c/code\u003e\u003c/a\u003e Add platform version check (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/548\"\u003e#548\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/f8de21d2a42ba53679a6baba96773249b5205174\"\u003e\u003ccode\u003ef8de21d\u003c/code\u003e\u003c/a\u003e chore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/547\"\u003e#547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/bc972b8146943335a592600c59f1a03d3979cedf\"\u003e\u003ccode\u003ebc972b8\u003c/code\u003e\u003c/a\u003e chore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/546\"\u003e#546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/2a54adab4035b398a0bba671da981816cbf3b8f9\"\u003e\u003ccode\u003e2a54ada\u003c/code\u003e\u003c/a\u003e chore: Temporarily disable tombi schema.strict for pyproject.toml (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/545\"\u003e#545\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/384ce35dbf27ca74b0f92b751b93c25633e2d8d4\"\u003e\u003ccode\u003e384ce35\u003c/code\u003e\u003c/a\u003e chore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/544\"\u003e#544\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/4900c15e756d60c214fb059cf735f5d34770731c\"\u003e\u003ccode\u003e4900c15\u003c/code\u003e\u003c/a\u003e chore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/543\"\u003e#543\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/523a99d720a809a346a55474fa1deaaaa78ef8da\"\u003e\u003ccode\u003e523a99d\u003c/code\u003e\u003c/a\u003e chore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/542\"\u003e#542\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/77ff6e6bab69662edc408d3fb4e1134c4ce69e81\"\u003e\u003ccode\u003e77ff6e6\u003c/code\u003e\u003c/a\u003e chore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/540\"\u003e#540\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/44a2e5c015c003712b2aea4ee43dde012507c5b1\"\u003e\u003ccode\u003e44a2e5c\u003c/code\u003e\u003c/a\u003e chore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/539\"\u003e#539\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/b4dc1bb2583c23ceb221f906fe3352c943cafd56\"\u003e\u003ccode\u003eb4dc1bb\u003c/code\u003e\u003c/a\u003e Add finalize workflow for secure sonarcloud checks (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/538\"\u003e#538\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ansible/ansible-compat/compare/v24.10.0...v25.12.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `argparse-manpage` from 4.6 to 4.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/praiskup/argparse-manpage/releases\"\u003eargparse-manpage's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eargparse-manpage v4.7\u003c/h2\u003e\n\u003cp\u003eNews in v4.7\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003esys.stdout used instead of /dev/stdout\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003efixed build compatibility with newer setuptools\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003efixed deprecation warnings for datetime and setuptools\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003enew compat method for handling SOURCE_DATE_EPOCH\u003c/p\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/praiskup/argparse-manpage/blob/main/NEWS\"\u003eargparse-manpage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cpre\u003e\u003ccode\u003e\nWARNING: The 'build_manpage' setup.py command will be removed v5\nWARNING: We'll drop the Python 2.7 support in v5\n\u003cp\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eNews in v4.7\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003esys.stdout used instead of /dev/stdout\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003efixed build compatibility with newer setuptools\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003efixed deprecation warnings for datetime and setuptools\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003enew compat method for handling SOURCE_DATE_EPOCH\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre\u003e\u003ccode\u003e\nNews in v4.6\n\u003cul\u003e\n\u003cli\u003eFix the build against Python 3.13\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eNews in v4.5\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWe newly provide \u003ccode\u003ebuild_manpages.build_py\u003c/code\u003e and \u003ccode\u003ebuild_manpages.install\u003c/code\u003e\ncommand classes that are re-usable from \u003ccode\u003epyproject.toml\u003c/code\u003e.  No need to\nprovide \u003ccode\u003esetup.py\u003c/code\u003e because of \u003ccode\u003eargparse-manpage\u003c/code\u003e.  Solved issue#85.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre\u003e\u003ccode\u003e\nNews in v4.4\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003eprog=\u003c/code\u003e specifier (in setup.py/setup.cfg/pyproject.toml) is now\u003cbr /\u003e\nbetter handled so it doesn't conflict with ArgumentParser(prog=..).\u003cbr /\u003e\nFixes \u003ca href=\"https://redirect.github.com/praiskup/argparse-manpage/issues/79\"\u003epraiskup/argparse-manpage#79\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNews in v4.3\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe pyproject.toml parsing feature now depends on the python3-tomli library\u003cbr /\u003e\ninstead of python-toml for \u0026quot;python_environment \u0026gt;3, \u0026lt;=3.10\u0026quot;.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eNews in v4.2\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for pyproject.toml specification of manpages added.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/7883becca340aa3ea124143e032848a7b2bdf84b\"\u003e\u003ccode\u003e7883bec\u003c/code\u003e\u003c/a\u003e Release v4.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/765389ed4ee835c09451823d7fbfe22b0dc1674a\"\u003e\u003ccode\u003e765389e\u003c/code\u003e\u003c/a\u003e Move the SOURCE_DATE_EPOCH hack on one place\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/a06ed9c1f03360f8089819c8e845cd670687eb64\"\u003e\u003ccode\u003ea06ed9c\u003c/code\u003e\u003c/a\u003e ci: fix RPM build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/c985432ee15824c43c75548c7ec1bd6f105a7f22\"\u003e\u003ccode\u003ec985432\u003c/code\u003e\u003c/a\u003e Fix deprecation warnings for datetime and setuptools\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/306658941368ff0c2dfe2e4fa29b889fb5bbeb2b\"\u003e\u003ccode\u003e3066589\u003c/code\u003e\u003c/a\u003e ci: fedora-tox update list of environments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/b3a2c50e2abc47bd822d848864a80e35251a3147\"\u003e\u003ccode\u003eb3a2c50\u003c/code\u003e\u003c/a\u003e ci: enable ruff \u0026amp; bump deps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/6dc54a5272e70b081af728958fd7554a6b0372f3\"\u003e\u003ccode\u003e6dc54a5\u003c/code\u003e\u003c/a\u003e Fix compatibility with newer setuptools\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/29f89bba536cf28f6ed66721367ff2ee3f6209b7\"\u003e\u003ccode\u003e29f89bb\u003c/code\u003e\u003c/a\u003e Fix some comments about sys.argv alteration for usage message\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/ade76cc8ef49ec804955c6b4027dbae52d482034\"\u003e\u003ccode\u003eade76cc\u003c/code\u003e\u003c/a\u003e Use sys.stdout instead of /dev/stdout\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/praiskup/argparse-manpage/compare/v4.6...v4.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asttokens` from 3.0.0 to 3.0.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/bdbf396fc0e006912ba82f1137dfd6b2d5aa9af2\"\u003e\u003ccode\u003ebdbf396\u003c/code\u003e\u003c/a\u003e Update mypy; add 3.14 to the CI; drop python 3.8 support (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/167\"\u003e#167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/f859c055e8453650e1987c5aefaaec36582d3a07\"\u003e\u003ccode\u003ef859c05\u003c/code\u003e\u003c/a\u003e Add tests for astroid v2, v3, and v4 to the CI (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/166\"\u003e#166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/84ef059ba28d08816d3d881e363b9ed42bbeae3a\"\u003e\u003ccode\u003e84ef059\u003c/code\u003e\u003c/a\u003e Adapt asttokens for astroid 4.x (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/165\"\u003e#165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/9db9335648659520c7c8453bc39550fa4f95d539\"\u003e\u003ccode\u003e9db9335\u003c/code\u003e\u003c/a\u003e Various links improvements (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3371ebf7f48f6a731d409fffd6ba235e6a95d85b\"\u003e\u003ccode\u003e3371ebf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/161\"\u003e#161\u003c/a\u003e from gristlabs/dependabot/pip/docs/requests-2.32.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3a60115d3efdb01efc8a6442b59fdd0071518e70\"\u003e\u003ccode\u003e3a60115\u003c/code\u003e\u003c/a\u003e Bump requests from 2.32.2 to 2.32.4 in /docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/584b51c6c084455ad4597886657783d1b661ddfa\"\u003e\u003ccode\u003e584b51c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/160\"\u003e#160\u003c/a\u003e from gristlabs/dependabot/pip/docs/urllib3-2.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3e9d703323ce94987bf9e030bd010eae13fa15b4\"\u003e\u003ccode\u003e3e9d703\u003c/code\u003e\u003c/a\u003e Bump urllib3 from 2.2.2 to 2.5.0 in /docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/64d3f7c3637775fef832a9a9cdb78ec02da494e6\"\u003e\u003ccode\u003e64d3f7c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/158\"\u003e#158\u003c/a\u003e from gristlabs/dependabot/pip/docs/jinja2-3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/9b5fb1abfb171cfb1f01c2d996cbd31e9d1f0660\"\u003e\u003ccode\u003e9b5fb1a\u003c/code\u003e\u003c/a\u003e Bump jinja2 from 3.1.4 to 3.1.6 in /docs\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gristlabs/asttokens/compare/v3.0.0...v3.0.1\"\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 `backrefs` from 5.8 to 6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facelessuser/backrefs/releases\"\u003ebackrefs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Include Unicode 17 zip for early Python 3.15 usage, though Python 3.15 functionality is not guaranteed.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Fix issues with regex imports in later versions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e6.0.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Fix a regression that created an ASCII binary property that would override the ASCII block property.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e6.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: POSIX character classes will now always use POSIX compatibility rules instead of Unicode standard rules,\nif any are specified in the Unicode specification. The affected character classes are: \u003ccode\u003e[[:alnum:]]\u003c/code\u003e, \u003ccode\u003e[[:digit:]]\u003c/code\u003e,\n\u003ccode\u003e[[:xdigit:]]\u003c/code\u003e, and  \u003ccode\u003e[[:punct:]]\u003c/code\u003e. To explicitly use standard Unicode rules for these compatibility properties, use\nthe Unicode property form instead: \u003ccode\u003e[\\p{Alnum}]\u003c/code\u003e, \u003ccode\u003e[\\p{Digit}]\u003c/code\u003e, \u003ccode\u003e[\\p{Punct}]\u003c/code\u003e, or \u003ccode\u003e[\\p{XDigit}]\u003c/code\u003e. This has changed\nto ensure no confusion for users expecting compatible POSIX style character class properties.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Scoped ASCII/Unicode flags (\u003ccode\u003e(?a:pattern)\u003c/code\u003e/\u003ccode\u003e(?u:pattern)\u003c/code\u003e) should be respected for Unicode properties in\n\u003ccode\u003ebre\u003c/code\u003e and will ensure ASCII or Unicode range if used.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Fix issues related to detecting disabled scoped flags.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e5.9\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Add support for Python 3.14.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eENHANCE\u003c/strong\u003e: Switch to deploying with PyPI's \u0026quot;Trusted Publisher\u0026quot;.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/da5453e08f49292b8cc2acab099816819de6c56e\"\u003e\u003ccode\u003eda5453e\u003c/code\u003e\u003c/a\u003e Remove build badge\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/30c281210b1dd417ccb7eb3f8e009acf49aad923\"\u003e\u003ccode\u003e30c2812\u003c/code\u003e\u003c/a\u003e Update docs to use zensical (\u003ca href=\"https://redirect.github.com/facelessuser/backrefs/issues/194\"\u003e#194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/e66f6c4ce60f847680e6c604ec17df6caad538cc\"\u003e\u003ccode\u003ee66f6c4\u003c/code\u003e\u003c/a\u003e Fix import of regex stuff\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/12062282532c41f94fabff589c82db00b86def86\"\u003e\u003ccode\u003e1206228\u003c/code\u003e\u003c/a\u003e Include Unicode 17 zip for Python 3.15 early access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/23738f0d07dcc57c4ca863e412aef63be0060fe5\"\u003e\u003ccode\u003e23738f0\u003c/code\u003e\u003c/a\u003e Fix codec warning is Unicode download script\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/63f8a4b14750828b7c1e385844fd36f6f89859e4\"\u003e\u003ccode\u003e63f8a4b\u003c/code\u003e\u003c/a\u003e Fix grammar\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/7f4bf611e6e7fcc2aa4e0eba2872b5f51b7fc908\"\u003e\u003ccode\u003e7f4bf61\u003c/code\u003e\u003c/a\u003e Rework POSIX alias\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/956df5f387f1958110e5a7cf2a98d42a8309d9b6\"\u003e\u003ccode\u003e956df5f\u003c/code\u003e\u003c/a\u003e Fix ASCII block regression\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/7a948f083c3c87114a8dd87c95dff1893f3af82a\"\u003e\u003ccode\u003e7a948f0\u003c/code\u003e\u003c/a\u003e Clean up code and add more comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/9b2e406be36c1e0fc72651adbc7d2d63c4151483\"\u003e\u003ccode\u003e9b2e406\u003c/code\u003e\u003c/a\u003e Add more flag tests\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facelessuser/backrefs/compare/5.8...6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bracex` from 2.5.post1 to 2.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facelessuser/bracex/releases\"\u003ebracex's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.6\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\u003c/ul\u003e\n\u003c/blockquote\u003e\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/bracex/commit/6d109c55372f0d5086adb7cf84a951cc06391a69\"\u003e\u003ccode\u003e6d109c5\u003c/code\u003e\u003c/a\u003e Add trusted publishing and support for Python 3.14 (\u003ca href=\"https://redirect.github.com/facelessuser/bracex/issues/44\"\u003e#44\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/bracex/commit/c14d46fb495a8fdcd0ec51d4dd42aa587807407d\"\u003e\u003ccode\u003ec14d46f\u003c/code\u003e\u003c/a\u003e Add security policy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/bracex/commit/14645af4bf4de0e1abe4fd6c29bf98871f549273\"\u003e\u003ccode\u003e14645af\u003c/code\u003e\u003c/a\u003e Typos: remove duplicate words\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/facelessuser/bracex/compare/2.5.post1...2.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cachetools` from 6.0.0 to 6.2.5\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.5 (2026-01-25)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eImprove documentation regarding \u003ccode\u003e@cachedmethod\u003c/code\u003e with \u003ccode\u003elock\u003c/code\u003e\nparameter.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd test cases for cache stampede scenarios.\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.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\u003cp\u003ev6.2.0 (2025-08-25)\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/tkem/cachetools/commit/7158a30fa78b601f8d7958085bd2c0faaa045823\"\u003e\u003ccode\u003e7158a30\u003c/code\u003e\u003c/a\u003e Release v6.2.5.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/c9e3e267692980e99123506b63a156f999cd1278\"\u003e\u003ccode\u003ec9e3e26\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/379\"\u003e#379\u003c/a\u003e: Improve \u003ca href=\"https://github.com/cachedmethod\"\u003e\u003ccode\u003e@​cachedmethod\u003c/code\u003e\u003c/a\u003e example by using a lock.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/d99c023ad24c831638a321c0314f8ac24d23751f\"\u003e\u003ccode\u003ed99c023\u003c/code\u003e\u003c/a\u003e Bump copyright year.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/5a87ee037cfab209b0e9ad7c30bf6c9bdc2b3e97\"\u003e\u003ccode\u003e5a87ee0\u003c/code\u003e\u003c/a\u003e Add test cases for cache stampede scenarios.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/2e166d1348fe2e6e0e05aa68760687660034e6b6\"\u003e\u003ccode\u003e2e166d1\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.0 to 6.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/9c9f9e5843f24580f957d29ce09bef214037896c\"\u003e\u003ccode\u003e9c9f9e5\u003c/code\u003e\u003c/a\u003e Bump codecov/codecov-action from 5.5.1 to 5.5.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/b8bec4af4a94a78306a2076384ccfd48b8c2e056\"\u003e\u003ccode\u003eb8bec4a\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/tkem/cachetools/issues/345\"\u003e#345\u003c/a\u003e: Add GitHub pull request template.\u003c/li\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\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tkem/cachetools/compare/v6.0.0...v6.2.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2025.6.15 to 2026.1.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\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\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/27ca98ad845ee6d130a88301622c137893f71620\"\u003e\u003ccode\u003e27ca98a\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7.0.9 to 7.0.11 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/56c59a63909cfd3162b37e7bc16956e64df0f737\"\u003e\u003ccode\u003e56c59a6\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.0 to 6.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ae0021cd43a77bfba67d20a041469cdf6996570e\"\u003e\u003ccode\u003eae0021c\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.0.0 to 6.1.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/380\"\u003e#380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddf5d0b5d2a3d55fd92a79f141dbb5e074caf924\"\u003e\u003ccode\u003eddf5d0b\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5.0.1 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.06.15...2026.01.04\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cffi` from 1.17.1 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only) - huge thanks to the folks at Quansight Labs for all the work to get this one sorted!\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.0.0b1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only).\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/6366c01d84e9a78e7e85f12ebe9760ba5d19b6d3\"\u003e\u003ccode\u003e6366c01\u003c/code\u003e\u003c/a\u003e release 2.0.0 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/95c847663aec401e4003927a274e4de9b8595f4f\"\u003e\u003ccode\u003e95c8476\u003c/code\u003e\u003c/a\u003e 2.0.0 post beta backports (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/195cbda66b6be9297ef6d584644e50cfdcca4e8a\"\u003e\u003ccode\u003e195cbda\u003c/code\u003e\u003c/a\u003e Release 2.0.0b1 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b4bbe7940d3f76027534db1aecbae9b61c35221a\"\u003e\u003ccode\u003eb4bbe79\u003c/code\u003e\u003c/a\u003e fix version test to support beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/7ed073de66e713cf791b6fdfa23685c81fdfd6ad\"\u003e\u003ccode\u003e7ed073d\u003c/code\u003e\u003c/a\u003e Add support for the free-threaded build (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/178\"\u003e#178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/67a170dc7972dc9361743690b38da3d963b200ef\"\u003e\u003ccode\u003e67a170d\u003c/code\u003e\u003c/a\u003e Change the license from MIT to MIT-no-attribution, which is the same without ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/92645ec9329feb03e3fa86240b40fe0fc37469d1\"\u003e\u003ccode\u003e92645ec\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support/testing (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/177\"\u003e#177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/2b81170583a898478a6996c9705d8c38ab7f73a1\"\u003e\u003ccode\u003e2b81170\u003c/code\u003e\u003c/a\u003e doc: update test commands in Section Testing/development tips (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/25172b84cf51cf58241f074ccd1efd9c7648cb43\"\u003e\u003ccode\u003e25172b8\u003c/code\u003e\u003c/a\u003e doc: update year (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b57a92c03eb2078a99c900519a37d18b4d52324f\"\u003e\u003ccode\u003eb57a92c\u003c/code\u003e\u003c/a\u003e issue 147: force-compute nested structs before parent structs.  Occurs mainly...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.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 `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 `coverage` from 7.9.1 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.9.1...7.13.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cryptography` from 45.0.4 to 46.0.3\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\u003e46.0.3 - 2025-10-15\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Fixed compilation when using LibreSSL 4.2.0.\n\u003cp\u003e.. _v46-0-2:\u003c/p\u003e\n\u003cp\u003e46.0.2 - 2025-09-30\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.4.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v46-0-1:\u003c/p\u003e\n\u003cp\u003e46.0.1 - 2025-09-16\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Fixed an issue where users installing via ``pip`` on Python 3.14 development\n  versions would not properly install a dependency.\n* Fixed an issue building the free-threaded macOS 3.14 wheels.\n\u003cp\u003e.. _v46-0-0:\u003c/p\u003e\n\u003cp\u003e46.0.0 - 2025-09-16\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Support for Python 3.7 has been removed.\u003c/li\u003e\n\u003cli\u003eSupport for OpenSSL \u0026lt; 3.0 is deprecated and will be removed in the next\nrelease.\u003c/li\u003e\n\u003cli\u003eSupport for \u003ccode\u003ex86_64\u003c/code\u003e macOS (including publishing wheels) is deprecated\nand will be removed in two releases. We will switch to publishing an\n\u003ccode\u003earm64\u003c/code\u003e only wheel for macOS.\u003c/li\u003e\n\u003cli\u003eSupport for 32-bit Windows (including publishing wheels) is deprecated\nand will be removed in two releases. Users should move to a 64-bit\nPython installation.\u003c/li\u003e\n\u003cli\u003eUpdated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.3.\u003c/li\u003e\n\u003cli\u003eWe now build \u003ccode\u003eppc64le\u003c/code\u003e \u003ccode\u003emanylinux\u003c/code\u003e wheels and publish them to PyPI.\u003c/li\u003e\n\u003cli\u003eWe now build \u003ccode\u003ewin_arm64\u003c/code\u003e (Windows on Arm) wheels and publish them to PyPI.\u003c/li\u003e\n\u003cli\u003eAdded support for free-threaded Python 3.14.\u003c/li\u003e\n\u003cli\u003eRemoved the deprecated \u003ccode\u003eget_attribute_for_oid\u003c/code\u003e method on\n:class:\u003ccode\u003e~cryptography.x509.CertificateSigningRequest\u003c/code\u003e. Users should use\n:meth:\u003ccode\u003e~cryptography.x509.Attributes.get_attribute_for_oid\u003c/code\u003e instead.\u003c/li\u003e\n\u003cli\u003eRemoved the deprecated \u003ccode\u003eCAST5\u003c/code\u003e, \u003ccode\u003eSEED\u003c/code\u003e, \u003ccode\u003eIDEA\u003c/code\u003e, and \u003ccode\u003eBlowfish\u003c/code\u003e\nclasses from the cipher module. These are still available in\n:doc:\u003ccode\u003e/hazmat/decrepit/index\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eIn X.509, when performing a PSS signature with a SHA-3 hash, it is now\nencoded with the official NIST SHA3 OID.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v45-0-7:\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/pyca/cryptography/commit/c0af4dd7b75921bbe9f1d41a03dbd4b64a9e3403\"\u003e\u003ccode\u003ec0af4dd\u003c/code\u003e\u003c/a\u003e release 46.0.3 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13681\"\u003e#13681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/99efe5ad150a56efadafacaffd0e3ee319373904\"\u003e\u003ccode\u003e99efe5a\u003c/code\u003e\u003c/a\u003e bump version for 46.0.2 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13531\"\u003e#13531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e735cfc27502320101c130335c556394a125ba52\"\u003e\u003ccode\u003ee735cfc\u003c/code\u003e\u003c/a\u003e release 46.0.1 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13450\"\u003e#13450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/4e457ffba43a6d87efc63c33041e2081438dd8a4\"\u003e\u003ccode\u003e4e457ff\u003c/code\u003e\u003c/a\u003e Explicitly specify python in mac uv build invocation (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13447\"\u003e#13447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/2726efdb6d67f1c90cf9c6062d9fe051965586f8\"\u003e\u003ccode\u003e2726efd\u003c/code\u003e\u003c/a\u003e Depend on CFFI 2.0.0 or newer on Python \u0026gt; 3.8 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13448\"\u003e#13448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/62230623d183706632c0eb7822c96ac95e3710a8\"\u003e\u003ccode\u003e6223062\u003c/code\u003e\u003c/a\u003e release 46.0.0 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13446\"\u003e#13446\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/563c4915b0931455706f761a4579c26698824eae\"\u003e\u003ccode\u003e563c491\u003c/code\u003e\u003c/a\u003e Update comment for pyopenssl-release tag (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13445\"\u003e#13445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/d2f6f7faced35b73277bc624ff496f8af696b172\"\u003e\u003ccode\u003ed2f6f7f\u003c/code\u003e\u003c/a\u003e Bump downstream dependencies in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13439\"\u003e#13439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e7ab02bd679d0b4f55d93486fe27e62554ef15d4\"\u003e\u003ccode\u003ee7ab02b\u003c/code\u003e\u003c/a\u003e we'll ship this with 3.5.3 why not (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13442\"\u003e#13442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/0b68a4bffb61202e4d4f5074cd30c2b9d15f429e\"\u003e\u003ccode\u003e0b68a4b\u003c/code\u003e\u003c/a\u003e Another pair of bump dependencies fix (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13444\"\u003e#13444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/cryptography/compare/45.0.4...46.0.3\"\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.9 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\"...\n\n_Description has been truncated_","html_url":"https://github.com/pycontribs/subprocess-tee/pull/205","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/pycontribs%2Fsubprocess-tee/issues/205","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/205/packages"}},{"old_version":"1.17.0","new_version":"2.0.0","update_type":"major","path":null,"pr_created_at":"2026-01-25T03:57:14.000Z","version_change":"1.17.0 → 2.0.0","issue":{"uuid":"3852512447","node_id":"PR_kwDOHR9vV86_Miyr","number":503,"state":"open","title":"chore(deps): bump the dependencies group across 1 directory with 107 updates","user":"dependabot[bot]","labels":["skip-changelog","major","chore"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-25T03:57:14.000Z","updated_at":"2026-02-12T14:02:23.388Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"dependencies","update_count":107,"packages":[{"name":"aiofiles","old_version":"24.1.0","new_version":"25.1.0","repository_url":"https://github.com/Tinche/aiofiles"},{"name":"aiohappyeyeballs","old_version":"2.4.0","new_version":"2.6.1","repository_url":"https://github.com/aio-libs/aiohappyeyeballs"},{"name":"aioitertools","old_version":"0.12.0","new_version":"0.13.0","repository_url":"https://github.com/omnilib/aioitertools"},{"name":"aiokafka","old_version":"0.11.0","new_version":"0.12.0","repository_url":"https://github.com/aio-libs/aiokafka"},{"name":"aiosignal","old_version":"1.3.1","new_version":"1.4.0","repository_url":"https://github.com/aio-libs/aiosignal"},{"name":"ansible-builder","old_version":"3.1.0","new_version":"3.1.1","repository_url":"https://github.com/ansible/ansible-builder"},{"name":"ansible-compat","old_version":"24.8.0","new_version":"24.10.0","repository_url":"https://github.com/ansible/ansible-compat"},{"name":"ansible-pygments","old_version":"0.1.1","new_version":"0.1.2","repository_url":"https://github.com/ansible-community/ansible-pygments"},{"name":"ansible-runner","old_version":"2.4.0","new_version":"2.4.2","repository_url":"https://github.com/ansible/ansible-runner"},{"name":"antsibull-changelog","old_version":"0.29.0","new_version":"0.35.0","repository_url":"https://github.com/ansible-community/antsibull-changelog"},{"name":"antsibull-core","old_version":"3.0.2","new_version":"3.5.0","repository_url":"https://github.com/ansible-community/antsibull-core"},{"name":"antsibull-docs","old_version":"2.13.1","new_version":"2.24.0","repository_url":"https://github.com/ansible-community/antsibull-docs"},{"name":"antsibull-docs-parser","old_version":"1.1.0","new_version":"1.2.2","repository_url":"https://github.com/ansible-community/antsibull-docs-parser"},{"name":"async-timeout","old_version":"4.0.3","new_version":"5.0.1","repository_url":"https://github.com/aio-libs/async-timeout"},{"name":"azure-core","old_version":"1.30.2","new_version":"1.38.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"babel","old_version":"2.16.0","new_version":"2.17.0","repository_url":"https://github.com/python-babel/babel"},{"name":"bindep","old_version":"2.11.0","new_version":"2.13.0"},{"name":"black","old_version":"24.8.0","new_version":"25.11.0","repository_url":"https://github.com/psf/black"},{"name":"botocore","old_version":"1.35.7","new_version":"1.42.34","repository_url":"https://github.com/boto/botocore"},{"name":"bracex","old_version":"2.5","new_version":"2.6","repository_url":"https://github.com/facelessuser/bracex"},{"name":"build","old_version":"1.2.1","new_version":"1.4.0","repository_url":"https://github.com/pypa/build"},{"name":"cachetools","old_version":"5.5.0","new_version":"6.2.4","repository_url":"https://github.com/tkem/cachetools"},{"name":"certifi","old_version":"2024.8.30","new_version":"2026.1.4","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"1.17.0","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.3.2","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.7","new_version":"8.1.8","repository_url":"https://github.com/pallets/click"},{"name":"cryptography","old_version":"43.0.1","new_version":"46.0.3","repository_url":"https://github.com/pyca/cryptography"},{"name":"distlib","old_version":"0.3.8","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"docutils","old_version":"0.20.1","new_version":"0.22.4","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"drools-jpy","old_version":"0.3.9","new_version":"0.3.14","repository_url":"https://github.com/ansible/drools_jpy"},{"name":"exceptiongroup","old_version":"1.2.2","new_version":"1.3.1","repository_url":"https://github.com/agronholm/exceptiongroup"},{"name":"filelock","old_version":"3.15.4","new_version":"3.19.1","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"frozenlist","old_version":"1.4.1","new_version":"1.8.0","repository_url":"https://github.com/aio-libs/frozenlist"},{"name":"galaxy-importer","old_version":"0.4.24","new_version":"0.4.37","repository_url":"https://github.com/ansible/galaxy-importer"},{"name":"gitdb","old_version":"4.0.11","new_version":"4.0.12","repository_url":"https://github.com/gitpython-developers/gitdb"},{"name":"gitpython","old_version":"3.1.43","new_version":"3.1.46","repository_url":"https://github.com/gitpython-developers/GitPython"},{"name":"idna","old_version":"3.8","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"importlib-metadata","old_version":"6.2.1","new_version":"8.7.1","repository_url":"https://github.com/python/importlib_metadata"},{"name":"importlib-resources","old_version":"5.0.7","new_version":"6.5.2","repository_url":"https://github.com/python/importlib_resources"},{"name":"iniconfig","old_version":"2.0.0","new_version":"2.1.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"isodate","old_version":"0.6.1","new_version":"0.7.2","repository_url":"https://github.com/gweis/isodate"},{"name":"janus","old_version":"1.0.0","new_version":"2.0.0","repository_url":"https://github.com/aio-libs/janus"},{"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.0.2","new_version":"4.4.0","repository_url":"https://github.com/jaraco/jaraco.functools"},{"name":"jinja2","old_version":"3.1.4","new_version":"3.1.6","repository_url":"https://github.com/pallets/jinja"},{"name":"jmespath","old_version":"1.0.1","new_version":"1.1.0","repository_url":"https://github.com/jmespath/jmespath.py"},{"name":"jpy","old_version":"0.18.0","new_version":"1.3.0","repository_url":"https://github.com/jpy-consortium/jpy"},{"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":"2023.12.1","new_version":"2025.9.1","repository_url":"https://github.com/python-jsonschema/jsonschema-specifications"},{"name":"keyring","old_version":"25.3.0","new_version":"25.7.0","repository_url":"https://github.com/jaraco/keyring"},{"name":"markdown","old_version":"3.7","new_version":"3.9","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"markupsafe","old_version":"2.1.5","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"mdit-py-plugins","old_version":"0.4.1","new_version":"0.4.2","repository_url":"https://github.com/executablebooks/mdit-py-plugins"},{"name":"mock","old_version":"5.1.0","new_version":"5.2.0","repository_url":"https://github.com/testing-cabal/mock"},{"name":"more-itertools","old_version":"10.4.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"multidict","old_version":"6.0.5","new_version":"6.7.0","repository_url":"https://github.com/aio-libs/multidict"},{"name":"mypy-extensions","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/python/mypy_extensions"},{"name":"nh3","old_version":"0.2.18","new_version":"0.3.2","repository_url":"https://github.com/messense/nh3"},{"name":"packaging","old_version":"24.1","new_version":"26.0","repository_url":"https://github.com/pypa/packaging"},{"name":"pathspec","old_version":"0.12.1","new_version":"1.0.3","repository_url":"https://github.com/cpburnz/python-pathspec"},{"name":"pbr","old_version":"6.1.0","new_version":"7.0.3"},{"name":"perky","old_version":"0.9.2","new_version":"0.9.3","repository_url":"https://github.com/larryhastings/perky"},{"name":"pip","old_version":"24.2","new_version":"25.3","repository_url":"https://github.com/pypa/pip"},{"name":"pkginfo","old_version":"1.10.0","new_version":"1.12.1.2"},{"name":"platformdirs","old_version":"4.2.2","new_version":"4.4.0","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":"psycopg","old_version":"3.1.18","new_version":"3.2.13","repository_url":"https://github.com/psycopg/psycopg"},{"name":"psycopg-binary","old_version":"3.1.18","new_version":"3.2.13","repository_url":"https://github.com/psycopg/psycopg"},{"name":"psycopg-pool","old_version":"3.2.2","new_version":"3.2.8","repository_url":"https://github.com/psycopg/psycopg"},{"name":"pycodestyle","old_version":"2.11.1","new_version":"2.14.0","repository_url":"https://github.com/PyCQA/pycodestyle"},{"name":"pycparser","old_version":"2.22","new_version":"2.23","repository_url":"https://github.com/eliben/pycparser"},{"name":"pydantic","old_version":"2.8.2","new_version":"2.12.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-core","old_version":"2.20.1","new_version":"2.41.5","repository_url":"https://github.com/pydantic/pydantic-core"},{"name":"pyflakes","old_version":"3.1.0","new_version":"3.4.0","repository_url":"https://github.com/PyCQA/pyflakes"},{"name":"pygments","old_version":"2.18.0","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyparsing","old_version":"3.1.4","new_version":"3.3.2","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"pyproject-api","old_version":"1.7.1","new_version":"1.9.1","repository_url":"https://github.com/tox-dev/pyproject-api"},{"name":"pyproject-hooks","old_version":"1.1.0","new_version":"1.2.0","repository_url":"https://github.com/pypa/pyproject-hooks"},{"name":"python-daemon","old_version":"3.0.1","new_version":"3.1.2"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"readme-renderer","old_version":"43.0","new_version":"44.0","repository_url":"https://github.com/pypa/readme_renderer"},{"name":"referencing","old_version":"0.35.1","new_version":"0.36.2","repository_url":"https://github.com/python-jsonschema/referencing"},{"name":"resolvelib","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/sarugaku/resolvelib"},{"name":"rich","old_version":"13.8.0","new_version":"14.3.1","repository_url":"https://github.com/Textualize/rich"},{"name":"rpds-py","old_version":"0.20.0","new_version":"0.27.1","repository_url":"https://github.com/crate-py/rpds"},{"name":"rstcheck","old_version":"6.2.4","new_version":"6.2.5","repository_url":"https://github.com/rstcheck/rstcheck"},{"name":"rstcheck-core","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/rstcheck/rstcheck-core"},{"name":"ruamel-yaml","old_version":"0.18.6","new_version":"0.19.1"},{"name":"ruamel-yaml-clib","old_version":"0.2.8","new_version":"0.2.15"},{"name":"six","old_version":"1.16.0","new_version":"1.17.0","repository_url":"https://github.com/benjaminp/six"},{"name":"smmap","old_version":"5.0.1","new_version":"5.0.2","repository_url":"https://github.com/gitpython-developers/smmap"},{"name":"snowballstemmer","old_version":"2.2.0","new_version":"3.0.1","repository_url":"https://github.com/snowballstem/snowball"},{"name":"sphinx-ansible-theme","old_version":"0.10.3","new_version":"0.10.4","repository_url":"https://github.com/ansible-community/sphinx_ansible_theme"},{"name":"sphinx-rtd-theme","old_version":"2.0.0","new_version":"3.1.0","repository_url":"https://github.com/readthedocs/sphinx_rtd_theme"},{"name":"tomli","old_version":"2.0.1","new_version":"2.4.0","repository_url":"https://github.com/hukkin/tomli"},{"name":"twine","old_version":"5.1.1","new_version":"6.2.0","repository_url":"https://github.com/pypa/twine"},{"name":"typer","old_version":"0.12.5","new_version":"0.21.1","repository_url":"https://github.com/fastapi/typer"},{"name":"typer-config","old_version":"1.4.0","new_version":"1.4.2","repository_url":"https://github.com/maxb2/typer-config"},{"name":"typing-extensions","old_version":"4.12.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"1.26.20","new_version":"2.6.3","repository_url":"https://github.com/urllib3/urllib3"},{"name":"virtualenv","old_version":"20.26.3","new_version":"20.36.1","repository_url":"https://github.com/pypa/virtualenv"},{"name":"wcmatch","old_version":"9.0","new_version":"10.1","repository_url":"https://github.com/facelessuser/wcmatch"},{"name":"websockets","old_version":"13.0.1","new_version":"15.0.1","repository_url":"https://github.com/python-websockets/websockets"},{"name":"wrapt","old_version":"1.16.0","new_version":"2.0.1","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"yamllint","old_version":"1.35.1","new_version":"1.37.1","repository_url":"https://github.com/adrienverge/yamllint"},{"name":"yarl","old_version":"1.9.8","new_version":"1.22.0","repository_url":"https://github.com/aio-libs/yarl"},{"name":"zipp","old_version":"3.20.1","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dependencies group with 107 updates in the /.config directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [aiofiles](https://github.com/Tinche/aiofiles) | `24.1.0` | `25.1.0` |\n| [aiohappyeyeballs](https://github.com/aio-libs/aiohappyeyeballs) | `2.4.0` | `2.6.1` |\n| [aioitertools](https://github.com/omnilib/aioitertools) | `0.12.0` | `0.13.0` |\n| [aiokafka](https://github.com/aio-libs/aiokafka) | `0.11.0` | `0.12.0` |\n| [aiosignal](https://github.com/aio-libs/aiosignal) | `1.3.1` | `1.4.0` |\n| [ansible-builder](https://github.com/ansible/ansible-builder) | `3.1.0` | `3.1.1` |\n| [ansible-compat](https://github.com/ansible/ansible-compat) | `24.8.0` | `24.10.0` |\n| [ansible-pygments](https://github.com/ansible-community/ansible-pygments) | `0.1.1` | `0.1.2` |\n| [ansible-runner](https://github.com/ansible/ansible-runner) | `2.4.0` | `2.4.2` |\n| [antsibull-changelog](https://github.com/ansible-community/antsibull-changelog) | `0.29.0` | `0.35.0` |\n| [antsibull-core](https://github.com/ansible-community/antsibull-core) | `3.0.2` | `3.5.0` |\n| [antsibull-docs](https://github.com/ansible-community/antsibull-docs) | `2.13.1` | `2.24.0` |\n| [antsibull-docs-parser](https://github.com/ansible-community/antsibull-docs-parser) | `1.1.0` | `1.2.2` |\n| [async-timeout](https://github.com/aio-libs/async-timeout) | `4.0.3` | `5.0.1` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.30.2` | `1.38.0` |\n| [babel](https://github.com/python-babel/babel) | `2.16.0` | `2.17.0` |\n| bindep | `2.11.0` | `2.13.0` |\n| [black](https://github.com/psf/black) | `24.8.0` | `25.11.0` |\n| [botocore](https://github.com/boto/botocore) | `1.35.7` | `1.42.34` |\n| [bracex](https://github.com/facelessuser/bracex) | `2.5` | `2.6` |\n| [build](https://github.com/pypa/build) | `1.2.1` | `1.4.0` |\n| [cachetools](https://github.com/tkem/cachetools) | `5.5.0` | `6.2.4` |\n| [certifi](https://github.com/certifi/python-certifi) | `2024.8.30` | `2026.1.4` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.0` | `2.0.0` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.3.2` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.7` | `8.1.8` |\n| [cryptography](https://github.com/pyca/cryptography) | `43.0.1` | `46.0.3` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.8` | `0.4.0` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.20.1` | `0.22.4` |\n| [drools-jpy](https://github.com/ansible/drools_jpy) | `0.3.9` | `0.3.14` |\n| [exceptiongroup](https://github.com/agronholm/exceptiongroup) | `1.2.2` | `1.3.1` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.15.4` | `3.19.1` |\n| [frozenlist](https://github.com/aio-libs/frozenlist) | `1.4.1` | `1.8.0` |\n| [galaxy-importer](https://github.com/ansible/galaxy-importer) | `0.4.24` | `0.4.37` |\n| [gitdb](https://github.com/gitpython-developers/gitdb) | `4.0.11` | `4.0.12` |\n| [gitpython](https://github.com/gitpython-developers/GitPython) | `3.1.43` | `3.1.46` |\n| [idna](https://github.com/kjd/idna) | `3.8` | `3.11` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `6.2.1` | `8.7.1` |\n| [importlib-resources](https://github.com/python/importlib_resources) | `5.0.7` | `6.5.2` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.0.0` | `2.1.0` |\n| [isodate](https://github.com/gweis/isodate) | `0.6.1` | `0.7.2` |\n| [janus](https://github.com/aio-libs/janus) | `1.0.0` | `2.0.0` |\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.0.2` | `4.4.0` |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.4` | `3.1.6` |\n| [jmespath](https://github.com/jmespath/jmespath.py) | `1.0.1` | `1.1.0` |\n| [jpy](https://github.com/jpy-consortium/jpy) | `0.18.0` | `1.3.0` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.23.0` | `4.25.1` |\n| [jsonschema-specifications](https://github.com/python-jsonschema/jsonschema-specifications) | `2023.12.1` | `2025.9.1` |\n| [keyring](https://github.com/jaraco/keyring) | `25.3.0` | `25.7.0` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.7` | `3.9` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `2.1.5` | `3.0.3` |\n| [mdit-py-plugins](https://github.com/executablebooks/mdit-py-plugins) | `0.4.1` | `0.4.2` |\n| [mock](https://github.com/testing-cabal/mock) | `5.1.0` | `5.2.0` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.4.0` | `10.8.0` |\n| [multidict](https://github.com/aio-libs/multidict) | `6.0.5` | `6.7.0` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [nh3](https://github.com/messense/nh3) | `0.2.18` | `0.3.2` |\n| [packaging](https://github.com/pypa/packaging) | `24.1` | `26.0` |\n| [pathspec](https://github.com/cpburnz/python-pathspec) | `0.12.1` | `1.0.3` |\n| [pbr](https://docs.openstack.org/pbr/latest/) | `6.1.0` | `7.0.3` |\n| [perky](https://github.com/larryhastings/perky) | `0.9.2` | `0.9.3` |\n| [pip](https://github.com/pypa/pip) | `24.2` | `25.3` |\n| [pkginfo](https://code.launchpad.net/~tseaver/pkginfo/trunk) | `1.10.0` | `1.12.1.2` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.2.2` | `4.4.0` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [psycopg](https://github.com/psycopg/psycopg) | `3.1.18` | `3.2.13` |\n| [psycopg-binary](https://github.com/psycopg/psycopg) | `3.1.18` | `3.2.13` |\n| [psycopg-pool](https://github.com/psycopg/psycopg) | `3.2.2` | `3.2.8` |\n| [pycodestyle](https://github.com/PyCQA/pycodestyle) | `2.11.1` | `2.14.0` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `2.23` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.8.2` | `2.12.5` |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.20.1` | `2.41.5` |\n| [pyflakes](https://github.com/PyCQA/pyflakes) | `3.1.0` | `3.4.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.18.0` | `2.19.2` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.1.4` | `3.3.2` |\n| [pyproject-api](https://github.com/tox-dev/pyproject-api) | `1.7.1` | `1.9.1` |\n| [pyproject-hooks](https://github.com/pypa/pyproject-hooks) | `1.1.0` | `1.2.0` |\n| python-daemon | `3.0.1` | `3.1.2` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [readme-renderer](https://github.com/pypa/readme_renderer) | `43.0` | `44.0` |\n| [referencing](https://github.com/python-jsonschema/referencing) | `0.35.1` | `0.36.2` |\n| [resolvelib](https://github.com/sarugaku/resolvelib) | `1.0.1` | `1.2.1` |\n| [rich](https://github.com/Textualize/rich) | `13.8.0` | `14.3.1` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.20.0` | `0.27.1` |\n| [rstcheck](https://github.com/rstcheck/rstcheck) | `6.2.4` | `6.2.5` |\n| [rstcheck-core](https://github.com/rstcheck/rstcheck-core) | `1.2.1` | `1.2.2` |\n| ruamel-yaml | `0.18.6` | `0.19.1` |\n| ruamel-yaml-clib | `0.2.8` | `0.2.15` |\n| [six](https://github.com/benjaminp/six) | `1.16.0` | `1.17.0` |\n| [smmap](https://github.com/gitpython-developers/smmap) | `5.0.1` | `5.0.2` |\n| [snowballstemmer](https://github.com/snowballstem/snowball) | `2.2.0` | `3.0.1` |\n| [sphinx-ansible-theme](https://github.com/ansible-community/sphinx_ansible_theme) | `0.10.3` | `0.10.4` |\n| [sphinx-rtd-theme](https://github.com/readthedocs/sphinx_rtd_theme) | `2.0.0` | `3.1.0` |\n| [tomli](https://github.com/hukkin/tomli) | `2.0.1` | `2.4.0` |\n| [twine](https://github.com/pypa/twine) | `5.1.1` | `6.2.0` |\n| [typer](https://github.com/fastapi/typer) | `0.12.5` | `0.21.1` |\n| [typer-config](https://github.com/maxb2/typer-config) | `1.4.0` | `1.4.2` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `1.26.20` | `2.6.3` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.26.3` | `20.36.1` |\n| [wcmatch](https://github.com/facelessuser/wcmatch) | `9.0` | `10.1` |\n| [websockets](https://github.com/python-websockets/websockets) | `13.0.1` | `15.0.1` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.16.0` | `2.0.1` |\n| [yamllint](https://github.com/adrienverge/yamllint) | `1.35.1` | `1.37.1` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.9.8` | `1.22.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.20.1` | `3.23.0` |\n\n\nUpdates `aiofiles` from 24.1.0 to 25.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Tinche/aiofiles/releases\"\u003eaiofiles's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev25.1.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSwitch to \u003ca href=\"https://docs.astral.sh/uv/\"\u003euv\u003c/a\u003e + add Python v3.14 support.  (\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eruff\u003c/code\u003e formatter and linter. \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/216\"\u003e#216\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8 support. If you require it, use version 24.1.0. \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/204\"\u003e#204\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/danielsmyers\"\u003e\u003ccode\u003e@​danielsmyers\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/185\"\u003eTinche/aiofiles#185\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stankudrow\"\u003e\u003ccode\u003e@​stankudrow\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/192\"\u003eTinche/aiofiles#192\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/waketzheng\"\u003e\u003ccode\u003e@​waketzheng\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/221\"\u003eTinche/aiofiles#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/Tinche/aiofiles/compare/v24.1.0...v25.1.0\"\u003ehttps://github.com/Tinche/aiofiles/compare/v24.1.0...v25.1.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Tinche/aiofiles/blob/main/CHANGELOG.md\"\u003eaiofiles's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e25.1.0 (2025-10-09)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSwitch to \u003ca href=\"https://docs.astral.sh/uv/\"\u003euv\u003c/a\u003e + add Python v3.14 support.\n(\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eruff\u003c/code\u003e formatter and linter.\n\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/216\"\u003e#216\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8 support. If you require it, use version 24.1.0.\n\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/204\"\u003e#204\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/Tinche/aiofiles/commit/348f5ef6561c2b2c8a7497bd10487eab4102332f\"\u003e\u003ccode\u003e348f5ef\u003c/code\u003e\u003c/a\u003e v25.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/5e1bb8f12b09bce440cc9d1e28387d239cbc2577\"\u003e\u003ccode\u003e5e1bb8f\u003c/code\u003e\u003c/a\u003e docs: update readme to use ruff badge (\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/issues/221\"\u003e#221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/6fdc25c7812d6738ccf51c5e7d4cd68500053a52\"\u003e\u003ccode\u003e6fdc25c\u003c/code\u003e\u003c/a\u003e Move to uv. (\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/issues/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/1989132423dc300c61e22434abd02725e922ddeb\"\u003e\u003ccode\u003e1989132\u003c/code\u003e\u003c/a\u003e set 'function' as a default fixture loop scope value\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/8986452a1b28b109903078f8e9a805ec01e248a6\"\u003e\u003ccode\u003e8986452\u003c/code\u003e\u003c/a\u003e add the 'asyncio_default_fixture_loop_scope=session' option\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/ccab1ff77640c59b353046cb528c25ffa11caa73\"\u003e\u003ccode\u003eccab1ff\u003c/code\u003e\u003c/a\u003e update pytest-asyncio==1.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/8727c96f5be46235af412a9fe504ba7c149df7f3\"\u003e\u003ccode\u003e8727c96\u003c/code\u003e\u003c/a\u003e add PR \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/issues/216\"\u003e#216\u003c/a\u003e into the CHANGELOG\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/a9388e5f8de9142c3e920917775e741bbf9f73b2\"\u003e\u003ccode\u003ea9388e5\u003c/code\u003e\u003c/a\u003e add TID and ignore TID252\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/760366489aed1fb041ef35652e2babb1870973d0\"\u003e\u003ccode\u003e7603664\u003c/code\u003e\u003c/a\u003e remove [ruff].exclude keyval\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/7c49a5c5f2520233198487145423a7842805d740\"\u003e\u003ccode\u003e7c49a5c\u003c/code\u003e\u003c/a\u003e add final newlines\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Tinche/aiofiles/compare/v24.1.0...v25.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `aiohappyeyeballs` from 2.4.0 to 2.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/releases\"\u003eaiohappyeyeballs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.6.1 (2025-03-12)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eResolve TypeError on import for Python \u0026lt; 3.9.2 (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/151\"\u003e#151\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/2042c82f9978f41c31b58aa4e3d8fc3b9c3ec2ec\"\u003e\u003ccode\u003e2042c82\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eDetailed Changes\u003c/strong\u003e: \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.6.0...v2.6.1\"\u003ev2.6.0...v2.6.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.6.0 (2025-03-11)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edocs\u003c/strong\u003e: Publish documentation (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/149\"\u003e#149\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/42352736d12c60d500c63b9598ffab05ef5e8829\"\u003e\u003ccode\u003e4235273\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eCreates an api_reference.rst file to expose the existing documentation for the few functions that have docstrings, as well as add documentation for AddrInfoType and SocketFactoryType. Now, these can be properly pointed to by other projects' documentation.\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eDetailed Changes\u003c/strong\u003e: \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.5.0...v2.6.0\"\u003ev2.5.0...v2.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.5.0 (2025-03-06)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd callback for users to customize socket creation (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/147\"\u003e#147\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/8e1bc6a4bc6282ccf29db441c33dd8d806003ffd\"\u003e\u003ccode\u003e8e1bc6a\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eCo-authored-by: Kieren \u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eDetailed Changes\u003c/strong\u003e: \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.4.8...v2.5.0\"\u003ev2.4.8...v2.5.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.4.8 (2025-03-04)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClose runner up sockets in the event there are multiple winners (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/143\"\u003e#143\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/476a05b956627700baa84eb6aac28c395da92a9f\"\u003e\u003ccode\u003e476a05b\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe first attempt to fix this was to use the cpython staggered race updates in \u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/142\"\u003e#142\u003c/a\u003e but there is still a race there where there can be multiple winners. Instead we now accept that we will not be able to cancel all coros in time and there will always be a risk of multiple winners. We store all sockets in a set that were not already cleaned up and we close all but the first winner after the staggered race finishes.\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eDetailed Changes\u003c/strong\u003e: \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.4.7...v2.4.8\"\u003ev2.4.7...v2.4.8\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.4.7 (2025-03-04)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/blob/main/CHANGELOG.md\"\u003eaiohappyeyeballs's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.6.1 (2025-03-12)\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eResolve typeerror on import for python \u0026lt; 3.9.2 (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/151\"\u003e#151\u003c/a\u003e) (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/2042c82f9978f41c31b58aa4e3d8fc3b9c3ec2ec\"\u003e\u003ccode\u003e2042c82\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.6.0 (2025-03-11)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePublish documentation (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/149\"\u003e#149\u003c/a\u003e) (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/42352736d12c60d500c63b9598ffab05ef5e8829\"\u003e\u003ccode\u003e4235273\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.5.0 (2025-03-06)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd callback for users to customize socket creation (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/147\"\u003e#147\u003c/a\u003e) (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/8e1bc6a4bc6282ccf29db441c33dd8d806003ffd\"\u003e\u003ccode\u003e8e1bc6a\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.8 (2025-03-04)\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClose runner up sockets in the event there are multiple winners (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/143\"\u003e#143\u003c/a\u003e) (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/476a05b956627700baa84eb6aac28c395da92a9f\"\u003e\u003ccode\u003e476a05b\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.7 (2025-03-04)\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eResolve warnings when running tests (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/144\"\u003e#144\u003c/a\u003e) (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/e96264aec89b9bd34d37413f610d039c56393a48\"\u003e\u003ccode\u003ee96264a\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.6 (2025-02-07)\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure all timers are cancelled when after staggered race finishes (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/136\"\u003e#136\u003c/a\u003e) (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/f75891d8974693b24af9789a8981ed7f6bc55c5c\"\u003e\u003ccode\u003ef75891d\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.5 (2025-02-07)\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKeep classifiers in project to avoid automatic enrichment (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/134\"\u003e#134\u003c/a\u003e) (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/99edb20e9d3e53ead65b55cb3e93c22c03d06599\"\u003e\u003ccode\u003e99edb20\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMove classifiers to prevent recalculation by poetry (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/131\"\u003e#131\u003c/a\u003e) (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/66e1c90ae81f71c7039cd62c60417a96202d906c\"\u003e\u003ccode\u003e66e1c90\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.4 (2024-11-30)\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle oserror on failure to close socket instead of raising indexerror (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/114\"\u003e#114\u003c/a\u003e) (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/c542f684d329fed04093caa2b31d8f7f6e0e0949\"\u003e\u003ccode\u003ec542f68\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.4.3 (2024-09-30)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/e3bd5bdf44f5d187802de6dcb08d27e1ca6da048\"\u003e\u003ccode\u003ee3bd5bd\u003c/code\u003e\u003c/a\u003e 2.6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/2042c82f9978f41c31b58aa4e3d8fc3b9c3ec2ec\"\u003e\u003ccode\u003e2042c82\u003c/code\u003e\u003c/a\u003e fix: resolve TypeError on import for Python \u0026lt; 3.9.2 (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/151\"\u003e#151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/b23d9194d6db1c4d237da0da623a081573385915\"\u003e\u003ccode\u003eb23d919\u003c/code\u003e\u003c/a\u003e chore: remove unused CI exclude for Python 3.8.0 (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/36149e7194d9a24fc8109265dee80fecd362f449\"\u003e\u003ccode\u003e36149e7\u003c/code\u003e\u003c/a\u003e 2.6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/42352736d12c60d500c63b9598ffab05ef5e8829\"\u003e\u003ccode\u003e4235273\u003c/code\u003e\u003c/a\u003e feat(docs): publish documentation (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/149\"\u003e#149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/17d5e48488f7b533efea33ebb89c25e7b4eda7ad\"\u003e\u003ccode\u003e17d5e48\u003c/code\u003e\u003c/a\u003e chore(pre-commit.ci): pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/148\"\u003e#148\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/3fed4432036740392483608a9da86637cf1bd64b\"\u003e\u003ccode\u003e3fed443\u003c/code\u003e\u003c/a\u003e 2.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/8e1bc6a4bc6282ccf29db441c33dd8d806003ffd\"\u003e\u003ccode\u003e8e1bc6a\u003c/code\u003e\u003c/a\u003e feat: add callback for users to customize socket creation (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/147\"\u003e#147\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/c4ab1e5409fe086c12932e47dc4a305eb15b4091\"\u003e\u003ccode\u003ec4ab1e5\u003c/code\u003e\u003c/a\u003e 2.4.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/476a05b956627700baa84eb6aac28c395da92a9f\"\u003e\u003ccode\u003e476a05b\u003c/code\u003e\u003c/a\u003e fix: close runner up sockets in the event there are multiple winners (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/143\"\u003e#143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.4.0...v2.6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `aioitertools` from 0.12.0 to 0.13.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/omnilib/aioitertools/blob/main/CHANGELOG.md\"\u003eaioitertools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.13.0\u003c/h2\u003e\n\u003cp\u003eMaintenance release\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eModernized project metadata (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/208\"\u003e#208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed references to old branch (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/209\"\u003e#209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTested up to Python 3.14 (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/208\"\u003e#208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.8 (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/208\"\u003e#208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse modern type annotations, clean up lint (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/219\"\u003e#219\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/220\"\u003e#220\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/221\"\u003e#221\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre lang=\"text\"\u003e\u003ccode\u003e$ git shortlog -s v0.12.0...v0.13.0\n     1\tAlireza Ghasemi\n     6\tAmethyst Reese\n    10\tdependabot[bot]\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aioitertools/commit/47a2068abc2c7e34bff1a188cb5ce66fa24d9404\"\u003e\u003ccode\u003e47a2068\u003c/code\u003e\u003c/a\u003e Version bump v0.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aioitertools/commit/e1a9219e58fb948223c292715e83ec1281c3a5e2\"\u003e\u003ccode\u003ee1a9219\u003c/code\u003e\u003c/a\u003e Enable RUF rules (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/221\"\u003e#221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aioitertools/commit/a744b4a9951aaa92fabb85fc401a7c287755eeee\"\u003e\u003ccode\u003ea744b4a\u003c/code\u003e\u003c/a\u003e Ruff upgrade lint fixes (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/220\"\u003e#220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aioitertools/commit/3bcf4e9bef9154589ee90b0bf9185f0fe04e1c39\"\u003e\u003ccode\u003e3bcf4e9\u003c/code\u003e\u003c/a\u003e Switch from flake8 to ruff (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aioitertools/commit/1e3e55cd0fe6ee61064d2c325fb0617f08e83f4a\"\u003e\u003ccode\u003e1e3e55c\u003c/code\u003e\u003c/a\u003e Bump ufmt from 2.7.1 to 2.8.0 (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/198\"\u003e#198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aioitertools/commit/4c8b4f8a873cf66a4c729002ddc74b4bf32f03ab\"\u003e\u003ccode\u003e4c8b4f8\u003c/code\u003e\u003c/a\u003e Bump flake8 from 7.1.1 to 7.3.0 (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/217\"\u003e#217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aioitertools/commit/8524be5b77433e81eb6ecf8739ffe38844e6ca8f\"\u003e\u003ccode\u003e8524be5\u003c/code\u003e\u003c/a\u003e Bump black from 24.8.0 to 25.9.0 (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/218\"\u003e#218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aioitertools/commit/78e7205fb4d85686b5e459152ddc06fc1feee538\"\u003e\u003ccode\u003e78e7205\u003c/code\u003e\u003c/a\u003e Bump mypy from 1.11.2 to 1.18.2 (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/215\"\u003e#215\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aioitertools/commit/eafa768f4274f922cfe74afaa1bfb5549f887fb6\"\u003e\u003ccode\u003eeafa768\u003c/code\u003e\u003c/a\u003e Bump coverage from 7.6.1 to 7.10.7 (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/216\"\u003e#216\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aioitertools/commit/15c764cfe45e9972e27bef5cb66a12fdf8a3f577\"\u003e\u003ccode\u003e15c764c\u003c/code\u003e\u003c/a\u003e Bump flit from 3.9.0 to 3.12.0 (\u003ca href=\"https://redirect.github.com/omnilib/aioitertools/issues/214\"\u003e#214\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/omnilib/aioitertools/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 `aiokafka` from 0.11.0 to 0.12.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiokafka/releases\"\u003eaiokafka's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.12.0\u003c/h2\u003e\n\u003cp\u003eNew features:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBuild mac x86_64 wheels (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1029\"\u003e#1029\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13, drop support for Python 3.8 due to end of life (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1061\"\u003e#1061\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove duplicate error logging during rebalance (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1025\"\u003e#1025\u003c/a\u003e by \u003ca href=\"https://github.com/y4n9squared\"\u003e\u003ccode\u003e@​y4n9squared\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBugfixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eQuote username in SCRAM auth (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1043\"\u003e#1043\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImproved Documentation:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix building of readthedocs documentation (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix typo in producer documentation (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1036\"\u003e#1036\u003c/a\u003e by \u003ca href=\"https://github.com/lgo\"\u003e\u003ccode\u003e@​lgo\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiokafka/blob/master/CHANGES.rst\"\u003eaiokafka's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e0.12.0 (2024-10-26)\u003c/h1\u003e\n\u003cp\u003eNew features:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBuild mac x86_64 wheels (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1029\"\u003e#1029\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13, drop support for Python 3.8 due to end of life (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1061\"\u003e#1061\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove duplicate error logging during rebalance (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1025\"\u003e#1025\u003c/a\u003e by \u003ca href=\"https://github.com/y4n9squared\"\u003e\u003ccode\u003e@​y4n9squared\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBugfixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eQuote username in SCRAM auth (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1043\"\u003e#1043\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImproved Documentation:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix building of readthedocs documentation (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix typo in producer documentation (pr \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1036\"\u003e#1036\u003c/a\u003e by \u003ca href=\"https://github.com/lgo\"\u003e\u003ccode\u003e@​lgo\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/f6c79a086f1d5cf2b6e94e65db05970c4729c7a0\"\u003e\u003ccode\u003ef6c79a0\u003c/code\u003e\u003c/a\u003e Update actions, fix publishing (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1063\"\u003e#1063\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/71335629d503cb3ad260de662e23c32402c8368b\"\u003e\u003ccode\u003e7133562\u003c/code\u003e\u003c/a\u003e Prepare 0.12.0 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/f7861f682c9b5cd78411e7fd6ea0fc4bf92ded33\"\u003e\u003ccode\u003ef7861f6\u003c/code\u003e\u003c/a\u003e Remove duplicate error log during rebalance (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1025\"\u003e#1025\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/e7c9033b7d44c691073e9e25438f2c8ec523a14f\"\u003e\u003ccode\u003ee7c9033\u003c/code\u003e\u003c/a\u003e Add Python 3.13, remove 3.8 (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1061\"\u003e#1061\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/608ab2443510c92226de0eb3fc2065f5d1307e12\"\u003e\u003ccode\u003e608ab24\u003c/code\u003e\u003c/a\u003e Fix ClusterMetadata request_update() (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/4cff9d77014e922c6e458224ed6abbae4fa07c4d\"\u003e\u003ccode\u003e4cff9d7\u003c/code\u003e\u003c/a\u003e Made classes enum.IntEnums where appropriate. (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1053\"\u003e#1053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/01c60cd9c45e975aee8d4932247108a9e639d026\"\u003e\u003ccode\u003e01c60cd\u003c/code\u003e\u003c/a\u003e Quote username in SCRAM auth (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1043\"\u003e#1043\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/e2afc034b59626242b51b06b30a62c565ef491d9\"\u003e\u003ccode\u003ee2afc03\u003c/code\u003e\u003c/a\u003e fix type on producer docs (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/f9dbed1a00337971e6569c6611a98c1ab294fe98\"\u003e\u003ccode\u003ef9dbed1\u003c/code\u003e\u003c/a\u003e Add readthedocs config (\u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiokafka/commit/2f976d0301682f0fe631c04c08d653be0d20ccb1\"\u003e\u003ccode\u003e2f976d0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/aio-libs/aiokafka/issues/1030\"\u003e#1030\u003c/a\u003e from webknjaz/maintenance/gha-pypi-tokenless-publishing\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aio-libs/aiokafka/compare/v0.11.0...v0.12.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `aiosignal` from 1.3.1 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/aio-libs/aiosignal/releases\"\u003eaiosignal's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0\u003c/h2\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded decorator functionality to \u003ccode\u003eSignal\u003c/code\u003e as a convenient way to add a callback -- by \u003ccode\u003e@Vizonex\u003c/code\u003e.\n\u003ccode\u003e[#699](https://github.com/aio-libs/aiosignal/issues/699) \u0026lt;https://github.com/aio-libs/aiosignal/pulls/699\u0026gt;\u003c/code\u003e_\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImproved type safety by allowing callback parameters to be type checked (typing-extensions is now required for Python \u0026lt;3.13).\nParameters for a \u003ccode\u003eSignal\u003c/code\u003e callback should now be defined like \u003ccode\u003eSignal[int, str]\u003c/code\u003e -- by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Dreamsorcerer\"\u003e\u003ccode\u003e@​Dreamsorcerer\u003c/code\u003e\u003c/a\u003e.\n\u003ccode\u003e[#699](https://github.com/aio-libs/aiosignal/issues/699) \u0026lt;https://github.com/aio-libs/aiosignal/pulls/699\u0026gt;\u003c/code\u003e\u003cem\u003e, \u003ccode\u003e[#710](https://github.com/aio-libs/aiosignal/issues/710) \u0026lt;https://github.com/aio-libs/aiosignal/pulls/710\u0026gt;\u003c/code\u003e\u003c/em\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMisc\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved the sphinxcontrib-asyncio documentation dependency.\n\u003ccode\u003e[#528](https://github.com/aio-libs/aiosignal/issues/528) \u0026lt;https://github.com/aio-libs/aiosignal/pull/528\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003ch2\u003e1.3.2\u003c/h2\u003e\n\u003ch2\u003eDeprecations and Removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eDropped Python 3.7 support. (\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/413\"\u003e#413\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDropped Python 3.8 support. (\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/645\"\u003e#645\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMisc\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e(\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiosignal/blob/master/CHANGES.rst\"\u003eaiosignal's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.4.0 (2025-07-03)\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded decorator functionality to \u003ccode\u003eSignal\u003c/code\u003e as a convenient way to add a callback -- by \u003ccode\u003e@Vizonex\u003c/code\u003e.\n\u003ccode\u003e[#699](https://github.com/aio-libs/aiosignal/issues/699) \u0026lt;https://github.com/aio-libs/aiosignal/pulls/699\u0026gt;\u003c/code\u003e_\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImproved type safety by allowing callback parameters to be type checked (typing-extensions is now required for Python \u0026lt;3.13).\nParameters for a \u003ccode\u003eSignal\u003c/code\u003e callback should now be defined like \u003ccode\u003eSignal[int, str]\u003c/code\u003e -- by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Dreamsorcerer\"\u003e\u003ccode\u003e@​Dreamsorcerer\u003c/code\u003e\u003c/a\u003e.\n\u003ccode\u003e[#699](https://github.com/aio-libs/aiosignal/issues/699) \u0026lt;https://github.com/aio-libs/aiosignal/pulls/699\u0026gt;\u003c/code\u003e\u003cem\u003e, \u003ccode\u003e[#710](https://github.com/aio-libs/aiosignal/issues/710) \u0026lt;https://github.com/aio-libs/aiosignal/pulls/710\u0026gt;\u003c/code\u003e\u003c/em\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMisc\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved the sphinxcontrib-asyncio documentation dependency.\n\u003ccode\u003e[#528](https://github.com/aio-libs/aiosignal/issues/528) \u0026lt;https://github.com/aio-libs/aiosignal/pull/528\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003ch1\u003e1.3.2 (2024-12-13)\u003c/h1\u003e\n\u003ch2\u003eDeprecations and Removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eDropped Python 3.7 support.\n\u003ccode\u003e[#413](https://github.com/aio-libs/aiosignal/issues/413) \u0026lt;https://github.com/aio-libs/aiosignal/issues/413\u0026gt;\u003c/code\u003e_\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDropped Python 3.8 support.\n\u003ccode\u003e[#645](https://github.com/aio-libs/aiosignal/issues/645) \u0026lt;https://github.com/aio-libs/aiosignal/issues/645\u0026gt;\u003c/code\u003e_\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMisc\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[#362](https://github.com/aio-libs/aiosignal/issues/362) \u0026lt;https://github.com/aio-libs/aiosignal/issues/362\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiosignal/commit/1cf80149c869d410c90a58e85e9c703be6ef8692\"\u003e\u003ccode\u003e1cf8014\u003c/code\u003e\u003c/a\u003e Fix deploy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiosignal/commit/892494c5c72553e281e57e924cf055e6125fb0fc\"\u003e\u003ccode\u003e892494c\u003c/code\u003e\u003c/a\u003e Release v1.4 (\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/718\"\u003e#718\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiosignal/commit/fa360821631383aed6a534da6f73ad149ec666f7\"\u003e\u003ccode\u003efa36082\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/719\"\u003e#719\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiosignal/commit/b7f68f12fed7c4b84a6866984e7adafcd18fe265\"\u003e\u003ccode\u003eb7f68f1\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/717\"\u003e#717\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiosignal/commit/2b1acac380eaaa91a643bfc9c24fa1f3942f0d45\"\u003e\u003ccode\u003e2b1acac\u003c/code\u003e\u003c/a\u003e Build(deps): Bump sigstore/gh-action-sigstore-python from 3.0.0 to 3.0.1 (\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/716\"\u003e#716\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiosignal/commit/17456ed5f968c0001a8823c2076f999fbf448157\"\u003e\u003ccode\u003e17456ed\u003c/code\u003e\u003c/a\u003e Build(deps): Bump tox from 4.26.0 to 4.27.0 (\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/715\"\u003e#715\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiosignal/commit/4c236903da2e71b85652c07bed69013189a39406\"\u003e\u003ccode\u003e4c23690\u003c/code\u003e\u003c/a\u003e Build(deps): Bump pytest from 8.4.0 to 8.4.1 (\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/714\"\u003e#714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiosignal/commit/7be2f6833be08bb14207bc627f9931665cd947ce\"\u003e\u003ccode\u003e7be2f68\u003c/code\u003e\u003c/a\u003e Build(deps): Bump mypy from 1.16.0 to 1.16.1 (\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/713\"\u003e#713\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiosignal/commit/5d62945d07c9413720e968cc3f25c66307d9a337\"\u003e\u003ccode\u003e5d62945\u003c/code\u003e\u003c/a\u003e Build(deps): Bump coverage from 7.9.0 to 7.9.1 (\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/712\"\u003e#712\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiosignal/commit/a6d85c1c3430621814d6163ea442828e7f31b34b\"\u003e\u003ccode\u003ea6d85c1\u003c/code\u003e\u003c/a\u003e Build(deps): Bump dependabot/fetch-metadata from 2.3.0 to 2.4.0 (\u003ca href=\"https://redirect.github.com/aio-libs/aiosignal/issues/694\"\u003e#694\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aio-libs/aiosignal/compare/v1.3.1...v1.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ansible-builder` from 3.1.0 to 3.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ansible/ansible-builder/releases\"\u003eansible-builder's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.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: capitalize 'as' to follow from-as-casing rule (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/687\"\u003e#687\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSet file permissions on context files created from inline reqs (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/751\"\u003e#751\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew 3.1 porting guide (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/701\"\u003e#701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd simple EE file example by (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/739\"\u003e#739\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd scenario guide for validating Python deps (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/758\"\u003e#758\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/ansible/ansible-builder/compare/3.1.0...3.1.1\"\u003ehttps://github.com/ansible/ansible-builder/compare/3.1.0...3.1.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-builder/commit/ea0df628f9d36b34d64b0d93f3491ecd17ef4426\"\u003e\u003ccode\u003eea0df62\u003c/code\u003e\u003c/a\u003e Add scenario guide for validating Python deps (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/757\"\u003e#757\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/758\"\u003e#758\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-builder/commit/97f046fac1f7b7bdbaae17b2efda0837d86362db\"\u003e\u003ccode\u003e97f046f\u003c/code\u003e\u003c/a\u003e Increase integration test timeout to 9m (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/754\"\u003e#754\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/755\"\u003e#755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-builder/commit/ecc55c1205ba48f24ad08820f8ad9629d076a4fa\"\u003e\u003ccode\u003eecc55c1\u003c/code\u003e\u003c/a\u003e Set file permissions on context files created from inline reqs (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/748\"\u003e#748\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/751\"\u003e#751\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-builder/commit/ba2be48febb6a4440bbc0f67c63f5c71dfc32d15\"\u003e\u003ccode\u003eba2be48\u003c/code\u003e\u003c/a\u003e Add simple EE file example (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/737\"\u003e#737\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/739\"\u003e#739\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-builder/commit/4af7213490232d5b9fbf2576c6370fd40f75adc4\"\u003e\u003ccode\u003e4af7213\u003c/code\u003e\u003c/a\u003e 🧪🚑 Clone deep in integration tests (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/735\"\u003e#735\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/736\"\u003e#736\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-builder/commit/d12c45c01d08d337a72916cf4e1a48bac16a2bd5\"\u003e\u003ccode\u003ed12c45c\u003c/code\u003e\u003c/a\u003e [PR \u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/731\"\u003e#731\u003c/a\u003e/1b659226 backport][release_3.1] 🧪 Use \u003ccode\u003ereusable-tox.yml\u003c/code\u003e @ `tox-dev/...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-builder/commit/5defa3c9f05cfc8212abd3da57926cdc29f7e45e\"\u003e\u003ccode\u003e5defa3c\u003c/code\u003e\u003c/a\u003e docs: Fixing typo in example (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/705\"\u003e#705\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-builder/commit/6fb2fc098de0092e05c238bc41f596629e9d6598\"\u003e\u003ccode\u003e6fb2fc0\u003c/code\u003e\u003c/a\u003e Fix doc errors in 3.1 porting guide (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/704\"\u003e#704\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-builder/commit/5efc3cfdd63cf1f60efec6d9e99ced47c9c2ce48\"\u003e\u003ccode\u003e5efc3cf\u003c/code\u003e\u003c/a\u003e Add 3.1 porting guide (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/701\"\u003e#701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-builder/commit/49b8a5fc4c9c4839cb57c03473f50bdc8d9a6ee8\"\u003e\u003ccode\u003e49b8a5f\u003c/code\u003e\u003c/a\u003e Modify scripts/check_galaxy to return more descriptive error message(s) (\u003ca href=\"https://redirect.github.com/ansible/ansible-builder/issues/695\"\u003e#695\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ansible/ansible-builder/compare/3.1.0...3.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ansible-compat` from 24.8.0 to 24.10.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ansible/ansible-compat/releases\"\u003eansible-compat's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev24.10.0\u003c/h2\u003e\n\u003ch2\u003eEnhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for py313 (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/416\"\u003e#416\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRe-init plugin loader after collections installation (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/411\"\u003e#411\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/412\"\u003e#412\u003c/a\u003e) \u003ca href=\"https://github.com/irozet12\"\u003e\u003ccode\u003e@​irozet12\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev24.9.1\u003c/h2\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid running prepare ansible paths twice (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/409\"\u003e#409\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid duplicate paths when path injection (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/407\"\u003e#407\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eProvide more detail on multiple collection installs (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/405\"\u003e#405\u003c/a\u003e) \u003ca href=\"https://github.com/mrgum\"\u003e\u003ccode\u003e@​mrgum\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev24.9.0\u003c/h2\u003e\n\u003ch2\u003eEnhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd communication details (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/400\"\u003e#400\u003c/a\u003e) \u003ca href=\"https://github.com/oraNod\"\u003e\u003ccode\u003e@​oraNod\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix upload-artifact action to work with v4.4 and newer (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/403\"\u003e#403\u003c/a\u003e) \u003ca href=\"https://github.com/alisonlhart\"\u003e\u003ccode\u003e@​alisonlhart\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/ansible/ansible-compat/commit/ba624e9511a76f29fd12cff3e01feef1458d3acf\"\u003e\u003ccode\u003eba624e9\u003c/code\u003e\u003c/a\u003e Bump the dependencies group in /.config with 5 updates (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/421\"\u003e#421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/6d9524e282a0f5078dfdaf9d01e620493076496d\"\u003e\u003ccode\u003e6d9524e\u003c/code\u003e\u003c/a\u003e Add support for py313 (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/416\"\u003e#416\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/264a2785eb278406a5b93b9c5a8a1979eee5cc11\"\u003e\u003ccode\u003e264a278\u003c/code\u003e\u003c/a\u003e chore: pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/415\"\u003e#415\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/1f01f448542e4c258dfa1ed5ea84eab655ddc43b\"\u003e\u003ccode\u003e1f01f44\u003c/code\u003e\u003c/a\u003e Replace pip-compile with uv pip compile (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/419\"\u003e#419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/43f75ebf417fa914da59f12781aecea6566822ed\"\u003e\u003ccode\u003e43f75eb\u003c/code\u003e\u003c/a\u003e Fix tests (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/420\"\u003e#420\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/29430b1fe77b02e4c7a5073cefb2a04a67fec338\"\u003e\u003ccode\u003e29430b1\u003c/code\u003e\u003c/a\u003e Tune dependabot config (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/417\"\u003e#417\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/e247f3fab0400f97df08498c9e2cdf34025f1ba8\"\u003e\u003ccode\u003ee247f3f\u003c/code\u003e\u003c/a\u003e Re-init plugin loader after collections installation (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/411\"\u003e#411\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/412\"\u003e#412\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/18c671e23c1d4fa91fd372fca24474b89e31832c\"\u003e\u003ccode\u003e18c671e\u003c/code\u003e\u003c/a\u003e Bump coactions/dynamic-matrix from 3 to 4 (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/414\"\u003e#414\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/ebe0b2c89717cf7567071b540461f878cefa8185\"\u003e\u003ccode\u003eebe0b2c\u003c/code\u003e\u003c/a\u003e chore: pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/413\"\u003e#413\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/16538ab64884462d8afdf35b97cb1f02299cef69\"\u003e\u003ccode\u003e16538ab\u003c/code\u003e\u003c/a\u003e Add template for bug reports (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/410\"\u003e#410\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ansible/ansible-compat/compare/v24.8.0...v24.10.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ansible-pygments` from 0.1.1 to 0.1.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ansible-community/ansible-pygments/releases\"\u003eansible-pygments's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.1.2\u003c/h2\u003e\n\u003cp\u003eMaintenance release to ensure that releasing still works.\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/ansible-community/ansible-pygments/commit/cb4a39bef9e4a4169dce502f2f198016967506bb\"\u003e\u003ccode\u003ecb4a39b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/ansible-community/ansible-pygments/issues/70\"\u003e#70\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-pygments/commit/be3cc3b5e5d7264e842938197acca8d6434ec49f\"\u003e\u003ccode\u003ebe3cc3b\u003c/code\u003e\u003c/a\u003e Bump the ci group with 5 updates (\u003ca href=\"https://redirect.github.com/ansible-community/ansible-pygments/issues/73\"\u003e#73\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-pygments/commit/2e506fd496d33cc3a34673555c5bb18e357d6214\"\u003e\u003ccode\u003e2e506fd\u003c/code\u003e\u003c/a\u003e Fix dependabot config. (\u003ca href=\"https://redirect.github.com/ansible-community/ansible-pygments/issues/72\"\u003e#72\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-pygments/commit/5f5bc32fb5f6c8c96c1b13660365fee67f90f7b2\"\u003e\u003ccode\u003e5f5bc32\u003c/code\u003e\u003c/a\u003e Add dependabot config (\u003ca href=\"https://redirect.github.com/ansible-community/ansible-pygments/issues/60\"\u003e#60\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-pygments/commit/73fac92d94987a1ab87ec5aa85db1a117a7785a8\"\u003e\u003ccode\u003e73fac92\u003c/code\u003e\u003c/a\u003e Fix CI: avoid deprecated poetry section, drop macOS and Windows from CI matri...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-pygments/commit/149a793087a789e6a1905716f69ebec77e610b25\"\u003e\u003ccode\u003e149a793\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/ansible-community/ansible-pygments/issues/69\"\u003e#69\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-pygments/commit/bc64e01b0c536ec2cc03ffc470d65eae088632c0\"\u003e\u003ccode\u003ebc64e01\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/ansible-community/ansible-pygments/issues/68\"\u003e#68\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-pygments/commit/709e4e3109a0fc6eabcea757686d0d4635e1f549\"\u003e\u003ccode\u003e709e4e3\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/ansible-community/ansible-pygments/issues/67\"\u003e#67\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-pygments/commit/dec1d0799c1f029532faefed2e1b25cb55d6aed8\"\u003e\u003ccode\u003edec1d07\u003c/code\u003e\u003c/a\u003e Require Python 3.9+; add Python 3.12 and 3.13 to CI (\u003ca href=\"https://redirect.github.com/ansible-community/ansible-pygments/issues/64\"\u003e#64\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/ansible-pygments/commit/c50df0f4486185b463a78fd4ad8d4cb68f1bac1f\"\u003e\u003ccode\u003ec50df0f\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/ansible-community/ansible-pygments/issues/66\"\u003e#66\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ansible-community/ansible-pygments/compare/0.1.1...0.1.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ansible-runner` from 2.4.0 to 2.4.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ansible/ansible-runner/releases\"\u003eansible-runner's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eShort circuit display wrapper of the callback plugin within forks (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/pull/1414\"\u003eansible/ansible-runner#1414\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove EOF log messages when streaming (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/pull/1458\"\u003eansible/ansible-runner#1458\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/ansible/ansible-runner/compare/2.4.1...2.4.2\"\u003ehttps://github.com/ansible/ansible-runner/compare/2.4.1...2.4.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.4.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eModify volume mount behavior when source does not exist (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1408\"\u003e#1408\u003c/a\u003e). Volumes specified using the \u003ccode\u003econtainer-volume-mount\u003c/code\u003e option will now be passed through to the underlying container engine unverified and unmodified. This now allows you to mount individual files (vs. the parent directory) and non-existing source volumes. The behavior encountered with a non-existing source volume depends on which container engine is in use (\u003ccode\u003edocker\u003c/code\u003e creates the volume, \u003ccode\u003epodman\u003c/code\u003e will error).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eVarious documentation updates.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/ansible/ansible-runner/compare/2.4.0...2.4.1\"\u003ehttps://github.com/ansible/ansible-runner/compare/2.4.0...2.4.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/ansible/ansible-runner/commit/aa1d85044c197f8bd03ba1824c6de4510bab30ee\"\u003e\u003ccode\u003eaa1d850\u003c/code\u003e\u003c/a\u003e Improve EOF log messages when streaming (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1454\"\u003e#1454\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1458\"\u003e#1458\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/23d1720a2f29ef2518e4bede106e88545ad2625f\"\u003e\u003ccode\u003e23d1720\u003c/code\u003e\u003c/a\u003e Fix container build cache issue (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1449\"\u003e#1449\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1450\"\u003e#1450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/342cfc58f46c6bf0b6b6f23d91b726fa27091637\"\u003e\u003ccode\u003e342cfc5\u003c/code\u003e\u003c/a\u003e Remove wheel building from CI (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1443\"\u003e#1443\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1445\"\u003e#1445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/3dde1ffdeec743b07c9d3ef90c587db40bea8d62\"\u003e\u003ccode\u003e3dde1ff\u003c/code\u003e\u003c/a\u003e Change keepalive test boundary to 15\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/823bba55e5905fc3d9408464a62efa244fc0b579\"\u003e\u003ccode\u003e823bba5\u003c/code\u003e\u003c/a\u003e Fix CI for core 2.19.0 (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1435\"\u003e#1435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/d9bcdd514bbe6e28b950c40b542c1fe2c37cdf00\"\u003e\u003ccode\u003ed9bcdd5\u003c/code\u003e\u003c/a\u003e Remove outdated skipif fixtures\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/d72b2ee9d2951b8eb06100a101500d4267b5e690\"\u003e\u003ccode\u003ed72b2ee\u003c/code\u003e\u003c/a\u003e Short circuit display wrapper in forks (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1414\"\u003e#1414\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/388135bcf6b7e786d197315e02d042d246388d4f\"\u003e\u003ccode\u003e388135b\u003c/code\u003e\u003c/a\u003e [PR \u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1425\"\u003e#1425\u003c/a\u003e/827f5f65 backport][release_2.4] 🧪 Use \u003ccode\u003ereusable-tox.yml\u003c/code\u003e @ `tox-dev...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/ac1a759d95e1953549bc9af46bf46285bec99b70\"\u003e\u003ccode\u003eac1a759\u003c/code\u003e\u003c/a\u003e Bump core integration tests for core 2.18 release (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1401\"\u003e#1401\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/4ff8ce3af4ace1fb1dc488bfe93e1257deedacf4\"\u003e\u003ccode\u003e4ff8ce3\u003c/code\u003e\u003c/a\u003e Modify volume mount behavior when source does not exist (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1408\"\u003e#1408\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ansible/ansible-runner/compare/2.4.0...2.4.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `antsibull-changelog` from 0.29.0 to 0.35.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ansible-community/antsibull-changelog/releases\"\u003eantsibull-changelog's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.35.0\u003c/h2\u003e\n\u003ch3\u003eRelease Summary\u003c/h3\u003e\n\u003cp\u003eFeature release.\u003c/p\u003e\n\u003ch3\u003eMinor Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAntsibull-changelog now also depends on antsibull-docs-parser (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/213\"\u003eansible-community/antsibull-changelog#213\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeclare support for Python 3.14 (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/207\"\u003eansible-community/antsibull-changelog#207\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eProcess Ansible markup in plugin/module/role \u003c!-- raw HTML omitted --\u003eshort_description\u003c!-- raw HTML omitted --\u003e (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/issues/207\"\u003eansible-community/antsibull-changelog#207\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/213\"\u003eansible-community/antsibull-changelog#213\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.34.0\u003c/h2\u003e\n\u003ch3\u003eRelease Summary\u003c/h3\u003e\n\u003cp\u003eFeature release for antsibull-build.\u003c/p\u003e\n\u003ch3\u003eMinor Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003c!-- raw HTML omitted --\u003eRSTDocumentRenderer\u003c!-- raw HTML omitted --\u003e API now allows to configure section underlines. This is needed to fix the Ansible 12 porting guide (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/203\"\u003eansible-community/antsibull-changelog#203\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.33.0\u003c/h2\u003e\n\u003ch3\u003eRelease Summary\u003c/h3\u003e\n\u003cp\u003eMaintenance release for fixing / deprecating certain boolean options.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes / Porting Guide\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003c!-- raw HTML omitted --\u003e--strict\u003c!-- raw HTML omitted --\u003e option of the \u003c!-- raw HTML omitted --\u003elint-changelog-yaml\u003c!-- raw HTML omitted --\u003e subcommand no longer expects a parameter. It now matches what was documented (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/issues/195\"\u003eansible-community/antsibull-changelog#195\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/196\"\u003eansible-community/antsibull-changelog#196\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe boolean valued options \u003c!-- raw HTML omitted --\u003e--is-collection\u003c!-- raw HTML omitted --\u003e and \u003c!-- raw HTML omitted --\u003e--collection-flatmap\u003c!-- raw HTML omitted --\u003e will likely change to proper flags (\u003c!-- raw HTML omitted --\u003e--flag\u003c!-- raw HTML omitted --\u003e and \u003c!-- raw HTML omitted --\u003e--no-flag`\u003c!-- raw HTML omitted --\u003e instead of \u003c!-- raw HTML omitted --\u003e--flag true\u003c!-- raw HTML omitted --\u003e/\u003c!-- raw HTML omitted --\u003e--flag false\u003c!-- raw HTML omitted --\u003e) in the near future. If you are using these options and want them to not change, or have other suggestions, please \u003ca href=\"https://github.com/ansible-community/antsibull-changelog/issues/new\"\u003ecreate an issue in the antsibull-changelog repository\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/199\"\u003eansible-community/antsibull-changelog#199\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.32.0\u003c/h2\u003e\n\u003ch3\u003eRelease Summary\u003c/h3\u003e\n\u003cp\u003eFeature release.\u003c/p\u003e\n\u003ch3\u003eMajor Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe new configuration setting \u003c!-- raw HTML omitted --\u003eoutput\u003c!-- raw HTML omitted --\u003e allows to configure more precisely which changelog files are generated and how they are formatted (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/issues/190\"\u003eansible-community/antsibull-changelog#190\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/194\"\u003eansible-community/antsibull-changelog#194\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMinor Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAntsibull-changelog now depends on Pydantic 2 (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/193\"\u003eansible-community/antsibull-changelog#193\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAntsibull-changelog now uses Pydantic to parse and validate the config. This means that validation is more strict than before and might reject configs that were incorrect, but still got accepted somehow (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/193\"\u003eansible-community/antsibull-changelog#193\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes / Porting Guide\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eWhen using antsibull-changelog as a library, \u003c!-- raw HTML omitted --\u003eChangelogConfig\u003c!-- raw HTML omitted --\u003e's constructor should no longer be called directly. Instead, use the class method \u003c!-- raw HTML omitted --\u003eChangelogConfig.parse()\u003c!-- raw HTML omitted --\u003e, which has the same signature than the previous constructor, except that \u003c!-- raw HTML omitted --\u003eignore_is_other_project\u003c!-- raw HTML omitted --\u003e now must be a keyword parameter (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/193\"\u003eansible-community/antsibull-changelog#193\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- 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/ansible-community/antsibull-changelog/blob/main/CHANGELOG.rst\"\u003eantsibull-changelog's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev0.35.0\u003c/h1\u003e\n\u003ch2\u003eRelease Summary\u003c/h2\u003e\n\u003cp\u003eFeature release.\u003c/p\u003e\n\u003ch2\u003eMinor Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAntsibull-changelog now also depends on antsibull-docs-parser (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/213\"\u003eansible-community/antsibull-changelog#213\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeclare support for Python 3.14 (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/207\"\u003eansible-community/antsibull-changelog#207\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eProcess Ansible markup in plugin/module/role \u003ccode\u003eshort_description\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/issues/207\"\u003eansible-community/antsibull-changelog#207\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/213\"\u003eansible-community/antsibull-changelog#213\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev0.34.0\u003c/h1\u003e\n\u003ch2\u003eRelease Summary\u003c/h2\u003e\n\u003cp\u003eFeature release for antsibull-build.\u003c/p\u003e\n\u003ch2\u003eMinor Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003eRSTDocumentRenderer\u003c/code\u003e API now allows to configure section underlines. This is needed to fix the Ansible 12 porting guide (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/203\"\u003eansible-community/antsibull-changelog#203\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev0.33.0\u003c/h1\u003e\n\u003ch2\u003eRelease Summary\u003c/h2\u003e\n\u003cp\u003eMaintenance release for fixing / deprecating certain boolean options.\u003c/p\u003e\n\u003ch2\u003eBreaking Changes / Porting Guide\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e--strict\u003c/code\u003e option of the \u003ccode\u003elint-changelog-yaml\u003c/code\u003e subcommand no longer expects a parameter. It now matches what was documented (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/issues/195\"\u003eansible-community/antsibull-changelog#195\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/196\"\u003eansible-community/antsibull-changelog#196\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDeprecated Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThe boolean valued options \u003ccode\u003e--is-collection\u003c/code\u003e and \u003ccode\u003e--collection-flatmap\u003c/code\u003e will likely change to proper flags (\u003ccode\u003e--flag\u003c/code\u003e and \u003ccode\u003e--no-flag`` instead of ``--flag true``/``--flag false``) in the near future. If you are using these options and want them to not change, or have other suggestions, please \u003c/code\u003ecreate an issue in the antsibull-changelog repository \u003ca href=\"https://github.com/ansible-community/antsibull-changelog/issues/new\"\u003ehttps://github.com/ansible-community/antsibull-changelog/issues/new\u003c/a\u003e`__ (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/pull/199\"\u003eansible-community/antsibull-changelog#199\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev0.32.0\u003c/h1\u003e\n\u003cp\u003eRelease Summary\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/ansible-community/antsibull-changelog/commit/1fe0013d3e0441552d1cde8abd68329b687e7f72\"\u003e\u003ccode\u003e1fe0013\u003c/code\u003e\u003c/a\u003e Release 0.35.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/antsibull-changelog/commit/58abbe5ab70b7da33cd34d006af23adf6d361637\"\u003e\u003ccode\u003e58abbe5\u003c/code\u003e\u003c/a\u003e Prepare 0.35.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/antsibull-changelog/commit/3c861b0a7d4cf820da4c83d6f86db5071d29ef73\"\u003e\u003ccode\u003e3c861b0\u003c/code\u003e\u003c/a\u003e Process Ansible markup for module/plugin/role short_description (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/issues/213\"\u003e#213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/antsibull-changelog/commit/52f345cf51765075c2792abefd27ed9c7e7924df\"\u003e\u003ccode\u003e52f345c\u003c/code\u003e\u003c/a\u003e Adjust tests to changes in antsibull-fileutils.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/antsibull-changelog/commit/5fa16b580e912e1cfa009e8695f3f0ffb29f0b96\"\u003e\u003ccode\u003e5fa16b5\u003c/code\u003e\u003c/a\u003e Remove no longer necessary lint ignore.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/antsibull-changelog/commit/2069da37431a5fe447cc3ababac67e8f8776df13\"\u003e\u003ccode\u003e2069da3\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 in the ci group (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/issues/212\"\u003e#212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/antsibull-changelog/commit/9c82eabac8ffadd097be0ff13691b45548b24b9b\"\u003e\u003ccode\u003e9c82eab\u003c/code\u003e\u003c/a\u003e Bump wntrblm/nox from 2025.10.16 to 2025.11.12 in the ci group (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/antsibull-changelog/commit/372f87c01391a20f002f3d9bf564a8d340e6a124\"\u003e\u003ccode\u003e372f87c\u003c/code\u003e\u003c/a\u003e Adjust URLs. (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/antsibull-changelog/commit/2b1e1096ed7d9b2d98a422811c00013422eff927\"\u003e\u003ccode\u003e2b1e109\u003c/code\u003e\u003c/a\u003e Bump wntrblm/nox from 2025.05.01 to 2025.10.16 in the ci group (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/issues/209\"\u003e#209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible-community/antsibull-changelog/commit/e4148eea4cddd7c86da284f1a352ec01acd1e1f5\"\u003e\u003ccode\u003ee4148ee\u003c/code\u003e\u003c/a\u003e Support Python 3.14. (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-changelog/issues/208\"\u003e#208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ansible-community/antsibull-changelog/compare/0.29.0...0.35.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `antsibull-core` from 3.0.2 to 3.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ansible-community/antsibull-core/releases\"\u003eantsibull-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.5.0\u003c/h2\u003e\n\u003ch3\u003eRelease Summary\u003c/h3\u003e\n\u003cp\u003eFeature and maintenance release.\u003c/p\u003e\n\u003ch3\u003eMinor Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd logging wrapper classes to simplify switch from twiggy to the standard logging framework (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-core/issues/39\"\u003eansible-community/antsibull-core#39\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/ansible-community/antsibull-core/pull/188\"\u003eansible-community/antsibull-core#188\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eDeclare support for Python 3.14 (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-core/pull/191\"\u003eansible-community/antsibull-core#191\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.4.0\u003c/h2\u003e\n\u003ch3\u003eRelease Summary\u003c/h3\u003e\n\u003cp\u003eFeature release.\u003c/p\u003e\n\u003ch3\u003eMinor Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow information on removed or deprecated collections to be updated. This is needed to generate a consistent changelog (\u003ca href=\"https://redirect.github.com/ansible-community/antsibull-core/pull/177\"\u003eansible-community/antsibull-core#17...\n\n_Description has been truncated_","html_url":"https://github.com/ansible/event-driven-ansible/pull/503","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ansible%2Fevent-driven-ansible/issues/503","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/503/packages"}},{"old_version":"1.17.1","new_version":"2.0.0","update_type":"major","path":null,"pr_created_at":"2026-01-25T00:48:36.000Z","version_change":"1.17.1 → 2.0.0","issue":{"uuid":"3852345804","node_id":"PR_kwDONnmdmc6_MCf-","number":4,"state":"open","title":"chore(deps): bump the dependencies group across 1 directory with 34 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-25T00:48:36.000Z","updated_at":"2026-01-25T00:48:44.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"dependencies","update_count":34,"packages":[{"name":"setuptools","old_version":"75.8.0","new_version":"80.10.1","repository_url":"https://github.com/pypa/setuptools"},{"name":"ansible-runner","old_version":"2.4.0","new_version":"2.4.2","repository_url":"https://github.com/ansible/ansible-runner"},{"name":"bcrypt","old_version":"4.2.1","new_version":"5.0.0","repository_url":"https://github.com/pyca/bcrypt"},{"name":"certifi","old_version":"2024.12.14","new_version":"2026.1.4","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"cryptography","old_version":"44.0.0","new_version":"46.0.3","repository_url":"https://github.com/pyca/cryptography"},{"name":"docutils","old_version":"0.21.2","new_version":"0.22.4","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"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":"jinja2","old_version":"3.1.5","new_version":"3.1.6","repository_url":"https://github.com/pallets/jinja"},{"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.5.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"nh3","old_version":"0.2.20","new_version":"0.3.2","repository_url":"https://github.com/messense/nh3"},{"name":"packaging","old_version":"24.2","new_version":"26.0","repository_url":"https://github.com/pypa/packaging"},{"name":"paramiko","old_version":"3.5.0","new_version":"4.0.0","repository_url":"https://github.com/paramiko/paramiko"},{"name":"pkginfo","old_version":"1.12.0","new_version":"1.12.1.2"},{"name":"pycparser","old_version":"2.22","new_version":"2.23","repository_url":"https://github.com/eliben/pycparser"},{"name":"pydantic","old_version":"2.11.7","new_version":"2.12.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-core","old_version":"2.33.2","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":"pymdown-extensions","old_version":"10.20","new_version":"10.20.1","repository_url":"https://github.com/facelessuser/pymdown-extensions"},{"name":"pynacl","old_version":"1.5.0","new_version":"1.6.2","repository_url":"https://github.com/pyca/pynacl"},{"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":"resolvelib","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/sarugaku/resolvelib"},{"name":"rich","old_version":"13.9.4","new_version":"14.3.1","repository_url":"https://github.com/Textualize/rich"},{"name":"twine","old_version":"6.0.1","new_version":"6.2.0","repository_url":"https://github.com/pypa/twine"},{"name":"typing-inspection","old_version":"0.4.1","new_version":"0.4.2","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"typing-extensions","old_version":"4.14.0","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":"wheel","old_version":"0.45.1","new_version":"0.46.3","repository_url":"https://github.com/pypa/wheel"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dependencies group with 34 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [setuptools](https://github.com/pypa/setuptools) | `75.8.0` | `80.10.1` |\n| [ansible-runner](https://github.com/ansible/ansible-runner) | `2.4.0` | `2.4.2` |\n| [bcrypt](https://github.com/pyca/bcrypt) | `4.2.1` | `5.0.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2024.12.14` | `2026.1.4` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.1` | `2.0.0` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [cryptography](https://github.com/pyca/cryptography) | `44.0.0` | `46.0.3` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.21.2` | `0.22.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\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| [jinja2](https://github.com/pallets/jinja) | `3.1.5` | `3.1.6` |\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.5.0` | `10.8.0` |\n| [nh3](https://github.com/messense/nh3) | `0.2.20` | `0.3.2` |\n| [packaging](https://github.com/pypa/packaging) | `24.2` | `26.0` |\n| [paramiko](https://github.com/paramiko/paramiko) | `3.5.0` | `4.0.0` |\n| [pkginfo](https://code.launchpad.net/~tseaver/pkginfo/trunk) | `1.12.0` | `1.12.1.2` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `2.23` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.7` | `2.12.5` |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.33.2` | `2.41.5` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) | `10.20` | `10.20.1` |\n| [pynacl](https://github.com/pyca/pynacl) | `1.5.0` | `1.6.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| [resolvelib](https://github.com/sarugaku/resolvelib) | `1.0.1` | `1.2.1` |\n| [rich](https://github.com/Textualize/rich) | `13.9.4` | `14.3.1` |\n| [twine](https://github.com/pypa/twine) | `6.0.1` | `6.2.0` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.1` | `0.4.2` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.14.0` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.6.3` |\n| [wheel](https://github.com/pypa/wheel) | `0.45.1` | `0.46.3` |\n\n\nUpdates `setuptools` from 75.8.0 to 80.10.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/setuptools/blob/main/NEWS.rst\"\u003esetuptools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev80.10.1\u003c/h1\u003e\n\u003ch2\u003eMisc\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5152\"\u003e#5152\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev80.10.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove post-release tags on setuptools' own build. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/4530\"\u003e#4530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRefreshed vendored dependencies. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5139\"\u003e#5139\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMisc\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5033\"\u003e#5033\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev80.9.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSet a deadline for the removal of pkg_resources later this year (December). (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/3085\"\u003e#3085\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoved reliance on pkg_resources in test_wheel. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/3085\"\u003e#3085\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev80.8.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eReplaced more references to pkg_resources with importlib equivalents in wheel odule. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/3085\"\u003e#3085\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRestore explicit LICENSE file. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5001\"\u003e#5001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoved no longer used build dependency on \u003ccode\u003ecoherent.licensed\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5003\"\u003e#5003\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev80.7.1\u003c/h1\u003e\n\u003cp\u003eBugfixes\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/pypa/setuptools/commit/adfb0c9e3d1789587d609228d9ea1d79272e4107\"\u003e\u003ccode\u003eadfb0c9\u003c/code\u003e\u003c/a\u003e Bump version: 80.10.0 → 80.10.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/8535d107c2ff20e8e4a0aca2d780461918f54180\"\u003e\u003ccode\u003e8535d10\u003c/code\u003e\u003c/a\u003e docs: Link pyproject.toml to ext_modules (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5125\"\u003e#5125\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/fafbe2c6566a9562300046b088ceb71efa9eb07f\"\u003e\u003ccode\u003efafbe2c\u003c/code\u003e\u003c/a\u003e [CI] Workaround for GHA handling of 'skipped' in job dependency chain (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5152\"\u003e#5152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/d171023e5b023bbe2ce8e29e7ae3314c01925783\"\u003e\u003ccode\u003ed171023\u003c/code\u003e\u003c/a\u003e Add news fragment\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/3dbba0672ad44d1b985ef47ebd098d10bee8e1d0\"\u003e\u003ccode\u003e3dbba06\u003c/code\u003e\u003c/a\u003e Refine comment to reference issue\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/e4922c88a5ebe7d7ca40a0abfaa59e1377372bf2\"\u003e\u003ccode\u003ee4922c8\u003c/code\u003e\u003c/a\u003e Apply suggestion from \u003ca href=\"https://github.com/webknjaz\"\u003e\u003ccode\u003e@​webknjaz\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/218c146ba37dabb9513f53510985dd6c3758dd23\"\u003e\u003ccode\u003e218c146\u003c/code\u003e\u003c/a\u003e [CI] Workaround for GHA handling of 'skipped' in job dependency chain\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/29031718a55e5c7d5bbfc572b84d35d1f1f52aff\"\u003e\u003ccode\u003e2903171\u003c/code\u003e\u003c/a\u003e Bump version: 80.9.0 → 80.10.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/23a2b180ef81e6cda7fe55c14cdfca6385e8903e\"\u003e\u003ccode\u003e23a2b18\u003c/code\u003e\u003c/a\u003e [CI] Allow the action \u003ccode\u003echeck-changed-folders\u003c/code\u003e to be skipped in the \u003ccode\u003echeck\u003c/code\u003e ac...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/660e5817c2b7631494adb2e044e17fcf59f683fc\"\u003e\u003ccode\u003e660e581\u003c/code\u003e\u003c/a\u003e [CI] Allow the action \u003ccode\u003echeck-changed-folders\u003c/code\u003e to be skipped in the \u003ccode\u003echeck\u003c/code\u003e ac...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/setuptools/compare/v75.8.0...v80.10.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ansible-runner` from 2.4.0 to 2.4.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ansible/ansible-runner/releases\"\u003eansible-runner's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eShort circuit display wrapper of the callback plugin within forks (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/pull/1414\"\u003eansible/ansible-runner#1414\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove EOF log messages when streaming (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/pull/1458\"\u003eansible/ansible-runner#1458\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/ansible/ansible-runner/compare/2.4.1...2.4.2\"\u003ehttps://github.com/ansible/ansible-runner/compare/2.4.1...2.4.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.4.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eModify volume mount behavior when source does not exist (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1408\"\u003e#1408\u003c/a\u003e). Volumes specified using the \u003ccode\u003econtainer-volume-mount\u003c/code\u003e option will now be passed through to the underlying container engine unverified and unmodified. This now allows you to mount individual files (vs. the parent directory) and non-existing source volumes. The behavior encountered with a non-existing source volume depends on which container engine is in use (\u003ccode\u003edocker\u003c/code\u003e creates the volume, \u003ccode\u003epodman\u003c/code\u003e will error).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eVarious documentation updates.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/ansible/ansible-runner/compare/2.4.0...2.4.1\"\u003ehttps://github.com/ansible/ansible-runner/compare/2.4.0...2.4.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/ansible/ansible-runner/commit/aa1d85044c197f8bd03ba1824c6de4510bab30ee\"\u003e\u003ccode\u003eaa1d850\u003c/code\u003e\u003c/a\u003e Improve EOF log messages when streaming (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1454\"\u003e#1454\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1458\"\u003e#1458\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/23d1720a2f29ef2518e4bede106e88545ad2625f\"\u003e\u003ccode\u003e23d1720\u003c/code\u003e\u003c/a\u003e Fix container build cache issue (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1449\"\u003e#1449\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1450\"\u003e#1450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/342cfc58f46c6bf0b6b6f23d91b726fa27091637\"\u003e\u003ccode\u003e342cfc5\u003c/code\u003e\u003c/a\u003e Remove wheel building from CI (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1443\"\u003e#1443\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1445\"\u003e#1445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/3dde1ffdeec743b07c9d3ef90c587db40bea8d62\"\u003e\u003ccode\u003e3dde1ff\u003c/code\u003e\u003c/a\u003e Change keepalive test boundary to 15\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/823bba55e5905fc3d9408464a62efa244fc0b579\"\u003e\u003ccode\u003e823bba5\u003c/code\u003e\u003c/a\u003e Fix CI for core 2.19.0 (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1435\"\u003e#1435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/d9bcdd514bbe6e28b950c40b542c1fe2c37cdf00\"\u003e\u003ccode\u003ed9bcdd5\u003c/code\u003e\u003c/a\u003e Remove outdated skipif fixtures\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/d72b2ee9d2951b8eb06100a101500d4267b5e690\"\u003e\u003ccode\u003ed72b2ee\u003c/code\u003e\u003c/a\u003e Short circuit display wrapper in forks (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1414\"\u003e#1414\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/388135bcf6b7e786d197315e02d042d246388d4f\"\u003e\u003ccode\u003e388135b\u003c/code\u003e\u003c/a\u003e [PR \u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1425\"\u003e#1425\u003c/a\u003e/827f5f65 backport][release_2.4] 🧪 Use \u003ccode\u003ereusable-tox.yml\u003c/code\u003e @ `tox-dev...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/ac1a759d95e1953549bc9af46bf46285bec99b70\"\u003e\u003ccode\u003eac1a759\u003c/code\u003e\u003c/a\u003e Bump core integration tests for core 2.18 release (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1401\"\u003e#1401\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-runner/commit/4ff8ce3af4ace1fb1dc488bfe93e1257deedacf4\"\u003e\u003ccode\u003e4ff8ce3\u003c/code\u003e\u003c/a\u003e Modify volume mount behavior when source does not exist (\u003ca href=\"https://redirect.github.com/ansible/ansible-runner/issues/1408\"\u003e#1408\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ansible/ansible-runner/compare/2.4.0...2.4.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bcrypt` from 4.2.1 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\u003ch2\u003e4.3.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.7.\u003c/li\u003e\n\u003cli\u003eWe now support free-threaded Python 3.13.\u003c/li\u003e\n\u003cli\u003eWe now support PyPy 3.11.\u003c/li\u003e\n\u003cli\u003eWe now publish wheels for free-threaded Python 3.13, for PyPy 3.11 on\n\u003ccode\u003emanylinux\u003c/code\u003e, and for ARMv7l on \u003ccode\u003emanylinux\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/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.2.1...5.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2024.12.14 to 2026.1.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\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\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/27ca98ad845ee6d130a88301622c137893f71620\"\u003e\u003ccode\u003e27ca98a\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7.0.9 to 7.0.11 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/56c59a63909cfd3162b37e7bc16956e64df0f737\"\u003e\u003ccode\u003e56c59a6\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.0 to 6.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ae0021cd43a77bfba67d20a041469cdf6996570e\"\u003e\u003ccode\u003eae0021c\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.0.0 to 6.1.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/380\"\u003e#380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddf5d0b5d2a3d55fd92a79f141dbb5e074caf924\"\u003e\u003ccode\u003eddf5d0b\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5.0.1 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2024.12.14...2026.01.04\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cffi` from 1.17.1 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only) - huge thanks to the folks at Quansight Labs for all the work to get this one sorted!\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.0.0b1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only).\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/6366c01d84e9a78e7e85f12ebe9760ba5d19b6d3\"\u003e\u003ccode\u003e6366c01\u003c/code\u003e\u003c/a\u003e release 2.0.0 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/95c847663aec401e4003927a274e4de9b8595f4f\"\u003e\u003ccode\u003e95c8476\u003c/code\u003e\u003c/a\u003e 2.0.0 post beta backports (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/195cbda66b6be9297ef6d584644e50cfdcca4e8a\"\u003e\u003ccode\u003e195cbda\u003c/code\u003e\u003c/a\u003e Release 2.0.0b1 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b4bbe7940d3f76027534db1aecbae9b61c35221a\"\u003e\u003ccode\u003eb4bbe79\u003c/code\u003e\u003c/a\u003e fix version test to support beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/7ed073de66e713cf791b6fdfa23685c81fdfd6ad\"\u003e\u003ccode\u003e7ed073d\u003c/code\u003e\u003c/a\u003e Add support for the free-threaded build (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/178\"\u003e#178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/67a170dc7972dc9361743690b38da3d963b200ef\"\u003e\u003ccode\u003e67a170d\u003c/code\u003e\u003c/a\u003e Change the license from MIT to MIT-no-attribution, which is the same without ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/92645ec9329feb03e3fa86240b40fe0fc37469d1\"\u003e\u003ccode\u003e92645ec\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support/testing (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/177\"\u003e#177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/2b81170583a898478a6996c9705d8c38ab7f73a1\"\u003e\u003ccode\u003e2b81170\u003c/code\u003e\u003c/a\u003e doc: update test commands in Section Testing/development tips (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/25172b84cf51cf58241f074ccd1efd9c7648cb43\"\u003e\u003ccode\u003e25172b8\u003c/code\u003e\u003c/a\u003e doc: update year (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b57a92c03eb2078a99c900519a37d18b4d52324f\"\u003e\u003ccode\u003eb57a92c\u003c/code\u003e\u003c/a\u003e issue 147: force-compute nested structs before parent structs.  Occurs mainly...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.1 to 3.4.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 `cryptography` from 44.0.0 to 46.0.3\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\u003e46.0.3 - 2025-10-15\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Fixed compilation when using LibreSSL 4.2.0.\n\u003cp\u003e.. _v46-0-2:\u003c/p\u003e\n\u003cp\u003e46.0.2 - 2025-09-30\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.4.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v46-0-1:\u003c/p\u003e\n\u003cp\u003e46.0.1 - 2025-09-16\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Fixed an issue where users installing via ``pip`` on Python 3.14 development\n  versions would not properly install a dependency.\n* Fixed an issue building the free-threaded macOS 3.14 wheels.\n\u003cp\u003e.. _v46-0-0:\u003c/p\u003e\n\u003cp\u003e46.0.0 - 2025-09-16\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Support for Python 3.7 has been removed.\u003c/li\u003e\n\u003cli\u003eSupport for OpenSSL \u0026lt; 3.0 is deprecated and will be removed in the next\nrelease.\u003c/li\u003e\n\u003cli\u003eSupport for \u003ccode\u003ex86_64\u003c/code\u003e macOS (including publishing wheels) is deprecated\nand will be removed in two releases. We will switch to publishing an\n\u003ccode\u003earm64\u003c/code\u003e only wheel for macOS.\u003c/li\u003e\n\u003cli\u003eSupport for 32-bit Windows (including publishing wheels) is deprecated\nand will be removed in two releases. Users should move to a 64-bit\nPython installation.\u003c/li\u003e\n\u003cli\u003eUpdated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.3.\u003c/li\u003e\n\u003cli\u003eWe now build \u003ccode\u003eppc64le\u003c/code\u003e \u003ccode\u003emanylinux\u003c/code\u003e wheels and publish them to PyPI.\u003c/li\u003e\n\u003cli\u003eWe now build \u003ccode\u003ewin_arm64\u003c/code\u003e (Windows on Arm) wheels and publish them to PyPI.\u003c/li\u003e\n\u003cli\u003eAdded support for free-threaded Python 3.14.\u003c/li\u003e\n\u003cli\u003eRemoved the deprecated \u003ccode\u003eget_attribute_for_oid\u003c/code\u003e method on\n:class:\u003ccode\u003e~cryptography.x509.CertificateSigningRequest\u003c/code\u003e. Users should use\n:meth:\u003ccode\u003e~cryptography.x509.Attributes.get_attribute_for_oid\u003c/code\u003e instead.\u003c/li\u003e\n\u003cli\u003eRemoved the deprecated \u003ccode\u003eCAST5\u003c/code\u003e, \u003ccode\u003eSEED\u003c/code\u003e, \u003ccode\u003eIDEA\u003c/code\u003e, and \u003ccode\u003eBlowfish\u003c/code\u003e\nclasses from the cipher module. These are still available in\n:doc:\u003ccode\u003e/hazmat/decrepit/index\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eIn X.509, when performing a PSS signature with a SHA-3 hash, it is now\nencoded with the official NIST SHA3 OID.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v45-0-7:\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/pyca/cryptography/commit/c0af4dd7b75921bbe9f1d41a03dbd4b64a9e3403\"\u003e\u003ccode\u003ec0af4dd\u003c/code\u003e\u003c/a\u003e release 46.0.3 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13681\"\u003e#13681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/99efe5ad150a56efadafacaffd0e3ee319373904\"\u003e\u003ccode\u003e99efe5a\u003c/code\u003e\u003c/a\u003e bump version for 46.0.2 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13531\"\u003e#13531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e735cfc27502320101c130335c556394a125ba52\"\u003e\u003ccode\u003ee735cfc\u003c/code\u003e\u003c/a\u003e release 46.0.1 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13450\"\u003e#13450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/4e457ffba43a6d87efc63c33041e2081438dd8a4\"\u003e\u003ccode\u003e4e457ff\u003c/code\u003e\u003c/a\u003e Explicitly specify python in mac uv build invocation (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13447\"\u003e#13447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/2726efdb6d67f1c90cf9c6062d9fe051965586f8\"\u003e\u003ccode\u003e2726efd\u003c/code\u003e\u003c/a\u003e Depend on CFFI 2.0.0 or newer on Python \u0026gt; 3.8 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13448\"\u003e#13448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/62230623d183706632c0eb7822c96ac95e3710a8\"\u003e\u003ccode\u003e6223062\u003c/code\u003e\u003c/a\u003e release 46.0.0 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13446\"\u003e#13446\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/563c4915b0931455706f761a4579c26698824eae\"\u003e\u003ccode\u003e563c491\u003c/code\u003e\u003c/a\u003e Update comment for pyopenssl-release tag (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13445\"\u003e#13445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/d2f6f7faced35b73277bc624ff496f8af696b172\"\u003e\u003ccode\u003ed2f6f7f\u003c/code\u003e\u003c/a\u003e Bump downstream dependencies in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13439\"\u003e#13439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e7ab02bd679d0b4f55d93486fe27e62554ef15d4\"\u003e\u003ccode\u003ee7ab02b\u003c/code\u003e\u003c/a\u003e we'll ship this with 3.5.3 why not (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13442\"\u003e#13442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/0b68a4bffb61202e4d4f5074cd30c2b9d15f429e\"\u003e\u003ccode\u003e0b68a4b\u003c/code\u003e\u003c/a\u003e Another pair of bump dependencies fix (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13444\"\u003e#13444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/cryptography/compare/44.0.0...46.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `docutils` from 0.21.2 to 0.22.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/rtfd/recommonmark/commits\"\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 `jaraco-context` from 6.0.1 to 6.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jaraco/jaraco.context/blob/main/NEWS.rst\"\u003ejaraco-context's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev6.1.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eIn tarfile.context, ensure that the default filter honors the data filter to avoid path traversal vulnerabilities.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev6.0.2\u003c/h1\u003e\n\u003cp\u003eNo significant changes.\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/jaraco/jaraco.context/commit/675aaf5bfb926bdafcded1b0e08ca011d6e0f599\"\u003e\u003ccode\u003e675aaf5\u003c/code\u003e\u003c/a\u003e Finalize\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/7b26a42b525735e4085d2e994e13802ea339d5f9\"\u003e\u003ccode\u003e7b26a42\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jaraco/jaraco.context/issues/18\"\u003e#18\u003c/a\u003e from jaraco/security/extraction-safety\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/398390e0ac4faf43e6449374964bbe76f0663bc1\"\u003e\u003ccode\u003e398390e\u003c/code\u003e\u003c/a\u003e Suppress failure (missed expectation) on Python 3.12.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/54a1bc6028838c102ed2c3c27dfca65afbedd326\"\u003e\u003ccode\u003e54a1bc6\u003c/code\u003e\u003c/a\u003e Use the filter argument to tarfile.extract to avoid the deprecation warning.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/7eb62b11d7071d3873facfab7361b2d2bf8a8f44\"\u003e\u003ccode\u003e7eb62b1\u003c/code\u003e\u003c/a\u003e Also extract the member, for completeness.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/3b5ac92dbc7fc13bfe89087c2ae80653314f845b\"\u003e\u003ccode\u003e3b5ac92\u003c/code\u003e\u003c/a\u003e Add another case, demonstrating legitimate use of parent dir.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/3b16eec9f80db260bd072acdb85d0bd2d530a563\"\u003e\u003ccode\u003e3b16eec\u003c/code\u003e\u003c/a\u003e In tarfile.context, ensure that the default filter honors the data filter to ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/52602fa4dceb8cb0b79f7be98b3c698626eb00bb\"\u003e\u003ccode\u003e52602fa\u003c/code\u003e\u003c/a\u003e Update implementation to have different expectations for different cases.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/e066131ed7a882351a42499c9f72a1313a572c55\"\u003e\u003ccode\u003ee066131\u003c/code\u003e\u003c/a\u003e Convert the repro to a parameterized unit test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.context/commit/d4c5567280aaba7fef8521dccedc49e2cb06ebc6\"\u003e\u003ccode\u003ed4c5567\u003c/code\u003e\u003c/a\u003e 👹 Feed the hobgoblins (delint).\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jaraco/jaraco.context/compare/v6.0.1...v6.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jaraco-functools` from 4.1.0 to 4.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jaraco/jaraco.functools/blob/main/NEWS.rst\"\u003ejaraco-functools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev4.4.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd noop.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev4.3.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd none_as function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev4.2.1\u003c/h1\u003e\n\u003cp\u003eNo significant changes.\u003c/p\u003e\n\u003ch1\u003ev4.2.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd 'passthrough' function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded missing \u003ccode\u003esplat\u003c/code\u003e in stubs -- by :user:\u003ccode\u003eAvasam\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/jaraco/jaraco.functools/issues/29\"\u003e#29\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/jaraco/jaraco.functools/commit/b57bb859e09f10f1e2ad7e64e9d71723793517f2\"\u003e\u003ccode\u003eb57bb85\u003c/code\u003e\u003c/a\u003e Finalize\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/21bcec01fb9104296737b6ab2a7ac61d5ed68cb0\"\u003e\u003ccode\u003e21bcec0\u003c/code\u003e\u003c/a\u003e Add noop.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/105d8ca2a61e703881d60302c45a31706f441453\"\u003e\u003ccode\u003e105d8ca\u003c/code\u003e\u003c/a\u003e 👹 Feed the hobgoblins (delint).\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/7f0b09aebbffd846374b2dd886035bb780d9ab20\"\u003e\u003ccode\u003e7f0b09a\u003c/code\u003e\u003c/a\u003e Merge \u003ca href=\"https://github.com/jaraco/skeleton\"\u003ehttps://github.com/jaraco/skeleton\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/8f3d95e7db0114e26e57dd95932b141ead74f7c5\"\u003e\u003ccode\u003e8f3d95e\u003c/code\u003e\u003c/a\u003e Pin mypy on PyPy.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/d47a969ed4567bbdee26034ccaaa8b8169f44fcf\"\u003e\u003ccode\u003ed47a969\u003c/code\u003e\u003c/a\u003e Specify the directory for news fragments.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/9f4e0e2849659969577f40be40cabe026dd5fb0f\"\u003e\u003ccode\u003e9f4e0e2\u003c/code\u003e\u003c/a\u003e Finalize\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/680b9aeed7c2f22f7a662b8c87af013d6ec4a076\"\u003e\u003ccode\u003e680b9ae\u003c/code\u003e\u003c/a\u003e Add none_as function.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/8c5810ed39f431598f8498499e7e8fa38a8ed455\"\u003e\u003ccode\u003e8c5810e\u003c/code\u003e\u003c/a\u003e\u003ccode\u003ejaraco/skeleton#177\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/jaraco.functools/commit/04ff5549ee93f907bcebb1db570ad291ae55fd29\"\u003e\u003ccode\u003e04ff554\u003c/code\u003e\u003c/a\u003e\u003ccode\u003ejaraco/skeleton#181\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jaraco/jaraco.functools/compare/v4.1.0...v4.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jinja2` from 3.1.5 to 3.1.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/jinja/releases\"\u003ejinja2's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.1.6\u003c/h2\u003e\n\u003cp\u003eThis is the Jinja 3.1.6 security release, which fixes security issues 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/Jinja2/3.1.6/\"\u003ehttps://pypi.org/project/Jinja2/3.1.6/\u003c/a\u003e\nChanges: \u003ca href=\"https://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\"\u003ehttps://jinja.palletsprojects.com/en/stable/changes/#version-3-1-6\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup, allowing the sandbox to apply its checks. \u003ca href=\"https://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\"\u003ehttps://github.com/pallets/jinja/security/advisories/GHSA-cpwx-vrp4-4pq7\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/jinja/blob/main/CHANGES.rst\"\u003ejinja2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.1.6\u003c/h2\u003e\n\u003cp\u003eReleased 2025-03-05\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003e|attr\u003c/code\u003e filter does not bypass the environment's attribute lookup,\nallowing the sandbox to apply its checks. :ghsa:\u003ccode\u003ecpwx-vrp4-4pq7\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/jinja/commit/15206881c006c79667fe5154fe80c01c65410679\"\u003e\u003ccode\u003e1520688\u003c/code\u003e\u003c/a\u003e release version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/90457bbf33b8662926ae65cdde4c4c32e756e403\"\u003e\u003ccode\u003e90457bb\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/065334d1ee5b7210e1a0a93c37238c86858f2af7\"\u003e\u003ccode\u003e065334d\u003c/code\u003e\u003c/a\u003e attr filter uses env.getattr\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/033c20015c7ca899ab52eb921bb0f08e6d3dd145\"\u003e\u003ccode\u003e033c200\u003c/code\u003e\u003c/a\u003e start version 3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/bc68d4efa99c5f77334f0e519628558059ae8c35\"\u003e\u003ccode\u003ebc68d4e\u003c/code\u003e\u003c/a\u003e use global contributing guide (\u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2070\"\u003e#2070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/247de5e0c5062a792eb378e50e13e692885ee486\"\u003e\u003ccode\u003e247de5e\u003c/code\u003e\u003c/a\u003e use global contributing guide\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/ab8218c7a1b66b62e0ad6b941bd514e3a64a358f\"\u003e\u003ccode\u003eab8218c\u003c/code\u003e\u003c/a\u003e use project advisory link instead of global\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/jinja/commit/b4ffc8ff299dfd360064bea4cd2f862364601ad2\"\u003e\u003ccode\u003eb4ffc8f\u003c/code\u003e\u003c/a\u003e release version 3.1.5 (\u003ca href=\"https://redirect.github.com/pallets/jinja/issues/2066\"\u003e#2066\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pallets/jinja/compare/3.1.5...3.1.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `keyring` from 25.6.0 to 25.7.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jaraco/keyring/blob/main/NEWS.rst\"\u003ekeyring's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev25.7.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImproved support for KWallet 6. (\u003ca href=\"https://redirect.github.com/jaraco/keyring/issues/728\"\u003e#728\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved cruft from Python 3.8. (\u003ca href=\"https://redirect.github.com/jaraco/keyring/issues/722\"\u003e#722\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/jaraco/keyring/commit/38c040133559682902f25fe96496756ee6849820\"\u003e\u003ccode\u003e38c0401\u003c/code\u003e\u003c/a\u003e Finalize\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/keyring/commit/e5b7d2a20931fa7f4d53e28eb5dffceb2e82ba6b\"\u003e\u003ccode\u003ee5b7d2a\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Disable type checking on filter call. Fixes \u003ca href=\"https://redirect.github.com/jaraco/keyring/issues/659\"\u003e#659\u003c/a\u003e.\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/keyring/commit/2ce2d465050d73db8b1b7662c4e53c7b6fa7aafc\"\u003e\u003ccode\u003e2ce2d46\u003c/code\u003e\u003c/a\u003e Add news fragment.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/keyring/commit/4bb5ece9a6959ee71ec464595f64e88951d00fb6\"\u003e\u003ccode\u003e4bb5ece\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jaraco/keyring/issues/722\"\u003e#722\u003c/a\u003e from hugovk/rm-3.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/keyring/commit/d7c0aa4e1dbfcde3064c1448dc1fd09c76e93d1d\"\u003e\u003ccode\u003ed7c0aa4\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into rm-3.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/keyring/commit/ea1d763bfd80bf7cedd95fb040d38fc1d29c3e87\"\u003e\u003ccode\u003eea1d763\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jaraco/keyring/issues/721\"\u003e#721\u003c/a\u003e from hugovk/fix-tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/keyring/commit/30eea9d7769b167be0667ea3aa3722c762e20659\"\u003e\u003ccode\u003e30eea9d\u003c/code\u003e\u003c/a\u003e Merge \u003ca href=\"https://github.com/jaraco/skeleton\"\u003ehttps://github.com/jaraco/skeleton\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/keyring/commit/fb6e52cf3f511242f0a9ff2441eb7e29c67f7268\"\u003e\u003ccode\u003efb6e52c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jaraco/keyring/issues/724\"\u003e#724\u003c/a\u003e from dachucky/patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/keyring/commit/9ff845920c4c72031343b17c6a3d605e6247f081\"\u003e\u003ccode\u003e9ff8459\u003c/code\u003e\u003c/a\u003e Generalize the guidance around tox.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/keyring/commit/e7fbfa76a1f675bede0f5654e99add3a0cd66370\"\u003e\u003ccode\u003ee7fbfa7\u003c/code\u003e\u003c/a\u003e Prefer imperative third-person voice.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jaraco/keyring/compare/v25.6.0...v25.7.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 `more-itertools` from 10.5.0 to 10.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/more-itertools/more-itertools/releases\"\u003emore-itertools's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 10.8.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix typo in version history for 10.7.0 by bbayles in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/981\"\u003emore-itertools/more-itertools#981\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIssue 980: Fix variable names: iterable vs iterator by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/982\"\u003emore-itertools/more-itertools#982\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove docstrings for dft, idft, and multinomial by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/983\"\u003emore-itertools/more-itertools#983\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a note about polynomial endianness by bbayles in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/984\"\u003emore-itertools/more-itertools#984\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SPDX license identifier by cdce8p in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/978\"\u003emore-itertools/more-itertools#978\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove setup.py file by cdce8p in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/979\"\u003emore-itertools/more-itertools#979\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude \u003ccode\u003ederangements\u003c/code\u003e by itself by bbayles in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/985\"\u003emore-itertools/more-itertools#985\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd derangements by debruijn in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/946\"\u003emore-itertools/more-itertools#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIssue 986: argmin and argmax by bbayles in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/988\"\u003emore-itertools/more-itertools#988\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSplit-out the integer math functions by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/990\"\u003emore-itertools/more-itertools#990\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSpelling, grammar, punctuation, and usage by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/991\"\u003emore-itertools/more-itertools#991\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix the return type of more_itertools.batched by qobilidop in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/993\"\u003emore-itertools/more-itertools#993\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix duplicate words in version_history.rst by saadmanrafat in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/992\"\u003emore-itertools/more-itertools#992\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove islice_extended memory usage when start\u0026lt;0 and step\u0026gt;0 by ben42code in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/995\"\u003emore-itertools/more-itertools#995\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUnittest islice_extended impact on iterated elements lifecycle by ben42code in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/996\"\u003emore-itertools/more-itertools#996\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003econvolve() is agnostic to endianness by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/997\"\u003emore-itertools/more-itertools#997\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSample simplification by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/998\"\u003emore-itertools/more-itertools#998\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIssue 1005: Document difference from builtin min() and max(). by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1008\"\u003emore-itertools/more-itertools#1008\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGeneral cleanups by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1007\"\u003emore-itertools/more-itertools#1007\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken link by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1004\"\u003emore-itertools/more-itertools#1004\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd option for nth_prime() to be approximated by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1002\"\u003emore-itertools/more-itertools#1002\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebefore_and_after improvement by pochmann3 in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1012\"\u003emore-itertools/more-itertools#1012\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFast paths instead of applying an identity function by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1018\"\u003emore-itertools/more-itertools#1018\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSpeed-up _complex_sumprod() by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1000\"\u003emore-itertools/more-itertools#1000\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove islice_extended memory usage when stop\u0026lt;0 and step\u0026gt;0 by ben42code in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/999\"\u003emore-itertools/more-itertools#999\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd derangements() to the doc indexes by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1020\"\u003emore-itertools/more-itertools#1020\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove readability/findability with combinatoric subsections by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1022\"\u003emore-itertools/more-itertools#1022\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix 1009: Confused docstring for minmax() by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1021\"\u003emore-itertools/more-itertools#1021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove \u003ccode\u003einterleave_longest\u003c/code\u003e by pochmann3 in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1027\"\u003emore-itertools/more-itertools#1027\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIssue 1001: fix last() when \u003cstrong\u003ereversed\u003c/strong\u003e is None by inventshah in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1028\"\u003emore-itertools/more-itertools#1028\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIssue 1029: fix batched IDE/help() docs by inventshah in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1031\"\u003emore-itertools/more-itertools#1031\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove \u003ccode\u003emark_ends\u003c/code\u003e by pochmann3 in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1035\"\u003emore-itertools/more-itertools#1035\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd usage notes for sample() by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1037\"\u003emore-itertools/more-itertools#1037\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix docstring and comment in private _nth_prime_bounds function by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1036\"\u003emore-itertools/more-itertools#1036\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix linespacing by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1038\"\u003emore-itertools/more-itertools#1038\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd running_median by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1039\"\u003emore-itertools/more-itertools#1039\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erunning_median() with windowed data by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1040\"\u003emore-itertools/more-itertools#1040\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePin furo to 2024.08.06 by bbayles in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1043\"\u003emore-itertools/more-itertools#1043\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Fix invisible REPL output in HTML dark mode by moreati in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1045\"\u003emore-itertools/more-itertools#1045\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse python instead of python3 when running tests by ktbarrett in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1051\"\u003emore-itertools/more-itertools#1051\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIssue 1044: Add new tool: extract() by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1056\"\u003emore-itertools/more-itertools#1056\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTest 3.14.0-rc.2 by bbayles in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1060\"\u003emore-itertools/more-itertools#1060\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eunzip\u003c/code\u003e: replace custom itemgetter by pochmann3 in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1059\"\u003emore-itertools/more-itertools#1059\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003einterleave_randomly\u003c/code\u003e by ktbarrett in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1048\"\u003emore-itertools/more-itertools#1048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIssue 1003: Multidimensional reshape() by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1062\"\u003emore-itertools/more-itertools#1062\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGet coverage to 100% by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1065\"\u003emore-itertools/more-itertools#1065\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove count_cycle() by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1066\"\u003emore-itertools/more-itertools#1066\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eClarify how derangements treats duplicate inputs by rhettinger in \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/pull/1069\"\u003emore-itertools/more-itertools#1069\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/more-itertools/more-itertools/commit/8c1a6ef241b51ff055e89219f050ccf4f15f37f6\"\u003e\u003ccode\u003e8c1a6ef\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/issues/1071\"\u003e#1071\u003c/a\u003e from more-itertools/version-10.8.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/more-itertools/more-itertools/commit/24be4400152530567fc308578ce5e8072ad77982\"\u003e\u003ccode\u003e24be440\u003c/code\u003e\u003c/a\u003e Add note for issue 1054\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/more-itertools/more-itertools/commit/3dd5980a6d73bb9902a4ab1fb1eb05d512081f86\"\u003e\u003ccode\u003e3dd5980\u003c/code\u003e\u003c/a\u003e Add a note for issue 1063\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/more-itertools/more-itertools/commit/2ce52d104921364729df909c03f52ae7e2085f82\"\u003e\u003ccode\u003e2ce52d1\u003c/code\u003e\u003c/a\u003e Update docs for 10.8.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/more-itertools/more-itertools/commit/eae915618a81fa1263484630c892408fc5670d5a\"\u003e\u003ccode\u003eeae9156\u003c/code\u003e\u003c/a\u003e Bump version: 10.7.0 → 10.8.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/more-itertools/more-itertools/commit/a80f1c56f513a2758445372f263efae6f7337561\"\u003e\u003ccode\u003ea80f1c5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/issues/1068\"\u003e#1068\u003c/a\u003e from rhettinger/cleanup_tail\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/more-itertools/more-itertools/commit/57015894e4f043f33b98d5565b720054e926bc14\"\u003e\u003ccode\u003e5701589\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/issues/1067\"\u003e#1067\u003c/a\u003e from rhettinger/reshape_beautification\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/more-itertools/more-itertools/commit/58e0331c4e542ea950aa0e55bfecd2eeb9e641d8\"\u003e\u003ccode\u003e58e0331\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/more-itertools/more-itertools/issues/1069\"\u003e#1069\u003c/a\u003e from rhettinger/derangements_doc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/more-itertools/more-itertools/commit/9a3d7e31e6956446453ee0a9224b842bf21e3022\"\u003e\u003ccode\u003e9a3d7e3\u003c/code\u003e\u003c/a\u003e Clarify how derangements treats duplicate inputs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/more-itertools/more-itertools/commit/c509b1434ebe5201a6f7298d7495da5914dd88d4\"\u003e\u003ccode\u003ec509b14\u003c/code\u003e\u003c/a\u003e Clean-up tail().  Prefer try/except over the Sized ABC.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/more-itertools/more-itertools/compare/v10.5.0...v10.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `nh3` from 0.2.20 to 0.3.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/messense/nh3/releases\"\u003enh3's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.3.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade GitHub Actions by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/94\"\u003emessense/nh3#94\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGitHub Actions: Stop reinstalling Rust on windows-11-arm by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/95\"\u003emessense/nh3#95\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd README reference in pyproject.toml by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/97\"\u003emessense/nh3#97\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/messense/nh3/pull/96\"\u003emessense/nh3#96\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBuild wheels for Python 3.14 free-threaded by \u003ca href=\"https://github.com/messense\"\u003e\u003ccode\u003e@​messense\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/100\"\u003emessense/nh3#100\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/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/messense/nh3/pull/94\"\u003emessense/nh3#94\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/messense/nh3/compare/v0.3.1...v0.3.2\"\u003e...\n\n_Description has been truncated_","html_url":"https://github.com/thesunnysinha/vm_tool/pull/4","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/thesunnysinha%2Fvm_tool/issues/4","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/4/packages"}},{"old_version":"1.17.1","new_version":"2.0.0","update_type":"major","path":"/Data/Python/Constraints","pr_created_at":"2026-01-24T20:06:48.000Z","version_change":"1.17.1 → 2.0.0","issue":{"uuid":"3851959999","node_id":"PR_kwDORAhFZs6_K0k5","number":1,"state":"open","title":"Bump the all-deps group in /Data/Python/Constraints with 81 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-24T20:06:48.000Z","updated_at":"2026-01-31T04:01:14.540Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"all-deps","update_count":81,"packages":[{"name":"aiofiles","old_version":"24.1.0","new_version":"25.1.0","repository_url":"https://github.com/Tinche/aiofiles"},{"name":"aiosqlite","old_version":"0.20.0","new_version":"0.22.1","repository_url":"https://github.com/omnilib/aiosqlite"},{"name":"antlr4-python3-runtime","old_version":"4.13.1","new_version":"4.13.2"},{"name":"asyncua","old_version":"1.1.5","new_version":"1.1.8","repository_url":"https://github.com/FreeOpcUa/opcua-asyncio"},{"name":"atomicwrites","old_version":"1.4.0","new_version":"1.4.1","repository_url":"https://github.com/untitaker/python-atomicwrites"},{"name":"autobahn","old_version":"21.3.1","new_version":"25.12.2","repository_url":"https://github.com/crossbario/autobahn-python"},{"name":"awkward","old_version":"2.6.10","new_version":"2.8.11","repository_url":"https://github.com/scikit-hep/awkward-1.0"},{"name":"awkward-cpp","old_version":"40","new_version":"51","repository_url":"https://github.com/scikit-hep/awkward-1.0"},{"name":"blinker","old_version":"1.8.2","new_version":"1.9.0","repository_url":"https://github.com/pallets-eco/blinker"},{"name":"certifi","old_version":"2025.11.12","new_version":"2026.1.4","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"click","old_version":"8.1.7","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"comtypes","old_version":"1.4.12","new_version":"1.4.15","repository_url":"https://github.com/enthought/comtypes"},{"name":"configparser","old_version":"7.1.0","new_version":"7.2.0","repository_url":"https://github.com/jaraco/configparser"},{"name":"contourpy","old_version":"1.1.1","new_version":"1.3.3","repository_url":"https://github.com/contourpy/contourpy"},{"name":"cpylog","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/SteveDoyle2/cpylog"},{"name":"docutils","old_version":"0.20.1","new_version":"0.22.4","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"ezdxf","old_version":"1.1.4","new_version":"1.4.3","repository_url":"https://github.com/mozman/ezdxf"},{"name":"fonttools","old_version":"4.57.0","new_version":"4.61.1","repository_url":"https://github.com/fonttools/fonttools"},{"name":"fsspec","old_version":"2025.3.0","new_version":"2026.1.0","repository_url":"https://github.com/fsspec/filesystem_spec"},{"name":"geomdl","old_version":"5.3.1","new_version":"5.4.0","repository_url":"https://github.com/orbingol/NURBS-Python"},{"name":"ijson","old_version":"3.3.0","new_version":"3.4.0.post0","repository_url":"https://github.com/ICRAR/ijson"},{"name":"imageio","old_version":"2.35.1","new_version":"2.37.2","repository_url":"https://github.com/imageio/imageio"},{"name":"importlib-metadata","old_version":"8.5.0","new_version":"8.7.1","repository_url":"https://github.com/python/importlib_metadata"},{"name":"importlib-resources","old_version":"6.4.5","new_version":"6.5.2","repository_url":"https://github.com/python/importlib_resources"},{"name":"joblib","old_version":"1.4.2","new_version":"1.5.3","repository_url":"https://github.com/joblib/joblib"},{"name":"kiwisolver","old_version":"1.4.7","new_version":"1.4.9","repository_url":"https://github.com/nucleic/kiwi"},{"name":"ladybug-comfort","old_version":"0.18.96","new_version":"0.18.97","repository_url":"https://github.com/ladybug-tools/ladybug-comfort"},{"name":"ladybug-core","old_version":"0.44.29","new_version":"0.44.30","repository_url":"https://github.com/ladybug-tools/ladybug"},{"name":"llvmlite","old_version":"0.41.1","new_version":"0.46.0","repository_url":"https://github.com/numba/llvmlite"},{"name":"markdown","old_version":"3.7","new_version":"3.10.1","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"markdown-it-py","old_version":"3.0.0","new_version":"4.0.0","repository_url":"https://github.com/executablebooks/markdown-it-py"},{"name":"matplotlib","old_version":"3.7.5","new_version":"3.10.8","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"msgpack","old_version":"1.1.1","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"networkx","old_version":"3.1","new_version":"3.6.1","repository_url":"https://github.com/networkx/networkx"},{"name":"numba","old_version":"0.58.1","new_version":"0.63.1","repository_url":"https://github.com/numba/numba"},{"name":"numpy","old_version":"1.24.4","new_version":"2.4.1","repository_url":"https://github.com/numpy/numpy"},{"name":"openstudio","old_version":"3.10.0","new_version":"3.11.0","repository_url":"https://github.com/NREL/OpenStudio"},{"name":"packaging","old_version":"25.0","new_version":"26.0","repository_url":"https://github.com/pypa/packaging"},{"name":"pandas","old_version":"2.0.3","new_version":"3.0.0","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"pillow","old_version":"10.4.0","new_version":"12.1.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.3.6","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"posthog","old_version":"4.2.0","new_version":"7.6.0","repository_url":"https://github.com/posthog/posthog-python"},{"name":"protobuf","old_version":"5.29.5","new_version":"6.33.4","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"psutil","old_version":"7.1.3","new_version":"7.2.1","repository_url":"https://github.com/giampaolo/psutil"},{"name":"pycollada","old_version":"0.9.2","new_version":"0.9.3","repository_url":"https://github.com/pycollada/pycollada"},{"name":"pycparser","old_version":"2.23","new_version":"3.0","repository_url":"https://github.com/eliben/pycparser"},{"name":"pyfakefs","old_version":"5.10.2","new_version":"6.0.0","repository_url":"https://github.com/pytest-dev/pyfakefs"},{"name":"pygit2","old_version":"1.13.3","new_version":"1.19.1","repository_url":"https://github.com/libgit2/pygit2"},{"name":"pyjwt","old_version":"2.9.0","new_version":"2.10.1","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"pynastran","old_version":"1.3.4","new_version":"1.4.1","repository_url":"https://github.com/SteveDoyle2/pyNastran"},{"name":"pyopenxr","old_version":"1.1.4601","new_version":"1.1.5301","repository_url":"https://github.com/cmbruns/pyopenxr"},{"name":"pyoptools","old_version":"0.2.1","new_version":"0.3.7"},{"name":"pyparsing","old_version":"3.1.4","new_version":"3.3.2","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"pypresence","old_version":"4.3.0","new_version":"4.6.1","repository_url":"https://github.com/qwertyquerty/pypresence"},{"name":"pyproj","old_version":"3.5.0","new_version":"3.7.2","repository_url":"https://github.com/pyproj4/pyproj"},{"name":"python-docx","old_version":"1.1.2","new_version":"1.2.0","repository_url":"https://github.com/python-openxml/python-docx"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"pyvista","old_version":"0.44.2","new_version":"0.46.5","repository_url":"https://github.com/pyvista/pyvista"},{"name":"pywavelets","old_version":"1.4.1","new_version":"1.9.0","repository_url":"https://github.com/PyWavelets/pywt"},{"name":"requests","old_version":"2.32.4","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"rich","old_version":"14.2.0","new_version":"14.3.0","repository_url":"https://github.com/Textualize/rich"},{"name":"scikit-image","old_version":"0.21.0","new_version":"0.26.0","repository_url":"https://github.com/scikit-image/scikit-image"},{"name":"scikit-learn","old_version":"1.3.2","new_version":"1.8.0","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"scipy","old_version":"1.10.1","new_version":"1.17.0","repository_url":"https://github.com/scipy/scipy"},{"name":"sentry-sdk","old_version":"2.48.0","new_version":"2.50.0","repository_url":"https://github.com/getsentry/sentry-python"},{"name":"shapely","old_version":"2.0.7","new_version":"2.1.2","repository_url":"https://github.com/shapely/shapely"},{"name":"soupsieve","old_version":"2.7","new_version":"2.8.3","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"streamdeck","old_version":"0.9.6","new_version":"0.9.8","repository_url":"https://github.com/abcminiuser/python-elgato-streamdeck"},{"name":"sympy","old_version":"1.13.3","new_version":"1.14.0","repository_url":"https://github.com/sympy/sympy"},{"name":"testtools","old_version":"2.7.2","new_version":"2.8.2","repository_url":"https://github.com/testing-cabal/testtools"},{"name":"threadpoolctl","old_version":"3.5.0","new_version":"3.6.0","repository_url":"https://github.com/joblib/threadpoolctl"},{"name":"tifffile","old_version":"2023.7.10","new_version":"2026.1.14","repository_url":"https://github.com/cgohlke/tifffile"},{"name":"trimesh","old_version":"4.10.1","new_version":"4.11.1","repository_url":"https://github.com/mikedh/trimesh"},{"name":"txaio","old_version":"23.1.1","new_version":"25.12.2","repository_url":"https://github.com/crossbario/txaio"},{"name":"typing-extensions","old_version":"4.13.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"tzlocal","old_version":"5.2","new_version":"5.3.1","repository_url":"https://github.com/regebro/tzlocal"},{"name":"urllib3","old_version":"2.2.3","new_version":"2.6.3","repository_url":"https://github.com/urllib3/urllib3"},{"name":"vtk","old_version":"9.3.1","new_version":"9.5.2"},{"name":"xarray","old_version":"2023.1.0","new_version":"2025.12.0","repository_url":"https://github.com/pydata/xarray"},{"name":"zipp","old_version":"3.20.2","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"}],"path":"/Data/Python/Constraints","ecosystem":"pip"},"body":"Bumps the all-deps group in /Data/Python/Constraints with 81 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [aiofiles](https://github.com/Tinche/aiofiles) | `24.1.0` | `25.1.0` |\n| [aiosqlite](https://github.com/omnilib/aiosqlite) | `0.20.0` | `0.22.1` |\n| [antlr4-python3-runtime](http://www.antlr.org) | `4.13.1` | `4.13.2` |\n| [asyncua](https://github.com/FreeOpcUa/opcua-asyncio) | `1.1.5` | `1.1.8` |\n| [atomicwrites](https://github.com/untitaker/python-atomicwrites) | `1.4.0` | `1.4.1` |\n| [autobahn](https://github.com/crossbario/autobahn-python) | `21.3.1` | `25.12.2` |\n| [awkward](https://github.com/scikit-hep/awkward-1.0) | `2.6.10` | `2.8.11` |\n| [awkward-cpp](https://github.com/scikit-hep/awkward-1.0) | `40` | `51` |\n| [blinker](https://github.com/pallets-eco/blinker) | `1.8.2` | `1.9.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.11.12` | `2026.1.4` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.1` | `2.0.0` |\n| [click](https://github.com/pallets/click) | `8.1.7` | `8.3.1` |\n| [comtypes](https://github.com/enthought/comtypes) | `1.4.12` | `1.4.15` |\n| [configparser](https://github.com/jaraco/configparser) | `7.1.0` | `7.2.0` |\n| [contourpy](https://github.com/contourpy/contourpy) | `1.1.1` | `1.3.3` |\n| [cpylog](https://github.com/SteveDoyle2/cpylog) | `1.5.0` | `1.6.0` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.20.1` | `0.22.4` |\n| [ezdxf](https://github.com/mozman/ezdxf) | `1.1.4` | `1.4.3` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.57.0` | `4.61.1` |\n| [fsspec](https://github.com/fsspec/filesystem_spec) | `2025.3.0` | `2026.1.0` |\n| [geomdl](https://github.com/orbingol/NURBS-Python) | `5.3.1` | `5.4.0` |\n| [ijson](https://github.com/ICRAR/ijson) | `3.3.0` | `3.4.0.post0` |\n| [imageio](https://github.com/imageio/imageio) | `2.35.1` | `2.37.2` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `8.5.0` | `8.7.1` |\n| [importlib-resources](https://github.com/python/importlib_resources) | `6.4.5` | `6.5.2` |\n| [joblib](https://github.com/joblib/joblib) | `1.4.2` | `1.5.3` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.4.7` | `1.4.9` |\n| [ladybug-comfort](https://github.com/ladybug-tools/ladybug-comfort) | `0.18.96` | `0.18.97` |\n| [ladybug-core](https://github.com/ladybug-tools/ladybug) | `0.44.29` | `0.44.30` |\n| [llvmlite](https://github.com/numba/llvmlite) | `0.41.1` | `0.46.0` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.7` | `3.10.1` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `3.0.0` | `4.0.0` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.7.5` | `3.10.8` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.1` | `1.1.2` |\n| [networkx](https://github.com/networkx/networkx) | `3.1` | `3.6.1` |\n| [numba](https://github.com/numba/numba) | `0.58.1` | `0.63.1` |\n| [numpy](https://github.com/numpy/numpy) | `1.24.4` | `2.4.1` |\n| [openstudio](https://github.com/NREL/OpenStudio) | `3.10.0` | `3.11.0` |\n| [packaging](https://github.com/pypa/packaging) | `25.0` | `26.0` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.0.3` | `3.0.0` |\n| [pillow](https://github.com/python-pillow/Pillow) | `10.4.0` | `12.1.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.3.6` | `4.5.1` |\n| [posthog](https://github.com/posthog/posthog-python) | `4.2.0` | `7.6.0` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.5` | `6.33.4` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.1.3` | `7.2.1` |\n| [pycollada](https://github.com/pycollada/pycollada) | `0.9.2` | `0.9.3` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.23` | `3.0` |\n| [pyfakefs](https://github.com/pytest-dev/pyfakefs) | `5.10.2` | `6.0.0` |\n| [pygit2](https://github.com/libgit2/pygit2) | `1.13.3` | `1.19.1` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.9.0` | `2.10.1` |\n| [pynastran](https://github.com/SteveDoyle2/pyNastran) | `1.3.4` | `1.4.1` |\n| [pyopenxr](https://github.com/cmbruns/pyopenxr) | `1.1.4601` | `1.1.5301` |\n| pyoptools | `0.2.1` | `0.3.7` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.1.4` | `3.3.2` |\n| [pypresence](https://github.com/qwertyquerty/pypresence) | `4.3.0` | `4.6.1` |\n| [pyproj](https://github.com/pyproj4/pyproj) | `3.5.0` | `3.7.2` |\n| [python-docx](https://github.com/python-openxml/python-docx) | `1.1.2` | `1.2.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [pyvista](https://github.com/pyvista/pyvista) | `0.44.2` | `0.46.5` |\n| [pywavelets](https://github.com/PyWavelets/pywt) | `1.4.1` | `1.9.0` |\n| [requests](https://github.com/psf/requests) | `2.32.4` | `2.32.5` |\n| [rich](https://github.com/Textualize/rich) | `14.2.0` | `14.3.0` |\n| [scikit-image](https://github.com/scikit-image/scikit-image) | `0.21.0` | `0.26.0` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.3.2` | `1.8.0` |\n| [scipy](https://github.com/scipy/scipy) | `1.10.1` | `1.17.0` |\n| [sentry-sdk](https://github.com/getsentry/sentry-python) | `2.48.0` | `2.50.0` |\n| [shapely](https://github.com/shapely/shapely) | `2.0.7` | `2.1.2` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.8.3` |\n| [streamdeck](https://github.com/abcminiuser/python-elgato-streamdeck) | `0.9.6` | `0.9.8` |\n| [sympy](https://github.com/sympy/sympy) | `1.13.3` | `1.14.0` |\n| [testtools](https://github.com/testing-cabal/testtools) | `2.7.2` | `2.8.2` |\n| [threadpoolctl](https://github.com/joblib/threadpoolctl) | `3.5.0` | `3.6.0` |\n| [tifffile](https://github.com/cgohlke/tifffile) | `2023.7.10` | `2026.1.14` |\n| [trimesh](https://github.com/mikedh/trimesh) | `4.10.1` | `4.11.1` |\n| [txaio](https://github.com/crossbario/txaio) | `23.1.1` | `25.12.2` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.2` | `4.15.0` |\n| [tzlocal](https://github.com/regebro/tzlocal) | `5.2` | `5.3.1` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.2.3` | `2.6.3` |\n| [vtk](https://vtk.org) | `9.3.1` | `9.5.2` |\n| [xarray](https://github.com/pydata/xarray) | `2023.1.0` | `2025.12.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.20.2` | `3.23.0` |\n\nUpdates `aiofiles` from 24.1.0 to 25.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Tinche/aiofiles/releases\"\u003eaiofiles's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev25.1.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSwitch to \u003ca href=\"https://docs.astral.sh/uv/\"\u003euv\u003c/a\u003e + add Python v3.14 support.  (\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eruff\u003c/code\u003e formatter and linter. \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/216\"\u003e#216\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8 support. If you require it, use version 24.1.0. \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/204\"\u003e#204\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/danielsmyers\"\u003e\u003ccode\u003e@​danielsmyers\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/185\"\u003eTinche/aiofiles#185\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stankudrow\"\u003e\u003ccode\u003e@​stankudrow\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/192\"\u003eTinche/aiofiles#192\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/waketzheng\"\u003e\u003ccode\u003e@​waketzheng\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/221\"\u003eTinche/aiofiles#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/Tinche/aiofiles/compare/v24.1.0...v25.1.0\"\u003ehttps://github.com/Tinche/aiofiles/compare/v24.1.0...v25.1.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Tinche/aiofiles/blob/main/CHANGELOG.md\"\u003eaiofiles's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e25.1.0 (2025-10-09)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSwitch to \u003ca href=\"https://docs.astral.sh/uv/\"\u003euv\u003c/a\u003e + add Python v3.14 support.\n(\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eruff\u003c/code\u003e formatter and linter.\n\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/216\"\u003e#216\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8 support. If you require it, use version 24.1.0.\n\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/204\"\u003e#204\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/Tinche/aiofiles/commit/348f5ef6561c2b2c8a7497bd10487eab4102332f\"\u003e\u003ccode\u003e348f5ef\u003c/code\u003e\u003c/a\u003e v25.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/5e1bb8f12b09bce440cc9d1e28387d239cbc2577\"\u003e\u003ccode\u003e5e1bb8f\u003c/code\u003e\u003c/a\u003e docs: update readme to use ruff badge (\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/issues/221\"\u003e#221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/6fdc25c7812d6738ccf51c5e7d4cd68500053a52\"\u003e\u003ccode\u003e6fdc25c\u003c/code\u003e\u003c/a\u003e Move to uv. (\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/issues/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/1989132423dc300c61e22434abd02725e922ddeb\"\u003e\u003ccode\u003e1989132\u003c/code\u003e\u003c/a\u003e set 'function' as a default fixture loop scope value\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/8986452a1b28b109903078f8e9a805ec01e248a6\"\u003e\u003ccode\u003e8986452\u003c/code\u003e\u003c/a\u003e add the 'asyncio_default_fixture_loop_scope=session' option\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/ccab1ff77640c59b353046cb528c25ffa11caa73\"\u003e\u003ccode\u003eccab1ff\u003c/code\u003e\u003c/a\u003e update pytest-asyncio==1.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/8727c96f5be46235af412a9fe504ba7c149df7f3\"\u003e\u003ccode\u003e8727c96\u003c/code\u003e\u003c/a\u003e add PR \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/issues/216\"\u003e#216\u003c/a\u003e into the CHANGELOG\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/a9388e5f8de9142c3e920917775e741bbf9f73b2\"\u003e\u003ccode\u003ea9388e5\u003c/code\u003e\u003c/a\u003e add TID and ignore TID252\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/760366489aed1fb041ef35652e2babb1870973d0\"\u003e\u003ccode\u003e7603664\u003c/code\u003e\u003c/a\u003e remove [ruff].exclude keyval\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/7c49a5c5f2520233198487145423a7842805d740\"\u003e\u003ccode\u003e7c49a5c\u003c/code\u003e\u003c/a\u003e add final newlines\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Tinche/aiofiles/compare/v24.1.0...v25.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `aiosqlite` from 0.20.0 to 0.22.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/omnilib/aiosqlite/blob/main/CHANGELOG.md\"\u003eaiosqlite's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.22.1\u003c/h2\u003e\n\u003cp\u003eBug fix release\u003c/p\u003e\n\u003cp\u003eNOTE: Starting with \u003ccode\u003ev0.22.0\u003c/code\u003e, the \u003ccode\u003eaiosqlite.Connection\u003c/code\u003e object no longer\ninherits from \u003ccode\u003ethreading.Thread\u003c/code\u003e. If not using aiosqlite as a context manager,\nclients must \u003ccode\u003eawait connection.close()\u003c/code\u003e or call \u003ccode\u003econnection.stop()\u003c/code\u003e to ensure\nthe helper thread is completed and terminated correctly. A \u003ccode\u003eResourceWarning\u003c/code\u003e\nwill be emitted for any connection that is garbage collected without being\nclosed or stopped.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded synchronous \u003ccode\u003estop()\u003c/code\u003e method to \u003ccode\u003eaiosqlite.Connection\u003c/code\u003e to enable safe\ncleanup and termination of the background thread without dependence\non having an active event loop (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/370\"\u003e#370\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre lang=\"text\"\u003e\u003ccode\u003e$ git shortlog -s v0.22.0...v0.22.1\n     2\tAmethyst Reese\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003ev0.22.0\u003c/h2\u003e\n\u003cp\u003eFeature release\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003eset_authorizer\u003c/code\u003e query access controls (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/349\"\u003e#349\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWait for transaction queue to complete when closing connection (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/305\"\u003e#305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEmit warning when connection goes out of scope without being closed (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/355\"\u003e#355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove dependency on \u003ccode\u003etyping_extensions\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/365\"\u003e#365\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre lang=\"text\"\u003e\u003ccode\u003e$ git shortlog -s v0.21.0...v0.22.0\n     1\tAlec Berryman\n     1\tAmethyst Reese\n     1\tDavid Andreoletti\n     1\tMarkus Heidelberg\n     1\tbeerpsi\n    19\tdependabot[bot]\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003ev0.21.0\u003c/h2\u003e\n\u003cp\u003eMaintenance release\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix: close connection correctly when BaseException raised in connection (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/317\"\u003e#317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMetadata improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aiosqlite/commit/9b127cecc7de843bf4f343b6da63b641866533fb\"\u003e\u003ccode\u003e9b127ce\u003c/code\u003e\u003c/a\u003e Version bump v0.22.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aiosqlite/commit/5c3f61c1ea49401f2716d8f58d494e76ca766921\"\u003e\u003ccode\u003e5c3f61c\u003c/code\u003e\u003c/a\u003e Improve stop semantics for connections (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/370\"\u003e#370\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aiosqlite/commit/a869d73678adbc14472e4ac2c31f4e706efe8ef3\"\u003e\u003ccode\u003ea869d73\u003c/code\u003e\u003c/a\u003e Version bump v0.22.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aiosqlite/commit/1cd60adcab12347577150a6fa6c7d92b7b86d989\"\u003e\u003ccode\u003e1cd60ad\u003c/code\u003e\u003c/a\u003e Emit warning if connection is deleted before it is closed (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/355\"\u003e#355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aiosqlite/commit/611d7b4f29fc3d7df6c173b2e79b0892e9d249aa\"\u003e\u003ccode\u003e611d7b4\u003c/code\u003e\u003c/a\u003e Add set_authorizer support for fine-grained access control (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/349\"\u003e#349\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aiosqlite/commit/81d00c8f1676851c8634ca98f99e0973083ea75f\"\u003e\u003ccode\u003e81d00c8\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5 to 6 (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/357\"\u003e#357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aiosqlite/commit/7a26722f7e6da6a1ae0febf515b4624794173fcc\"\u003e\u003ccode\u003e7a26722\u003c/code\u003e\u003c/a\u003e Bump coverage[toml] from 7.8.0 to 7.10.7 (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aiosqlite/commit/445754087ec452f888cc152debf79590d8a25d86\"\u003e\u003ccode\u003e4457540\u003c/code\u003e\u003c/a\u003e Bump flake8 from 7.2.0 to 7.3.0 (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/346\"\u003e#346\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aiosqlite/commit/b650dad318ad72e582b7ba1143cc05f270f8ab6b\"\u003e\u003ccode\u003eb650dad\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aiosqlite/commit/065ffdd1291693c5e69d2f3efff17e351d9a0163\"\u003e\u003ccode\u003e065ffdd\u003c/code\u003e\u003c/a\u003e Bump mypy from 1.15.0 to 1.19.0 (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/omnilib/aiosqlite/compare/v0.20.0...v0.22.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `antlr4-python3-runtime` from 4.13.1 to 4.13.2\n\nUpdates `asyncua` from 1.1.5 to 1.1.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/FreeOpcUa/opcua-asyncio/releases\"\u003easyncua's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.1.8\u003c/h2\u003e\n\u003cp\u003efix release script and upload\u003c/p\u003e\n\u003ch2\u003ev1.1.7\u003c/h2\u003e\n\u003cp\u003eorigin/master, origin/HEAD) Replace time.time() with time.monotonic() in asyncua core modules\nb3dd3a17ffdd554807df230b6b34403b8c946c30 make pytest loop scope explicit\na5d72a2dc2a53e21d84c5f3b9091e27ae14e007e finally unfreeze pytest-asyncio\ncc874c30e2154e86a43523006ecb5839412cc157 Feat: Support import/export of struct and enum Field descriptions (\u003ca href=\"https://redirect.github.com/FreeOpcUa/opcua-asyncio/issues/1851\"\u003e#1851\u003c/a\u003e)\n97095b909c141daf9b7d300114f7d5d924444b76 Support pre 1.04 struct length fields for B\u0026amp;R\n5b1091795dc7745efb94acd94381db17274779e8 fix  connecting to new prosys opcua server (\u003ca href=\"https://redirect.github.com/FreeOpcUa/opcua-asyncio/issues/1827\"\u003e#1827\u003c/a\u003e)\n120d2e8c090fe0dbe34fb27a3e2f723dcb83ab8d Fix small bug if imported xml has also the stardard namespace included (\u003ca href=\"https://redirect.github.com/FreeOpcUa/opcua-asyncio/issues/1832\"\u003e#1832\u003c/a\u003e)\nd52d319b7ccf8c52f0e0fce469d06b9a10db0a24 Enhancement: Chunked Build ETree Function (\u003ca href=\"https://redirect.github.com/FreeOpcUa/opcua-asyncio/issues/1833\"\u003e#1833\u003c/a\u003e)\n6b6f4bb220b47b7d6d5612dc4d8daccf386373b0 Fix: Issues with missing namespace URIs when importing and exporting XMLs (\u003ca href=\"https://redirect.github.com/FreeOpcUa/opcua-asyncio/issues/1830\"\u003e#1830\u003c/a\u003e)\nf12f3e19b3e7a3bc3db38add30176eef0cecd300 fix ClientNonce and/or peer_certificate may be None\ne3e02e3cfaca19647aec9348e9452594c6ebd657 Include support for x509 certificate chains in DER format (\u003ca href=\"https://redirect.github.com/FreeOpcUa/opcua-asyncio/issues/1822\"\u003e#1822\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003ev1.1.6\u003c/h2\u003e\n\u003cp\u003eupdate ua adresse space to 1.0.5\nParse ExtensionObjects with missing length (= -1)\nadd: Number in uatypes.py\nAllow setting password to None.\nFix usage of X509IdentityToken\u003c/p\u003e\n\u003cp\u003ebug fixes\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/FreeOpcUa/opcua-asyncio/commit/d8a5de3fe4050f82f39690bb43157a4b8e20c545\"\u003e\u003ccode\u003ed8a5de3\u003c/code\u003e\u003c/a\u003e new release v1.1.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/FreeOpcUa/opcua-asyncio/commit/fe795e16ad86a4aea8ee09905ab080f9a0841748\"\u003e\u003ccode\u003efe795e1\u003c/code\u003e\u003c/a\u003e fix release script\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/FreeOpcUa/opcua-asyncio/commit/cacd6a0c355cd5d5e3af9e1d50c8829b69c2ed88\"\u003e\u003ccode\u003ecacd6a0\u003c/code\u003e\u003c/a\u003e Replace time.time() with time.monotonic() in asyncua core modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/FreeOpcUa/opcua-asyncio/commit/b3dd3a17ffdd554807df230b6b34403b8c946c30\"\u003e\u003ccode\u003eb3dd3a1\u003c/code\u003e\u003c/a\u003e make pytest loop scope explicit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/FreeOpcUa/opcua-asyncio/commit/a5d72a2dc2a53e21d84c5f3b9091e27ae14e007e\"\u003e\u003ccode\u003ea5d72a2\u003c/code\u003e\u003c/a\u003e finally unfreeze pytest-asyncio\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/FreeOpcUa/opcua-asyncio/commit/cc874c30e2154e86a43523006ecb5839412cc157\"\u003e\u003ccode\u003ecc874c3\u003c/code\u003e\u003c/a\u003e Feat: Support import/export of struct and enum Field descriptions (\u003ca href=\"https://redirect.github.com/FreeOpcUa/opcua-asyncio/issues/1851\"\u003e#1851\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/FreeOpcUa/opcua-asyncio/commit/97095b909c141daf9b7d300114f7d5d924444b76\"\u003e\u003ccode\u003e97095b9\u003c/code\u003e\u003c/a\u003e Support pre 1.04 struct length fields for B\u0026amp;R\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/FreeOpcUa/opcua-asyncio/commit/5b1091795dc7745efb94acd94381db17274779e8\"\u003e\u003ccode\u003e5b10917\u003c/code\u003e\u003c/a\u003e fix  connecting to new prosys opcua server (\u003ca href=\"https://redirect.github.com/FreeOpcUa/opcua-asyncio/issues/1827\"\u003e#1827\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/FreeOpcUa/opcua-asyncio/commit/120d2e8c090fe0dbe34fb27a3e2f723dcb83ab8d\"\u003e\u003ccode\u003e120d2e8\u003c/code\u003e\u003c/a\u003e Fix small bug if imported xml has also the stardard namespace included (\u003ca href=\"https://redirect.github.com/FreeOpcUa/opcua-asyncio/issues/1832\"\u003e#1832\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/FreeOpcUa/opcua-asyncio/commit/d52d319b7ccf8c52f0e0fce469d06b9a10db0a24\"\u003e\u003ccode\u003ed52d319\u003c/code\u003e\u003c/a\u003e Enhancement: Chunked Build ETree Function (\u003ca href=\"https://redirect.github.com/FreeOpcUa/opcua-asyncio/issues/1833\"\u003e#1833\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/FreeOpcUa/opcua-asyncio/compare/v1.1.5...v1.1.8\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `atomicwrites` from 1.4.0 to 1.4.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/untitaker/python-atomicwrites/commit/e05d8c985a10176ad43eefb9c4bfa6d7ab176719\"\u003e\u003ccode\u003ee05d8c9\u003c/code\u003e\u003c/a\u003e version 1.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/untitaker/python-atomicwrites/commit/ea90c67ffe5f38cd39d89625022d417da1966522\"\u003e\u003ccode\u003eea90c67\u003c/code\u003e\u003c/a\u003e fix name typo (\u003ca href=\"https://redirect.github.com/untitaker/python-atomicwrites/issues/60\"\u003e#60\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/untitaker/python-atomicwrites/commit/c35cd32eb364d5a4210e64bf38fd1a55f329f316\"\u003e\u003ccode\u003ec35cd32\u003c/code\u003e\u003c/a\u003e Add Power Support ppc64le (\u003ca href=\"https://redirect.github.com/untitaker/python-atomicwrites/issues/57\"\u003e#57\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/untitaker/python-atomicwrites/commit/9f8db6527db8a7d20879756ff83d86009df8c9c5\"\u003e\u003ccode\u003e9f8db65\u003c/code\u003e\u003c/a\u003e wrap line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/untitaker/python-atomicwrites/commit/6699a1fc44bc5cea2ee258cf960a8bd6cc584e21\"\u003e\u003ccode\u003e6699a1f\u003c/code\u003e\u003c/a\u003e migrate to travis-ci.com\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/untitaker/python-atomicwrites/commit/ec443a88e5e6cfbc9b667b1bcfd52e5a0a485f7e\"\u003e\u003ccode\u003eec443a8\u003c/code\u003e\u003c/a\u003e Add documentation for open_kwargs, fix \u003ca href=\"https://redirect.github.com/untitaker/python-atomicwrites/issues/56\"\u003e#56\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/untitaker/python-atomicwrites/commit/de33f6fac140f32a6eff9eb002feaa6dc7182182\"\u003e\u003ccode\u003ede33f6f\u003c/code\u003e\u003c/a\u003e Update README.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/untitaker/python-atomicwrites/commit/d17830127887b97f404f1596ac76d46d730e31f5\"\u003e\u003ccode\u003ed178301\u003c/code\u003e\u003c/a\u003e Update README.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/untitaker/python-atomicwrites/commit/72b5dcc9c5225fc8b54559f0f9c02d3211dfd403\"\u003e\u003ccode\u003e72b5dcc\u003c/code\u003e\u003c/a\u003e Update README.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/untitaker/python-atomicwrites/commit/14e7f1f5407344f215f0b06b5cbe49fe65e90d1d\"\u003e\u003ccode\u003e14e7f1f\u003c/code\u003e\u003c/a\u003e Clean up some FAQ/Frequently asked question repetition in readme (\u003ca href=\"https://redirect.github.com/untitaker/python-atomicwrites/issues/53\"\u003e#53\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/untitaker/python-atomicwrites/compare/1.4.0...1.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `autobahn` from 21.3.1 to 25.12.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/crossbario/autobahn-python/releases\"\u003eautobahn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eDevelopment Build fork-68427734-oberstet_autobahn_python-strict_typing_test-202601141357\u003c/h1\u003e\n\u003cp\u003eDevelopment build from pull request\u003c/p\u003e\n\u003ch2\u003eBuild Information\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eCommit\u003c/strong\u003e: 1c7d45cd\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBuild Date\u003c/strong\u003e: 2026-01-14 14:02:37 UTC\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRelease Type\u003c/strong\u003e: development\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eIncluded Platforms\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eLinux\u003c/strong\u003e: x86_64, ARM64 (manylinux wheels + pure Python fallbacks)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003emacOS\u003c/strong\u003e: Apple Silicon ARM64\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eWindows\u003c/strong\u003e: x86_64\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePython Versions\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eCPython\u003c/strong\u003e: 3.11, 3.12, 3.13, 3.14\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePyPy\u003c/strong\u003e: 3.11\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstallation\u003c/h2\u003e\n\u003cp\u003eDownload the appropriate wheel for your platform:\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003epip install \u0026lt;downloaded-wheel-file\u0026gt;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eArtifact Inventory\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eTotal Wheels\u003c/strong\u003e: 16\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSource Distributions\u003c/strong\u003e: 3\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eDevelopment Build fork-cee77a0c-bblommers_autobahn_python-chore_apply_ruff_up-202601092138\u003c/h1\u003e\n\u003cp\u003eDevelopment build from pull request\u003c/p\u003e\n\u003ch2\u003eBuild Information\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eCommit\u003c/strong\u003e: b006e90e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBuild Date\u003c/strong\u003e: 2026-01-09 21:43:05 UTC\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRelease Type\u003c/strong\u003e: development\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eIncluded Platforms\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eLinux\u003c/strong\u003e: x86_64, ARM64 (manylinux wheels + pure Python fallbacks)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003emacOS\u003c/strong\u003e: Apple Silicon ARM64\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eWindows\u003c/strong\u003e: x86_64\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- 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/crossbario/autobahn-python/blob/master/docs/changelog.rst\"\u003eautobahn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e25.12.2\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBuild \u0026amp; CI/CD\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSynchronize CI/CD, FlatBuffers vendoring, and wamp-ai/wamp-cicd submodules between autobahn-python and zlmdb (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1822\"\u003e#1822\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSwitch manylinux container from 2_34 to 2_28 for x86_64 ISA compatibility (fixes auditwheel flatc bundling)\u003c/li\u003e\n\u003cli\u003eIncrease ARM64 build timeout to 60 minutes for QEMU emulation\u003c/li\u003e\n\u003cli\u003eAdd .github/workflows/README.md documenting CI/CD architecture\u003c/li\u003e\n\u003cli\u003eConsolidate download-github-release and download-release-artifacts recipes\u003c/li\u003e\n\u003cli\u003eAdd checksum verification to artifact download workflow\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFlatBuffers\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSimplify vendored FlatBuffers - use upstream as-is\u003c/li\u003e\n\u003cli\u003eTrack vendored FlatBuffers in git (like zlmdb approach)\u003c/li\u003e\n\u003cli\u003eAdd version() function to vendored FlatBuffers runtime\u003c/li\u003e\n\u003cli\u003eAdd check_zlmdb_flatbuffers_version_in_sync() for cross-project compatibility\u003c/li\u003e\n\u003cli\u003eGenerate .bfbs files for WAMP schemas during wheel build\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eOther\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRename install-flatc to install-flatc-system with prominent warning\u003c/li\u003e\n\u003cli\u003eRemove legacy readthedocs.yml to activate .readthedocs.yaml\u003c/li\u003e\n\u003cli\u003eRemove dev-latest optional dependency (PyPI rejects direct URLs)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e25.12.1\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd vendored Flatbuffers (v25.9.23) (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1761\"\u003e#1761\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd WAMP serdes functional and benchmark testing; WAMP-Flatbuffers; WAMP Serializer Composition (transport/payload) (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1765\"\u003e#1765\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFix\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix 1757 (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1758\"\u003e#1758\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix 1767 (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1769\"\u003e#1769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix 1771 complete (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1774\"\u003e#1774\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eOther\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRel v25.10.2 (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1734\"\u003e#1734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRel v25.10.2 part2 (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1741\"\u003e#1741\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWAMP Flatbuffers serialization test coverage; WAMP message classes refactoring (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1773\"\u003e#1773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eModernization phase 1.1 (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1785\"\u003e#1785\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePhase 1.2: Build Tooling Modernization (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1788\"\u003e#1788\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePhase 1.3: CI/CD Modernization (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1791\"\u003e#1791\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRel25 12 1 (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1794\"\u003e#1794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eModernization phase 1.4 (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1797\"\u003e#1797\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crossbario/autobahn-python/commit/5e4f7e086a074892231377f465099946e8f66ac4\"\u003e\u003ccode\u003e5e4f7e0\u003c/code\u003e\u003c/a\u003e docs: add changelog and release notes for v25.12.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crossbario/autobahn-python/commit/e97953b3cdc42b103075146dabe9eb9f30111c8b\"\u003e\u003ccode\u003ee97953b\u003c/code\u003e\u003c/a\u003e fix: add checksum verification and unify artifact download paths\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crossbario/autobahn-python/commit/05f1193cb2b2cdf71a92edfd2d12965083000a68\"\u003e\u003ccode\u003e05f1193\u003c/code\u003e\u003c/a\u003e fix: download-github-release now downloads all release artifacts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crossbario/autobahn-python/commit/467581c1ef461c97e3c24ece03d61119bbc0e126\"\u003e\u003ccode\u003e467581c\u003c/code\u003e\u003c/a\u003e Synchronize CI/CD, Flatbuffers vendoring and wamp-ai and wamp-cicd Submodules...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crossbario/autobahn-python/commit/60f226c5356feaab3545f7d015c0655924d9444c\"\u003e\u003ccode\u003e60f226c\u003c/code\u003e\u003c/a\u003e build: remove legacy readthedocs.yml to activate .readthedocs.yaml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crossbario/autobahn-python/commit/0dac159de6194c94d4be19b1958bddf627aba856\"\u003e\u003ccode\u003e0dac159\u003c/code\u003e\u003c/a\u003e Add missing docs deps to dev, ignore CFFI build artifacts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crossbario/autobahn-python/commit/e2503361b7c6f7cfd9fd38b5e2093703f3035166\"\u003e\u003ccode\u003ee250336\u003c/code\u003e\u003c/a\u003e Simplify vendored flatbuffers - use upstream as-is\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crossbario/autobahn-python/commit/03e2e157268713e71e10f5322e521349bc485116\"\u003e\u003ccode\u003e03e2e15\u003c/code\u003e\u003c/a\u003e Track vendored flatbuffers in git (like zlmdb approach)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crossbario/autobahn-python/commit/41f7e3c6595b911c482f332f5ea40de7f9c0bc1c\"\u003e\u003ccode\u003e41f7e3c\u003c/code\u003e\u003c/a\u003e Move vendor-flatbuffers logic to external Python script\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crossbario/autobahn-python/commit/8db464888d9c738fb51b78544706c130cc1c47a6\"\u003e\u003ccode\u003e8db4648\u003c/code\u003e\u003c/a\u003e bump package version\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/crossbario/autobahn-python/compare/v21.3.1...v25.12.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `awkward` from 2.6.10 to 2.8.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scikit-hep/awkward-1.0/releases\"\u003eawkward's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.8.11\u003c/h2\u003e\n\u003ch2\u003eNew features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: add behavior cls validation hook by \u003ca href=\"https://github.com/pfackeldey\"\u003e\u003ccode\u003e@​pfackeldey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3710\"\u003escikit-hep/awkward#3710\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add a playground for cccl studies by \u003ca href=\"https://github.com/pfackeldey\"\u003e\u003ccode\u003e@​pfackeldey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3734\"\u003escikit-hep/awkward#3734\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add cuda.compute implementation to CCCL study by \u003ca href=\"https://github.com/shwina\"\u003e\u003ccode\u003e@​shwina\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3748\"\u003escikit-hep/awkward#3748\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: ability to optionally disable the caching of virtual arrays on themselves by \u003ca href=\"https://github.com/ikrommyd\"\u003e\u003ccode\u003e@​ikrommyd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3741\"\u003escikit-hep/awkward#3741\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug-fixes and performance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: string array numpy conversion fails with int32 offsets from parquet by \u003ca href=\"https://github.com/DylanModesitt\"\u003e\u003ccode\u003e@​DylanModesitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3697\"\u003escikit-hep/awkward#3697\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: only check length against empty form in \u003ccode\u003eak.from_buffers\u003c/code\u003e if it is known by \u003ca href=\"https://github.com/ikrommyd\"\u003e\u003ccode\u003e@​ikrommyd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3714\"\u003escikit-hep/awkward#3714\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: typestr respects now limit_cols for .show and \u003cem\u003erepr_mimebundle\u003c/em\u003e by \u003ca href=\"https://github.com/pfackeldey\"\u003e\u003ccode\u003e@​pfackeldey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3712\"\u003escikit-hep/awkward#3712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: \u003ccode\u003eArrayBuilder.__bool__ \u003c/code\u003e raises \u003ccode\u003eTypeError\u003c/code\u003e when builder length is 1 by \u003ca href=\"https://github.com/T90REAL\"\u003e\u003ccode\u003e@​T90REAL\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3738\"\u003escikit-hep/awkward#3738\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: prevent teardown from crashing GPU test suite by \u003ca href=\"https://github.com/ianna\"\u003e\u003ccode\u003e@​ianna\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3747\"\u003escikit-hep/awkward#3747\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: hide awkward.ak_* and awkward.str.akstr_* from 'awkward' and 'awkward.str' module by \u003ca href=\"https://github.com/pfackeldey\"\u003e\u003ccode\u003e@​pfackeldey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3752\"\u003escikit-hep/awkward#3752\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: align multi-level indices before merge in \u003ccode\u003eto_dataframe()\u003c/code\u003e by \u003ca href=\"https://github.com/TaiSakuma\"\u003e\u003ccode\u003e@​TaiSakuma\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3733\"\u003escikit-hep/awkward#3733\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: numba test failures on Python 3.14 by \u003ca href=\"https://github.com/ianna\"\u003e\u003ccode\u003e@​ianna\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3757\"\u003escikit-hep/awkward#3757\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: incorrect passing of \u003ccode\u003eIndex\u003c/code\u003e inside nplike function in \u003ccode\u003eto_IndexedOptionArray64\u003c/code\u003e by \u003ca href=\"https://github.com/ikrommyd\"\u003e\u003ccode\u003e@​ikrommyd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3727\"\u003escikit-hep/awkward#3727\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: weights should not be raised to the power n in the n-th moment calculation by \u003ca href=\"https://github.com/ikrommyd\"\u003e\u003ccode\u003e@​ikrommyd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3729\"\u003escikit-hep/awkward#3729\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: \u003ccode\u003eak.Record\u003c/code\u003e creation from iterable with nested dicts by \u003ca href=\"https://github.com/ikrommyd\"\u003e\u003ccode\u003e@​ikrommyd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3728\"\u003escikit-hep/awkward#3728\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: keep track of buffer key instead of field path for VirtualNDArrays \u0026amp; PlaceholderArrays by \u003ca href=\"https://github.com/pfackeldey\"\u003e\u003ccode\u003e@​pfackeldey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3751\"\u003escikit-hep/awkward#3751\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: typetracer nplike's \u003ccode\u003eall\u003c/code\u003e function leads to infinite recursion for \u003ccode\u003eaxis=None\u003c/code\u003e by \u003ca href=\"https://github.com/ikrommyd\"\u003e\u003ccode\u003e@​ikrommyd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3765\"\u003escikit-hep/awkward#3765\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eOther\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: fix compilation on self-hosted CI and test with multiple versions of CUDA by \u003ca href=\"https://github.com/ariostas\"\u003e\u003ccode\u003e@​ariostas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3704\"\u003escikit-hep/awkward#3704\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: update acknowledgements to include NumFOCUS affiliation by \u003ca href=\"https://github.com/ianna\"\u003e\u003ccode\u003e@​ianna\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3708\"\u003escikit-hep/awkward#3708\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: update pre-commit hooks 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/scikit-hep/awkward/pull/3709\"\u003escikit-hep/awkward#3709\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: pytest log_level is better than log_cli_level by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3719\"\u003escikit-hep/awkward#3719\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: update requirements files for latest possible python versions by \u003ca href=\"https://github.com/ikrommyd\"\u003e\u003ccode\u003e@​ikrommyd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3739\"\u003escikit-hep/awkward#3739\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump the actions group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3744\"\u003escikit-hep/awkward#3744\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: update pre-commit hooks 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/scikit-hep/awkward/pull/3754\"\u003escikit-hep/awkward#3754\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: Remove CUDA 11 support by \u003ca href=\"https://github.com/shwina\"\u003e\u003ccode\u003e@​shwina\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3758\"\u003escikit-hep/awkward#3758\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(ci): use macos-15-intel for x86 wheel building and testing by \u003ca href=\"https://github.com/ariostas\"\u003e\u003ccode\u003e@​ariostas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3720\"\u003escikit-hep/awkward#3720\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: add new versions to version selector by \u003ca href=\"https://github.com/ariostas\"\u003e\u003ccode\u003e@​ariostas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3707\"\u003escikit-hep/awkward#3707\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: 3.14 is supported by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3717\"\u003escikit-hep/awkward#3717\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: add T90REAL as a contributor for code by \u003ca href=\"https://github.com/allcontributors\"\u003e\u003ccode\u003e@​allcontributors\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3742\"\u003escikit-hep/awkward#3742\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Add dependency and version change guidelines by \u003ca href=\"https://github.com/ianna\"\u003e\u003ccode\u003e@​ianna\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3745\"\u003escikit-hep/awkward#3745\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: add shwina as a contributor for code by \u003ca href=\"https://github.com/allcontributors\"\u003e\u003ccode\u003e@​allcontributors\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3759\"\u003escikit-hep/awkward#3759\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Add an example summation reducer using cccl by \u003ca href=\"https://github.com/maxymnaumchyk\"\u003e\u003ccode\u003e@​maxymnaumchyk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3762\"\u003escikit-hep/awkward#3762\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/T90REAL\"\u003e\u003ccode\u003e@​T90REAL\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3738\"\u003escikit-hep/awkward#3738\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shwina\"\u003e\u003ccode\u003e@​shwina\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3748\"\u003escikit-hep/awkward#3748\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/scikit-hep/awkward/compare/v2.8.10...v2.8.11\"\u003ehttps://github.com/scikit-hep/awkward/compare/v2.8.10...v2.8.11\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 2.8.10\u003c/h2\u003e\n\u003ch2\u003eNew features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: preserve field order when replacing existing fields in with_field by \u003ca href=\"https://github.com/DylanModesitt\"\u003e\u003ccode\u003e@​DylanModesitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3681\"\u003escikit-hep/awkward#3681\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add to_/from_safetensors by \u003ca href=\"https://github.com/pfackeldey\"\u003e\u003ccode\u003e@​pfackeldey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3685\"\u003escikit-hep/awkward#3685\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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-hep/awkward/commit/c4a2e57b47f6738670ffc0e4781a3990e7c3ff03\"\u003e\u003ccode\u003ec4a2e57\u003c/code\u003e\u003c/a\u003e awkward 2.8.11 and awkward-cpp 51\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-hep/awkward/commit/60072263c91fd8d5df48b487427319c5a10ae70d\"\u003e\u003ccode\u003e6007226\u003c/code\u003e\u003c/a\u003e awkward 2.8.11 and awkward-cpp 51\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-hep/awkward/commit/0ad8b1e25b0bd493508bade8ab8d79a383a854a0\"\u003e\u003ccode\u003e0ad8b1e\u003c/code\u003e\u003c/a\u003e fix: typetracer nplike's \u003ccode\u003eall\u003c/code\u003e function leads to infinite recursion for `axis...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-hep/awkward/commit/0941b378a8236a660990bd02d2c14e4d6593f28e\"\u003e\u003ccode\u003e0941b37\u003c/code\u003e\u003c/a\u003e fix: keep track of buffer key instead of field path for VirtualNDArrays \u0026amp; Pla...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-hep/awkward/commit/efea08c134963bc37c1013adc4ab320ebeb4d7a3\"\u003e\u003ccode\u003eefea08c\u003c/code\u003e\u003c/a\u003e chore(ci): use macos-15-intel for x86 wheel building and testing (\u003ca href=\"https://redirect.github.com/scikit-hep/awkward-1.0/issues/3720\"\u003e#3720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-hep/awkward/commit/87765b6adb379ba27b0f6b984607c250443b170c\"\u003e\u003ccode\u003e87765b6\u003c/code\u003e\u003c/a\u003e fix: \u003ccode\u003eak.Record\u003c/code\u003e creation from iterable with nested dicts (\u003ca href=\"https://redirect.github.com/scikit-hep/awkward-1.0/issues/3728\"\u003e#3728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-hep/awkward/commit/306274c1fd6028ed549fa0f9a5e47a8bd76e693c\"\u003e\u003ccode\u003e306274c\u003c/code\u003e\u003c/a\u003e fix: weights should not be raised to the power n in the n-th moment calculati...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-hep/awkward/commit/8872e1f4ffd781b07c2a661c235dc2d0a5f5bade\"\u003e\u003ccode\u003e8872e1f\u003c/code\u003e\u003c/a\u003e fix: incorrect passing of \u003ccode\u003eIndex\u003c/code\u003e inside nplike function in `to_IndexedOption...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-hep/awkward/commit/1594a70bb0d39e174996275dd251305a13f83b2b\"\u003e\u003ccode\u003e1594a70\u003c/code\u003e\u003c/a\u003e fix: numba test failures on Python 3.14 (\u003ca href=\"https://redirect.github.com/scikit-hep/awkward-1.0/issues/3757\"\u003e#3757\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-hep/awkward/commit/ca066ddc96dd690d52956535fc7422de71ed92e3\"\u003e\u003ccode\u003eca066dd\u003c/code\u003e\u003c/a\u003e feat: ability to optionally disable the caching of virtual arrays on themselv...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scikit-hep/awkward-1.0/compare/v2.6.10...v2.8.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `awkward-cpp` from 40 to 51\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/scikit-hep/awkward-1.0/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `blinker` from 1.8.2 to 1.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets-eco/blinker/releases\"\u003eblinker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.0\u003c/h2\u003e\n\u003cp\u003eThis is the Blinker 1.9.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecations, or introduce potentially breaking changes. 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\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/blinker/1.9.0/\"\u003ehttps://pypi.org/project/blinker/1.9.0/\u003c/a\u003e\nChanges: \u003ca href=\"https://blinker.readthedocs.io/en/stable/#version-1-9-0\"\u003ehttps://blinker.readthedocs.io/en/stable/#version-1-9-0\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets-eco/blinker/milestone/1?closed=1\"\u003ehttps://github.com/pallets-eco/blinker/milestone/1?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. \u003ca href=\"https://redirect.github.com/pallets-eco/blinker/issues/175\"\u003e#175\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove previously deprecated \u003ccode\u003e__version__\u003c/code\u003e, \u003ccode\u003ereceiver_connected\u003c/code\u003e, \u003ccode\u003eSignal.temporarily_connected_to\u003c/code\u003e and \u003ccode\u003eWeakNamespace\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets-eco/blinker/issues/172\"\u003e#172\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSkip weakref signal cleanup if the interpreter is shutting down. \u003ca href=\"https://redirect.github.com/pallets-eco/blinker/issues/173\"\u003e#173\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-eco/blinker/blob/main/CHANGES.rst\"\u003eblinker's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.9.0\u003c/h2\u003e\n\u003cp\u003eReleased 2024-11-08\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. :pr:\u003ccode\u003e175\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRemove previously deprecated \u003ccode\u003e__version__\u003c/code\u003e, \u003ccode\u003ereceiver_connected\u003c/code\u003e,\n\u003ccode\u003eSignal.temporarily_connected_to\u003c/code\u003e and \u003ccode\u003eWeakNamespace\u003c/code\u003e. :pr:\u003ccode\u003e172\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSkip weakref signal cleanup if the interpreter is shutting down.\n:issue:\u003ccode\u003e173\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-eco/blinker/commit/669f3a027828d19786e708b511277fabcd6b9532\"\u003e\u003ccode\u003e669f3a0\u003c/code\u003e\u003c/a\u003e release version 1.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/blinker/commit/cfe116fa7912d8dcb0deee4907aa63d1efaadf5b\"\u003e\u003ccode\u003ecfe116f\u003c/code\u003e\u003c/a\u003e try disabling attestions on test pypi\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/blinker/commit/16e4bd70a19353d9d7cf47e4df7de54936296377\"\u003e\u003ccode\u003e16e4bd7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pallets-eco/blinker/issues/174\"\u003e#174\u003c/a\u003e from projectgus/bugfix/weakref_disconnect_shutdown\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/blinker/commit/42561fdf065032f5c39aea04d8c3fb4db93f73f3\"\u003e\u003ccode\u003e42561fd\u003c/code\u003e\u003c/a\u003e Fix \u0026quot;Exception ignored\u0026quot; in weakref callback during interpreter shutdown.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/blinker/commit/dcce3e97743494433025e0b68f742f3582b6ba6a\"\u003e\u003ccode\u003edcce3e9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pallets-eco/blinker/issues/175\"\u003e#175\u003c/a\u003e from pallets-eco/drop-python3.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/blinker/commit/efa95eaa080b0d4a8dcfc46ad1f387ea1ddebd97\"\u003e\u003ccode\u003eefa95ea\u003c/code\u003e\u003c/a\u003e drop support for python 3.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/blinker/commit/82305185358d8ce21619ec0f324688a14a89c23b\"\u003e\u003ccode\u003e8230518\u003c/code\u003e\u003c/a\u003e update dev dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/blinker/commit/94f1202f08c6d00a9fe1ecf5c8cba9da84e4b22f\"\u003e\u003ccode\u003e94f1202\u003c/code\u003e\u003c/a\u003e update dev dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/blinker/commit/8c983ecd764e1d113d24522838c2a7312460b7eb\"\u003e\u003ccode\u003e8c983ec\u003c/code\u003e\u003c/a\u003e remove previously deprecated code (\u003ca href=\"https://redirect.github.com/pallets-eco/blinker/issues/172\"\u003e#172\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/blinker/commit/f5915f3bfcd9f9da0caf6cd4858bf68068c52963\"\u003e\u003ccode\u003ef5915f3\u003c/code\u003e\u003c/a\u003e set up pre-commit lite workflow\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets-eco/blinker/compare/1.8.2...1.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2025.11.12 to 2026.1.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\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\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/27ca98ad845ee6d130a88301622c137893f71620\"\u003e\u003ccode\u003e27ca98a\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7.0.9 to 7.0.11 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/56c59a63909cfd3162b37e7bc16956e64df0f737\"\u003e\u003ccode\u003e56c59a6\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.0 to 6.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ae0021cd43a77bfba67d20a041469cdf6996570e\"\u003e\u003ccode\u003eae0021c\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.0.0 to 6.1.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/380\"\u003e#380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddf5d0b5d2a3d55fd92a79f141dbb5e074caf924\"\u003e\u003ccode\u003eddf5d0b\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5.0.1 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.11.12...2026.01.04\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cffi` from 1.17.1 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only) - huge thanks to the folks at Quansight Labs for all the work to get this one sorted!\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.0.0b1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only).\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/6366c01d84e9a78e7e85f12ebe9760ba5d19b6d3\"\u003e\u003ccode\u003e6366c01\u003c/code\u003e\u003c/a\u003e release 2.0.0 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/95c847663aec401e4003927a274e4de9b8595f4f\"\u003e\u003ccode\u003e95c8476\u003c/code\u003e\u003c/a\u003e 2.0.0 post beta backports (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/195cbda66b6be9297ef6d584644e50cfdcca4e8a\"\u003e\u003ccode\u003e195cbda\u003c/code\u003e\u003c/a\u003e Release 2.0.0b1 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b4bbe7940d3f76027534db1aecbae9b61c35221a\"\u003e\u003ccode\u003eb4bbe79\u003c/code\u003e\u003c/a\u003e fix version test to support beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/7ed073de66e713cf791b6fdfa23685c81fdfd6ad\"\u003e\u003ccode\u003e7ed073d\u003c/code\u003e\u003c/a\u003e Add support for the free-threaded build (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/178\"\u003e#178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/67a170dc7972dc9361743690b38da3d963b200ef\"\u003e\u003ccode\u003e67a170d\u003c/code\u003e\u003c/a\u003e Change the license from MIT to MIT-no-attribution, which is the same without ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/92645ec9329feb03e3fa86240b40fe0fc37469d1\"\u003e\u003ccode\u003e92645ec\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support/testing (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/177\"\u003e#177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/2b81170583a898478a6996c9705d8c38ab7f73a1\"\u003e\u003ccode\u003e2b81170\u003c/code\u003e\u003c/a\u003e doc: update test commands in Section Testing/development tips (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/25172b84cf51cf58241f074ccd1efd9c7648cb43\"\u003e\u003ccode\u003e25172b8\u003c/code\u003e\u003c/a\u003e doc: update year (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b57a92c03eb2078a99c900519a37d18b4d52324f\"\u003e\u003ccode\u003eb57a92c\u003c/code\u003e\u003c/a\u003e issue 147: force-compute nested structs before parent structs.  Occurs mainly...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.1.7 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.7...8.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `comtypes` from 1.4.12 to 1.4.15\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/enthought/comtypes/releases\"\u003ecomtypes's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.15\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eTYPE_E_ELEMENTNOTFOUND\u003c/code\u003e HRESULT constant value. By \u003ca href=\"https://github.com/junkmd\"\u003e\u003ccode\u003e@​junkmd\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eEnhance \u003ccode\u003eITypeInfo\u003c/code\u003e testing in \u003ccode\u003etest_typeinfo.py\u003c/code\u003e. By \u003ca href=\"https://github.com/junkmd\"\u003e\u003ccode\u003e@​junkmd\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eImprove type hints for for generated dispmethods and properties. By \u003ca href=\"https://github.com/junkmd\"\u003e\u003ccode\u003e@​junkmd\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eEnhance tests for generated type hints. By \u003ca href=\"https://github.com/junkmd\"\u003e\u003ccode\u003e@​junkmd\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eRemove Internet Explorer dependency from \u003ccode\u003etest_QueryService.py\u003c/code\u003e and \u003ccode\u003etest_casesensitivity.py\u003c/code\u003e. By \u003ca href=\"https://github.com/junkmd\"\u003e\u003ccode\u003e@​junkmd\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eRename \u003ccode\u003etest_ie.py\u003c/code\u003e to \u003ccode\u003etest_eventinterface.py\u003c/code\u003e. By \u003ca href=\"https://github.com/junkmd\"\u003e\u003ccode\u003e@​junkmd\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eSyntaxError\u003c/code\u003e in \u003ccode\u003eDispMethodAnnotator\u003c/code\u003e signature generation. By \u003ca href=\"https://github.com/junkmd\"\u003e\u003ccode\u003e@​junkmd\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eRename \u003ccode\u003etest_msi.py\u003c/code\u003e to \u003ccode\u003etest_puredispatch.py\u003c/code\u003e. By \u003ca href=\"https://github.com/junkmd\"\u003e\u003ccode\u003e@​junkmd\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eRename \u003ccode\u003etest_wmi.py\u003c/code\u003e to \u003ccode\u003etest_variant_outparam.py\u003c/code\u003e. By \u003ca href=\"https://github.com/junk...\n\n_Description has been truncated_","html_url":"https://github.com/FreeCAD/Addons/pull/1","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/FreeCAD%2FAddons/issues/1","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1/packages"}},{"old_version":"1.17.1","new_version":"2.0.0","update_type":"major","path":null,"pr_created_at":"2026-01-20T21:31:41.000Z","version_change":"1.17.1 → 2.0.0","issue":{"uuid":"3835543565","node_id":"PR_kwDOLufxkc6-T3PU","number":151,"state":"open","title":"deps: bump the other-dependencies group with 5 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":4,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-20T21:31:41.000Z","updated_at":"2026-01-21T00:07:21.350Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps: bump","group_name":"other-dependencies","update_count":5,"packages":[{"name":"asttokens","old_version":"3.0.0","new_version":"3.0.1","repository_url":"https://github.com/gristlabs/asttokens"},{"name":"bleach","old_version":"6.2.0","new_version":"6.3.0"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"executing","old_version":"2.1.0","new_version":"2.2.1","repository_url":"https://github.com/alexmojaki/executing"},{"name":"tenacity","old_version":"9.0.0","new_version":"9.1.2","repository_url":"https://github.com/jd/tenacity"}],"path":null,"ecosystem":"pip"},"body":"Bumps the other-dependencies group with 5 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [asttokens](https://github.com/gristlabs/asttokens) | `3.0.0` | `3.0.1` |\n| [bleach[css]](https://github.com/mozilla/bleach) | `6.2.0` | `6.3.0` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.1` | `2.0.0` |\n| [executing](https://github.com/alexmojaki/executing) | `2.1.0` | `2.2.1` |\n| [tenacity](https://github.com/jd/tenacity) | `9.0.0` | `9.1.2` |\n\nUpdates `asttokens` from 3.0.0 to 3.0.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/bdbf396fc0e006912ba82f1137dfd6b2d5aa9af2\"\u003e\u003ccode\u003ebdbf396\u003c/code\u003e\u003c/a\u003e Update mypy; add 3.14 to the CI; drop python 3.8 support (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/167\"\u003e#167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/f859c055e8453650e1987c5aefaaec36582d3a07\"\u003e\u003ccode\u003ef859c05\u003c/code\u003e\u003c/a\u003e Add tests for astroid v2, v3, and v4 to the CI (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/166\"\u003e#166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/84ef059ba28d08816d3d881e363b9ed42bbeae3a\"\u003e\u003ccode\u003e84ef059\u003c/code\u003e\u003c/a\u003e Adapt asttokens for astroid 4.x (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/165\"\u003e#165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/9db9335648659520c7c8453bc39550fa4f95d539\"\u003e\u003ccode\u003e9db9335\u003c/code\u003e\u003c/a\u003e Various links improvements (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3371ebf7f48f6a731d409fffd6ba235e6a95d85b\"\u003e\u003ccode\u003e3371ebf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/161\"\u003e#161\u003c/a\u003e from gristlabs/dependabot/pip/docs/requests-2.32.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3a60115d3efdb01efc8a6442b59fdd0071518e70\"\u003e\u003ccode\u003e3a60115\u003c/code\u003e\u003c/a\u003e Bump requests from 2.32.2 to 2.32.4 in /docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/584b51c6c084455ad4597886657783d1b661ddfa\"\u003e\u003ccode\u003e584b51c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/160\"\u003e#160\u003c/a\u003e from gristlabs/dependabot/pip/docs/urllib3-2.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3e9d703323ce94987bf9e030bd010eae13fa15b4\"\u003e\u003ccode\u003e3e9d703\u003c/code\u003e\u003c/a\u003e Bump urllib3 from 2.2.2 to 2.5.0 in /docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/64d3f7c3637775fef832a9a9cdb78ec02da494e6\"\u003e\u003ccode\u003e64d3f7c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/158\"\u003e#158\u003c/a\u003e from gristlabs/dependabot/pip/docs/jinja2-3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/9b5fb1abfb171cfb1f01c2d996cbd31e9d1f0660\"\u003e\u003ccode\u003e9b5fb1a\u003c/code\u003e\u003c/a\u003e Bump jinja2 from 3.1.4 to 3.1.6 in /docs\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gristlabs/asttokens/compare/v3.0.0...v3.0.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bleach[css]` from 6.2.0 to 6.3.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mozilla/bleach/blob/main/CHANGES\"\u003ebleach[css]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.3.0 (October 27th, 2025)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBackwards incompatible changes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/756\"\u003e#756\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eNone\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/758\"\u003e#758\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix wbr handling. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/488\"\u003e#488\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/mozilla/bleach/commit/5546d5dbce60d08ccb99d981778d74044d646d4e\"\u003e\u003ccode\u003e5546d5d\u003c/code\u003e\u003c/a\u003e chore: prep for 6.3.0 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/88df3ff23fb2a43e174b3fdfe9191ef516de868a\"\u003e\u003ccode\u003e88df3ff\u003c/code\u003e\u003c/a\u003e chore: fix readthedocs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/d8b2fb45b2606515c58787c223d6605c6c70868f\"\u003e\u003ccode\u003ed8b2fb4\u003c/code\u003e\u003c/a\u003e fix: fix wbr handling (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/488\"\u003e#488\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/55e48cedb20bda23940ab34753a1fb378d5d30b9\"\u003e\u003ccode\u003e55e48ce\u003c/code\u003e\u003c/a\u003e chore: add support for Python 3.14 (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/758\"\u003e#758\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/a4d6cddac6e338c3d6f84c755a5fcb32e9e18fba\"\u003e\u003ccode\u003ea4d6cdd\u003c/code\u003e\u003c/a\u003e chore: drop support for Python 3.9 (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/756\"\u003e#756\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/172d92faef543a83c6760c63c32749586cdd564b\"\u003e\u003ccode\u003e172d92f\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.6.0 to 6.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/df88612f2e9daf8f4ee23cf0e29b712d9d9147b6\"\u003e\u003ccode\u003edf88612\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/mozilla/bleach/commit/cbcf6b18d19aeb7777699f9385013d0a04052b68\"\u003e\u003ccode\u003ecbcf6b1\u003c/code\u003e\u003c/a\u003e Bump actions/cache from 4.2.3 to 4.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/d9aa7ef592d57dda56e26ba31d06e1b279c58eca\"\u003e\u003ccode\u003ed9aa7ef\u003c/code\u003e\u003c/a\u003e Switch from dependabot reviewers to CODEOWNERS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/06f0f76cc68112bda3fa101d1730d5ba914d54a1\"\u003e\u003ccode\u003e06f0f76\u003c/code\u003e\u003c/a\u003e Update setuptools, wheel, and twine for devs\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/mozilla/bleach/compare/v6.2.0...v6.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cffi` from 1.17.1 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only) - huge thanks to the folks at Quansight Labs for all the work to get this one sorted!\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.0.0b1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only).\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/6366c01d84e9a78e7e85f12ebe9760ba5d19b6d3\"\u003e\u003ccode\u003e6366c01\u003c/code\u003e\u003c/a\u003e release 2.0.0 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/95c847663aec401e4003927a274e4de9b8595f4f\"\u003e\u003ccode\u003e95c8476\u003c/code\u003e\u003c/a\u003e 2.0.0 post beta backports (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/195cbda66b6be9297ef6d584644e50cfdcca4e8a\"\u003e\u003ccode\u003e195cbda\u003c/code\u003e\u003c/a\u003e Release 2.0.0b1 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b4bbe7940d3f76027534db1aecbae9b61c35221a\"\u003e\u003ccode\u003eb4bbe79\u003c/code\u003e\u003c/a\u003e fix version test to support beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/7ed073de66e713cf791b6fdfa23685c81fdfd6ad\"\u003e\u003ccode\u003e7ed073d\u003c/code\u003e\u003c/a\u003e Add support for the free-threaded build (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/178\"\u003e#178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/67a170dc7972dc9361743690b38da3d963b200ef\"\u003e\u003ccode\u003e67a170d\u003c/code\u003e\u003c/a\u003e Change the license from MIT to MIT-no-attribution, which is the same without ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/92645ec9329feb03e3fa86240b40fe0fc37469d1\"\u003e\u003ccode\u003e92645ec\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support/testing (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/177\"\u003e#177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/2b81170583a898478a6996c9705d8c38ab7f73a1\"\u003e\u003ccode\u003e2b81170\u003c/code\u003e\u003c/a\u003e doc: update test commands in Section Testing/development tips (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/25172b84cf51cf58241f074ccd1efd9c7648cb43\"\u003e\u003ccode\u003e25172b8\u003c/code\u003e\u003c/a\u003e doc: update year (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b57a92c03eb2078a99c900519a37d18b4d52324f\"\u003e\u003ccode\u003eb57a92c\u003c/code\u003e\u003c/a\u003e issue 147: force-compute nested structs before parent structs.  Occurs mainly...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `executing` from 2.1.0 to 2.2.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/bafb305d96572bc8fb668b6564787bbb4fff2809\"\u003e\u003ccode\u003ebafb305\u003c/code\u003e\u003c/a\u003e Add 3.14 to classifiers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/5ed2ba36c2df94c91fefabd919880ffe061dc0f2\"\u003e\u003ccode\u003e5ed2ba3\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/alexmojaki/executing/issues/97\"\u003e#97\u003c/a\u003e from alexmojaki/3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/28095d447af50c49e154de5a27b9423611462f3d\"\u003e\u003ccode\u003e28095d4\u003c/code\u003e\u003c/a\u003e refactor: review changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/bb09dc677da7988a2c9555878b3727afa995b2c0\"\u003e\u003ccode\u003ebb09dc6\u003c/code\u003e\u003c/a\u003e refactor: some cleanup\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/dabc70ef5cc9a45eb57432822cdcf674af2e1db8\"\u003e\u003ccode\u003edabc70e\u003c/code\u003e\u003c/a\u003e fix: inst.argval can be a tuple for sometimes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/0772f918c432d6451594bcb6ffccba62e32e794c\"\u003e\u003ccode\u003e0772f91\u003c/code\u003e\u003c/a\u003e fix: removed comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/bacc5b699405e6f27d882dd2a71bb0ec30167f37\"\u003e\u003ccode\u003ebacc5b6\u003c/code\u003e\u003c/a\u003e fix: moved verification for CALL_INTRINSIC_2 back to 3.13\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/ec090751a1645cd14bfcb20a79b02371ffd6172b\"\u003e\u003ccode\u003eec09075\u003c/code\u003e\u003c/a\u003e test: added sample_results for 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/9405fed0769af3ee22dd4f433249f6494688638e\"\u003e\u003ccode\u003e9405fed\u003c/code\u003e\u003c/a\u003e fix: handle synthetic code to store annotation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/f09e4cd194aa3480c12a9f5afab3524d2a7222f2\"\u003e\u003ccode\u003ef09e4cd\u003c/code\u003e\u003c/a\u003e fix: TypeVar defaults\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/alexmojaki/executing/compare/v2.1.0...v2.2.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tenacity` from 9.0.0 to 9.1.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jd/tenacity/releases\"\u003etenacity's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.1.2\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/jd/tenacity/compare/9.1.1...9.1.2\"\u003ehttps://github.com/jd/tenacity/compare/9.1.1...9.1.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e9.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eTest with Python 3.13 by \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/480\"\u003ejd/tenacity#480\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: remove Python 3.8 support by \u003ca href=\"https://github.com/jd\"\u003e\u003ccode\u003e@​jd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/515\"\u003ejd/tenacity#515\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: return \u0026quot;Self\u0026quot; from \u0026quot;BaseRetrying.copy\u0026quot; by \u003ca href=\"https://github.com/ThirVondukr\"\u003e\u003ccode\u003e@​ThirVondukr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/518\"\u003ejd/tenacity#518\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: upload on PyPI using trusted publishing by \u003ca href=\"https://github.com/jd\"\u003e\u003ccode\u003e@​jd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/520\"\u003ejd/tenacity#520\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd re.Pattern to allowed match types by \u003ca href=\"https://github.com/robertschweizer\"\u003e\u003ccode\u003e@​robertschweizer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/497\"\u003ejd/tenacity#497\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/Young-Lord\"\u003e\u003ccode\u003e@​Young-Lord\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/491\"\u003ejd/tenacity#491\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/480\"\u003ejd/tenacity#480\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ThirVondukr\"\u003e\u003ccode\u003e@​ThirVondukr\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/518\"\u003ejd/tenacity#518\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robertschweizer\"\u003e\u003ccode\u003e@​robertschweizer\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/jd/tenacity/pull/497\"\u003ejd/tenacity#497\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/jd/tenacity/compare/9.0.0...9.1.0\"\u003ehttps://github.com/jd/tenacity/compare/9.0.0...9.1.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/jd/tenacity/commit/62787c34bb052d28d814bc07e5c3caed22cd73a2\"\u003e\u003ccode\u003e62787c3\u003c/code\u003e\u003c/a\u003e ci: fix build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jd/tenacity/commit/2b173a1039009773dbf5d377f95cc8aabe83bf58\"\u003e\u003ccode\u003e2b173a1\u003c/code\u003e\u003c/a\u003e ci: fix typo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jd/tenacity/commit/a44271f3d7d917d81e432ce7f85d448b437b4e41\"\u003e\u003ccode\u003ea44271f\u003c/code\u003e\u003c/a\u003e fix: Add re.Pattern to allowed match types (\u003ca href=\"https://redirect.github.com/jd/tenacity/issues/497\"\u003e#497\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jd/tenacity/commit/b4dfa3fe88707f42561d11dea4bca06c45fb5523\"\u003e\u003ccode\u003eb4dfa3f\u003c/code\u003e\u003c/a\u003e chore(deps): bump actions/setup-python in the github-actions group (\u003ca href=\"https://redirect.github.com/jd/tenacity/issues/522\"\u003e#522\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jd/tenacity/commit/f9a879c531ff4be938309aae6c69f46fc5b732d8\"\u003e\u003ccode\u003ef9a879c\u003c/code\u003e\u003c/a\u003e ci: upload on PyPI using trusted publishing (\u003ca href=\"https://redirect.github.com/jd/tenacity/issues/520\"\u003e#520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jd/tenacity/commit/bfbf17314612b8546a650c4b56d6c6438e6857df\"\u003e\u003ccode\u003ebfbf173\u003c/code\u003e\u003c/a\u003e fix: return \u0026quot;Self\u0026quot; from \u0026quot;BaseRetrying.copy\u0026quot; (\u003ca href=\"https://redirect.github.com/jd/tenacity/issues/518\"\u003e#518\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jd/tenacity/commit/212c47c05fec89c3aca8c4fec0b426c9f33036e8\"\u003e\u003ccode\u003e212c47c\u003c/code\u003e\u003c/a\u003e ci: update ubuntu image (\u003ca href=\"https://redirect.github.com/jd/tenacity/issues/516\"\u003e#516\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jd/tenacity/commit/3e2c18175944c1896a1065809db15378d545cdce\"\u003e\u003ccode\u003e3e2c181\u003c/code\u003e\u003c/a\u003e ci: remove Python 3.8 support (\u003ca href=\"https://redirect.github.com/jd/tenacity/issues/515\"\u003e#515\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jd/tenacity/commit/320335902409ed2e09f21cb83431de7ee7a0c2a6\"\u003e\u003ccode\u003e3203359\u003c/code\u003e\u003c/a\u003e Test with Python 3.13 (\u003ca href=\"https://redirect.github.com/jd/tenacity/issues/480\"\u003e#480\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jd/tenacity/commit/72db2740cab8248d2d9b7b9a0716cb1ea9867051\"\u003e\u003ccode\u003e72db274\u003c/code\u003e\u003c/a\u003e chore(deps): bump actions/setup-python in the github-actions group (\u003ca href=\"https://redirect.github.com/jd/tenacity/issues/513\"\u003e#513\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jd/tenacity/compare/9.0.0...9.1.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot 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 \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/OpenMS/pyopenms_viz/pull/151","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenMS%2Fpyopenms_viz/issues/151","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/151/packages"}},{"old_version":"1.17.1","new_version":"2.0.0","update_type":"major","path":null,"pr_created_at":"2026-01-12T04:41:08.000Z","version_change":"1.17.1 → 2.0.0","issue":{"uuid":"3802743037","node_id":"PR_kwDOMftbFc68njza","number":188,"state":"closed","title":"Bump the py-updates 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-01-19T04:50:43.000Z","author_association":null,"state_reason":null,"created_at":"2026-01-12T04:41:08.000Z","updated_at":"2026-01-19T04:50:44.000Z","time_to_close":605375,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"py-updates","update_count":79,"packages":[{"name":"awscli","old_version":"1.40.17","new_version":"1.44.15","repository_url":"https://github.com/aws/aws-cli"},{"name":"polars","old_version":"1.28.1","new_version":"1.37.0","repository_url":"https://github.com/pola-rs/polars"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"biopython","old_version":"1.85","new_version":"1.86","repository_url":"https://github.com/biopython/biopython"},{"name":"boto3","old_version":"1.38.18","new_version":"1.42.25","repository_url":"https://github.com/boto/boto3"},{"name":"botocore","old_version":"1.38.18","new_version":"1.42.25","repository_url":"https://github.com/boto/botocore"},{"name":"certifi","old_version":"2025.4.26","new_version":"2026.1.4","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":"cloudpathlib","old_version":"0.21.1","new_version":"0.23.0","repository_url":"https://github.com/drivendataorg/cloudpathlib"},{"name":"docutils","old_version":"0.19","new_version":"0.22.4","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"jellyfish","old_version":"1.2.0","new_version":"1.2.1"},{"name":"markdown-it-py","old_version":"3.0.0","new_version":"4.0.0","repository_url":"https://github.com/executablebooks/markdown-it-py"},{"name":"numpy","old_version":"2.2.5","new_version":"2.4.1","repository_url":"https://github.com/numpy/numpy"},{"name":"pandas","old_version":"2.2.3","new_version":"2.3.3","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"pyarrow","old_version":"20.0.0","new_version":"22.0.0","repository_url":"https://github.com/apache/arrow"},{"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":"rich","old_version":"14.0.0","new_version":"14.2.0","repository_url":"https://github.com/Textualize/rich"},{"name":"rsa","old_version":"4.7.2","new_version":"4.9.1","repository_url":"https://github.com/sybrenstuvel/python-rsa"},{"name":"s3transfer","old_version":"0.12.0","new_version":"0.16.0","repository_url":"https://github.com/boto/s3transfer"},{"name":"structlog","old_version":"25.3.0","new_version":"25.5.0","repository_url":"https://github.com/hynek/structlog"},{"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.3","repository_url":"https://github.com/urllib3/urllib3"},{"name":"zstandard","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/indygreg/python-zstandard"},{"name":"boto3-stubs","old_version":"1.38.18","new_version":"1.42.25","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"botocore-stubs","old_version":"1.38.18","new_version":"1.42.25","repository_url":"https://github.com/youtype/botocore-stubs"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"coverage","old_version":"7.8.0","new_version":"7.13.1","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cryptography","old_version":"44.0.3","new_version":"46.0.3","repository_url":"https://github.com/pyca/cryptography"},{"name":"freezegun","old_version":"1.5.1","new_version":"1.5.5","repository_url":"https://github.com/spulec/freezegun"},{"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":"moto","old_version":"5.1.4","new_version":"5.1.19","repository_url":"https://github.com/getmoto/moto"},{"name":"mypy","old_version":"1.15.0","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"mypy-boto3-s3","old_version":"1.38.0","new_version":"1.42.21","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"pycparser","old_version":"2.22","new_version":"2.23","repository_url":"https://github.com/eliben/pycparser"},{"name":"pytest","old_version":"8.3.5","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-mock","old_version":"3.14.0","new_version":"3.15.1","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"responses","old_version":"0.25.7","new_version":"0.25.8","repository_url":"https://github.com/getsentry/responses"},{"name":"ruff","old_version":"0.11.10","new_version":"0.14.11","repository_url":"https://github.com/astral-sh/ruff"},{"name":"types-awscrt","old_version":"0.27.2","new_version":"0.30.0","repository_url":"https://github.com/youtype/types-awscrt"},{"name":"types-requests","old_version":"2.32.0.20250515","new_version":"2.32.4.20260107","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"types-s3transfer","old_version":"0.12.0","new_version":"0.16.0","repository_url":"https://github.com/youtype/types-s3transfer"},{"name":"typing-extensions","old_version":"4.13.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.5","repository_url":"https://github.com/pallets/werkzeug"},{"name":"xmltodict","old_version":"0.14.2","new_version":"1.0.2","repository_url":"https://github.com/martinblech/xmltodict"},{"name":"alabaster","old_version":"0.7.16","new_version":"1.0.0","repository_url":"https://github.com/sphinx-doc/alabaster"},{"name":"anyio","old_version":"4.9.0","new_version":"4.12.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.14.3"},{"name":"cachecontrol","old_version":"0.14.3","new_version":"0.14.4","repository_url":"https://github.com/psf/cachecontrol"},{"name":"click","old_version":"8.2.0","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"contourpy","old_version":"1.3.2","new_version":"1.3.3","repository_url":"https://github.com/contourpy/contourpy"},{"name":"filelock","old_version":"3.18.0","new_version":"3.20.3","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"fonttools","old_version":"4.58.0","new_version":"4.61.1","repository_url":"https://github.com/fonttools/fonttools"},{"name":"furo","old_version":"2024.8.6","new_version":"2025.12.19","repository_url":"https://github.com/pradyunsg/furo"},{"name":"kiwisolver","old_version":"1.4.8","new_version":"1.4.9","repository_url":"https://github.com/nucleic/kiwi"},{"name":"matplotlib","old_version":"3.10.3","new_version":"3.10.8","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"mdit-py-plugins","old_version":"0.4.2","new_version":"0.5.0","repository_url":"https://github.com/executablebooks/mdit-py-plugins"},{"name":"more-itertools","old_version":"10.7.0","new_version":"10.8.0","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"msgpack","old_version":"1.1.0","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"pillow","old_version":"11.2.1","new_version":"12.1.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.3.8","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pyparsing","old_version":"3.2.3","new_version":"3.3.1","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"ruamel-yaml","old_version":"0.18.10","new_version":"0.19.1"},{"name":"ruamel-yaml-clib","old_version":"0.2.12","new_version":"0.2.15"},{"name":"soupsieve","old_version":"2.7","new_version":"2.8.1","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"sphinx","old_version":"7.3.7","new_version":"9.0.4","repository_url":"https://github.com/sphinx-doc/sphinx"},{"name":"sphinx-autobuild","old_version":"2024.10.3","new_version":"2025.8.25","repository_url":"https://github.com/sphinx-doc/sphinx-autobuild"},{"name":"sphinx-autodoc-typehints","old_version":"2.3.0","new_version":"3.6.1","repository_url":"https://github.com/tox-dev/sphinx-autodoc-typehints"},{"name":"sphinx-jinja2-compat","old_version":"0.3.0","new_version":"0.4.1","repository_url":"https://github.com/sphinx-toolbox/sphinx-jinja2-compat"},{"name":"sphinx-prompt","old_version":"1.8.0","new_version":"1.10.2","repository_url":"https://github.com/sbrunner/sphinx-prompt"},{"name":"sphinx-tabs","old_version":"3.4.5","new_version":"3.4.7","repository_url":"https://github.com/executablebooks/sphinx-tabs"},{"name":"sphinx-toolbox","old_version":"4.0.0","new_version":"4.1.1","repository_url":"https://github.com/sphinx-toolbox/sphinx-toolbox"},{"name":"sphinxext-opengraph","old_version":"0.10.0","new_version":"0.13.0","repository_url":"https://github.com/sphinx-doc/sphinxext-opengraph"},{"name":"starlette","old_version":"0.46.2","new_version":"0.51.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"uvicorn","old_version":"0.34.2","new_version":"0.40.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"watchfiles","old_version":"1.0.5","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"websockets","old_version":"15.0.1","new_version":"16.0","repository_url":"https://github.com/python-websockets/websockets"}],"path":null,"ecosystem":"pip"},"body":"Bumps the py-updates group with 79 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [awscli](https://github.com/aws/aws-cli) | `1.40.17` | `1.44.15` |\n| [polars](https://github.com/pola-rs/polars) | `1.28.1` | `1.37.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [biopython](https://github.com/biopython/biopython) | `1.85` | `1.86` |\n| [boto3](https://github.com/boto/boto3) | `1.38.18` | `1.42.25` |\n| [botocore](https://github.com/boto/botocore) | `1.38.18` | `1.42.25` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.4.26` | `2026.1.4` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.4` |\n| [cloudpathlib](https://github.com/drivendataorg/cloudpathlib) | `0.21.1` | `0.23.0` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.19` | `0.22.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [jellyfish](https://jellyfish.jpt.sh/) | `1.2.0` | `1.2.1` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `3.0.0` | `4.0.0` |\n| [numpy](https://github.com/numpy/numpy) | `2.2.5` | `2.4.1` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `2.3.3` |\n| [pyarrow](https://github.com/apache/arrow) | `20.0.0` | `22.0.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| [rich](https://github.com/Textualize/rich) | `14.0.0` | `14.2.0` |\n| [rsa](https://github.com/sybrenstuvel/python-rsa) | `4.7.2` | `4.9.1` |\n| [s3transfer](https://github.com/boto/s3transfer) | `0.12.0` | `0.16.0` |\n| [structlog](https://github.com/hynek/structlog) | `25.3.0` | `25.5.0` |\n| [tzdata](https://github.com/python/tzdata) | `2025.2` | `2025.3` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.4.0` | `2.6.3` |\n| [zstandard](https://github.com/indygreg/python-zstandard) | `0.23.0` | `0.25.0` |\n| [boto3-stubs](https://github.com/youtype/mypy_boto3_builder) | `1.38.18` | `1.42.25` |\n| [botocore-stubs](https://github.com/youtype/botocore-stubs) | `1.38.18` | `1.42.25` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.1` | `2.0.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.8.0` | `7.13.1` |\n| [cryptography](https://github.com/pyca/cryptography) | `44.0.3` | `46.0.3` |\n| [freezegun](https://github.com/spulec/freezegun) | `1.5.1` | `1.5.5` |\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| [moto](https://github.com/getmoto/moto) | `5.1.4` | `5.1.19` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.19.1` |\n| [mypy-boto3-s3](https://github.com/youtype/mypy_boto3_builder) | `1.38.0` | `1.42.21` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `2.23` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.5` | `9.0.2` |\n| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.14.0` | `3.15.1` |\n| [responses](https://github.com/getsentry/responses) | `0.25.7` | `0.25.8` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.11.10` | `0.14.11` |\n| [types-awscrt](https://github.com/youtype/types-awscrt) | `0.27.2` | `0.30.0` |\n| [types-requests](https://github.com/typeshed-internal/stub_uploader) | `2.32.0.20250515` | `2.32.4.20260107` |\n| [types-s3transfer](https://github.com/youtype/types-s3transfer) | `0.12.0` | `0.16.0` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.2` | `4.15.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.5` |\n| [xmltodict](https://github.com/martinblech/xmltodict) | `0.14.2` | `1.0.2` |\n| [alabaster](https://github.com/sphinx-doc/alabaster) | `0.7.16` | `1.0.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.12.1` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.14.3` |\n| [cachecontrol](https://github.com/psf/cachecontrol) | `0.14.3` | `0.14.4` |\n| [click](https://github.com/pallets/click) | `8.2.0` | `8.3.1` |\n| [contourpy](https://github.com/contourpy/contourpy) | `1.3.2` | `1.3.3` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.18.0` | `3.20.3` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.58.0` | `4.61.1` |\n| [furo](https://github.com/pradyunsg/furo) | `2024.8.6` | `2025.12.19` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.4.8` | `1.4.9` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.3` | `3.10.8` |\n| [mdit-py-plugins](https://github.com/executablebooks/mdit-py-plugins) | `0.4.2` | `0.5.0` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.7.0` | `10.8.0` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `12.1.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.3.8` | `4.5.1` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.3` | `3.3.1` |\n| ruamel-yaml | `0.18.10` | `0.19.1` |\n| ruamel-yaml-clib | `0.2.12` | `0.2.15` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.8.1` |\n| [sphinx](https://github.com/sphinx-doc/sphinx) | `7.3.7` | `9.0.4` |\n| [sphinx-autobuild](https://github.com/sphinx-doc/sphinx-autobuild) | `2024.10.3` | `2025.8.25` |\n| [sphinx-autodoc-typehints](https://github.com/tox-dev/sphinx-autodoc-typehints) | `2.3.0` | `3.6.1` |\n| [sphinx-jinja2-compat](https://github.com/sphinx-toolbox/sphinx-jinja2-compat) | `0.3.0` | `0.4.1` |\n| [sphinx-prompt](https://github.com/sbrunner/sphinx-prompt) | `1.8.0` | `1.10.2` |\n| [sphinx-tabs](https://github.com/executablebooks/sphinx-tabs) | `3.4.5` | `3.4.7` |\n| [sphinx-toolbox](https://github.com/sphinx-toolbox/sphinx-toolbox) | `4.0.0` | `4.1.1` |\n| [sphinxext-opengraph](https://github.com/sphinx-doc/sphinxext-opengraph) | `0.10.0` | `0.13.0` |\n| [starlette](https://github.com/Kludex/starlette) | `0.46.2` | `0.51.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.34.2` | `0.40.0` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.0.5` | `1.1.1` |\n| [websockets](https://github.com/python-websockets/websockets) | `15.0.1` | `16.0` |\n\n\nUpdates `awscli` from 1.40.17 to 1.44.15\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/56a551a5916a09423336124a8967615e0d0be143\"\u003e\u003ccode\u003e56a551a\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.15'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/b78a64f27cce6dc86754f39196b44f5b1a7f266d\"\u003e\u003ccode\u003eb78a64f\u003c/code\u003e\u003c/a\u003e Bumping version to 1.44.15\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/715bce7cf992e841f04b6b15c701d4292450d9d6\"\u003e\u003ccode\u003e715bce7\u003c/code\u003e\u003c/a\u003e Update changelog based on model updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/72510f852833ea976520851bda26757265c6c207\"\u003e\u003ccode\u003e72510f8\u003c/code\u003e\u003c/a\u003e Create update-vpc-link.rst (\u003ca href=\"https://redirect.github.com/aws/aws-cli/issues/9405\"\u003e#9405\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/d6a71c953a9155fceb7fcecf4246718153522c4d\"\u003e\u003ccode\u003ed6a71c9\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.14'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/b2be64a7c3c8747a0cfd7b174307409f9c130420\"\u003e\u003ccode\u003eb2be64a\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.14' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/95337ce8110bbd70efef24b8255892a374698e52\"\u003e\u003ccode\u003e95337ce\u003c/code\u003e\u003c/a\u003e Bumping version to 1.44.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/3224f1b5e55abc438d1f86f06a70fef3dbaa89ca\"\u003e\u003ccode\u003e3224f1b\u003c/code\u003e\u003c/a\u003e Update changelog based on model updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/d90b023b6b34361dec3bffee9b64f62d662fa3d7\"\u003e\u003ccode\u003ed90b023\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.13'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-cli/commit/76549b03313edbe5b8e011b9cf35e3e89b5d5387\"\u003e\u003ccode\u003e76549b0\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.44.13' into develop\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aws/aws-cli/compare/1.40.17...1.44.15\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `polars` from 1.28.1 to 1.37.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pola-rs/polars/releases\"\u003epolars's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePython Polars 1.37.0\u003c/h2\u003e\n\u003ch2\u003e🚀 Performance improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up \u003ccode\u003eSQL\u003c/code\u003e interface \u0026quot;ORDER BY\u0026quot; clauses (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26037\"\u003e#26037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd fast kernel for is_nan and use it for numpy NaN-\u0026gt;null conversion (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26034\"\u003e#26034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOptimize ArrayFromIter implementations for ObjectArray (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25712\"\u003e#25712\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNew streaming NDJSON sink pipeline (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25948\"\u003e#25948\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNew streaming CSV sink pipeline (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25900\"\u003e#25900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDispatch partitioned usage of \u003ccode\u003esink_*\u003c/code\u003e functions to new-streaming by default (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25910\"\u003e#25910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReplace ryu with faster zmij (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25885\"\u003e#25885\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReduce memory usage for .item() count in grouped first/last (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25787\"\u003e#25787\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSkip schema inference if schema provided for \u003ccode\u003escan_csv/ndjson\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25757\"\u003e#25757\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd width-aware chunking to prevent degradation with wide data (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25764\"\u003e#25764\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse new sink pipeline for write/sink_ipc (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25746\"\u003e#25746\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReduce memory usage when scanning multiple parquet files in streaming (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25747\"\u003e#25747\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't call cluster_with_columns optimization if not needed (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25724\"\u003e#25724\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e✨ Enhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd new \u003ccode\u003epl.PartitionBy\u003c/code\u003e API (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26004\"\u003e#26004\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eArrowStreamExportable and sink_delta (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25994\"\u003e#25994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRelease musl builds (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25894\"\u003e#25894\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement streaming decompression for CSV \u003ccode\u003eCOUNT(*)\u003c/code\u003e fast path (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25988\"\u003e#25988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd nulls support for rolling_mean_by (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25917\"\u003e#25917\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd lazy \u003ccode\u003ecollect_all\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25991\"\u003e#25991\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd streaming decompression for NDJSON schema inference (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25992\"\u003e#25992\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved handling of unqualified SQL \u003ccode\u003eJOIN\u003c/code\u003e columns that are ambiguous (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25761\"\u003e#25761\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop Python 3.9 support (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25984\"\u003e#25984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpose record batch size in \u003ccode\u003e{sink,write}_ipc\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25958\"\u003e#25958\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003enull_on_oob\u003c/code\u003e parameter to \u003ccode\u003eexpr.get\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25957\"\u003e#25957\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSuggest correct timezone if timezone validation fails (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25937\"\u003e#25937\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport streaming IPC scan from S3 object store (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25868\"\u003e#25868\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement streaming CSV schema inference (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25911\"\u003e#25911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport hashing of meta expressions (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25916\"\u003e#25916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove \u003ccode\u003eSQLContext\u003c/code\u003e recognition of possible table objects in the Python globals (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25749\"\u003e#25749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd pl.Expr.(min|max)_by (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25905\"\u003e#25905\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove MemSlice Debug impl (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25913\"\u003e#25913\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement or fix json encode/decode for (U)Int128, Categorical, Enum, Decimal (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25896\"\u003e#25896\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpand scatter to more dtypes (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25874\"\u003e#25874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement streaming CSV decompression (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25842\"\u003e#25842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd Series \u003ccode\u003esql\u003c/code\u003e method for API consistency (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25792\"\u003e#25792\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMark Polars as safe for free-threading (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25677\"\u003e#25677\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport Binary and Decimal in arg_(min|max) (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25839\"\u003e#25839\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow Decimal parsing in str.json_decode (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25797\"\u003e#25797\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eshift\u003c/code\u003e support for Object data type (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25769\"\u003e#25769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing \u003ccode\u003eSeries.arr.mean\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25774\"\u003e#25774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow scientific notation when parsing Decimals (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25711\"\u003e#25711\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🐞 Bug fixes\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/1674b37a0a066e76d33eb8f66d31fd870c0cd52d\"\u003e\u003ccode\u003e1674b37\u003c/code\u003e\u003c/a\u003e Python Polars 1.37.0 (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26038\"\u003e#26038\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/4c49bf5ebb9208e70a84a7effdc5368bc901ba84\"\u003e\u003ccode\u003e4c49bf5\u003c/code\u003e\u003c/a\u003e perf: Speed up \u003ccode\u003eSQL\u003c/code\u003e interface \u0026quot;ORDER BY\u0026quot; clauses (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26037\"\u003e#26037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/c1b9d86310269ae4ab22a9bff87d8f2657c8b050\"\u003e\u003ccode\u003ec1b9d86\u003c/code\u003e\u003c/a\u003e chore: Update rust compiler (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26017\"\u003e#26017\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/68911e4e9f7a2bdedca6d3aefa208a6ec02cf8ad\"\u003e\u003ccode\u003e68911e4\u003c/code\u003e\u003c/a\u003e chore: Improve csv test coverage (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25980\"\u003e#25980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/5f25b4f6b828bcd5df1116b0517358ad51c51529\"\u003e\u003ccode\u003e5f25b4f\u003c/code\u003e\u003c/a\u003e perf: Add fast kernel for is_nan and use it for numpy NaN-\u0026gt;null conversion (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/59463cefe36550547b50e5c6801b1d98516cc0c8\"\u003e\u003ccode\u003e59463ce\u003c/code\u003e\u003c/a\u003e docs(python): Fix display of deprecation warning (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26010\"\u003e#26010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/21721eba70b9fc18dff58958997c151dfe214903\"\u003e\u003ccode\u003e21721eb\u003c/code\u003e\u003c/a\u003e fix(python): Release GIL on collect_batches (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26033\"\u003e#26033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/778dbb645ccbff8b1e5999a279037571a03c718b\"\u003e\u003ccode\u003e778dbb6\u003c/code\u003e\u003c/a\u003e fix: Missing buffer update in String is_in Parquet pushdown (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/26019\"\u003e#26019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/807cfc5a2eae6af453b14a1663e74d07202ce92e\"\u003e\u003ccode\u003e807cfc5\u003c/code\u003e\u003c/a\u003e fix: Make \u003ccode\u003estruct.with_fields\u003c/code\u003e data model coherent (\u003ca href=\"https://redirect.github.com/pola-rs/polars/issues/25610\"\u003e#25610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pola-rs/polars/commit/e6d62387f64b225754c15ad1e0b3d4f981509692\"\u003e\u003ccode\u003ee6d6238\u003c/code\u003e\u003c/a\u003e refactor(rust): Use \u003ccode\u003efrom_any_values_and_dtype\u003c/code\u003e in \u003ccode\u003eSeries::extend_constant\u003c/code\u003e ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pola-rs/polars/compare/py-1.28.1...py-1.37.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.32.3 to 2.32.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.32.5\u003c/h2\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.32.4\u003c/h2\u003e\n\u003ch2\u003e2.32.4 (2025-06-10)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2024-47081 Fixed an issue where a maliciously crafted URL and trusted\nenvironment will retrieve credentials for the wrong hostname/machine from a\nnetrc file. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6965\"\u003e#6965\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNumerous documentation improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for pypy 3.11 for Linux and macOS. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6926\"\u003e#6926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDropped support for pypy 3.9 following its end of support. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6926\"\u003e#6926\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/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.32.5 (2025-08-18)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe SSLContext caching feature originally introduced in 2.32.0 has created\na new class of issues in Requests that have had negative impact across a number\nof use cases. The Requests team has decided to revert this feature as long term\nmaintenance of it is proving to be unsustainable in its current iteration.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.8 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.32.4 (2025-06-10)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2024-47081 Fixed an issue where a maliciously crafted URL and trusted\nenvironment will retrieve credentials for the wrong hostname/machine from a\nnetrc file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNumerous documentation improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for pypy 3.11 for Linux and macOS.\u003c/li\u003e\n\u003cli\u003eDropped support for pypy 3.9 following its end of 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/psf/requests/commit/b25c87d7cb8d6a18a37fa12442b5f883f9e41741\"\u003e\u003ccode\u003eb25c87d\u003c/code\u003e\u003c/a\u003e v2.32.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/131e506079d97606e4214cc4d87b780ac478de7a\"\u003e\u003ccode\u003e131e506\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/7010\"\u003e#7010\u003c/a\u003e from psf/dependabot/github_actions/actions/checkout-...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b336cb2bc616a63a93c6470c558fc1f576b77f90\"\u003e\u003ccode\u003eb336cb2\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/46e939b5525d9c72b677340985582b04b128478a\"\u003e\u003ccode\u003e46e939b\u003c/code\u003e\u003c/a\u003e Update publish workflow to use \u003ccode\u003eartifact-id\u003c/code\u003e instead of \u003ccode\u003ename\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/4b9c546aa3f35fca6ca24945376fe7462bb007c4\"\u003e\u003ccode\u003e4b9c546\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/6999\"\u003e#6999\u003c/a\u003e from psf/dependabot/github_actions/step-security/har...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/7618dbef01d333f23ba4b9c4d97397b06dd89cb6\"\u003e\u003ccode\u003e7618dbe\u003c/code\u003e\u003c/a\u003e Bump step-security/harden-runner from 2.12.0 to 2.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/2edca11103c1c27dd8b572dab544b7f48cf3b446\"\u003e\u003ccode\u003e2edca11\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 and drop support for Python 3.8 (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6993\"\u003e#6993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/fec96cd5976ad763e45bac9a033d62cca1877a00\"\u003e\u003ccode\u003efec96cd\u003c/code\u003e\u003c/a\u003e Update Makefile rules (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6996\"\u003e#6996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/d58d8aa2f45c3575268d6d5250745ef69f9cf8b7\"\u003e\u003ccode\u003ed58d8aa\u003c/code\u003e\u003c/a\u003e docs: clarify timeout parameter uses seconds in Session.request (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6994\"\u003e#6994\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/91a3eabd3dcc4d7f36dd8249e4777a90ef9b4305\"\u003e\u003ccode\u003e91a3eab\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action from 3.28.5 to 3.29.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.32.3...v2.32.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `biopython` from 1.85 to 1.86\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/biopython/biopython/blob/master/NEWS.rst\"\u003ebiopython's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e28 October 2025: Biopython 1.86\u003c/h1\u003e\n\u003cp\u003eThis release of Biopython supports Python 3.10, 3.11, 3.12, 3.13 and 3.14.  It\nhas also been tested on PyPy3.10 v7.3.19.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.SearchIO\u003c/code\u003e now supports parsing the tabular and plain text output of\n\u003ccode\u003eInfernal \u0026lt;http://eddylab.org/infernal/\u0026gt;\u003c/code\u003e (v1.0.0+) RNA search tool. The\nformat names are \u003ccode\u003einfernal-tab\u003c/code\u003e and \u003ccode\u003einfernal-text\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eThe default value of the gap score of a \u003ccode\u003ePairwiseAligner\u003c/code\u003e object was changed\nin this release.  Previously, for consistency with \u003ccode\u003eBio.pairwise2\u003c/code\u003e, the\ndefault value for gap score was 0.  However, this means that a mismatch, an\ninsertion followed by a deletion, and a deletion followed by an insertion all\nget assigned a score of 0.  The aligner then finds a large number of alignments\nthat are logically the same, but have trivial differences between them.  For\nexample, aligning AAACAAA to AAAGAAA previously yielded the following three\nalignments, all with score 6::\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e AAACAAA        AAAC-AAA        AAA-CAAA\n AAAGAAA        AAA-GAAA        AAAG-AAA\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eWith the new default parameter for the gap score, only the first alignment is\nreturned.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.PDBIO\u003c/code\u003e now ensures that b-factor values are always at most 6 characters to\nensure that we do not violate the wwPDB specification. This should not have an impact\non the majority of uses, as b-factor values are generally small (less than 100). When\n1000 \u0026lt;= b-factor \u0026lt; 10_000, the value is rounded to a single decimal place. When,\n10_000 \u0026lt;= b-factor \u0026lt; 999_999, the value is rounded to zero decimal places. Values\nabove 999_999 are now clamped. The justification for this is the rise in the b-factor\nfield being used for additional metadata, typically from computational tools.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.Align\u003c/code\u003e now provides a method \u003ccode\u003eAlignment.from_alignments_with_same_reference\u003c/code\u003e\nto construct a multiple sequence alignment from a collection of alignments\nthat share the same reference sequence.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.PDBIO\u003c/code\u003e will now raise module specific warnings:\n\u003ccode\u003eBio.PDB.PDBExceptions.PDBIOWarning\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eBio.PDB.SCADIO\u003c/code\u003e now supports object selection by color in the OpenSCAD\noutput file.  This enables generation of separate STL files for each color for\nprinting protein structures on multi-material 3D printers.\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003eiplotx\u003c/code\u003e library is mentioned in the Tutorial as an option to visualise\ntrees using complex style options.\u003c/p\u003e\n\u003cp\u003eMany thanks to the Biopython developers and community for making this release\npossible, especially the following contributors:\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\u003eSee full diff in \u003ca href=\"https://github.com/biopython/biopython/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.18 to 1.42.25\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/8dd60074e59d29c733b6b6eefad3a75ab615090b\"\u003e\u003ccode\u003e8dd6007\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.25'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/0bf89db7865cfef4ed697b92199c093ca6f5f803\"\u003e\u003ccode\u003e0bf89db\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.25\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/34bf8f819c2870d7baa90c6e65f83dea34586bdd\"\u003e\u003ccode\u003e34bf8f8\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/9b8fbad82f97a16e4b468b7f9ff83bafa2e8d55d\"\u003e\u003ccode\u003e9b8fbad\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.24'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/6dda579bbbeafe145506fb40a65a2f7979f196c2\"\u003e\u003ccode\u003e6dda579\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.24' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/dc3945deb487ce84d804cb813b8075461973041f\"\u003e\u003ccode\u003edc3945d\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.24\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/60784e3398975b90331d227e1377a42232fd3f8a\"\u003e\u003ccode\u003e60784e3\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/dae67fb6753924da30b42cc61dc0d940a672afbd\"\u003e\u003ccode\u003edae67fb\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.23'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/c7b7d4157a8130921bf9e7bef024a1dd17eaf600\"\u003e\u003ccode\u003ec7b7d41\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.23' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/95878f640e54fa7658e242eb2213d361b92162c2\"\u003e\u003ccode\u003e95878f6\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.23\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.38.18...1.42.25\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `botocore` from 1.38.18 to 1.42.25\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/a35f376045da3bc2dcf0de2c1346482ce1ad30c7\"\u003e\u003ccode\u003ea35f376\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.25'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/721ab7860e75d7c5ef5c0eda91f18c568b2f31e1\"\u003e\u003ccode\u003e721ab78\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.25\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/b4541b5471194a63234467945b97397e42e265e4\"\u003e\u003ccode\u003eb4541b5\u003c/code\u003e\u003c/a\u003e Update endpoints model\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/90830226c8e3cd3b96755c3b71be3314225871e3\"\u003e\u003ccode\u003e9083022\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/331cd6689f458e58465234ad58a60881d49007fa\"\u003e\u003ccode\u003e331cd66\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.24'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/47f2b30e092fd853d28193d60cb10acf8a89b5ec\"\u003e\u003ccode\u003e47f2b30\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.24' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/230fac5f074e94b3c32f112624c04224d123873d\"\u003e\u003ccode\u003e230fac5\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.24\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/cc102f140d97d286544a36adb5c3fc6043c50321\"\u003e\u003ccode\u003ecc102f1\u003c/code\u003e\u003c/a\u003e Update endpoints model\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/beaeab5eee438b737029aa27c7b7641ec89ba3ad\"\u003e\u003ccode\u003ebeaeab5\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/f6e323727729fb2aa26ec9f8362de39d6adf1d2e\"\u003e\u003ccode\u003ef6e3237\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.23'\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/botocore/compare/1.38.18...1.42.25\"\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 2026.1.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\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\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/27ca98ad845ee6d130a88301622c137893f71620\"\u003e\u003ccode\u003e27ca98a\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7.0.9 to 7.0.11 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/56c59a63909cfd3162b37e7bc16956e64df0f737\"\u003e\u003ccode\u003e56c59a6\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.0 to 6.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ae0021cd43a77bfba67d20a041469cdf6996570e\"\u003e\u003ccode\u003eae0021c\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.0.0 to 6.1.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/380\"\u003e#380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddf5d0b5d2a3d55fd92a79f141dbb5e074caf924\"\u003e\u003ccode\u003eddf5d0b\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5.0.1 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.04.26...2026.01.04\"\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 `cloudpathlib` from 0.21.1 to 0.23.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/drivendataorg/cloudpathlib/releases\"\u003ecloudpathlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.23.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14 (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/529\"\u003e#529\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/530\"\u003e#530\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eChanged \u003ccode\u003eCloudPath.copy\u003c/code\u003e to have the first parameter named \u003ccode\u003etarget\u003c/code\u003e instead of \u003ccode\u003edestination\u003c/code\u003e and added new \u003ccode\u003efollow_symlinks\u003c/code\u003e and \u003ccode\u003epreserve_metadata\u003c/code\u003e kwargs. \u003cstrong\u003eBreaking change for users that relied on the first parameter being named \u003ccode\u003edestination\u003c/code\u003e instead of \u003ccode\u003etarget\u003c/code\u003e.\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.copy_into\u003c/code\u003e to copy a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move\u003c/code\u003e to move a file or directory to another location.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move_into\u003c/code\u003e to move a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPathInfo\u003c/code\u003e and \u003ccode\u003eCloudPath.info\u003c/code\u003e to get information about a file or directory.\u003c/li\u003e\n\u003cli\u003eAdded additional no-op kwargs to \u003ccode\u003emkdir\u003c/code\u003e, \u003ccode\u003etouch\u003c/code\u003e, \u003ccode\u003eglob\u003c/code\u003e, \u003ccode\u003erglob\u003c/code\u003e, \u003ccode\u003estat\u003c/code\u003e to match pathlib.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.22.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed issue with GS credentials, using default auth enables a wider set of authentication methods in GS (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/390\"\u003e#390\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/514\"\u003e#514\u003c/a\u003e, thanks \u003ca href=\"https://github.com/ljyanesm\"\u003e\u003ccode\u003e@​ljyanesm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for http(s) urls with \u003ccode\u003eHttpClient\u003c/code\u003e, \u003ccode\u003eHttpPath\u003c/code\u003e, \u003ccode\u003eHttpsClient\u003c/code\u003e, and \u003ccode\u003eHttpsPath\u003c/code\u003e. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/455\"\u003e#455\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/468\"\u003e#468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded experimental support for patching the builtins \u003ccode\u003eopen\u003c/code\u003e, \u003ccode\u003eos\u003c/code\u003e, \u003ccode\u003eos.path\u003c/code\u003e, and \u003ccode\u003eglob\u003c/code\u003e to work with \u003ccode\u003eCloudPath\u003c/code\u003e objects. It is off by default; see the new \u0026quot;Compatibility\u0026quot; section in the docs for more information. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/128\"\u003e#128\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003eCloudPath(*parts)\u003c/code\u003e to create a \u003ccode\u003eCloudPath\u003c/code\u003e object from a list of parts (to match \u003ccode\u003epathlib.Path\u003c/code\u003e). \u003cstrong\u003eThis is a potentially breaking change for users that relied on the second arg being the \u003ccode\u003eclient\u003c/code\u003e instead of making it an explicit kwarg.\u003c/strong\u003e (PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\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/drivendataorg/cloudpathlib/blob/master/HISTORY.md\"\u003ecloudpathlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.23.0 (2025-10-07)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.14 (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/529\"\u003e#529\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/530\"\u003e#530\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eChanged \u003ccode\u003eCloudPath.copy\u003c/code\u003e to have the first parameter named \u003ccode\u003etarget\u003c/code\u003e instead of \u003ccode\u003edestination\u003c/code\u003e and added new \u003ccode\u003efollow_symlinks\u003c/code\u003e and \u003ccode\u003epreserve_metadata\u003c/code\u003e kwargs. \u003cstrong\u003eBreaking change for users that relied on the first parameter being named \u003ccode\u003edestination\u003c/code\u003e instead of \u003ccode\u003etarget\u003c/code\u003e.\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.copy_into\u003c/code\u003e to copy a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move\u003c/code\u003e to move a file or directory to another location.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPath.move_into\u003c/code\u003e to move a file or directory into another file or directory.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCloudPathInfo\u003c/code\u003e and \u003ccode\u003eCloudPath.info\u003c/code\u003e to get information about a file or directory.\u003c/li\u003e\n\u003cli\u003eAdded additional no-op kwargs to \u003ccode\u003emkdir\u003c/code\u003e, \u003ccode\u003etouch\u003c/code\u003e, \u003ccode\u003eglob\u003c/code\u003e, \u003ccode\u003erglob\u003c/code\u003e, \u003ccode\u003estat\u003c/code\u003e to match pathlib.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.22.0 (2025-08-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed issue with GS credentials, using default auth enables a wider set of authentication methods in GS (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/390\"\u003e#390\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/514\"\u003e#514\u003c/a\u003e, thanks \u003ca href=\"https://github.com/ljyanesm\"\u003e\u003ccode\u003e@​ljyanesm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for http(s) urls with \u003ccode\u003eHttpClient\u003c/code\u003e, \u003ccode\u003eHttpPath\u003c/code\u003e, \u003ccode\u003eHttpsClient\u003c/code\u003e, and \u003ccode\u003eHttpsPath\u003c/code\u003e. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/455\"\u003e#455\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/468\"\u003e#468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded experimental support for patching the builtins \u003ccode\u003eopen\u003c/code\u003e, \u003ccode\u003eos\u003c/code\u003e, \u003ccode\u003eos.path\u003c/code\u003e, and \u003ccode\u003eglob\u003c/code\u003e to work with \u003ccode\u003eCloudPath\u003c/code\u003e objects. It is off by default; see the new \u0026quot;Compatibility\u0026quot; section in the docs for more information. (Issue \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/128\"\u003e#128\u003c/a\u003e, PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003eCloudPath(*parts)\u003c/code\u003e to create a \u003ccode\u003eCloudPath\u003c/code\u003e object from a list of parts (to match \u003ccode\u003epathlib.Path\u003c/code\u003e). \u003cstrong\u003eThis is a potentially breaking change for users that relied on the second arg being the \u003ccode\u003eclient\u003c/code\u003e instead of making it an explicit kwarg.\u003c/strong\u003e (PR \u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/pull/322\"\u003e#322\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/drivendataorg/cloudpathlib/commit/28f1d943078517262d045ae50136edf27a5298a1\"\u003e\u003ccode\u003e28f1d94\u003c/code\u003e\u003c/a\u003e WIP Support 3.14 (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/530\"\u003e#530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/fec5918d6725e9f1f52bee003528f4f854454980\"\u003e\u003ccode\u003efec5918\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish in /.github/workflows (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/e7900023bf4b32b70ca5b2d798f9ce52187582f8\"\u003e\u003ccode\u003ee790002\u003c/code\u003e\u003c/a\u003e version bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/bb1f1e4cb5eba0928cec2aaff30cb0f5ace1f108\"\u003e\u003ccode\u003ebb1f1e4\u003c/code\u003e\u003c/a\u003e WIP: Patch open, os and os.path builtins (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/322\"\u003e#322\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/12005505fc29ab4183968022a487416a31b1a1bd\"\u003e\u003ccode\u003e1200550\u003c/code\u003e\u003c/a\u003e Refactor GS authentication to use default credentials (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/526\"\u003e#526\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/b21cac14f0090021594f7e3afae9c48f5d7dbd46\"\u003e\u003ccode\u003eb21cac1\u003c/code\u003e\u003c/a\u003e Implement HTTP(s) support (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/468\"\u003e#468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/863e884cbf1cf141cdf7bf9c0623e0cd3d27841d\"\u003e\u003ccode\u003e863e884\u003c/code\u003e\u003c/a\u003e fix for azure typing differences (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/524\"\u003e#524\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/drivendataorg/cloudpathlib/commit/65c5c012bd4297ce4e812cfb8bbf9827db346e03\"\u003e\u003ccode\u003e65c5c01\u003c/code\u003e\u003c/a\u003e Set pytest-cases\u0026gt;=3.9.1 (\u003ca href=\"https://redirect.github.com/drivendataorg/cloudpathlib/issues/520\"\u003e#520\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/drivendataorg/cloudpathlib/compare/v0.21.1...v0.23.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `docutils` from 0.19 to 0.22.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/rtfd/recommonmark/commits\"\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 `jellyfish` from 1.2.0 to 1.2.1\n\nUpdates `markdown-it-py` from 3.0.0 to 4.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/executablebooks/markdown-it-py/releases\"\u003emarkdown-it-py's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eThis primarily drops support for Python 3.8 and 3.9, adds support for Python 3.13,\nand updates the parser to comply with Commonmark 0.31.2 and Markdown-It v14.1.0.\u003c/p\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Drop Python 3.8, test 3.13 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/342\"\u003eexecutablebooks/markdown-it-py#342\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Drop support for Python 3.9 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/360\"\u003eexecutablebooks/markdown-it-py#360\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Comply with Commonmark 0.31.2 by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/362\"\u003eexecutablebooks/markdown-it-py#362\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eImprovements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👌 Improve performance of \u0026quot;text\u0026quot; inline rule by \u003ca href=\"https://github.com/hukkin\"\u003e\u003ccode\u003e@​hukkin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/347\"\u003eexecutablebooks/markdown-it-py#347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Use \u003ccode\u003estr.removesuffix\u003c/code\u003e by \u003ca href=\"https://github.com/hukkin\"\u003e\u003ccode\u003e@​hukkin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/348\"\u003eexecutablebooks/markdown-it-py#348\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 limit the number of autocompleted cells in a table by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/364\"\u003eexecutablebooks/markdown-it-py#364\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 fix quadratic complexity in reference parser by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/367\"\u003eexecutablebooks/markdown-it-py#367\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix emphasis inside raw links bugs by \u003ca href=\"https://github.com/tsutsu3\"\u003e\u003ccode\u003e@​tsutsu3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/320\"\u003eexecutablebooks/markdown-it-py#320\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔧 Replace black and isort with ruff formatter by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/313\"\u003eexecutablebooks/markdown-it-py#313\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Fixed Code Style paragraph still referring to flake8 by \u003ca href=\"https://github.com/venthur\"\u003e\u003ccode\u003e@​venthur\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/309\"\u003eexecutablebooks/markdown-it-py#309\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Add \u0026quot;store_labels\u0026quot; to OptionsType by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/343\"\u003eexecutablebooks/markdown-it-py#343\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Move \u003ccode\u003ecode_style\u003c/code\u003e to dependency group by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/344\"\u003eexecutablebooks/markdown-it-py#344\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Update codecov action by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/345\"\u003eexecutablebooks/markdown-it-py#345\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Update pre-commit and upload-artifact by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/359\"\u003eexecutablebooks/markdown-it-py#359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 Improve spec update script by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/361\"\u003eexecutablebooks/markdown-it-py#361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 simplify logic in scanDelims by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/365\"\u003eexecutablebooks/markdown-it-py#365\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 Add CI testing for Python 3.12 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/303\"\u003eexecutablebooks/markdown-it-py#303\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 Fix codecov by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/332\"\u003eexecutablebooks/markdown-it-py#332\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📚 Fix typo by \u003ca href=\"https://github.com/bwagner\"\u003e\u003ccode\u003e@​bwagner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/315\"\u003eexecutablebooks/markdown-it-py#315\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix RTD build by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/322\"\u003eexecutablebooks/markdown-it-py#322\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Fix a few old URLs by \u003ca href=\"https://github.com/elijahgreenstein\"\u003e\u003ccode\u003e@​elijahgreenstein\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/358\"\u003eexecutablebooks/markdown-it-py#358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Improve README by \u003ca href=\"https://github.com/mrmurilo75\"\u003e\u003ccode\u003e@​mrmurilo75\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/340\"\u003eexecutablebooks/markdown-it-py#340\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix CI badge link by \u003ca href=\"https://github.com/tsutsu3\"\u003e\u003ccode\u003e@​tsutsu3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/291\"\u003eexecutablebooks/markdown-it-py#291\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Update docs by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/292\"\u003eexecutablebooks/markdown-it-py#292\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Add icon to readme by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/293\"\u003eexecutablebooks/markdown-it-py#293\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Update icon by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/294\"\u003eexecutablebooks/markdown-it-py#294\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Clarify docs regarding security configuration by \u003ca href=\"https://github.com/djramones\"\u003e\u003ccode\u003e@​djramones\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/296\"\u003eexecutablebooks/markdown-it-py#296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 Fix the RTD build by \u003ca href=\"https://github.com/chrisjsewell\"\u003e\u003ccode\u003e@​chrisjsewell\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/311\"\u003eexecutablebooks/markdown-it-py#311\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📚 DOCS: Fix typos by \u003ca href=\"https://github.com/elijahgreenstein\"\u003e\u003ccode\u003e@​elijahgreenstein\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/366\"\u003eexecutablebooks/markdown-it-py#366\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- 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/executablebooks/markdown-it-py/blob/master/CHANGELOG.md\"\u003emarkdown-it-py's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.0.0 - 2024-08-10\u003c/h2\u003e\n\u003cp\u003eThis primarily drops support for Python 3.9, adds support for Python 3.13,\nand updates the parser to comply with Commonmark 0.31.2 and Markdown-It v14.1.0.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Drop support for Python 3.9 in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/360\"\u003e#360\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆️ Comply with Commonmark 0.31.2 in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/362\"\u003e#362\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Improve performance of \u0026quot;text\u0026quot; inline rule in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/347\"\u003e#347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 Use \u003ccode\u003estr.removesuffix\u003c/code\u003e in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/348\"\u003e#348\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 limit the number of autocompleted cells in a table in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/364\"\u003e#364\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👌 fix quadratic complexity in reference parser in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/367\"\u003e#367\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 Fix emphasis inside raw links bugs in \u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/pull/320\"\u003e#320\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.0\"\u003ehttps://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.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/executablebooks/markdown-it-py/commit/c62983f1554124391b47170180e6c62df4d476ca\"\u003e\u003ccode\u003ec62983f\u003c/code\u003e\u003c/a\u003e 🚀 RELEASE v4.0.0 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/368\"\u003e#368\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/9e93bd554147ffb8582581e14620c7611103d2ff\"\u003e\u003ccode\u003e9e93bd5\u003c/code\u003e\u003c/a\u003e 👌 fix quadratic complexity in reference parser (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/da45c8764b2077425c091fa1811bbb1c5f211bd1\"\u003e\u003ccode\u003eda45c87\u003c/code\u003e\u003c/a\u003e 📚 DOCS: Fix typos (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/87b16e272bf8207182084e07a63253b98fc437d7\"\u003e\u003ccode\u003e87b16e2\u003c/code\u003e\u003c/a\u003e 🔧 simplify logic in scanDelims (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/365\"\u003e#365\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/e4009641db528444b85d384af815e9cad997a016\"\u003e\u003ccode\u003ee400964\u003c/code\u003e\u003c/a\u003e 👌 limit the number of autocompleted cells in a table (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/364\"\u003e#364\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/4535d77edcb5f51450a266135687eeae8bcc5033\"\u003e\u003ccode\u003e4535d77\u003c/code\u003e\u003c/a\u003e ⬆️ Comply with Commonmark 0.31.2 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/8eb20ac1cb63e09dcd78e84a0c71dab8446bb73c\"\u003e\u003ccode\u003e8eb20ac\u003c/code\u003e\u003c/a\u003e 🔧 Improve spec update script (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/361\"\u003e#361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/fb9d3ab646e4f752dc8fd52e1dd7613c350ff190\"\u003e\u003ccode\u003efb9d3ab\u003c/code\u003e\u003c/a\u003e ⬆️ Drop support for Python 3.9 (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/360\"\u003e#360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/9ffe841832d33264201aaff120349f001a02953a\"\u003e\u003ccode\u003e9ffe841\u003c/code\u003e\u003c/a\u003e 📚 DOCS: Fix a few old URLs (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/executablebooks/markdown-it-py/commit/154fe43feb17947e2c933d0bb3e26618129909a8\"\u003e\u003ccode\u003e154fe43\u003c/code\u003e\u003c/a\u003e 🔧 Update pre-commit and upload-artifact (\u003ca href=\"https://redirect.github.com/executablebooks/markdown-it-py/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/executablebooks/markdown-it-py/compare/v3.0.0...v4.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `numpy` from 2.2.5 to 2.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/numpy/numpy/releases\"\u003enumpy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.1 (Jan 10, 2026)\u003c/h2\u003e\n\u003ch1\u003eNumPy 2.4.1 Release Notes\u003c/h1\u003e\n\u003cp\u003eThe NumPy 2.4.1 is a patch release that fixes bugs discoved after the\n2.4.0 release. In particular, the typo \u003ccode\u003eSeedlessSequence\u003c/code\u003e is preserved to\nenable wheels using the random Cython API and built against NumPy \u0026lt; 2.4.0\nto run without errors.\u003c/p\u003e\n\u003cp\u003eThis release supports Python versions 3.11-3.14\u003c/p\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003eA total of 9 people contributed to this release. People with a \u0026quot;+\u0026quot; by their\nnames contributed a patch for the first time.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAlexander Shadchin\u003c/li\u003e\n\u003cli\u003eBill Tompkins +\u003c/li\u003e\n\u003cli\u003eCharles Harris\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eMarten van Kerkwijk\u003c/li\u003e\n\u003cli\u003eNathan Goldbaum\u003c/li\u003e\n\u003cli\u003eRaghuveer Devulapalli\u003c/li\u003e\n\u003cli\u003eRalf Gommers\u003c/li\u003e\n\u003cli\u003eSebastian Berg\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePull requests merged\u003c/h2\u003e\n\u003cp\u003eA total of 15 pull requests were merged for this release.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30490\"\u003e#30490\u003c/a\u003e: MAINT: Prepare 2.4.x for further development\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30503\"\u003e#30503\u003c/a\u003e: DOC: \u003ccode\u003enumpy.select\u003c/code\u003e: fix \u003ccode\u003edefault\u003c/code\u003e parameter docstring...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30504\"\u003e#30504\u003c/a\u003e: REV: Revert part of \u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30164\"\u003e#30164\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30500\"\u003e#30500\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30506\"\u003e#30506\u003c/a\u003e: TYP: \u003ccode\u003enumpy.select\u003c/code\u003e: allow passing array-like \u003ccode\u003edefault\u003c/code\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30507\"\u003e#30507\u003c/a\u003e: MNT: use if constexpr for compile-time branch selection\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30513\"\u003e#30513\u003c/a\u003e: BUG: Fix leak in flat assignment iterator\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30516\"\u003e#30516\u003c/a\u003e: BUG: fix heap overflow in fixed-width string multiply (\u003ca href=\"https://redirect.github.com/numpy/numpy/issues/30511\"\u003e#30511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30523\"\u003e#30523\u003c/a\u003e: BUG: Ensure summed weights returned by np.average always are...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30527\"\u003e#30527\u003c/a\u003e: TYP: Fix return type of histogram2d\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30594\"\u003e#30594\u003c/a\u003e: MAINT: avoid passing ints to random functions that take double...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30595\"\u003e#30595\u003c/a\u003e: BLD: Avoiding conflict with pygit2 for static build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30596\"\u003e#30596\u003c/a\u003e: MAINT: Fix msvccompiler missing error on FreeBSD\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30608\"\u003e#30608\u003c/a\u003e: BLD: update vendored Meson to 1.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30620\"\u003e#30620\u003c/a\u003e: ENH: use more fine-grained critical sections in array coercion...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/numpy/numpy/pull/30623\"\u003e#30623\u003c/a\u003e: BUG: Undo result type change of quantile/percentile but keep...\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.4.0 (Dec 20, 2025)\u003c/h2\u003e\n\u003ch1\u003eNumPy 2.4.0 Release Notes\u003c/h1\u003e\n\u003cp\u003eThe NumPy 2.4.0 release continues the work to improve free threaded Python\nsupport, user dtypes implementation, and annotations. There are many expired\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/numpy/numpy/blob/main/doc/RELEASE_WALKTHROUGH.rst\"\u003enumpy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eThis is a walkthrough of the NumPy 2.4.0 release on Linux, which will be the\nfirst feature release using the \u003ccode\u003enumpy/numpy-release \u0026lt;https://github.com/numpy/numpy-release\u0026gt;\u003c/code\u003e__ repository.\u003c/p\u003e\n\u003cp\u003eThe comm...\n\n_Description has been truncated_","html_url":"https://github.com/reichlab/cladetime/pull/188","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/reichlab%2Fcladetime/issues/188","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/188/packages"}},{"old_version":"1.17.1","new_version":"2.0.0","update_type":"major","path":null,"pr_created_at":"2026-01-11T22:11:45.000Z","version_change":"1.17.1 → 2.0.0","issue":{"uuid":"3802149960","node_id":"PR_kwDOEkpJIs68loKm","number":204,"state":"open","title":"Bump the dependencies group across 1 directory with 64 updates","user":"dependabot[bot]","labels":["skip-changelog","dependabot-deps-updates"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-11T22:11:45.000Z","updated_at":"2026-01-26T00:00:52.904Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"dependencies","update_count":64,"packages":[{"name":"ansible-compat","old_version":"24.10.0","new_version":"25.12.0","repository_url":"https://github.com/ansible/ansible-compat"},{"name":"argparse-manpage","old_version":"4.6","new_version":"4.7","repository_url":"https://github.com/praiskup/argparse-manpage"},{"name":"asttokens","old_version":"3.0.0","new_version":"3.0.1","repository_url":"https://github.com/gristlabs/asttokens"},{"name":"attrs","old_version":"25.3.0","new_version":"25.4.0","repository_url":"https://github.com/sponsors/hynek"},{"name":"backrefs","old_version":"5.8","new_version":"6.1","repository_url":"https://github.com/facelessuser/backrefs"},{"name":"bracex","old_version":"2.5.post1","new_version":"2.6","repository_url":"https://github.com/facelessuser/bracex"},{"name":"cachetools","old_version":"6.0.0","new_version":"6.2.4","repository_url":"https://github.com/tkem/cachetools"},{"name":"certifi","old_version":"2025.6.15","new_version":"2026.1.4","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.4.2","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":"coverage","old_version":"7.9.1","new_version":"7.13.1","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cryptography","old_version":"45.0.4","new_version":"46.0.3","repository_url":"https://github.com/pyca/cryptography"},{"name":"distlib","old_version":"0.3.9","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"exceptiongroup","old_version":"1.3.0","new_version":"1.3.1","repository_url":"https://github.com/agronholm/exceptiongroup"},{"name":"execnet","old_version":"2.1.1","new_version":"2.1.2","repository_url":"https://github.com/pytest-dev/execnet"},{"name":"executing","old_version":"2.2.0","new_version":"2.2.1","repository_url":"https://github.com/alexmojaki/executing"},{"name":"filelock","old_version":"3.18.0","new_version":"3.20.3","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"gitpython","old_version":"3.1.44","new_version":"3.1.46","repository_url":"https://github.com/gitpython-developers/GitPython"},{"name":"griffe","old_version":"1.7.3","new_version":"1.15.0","repository_url":"https://github.com/mkdocstrings/griffe"},{"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":"importlib-resources","old_version":"5.0.7","new_version":"6.5.2","repository_url":"https://github.com/python/importlib_resources"},{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"ipython","old_version":"8.18.1","new_version":"9.9.0","repository_url":"https://github.com/ipython/ipython"},{"name":"jsonschema","old_version":"4.24.0","new_version":"4.26.0","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"jsonschema-specifications","old_version":"2025.4.1","new_version":"2025.9.1","repository_url":"https://github.com/python-jsonschema/jsonschema-specifications"},{"name":"markdown","old_version":"3.8","new_version":"3.10","repository_url":"https://github.com/Python-Markdown/markdown"},{"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":"matplotlib-inline","old_version":"0.1.7","new_version":"0.2.1","repository_url":"https://github.com/ipython/matplotlib-inline"},{"name":"mkdocs-autorefs","old_version":"1.4.2","new_version":"1.4.3","repository_url":"https://github.com/mkdocstrings/autorefs"},{"name":"mkdocs-git-revision-date-localized-plugin","old_version":"1.4.7","new_version":"1.5.0","repository_url":"https://github.com/timvink/mkdocs-git-revision-date-localized-plugin"},{"name":"mkdocs-material","old_version":"9.6.14","new_version":"9.7.1","repository_url":"https://github.com/squidfunk/mkdocs-material"},{"name":"mkdocstrings","old_version":"0.29.1","new_version":"1.0.0","repository_url":"https://github.com/mkdocstrings/mkdocstrings"},{"name":"mkdocstrings-python","old_version":"1.16.12","new_version":"2.0.1","repository_url":"https://github.com/mkdocstrings/python"},{"name":"molecule","old_version":"6.0.3","new_version":"25.12.0","repository_url":"https://github.com/ansible-community/molecule"},{"name":"parso","old_version":"0.8.4","new_version":"0.8.5","repository_url":"https://github.com/davidhalter/parso"},{"name":"pathspec","old_version":"0.12.1","new_version":"1.0.3","repository_url":"https://github.com/cpburnz/python-pathspec"},{"name":"pbr","old_version":"6.1.1","new_version":"7.0.3"},{"name":"pillow","old_version":"11.2.1","new_version":"12.1.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.3.8","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"prompt-toolkit","old_version":"3.0.51","new_version":"3.0.52","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"psutil","old_version":"7.0.0","new_version":"7.2.1","repository_url":"https://github.com/giampaolo/psutil"},{"name":"pycparser","old_version":"2.22","new_version":"2.23","repository_url":"https://github.com/eliben/pycparser"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pymdown-extensions","old_version":"10.15","new_version":"10.20","repository_url":"https://github.com/facelessuser/pymdown-extensions"},{"name":"pyproject-api","old_version":"1.9.1","new_version":"1.10.0","repository_url":"https://github.com/tox-dev/pyproject-api"},{"name":"pytest","old_version":"8.4.0","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-plus","old_version":"0.7.0","new_version":"0.8.1","repository_url":"https://github.com/pytest-dev/pytest-plus"},{"name":"pytest-sugar","old_version":"1.0.0","new_version":"1.1.1","repository_url":"https://github.com/Teemu/pytest-sugar"},{"name":"pytest-xdist","old_version":"3.7.0","new_version":"3.8.0","repository_url":"https://github.com/pytest-dev/pytest-xdist"},{"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":"requests","old_version":"2.32.4","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.25.1","new_version":"0.30.0","repository_url":"https://github.com/crate-py/rpds"},{"name":"setproctitle","old_version":"1.3.6","new_version":"1.3.7","repository_url":"https://github.com/dvarrazzo/py-setproctitle"},{"name":"termcolor","old_version":"3.1.0","new_version":"3.3.0","repository_url":"https://github.com/termcolor/termcolor"},{"name":"tinycss2","old_version":"1.4.0","new_version":"1.5.1","repository_url":"https://github.com/Kozea/tinycss2"},{"name":"tomli","old_version":"2.2.1","new_version":"2.4.0","repository_url":"https://github.com/hukkin/tomli"},{"name":"urllib3","old_version":"2.4.0","new_version":"2.6.3","repository_url":"https://github.com/urllib3/urllib3"},{"name":"wcmatch","old_version":"10.0","new_version":"10.1","repository_url":"https://github.com/facelessuser/wcmatch"},{"name":"wcwidth","old_version":"0.2.13","new_version":"0.2.14","repository_url":"https://github.com/jquast/wcwidth"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dependencies group with 64 updates in the /.config directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ansible-compat](https://github.com/ansible/ansible-compat) | `24.10.0` | `25.12.0` |\n| [argparse-manpage](https://github.com/praiskup/argparse-manpage) | `4.6` | `4.7` |\n| [asttokens](https://github.com/gristlabs/asttokens) | `3.0.0` | `3.0.1` |\n| [attrs](https://github.com/sponsors/hynek) | `25.3.0` | `25.4.0` |\n| [backrefs](https://github.com/facelessuser/backrefs) | `5.8` | `6.1` |\n| [bracex](https://github.com/facelessuser/bracex) | `2.5.post1` | `2.6` |\n| [cachetools](https://github.com/tkem/cachetools) | `6.0.0` | `6.2.4` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.6.15` | `2026.1.4` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.1` | `2.0.0` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.9.1` | `7.13.1` |\n| [cryptography](https://github.com/pyca/cryptography) | `45.0.4` | `46.0.3` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.9` | `0.4.0` |\n| [exceptiongroup](https://github.com/agronholm/exceptiongroup) | `1.3.0` | `1.3.1` |\n| [execnet](https://github.com/pytest-dev/execnet) | `2.1.1` | `2.1.2` |\n| [executing](https://github.com/alexmojaki/executing) | `2.2.0` | `2.2.1` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.18.0` | `3.20.3` |\n| [gitpython](https://github.com/gitpython-developers/GitPython) | `3.1.44` | `3.1.46` |\n| [griffe](https://github.com/mkdocstrings/griffe) | `1.7.3` | `1.15.0` |\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| [importlib-resources](https://github.com/python/importlib_resources) | `5.0.7` | `6.5.2` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.0` |\n| [ipython](https://github.com/ipython/ipython) | `8.18.1` | `9.9.0` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.24.0` | `4.26.0` |\n| [jsonschema-specifications](https://github.com/python-jsonschema/jsonschema-specifications) | `2025.4.1` | `2025.9.1` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.8` | `3.10` |\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| [matplotlib-inline](https://github.com/ipython/matplotlib-inline) | `0.1.7` | `0.2.1` |\n| [mkdocs-autorefs](https://github.com/mkdocstrings/autorefs) | `1.4.2` | `1.4.3` |\n| [mkdocs-git-revision-date-localized-plugin](https://github.com/timvink/mkdocs-git-revision-date-localized-plugin) | `1.4.7` | `1.5.0` |\n| [mkdocs-material](https://github.com/squidfunk/mkdocs-material) | `9.6.14` | `9.7.1` |\n| [mkdocstrings](https://github.com/mkdocstrings/mkdocstrings) | `0.29.1` | `1.0.0` |\n| [mkdocstrings-python](https://github.com/mkdocstrings/python) | `1.16.12` | `2.0.1` |\n| [molecule](https://github.com/ansible-community/molecule) | `6.0.3` | `25.12.0` |\n| [parso](https://github.com/davidhalter/parso) | `0.8.4` | `0.8.5` |\n| [pathspec](https://github.com/cpburnz/python-pathspec) | `0.12.1` | `1.0.3` |\n| [pbr](https://docs.openstack.org/pbr/latest/) | `6.1.1` | `7.0.3` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `12.1.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.3.8` | `4.5.1` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.51` | `3.0.52` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.2.1` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `2.23` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) | `10.15` | `10.20` |\n| [pyproject-api](https://github.com/tox-dev/pyproject-api) | `1.9.1` | `1.10.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.0` | `9.0.2` |\n| [pytest-plus](https://github.com/pytest-dev/pytest-plus) | `0.7.0` | `0.8.1` |\n| [pytest-sugar](https://github.com/Teemu/pytest-sugar) | `1.0.0` | `1.1.1` |\n| [pytest-xdist](https://github.com/pytest-dev/pytest-xdist) | `3.7.0` | `3.8.0` |\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| [requests](https://github.com/psf/requests) | `2.32.4` | `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.25.1` | `0.30.0` |\n| [setproctitle](https://github.com/dvarrazzo/py-setproctitle) | `1.3.6` | `1.3.7` |\n| [termcolor](https://github.com/termcolor/termcolor) | `3.1.0` | `3.3.0` |\n| [tinycss2](https://github.com/Kozea/tinycss2) | `1.4.0` | `1.5.1` |\n| [tomli](https://github.com/hukkin/tomli) | `2.2.1` | `2.4.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.4.0` | `2.6.3` |\n| [wcmatch](https://github.com/facelessuser/wcmatch) | `10.0` | `10.1` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.2.13` | `0.2.14` |\n\n\nUpdates `ansible-compat` from 24.10.0 to 25.12.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ansible/ansible-compat/releases\"\u003eansible-compat's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev25.12.0\u003c/h2\u003e\n\u003ch2\u003eMaintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd platform version check (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/548\"\u003e#548\u003c/a\u003e) \u003ca href=\"https://github.com/cidrblock\"\u003e\u003ccode\u003e@​cidrblock\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/547\"\u003e#547\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/546\"\u003e#546\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: Temporarily disable tombi schema.strict for pyproject.toml (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/545\"\u003e#545\u003c/a\u003e) \u003ca href=\"https://github.com/alisonlhart\"\u003e\u003ccode\u003e@​alisonlhart\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/544\"\u003e#544\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev25.11.0\u003c/h2\u003e\n\u003ch2\u003eMaintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/543\"\u003e#543\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/542\"\u003e#542\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/540\"\u003e#540\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/539\"\u003e#539\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd finalize workflow for secure sonarcloud checks (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/538\"\u003e#538\u003c/a\u003e) \u003ca href=\"https://github.com/alisonlhart\"\u003e\u003ccode\u003e@​alisonlhart\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate sonar-project.properties configuration (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/536\"\u003e#536\u003c/a\u003e) \u003ca href=\"https://github.com/alisonlhart\"\u003e\u003ccode\u003e@​alisonlhart\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/537\"\u003e#537\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: tell uv to use unreleased ansible-core when running with py314 (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/535\"\u003e#535\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/534\"\u003e#534\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003epre-commit-ci[bot]\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev25.8.2\u003c/h2\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: add support for python 3.14 (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/533\"\u003e#533\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: remove tox.ini and adopt pep-735 (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/526\"\u003e#526\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMaintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/532\"\u003e#532\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: hooks update (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/531\"\u003e#531\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/530\"\u003e#530\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/529\"\u003e#529\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/527\"\u003e#527\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: configure renovate (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/524\"\u003e#524\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: update hooks (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/525\"\u003e#525\u003c/a\u003e) \u003ca href=\"https://github.com/ssbarnea\"\u003e\u003ccode\u003e@​ssbarnea\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 to 5 (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/515\"\u003e#515\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev25.8.1\u003c/h2\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRestore \u003ccode\u003eansible-lint\u0026lt;25.8.1\u003c/code\u003e behaviour for \u003ccode\u003eansible-lint\u0026lt;25.8.1\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/520\"\u003e#520\u003c/a\u003e) \u003ca href=\"https://github.com/cidrblock\"\u003e\u003ccode\u003e@​cidrblock\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev25.8.0\u003c/h2\u003e\n\u003ch2\u003eEnhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump the dependencies group in /.config with 5 updates (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/507\"\u003e#507\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump markdown-exec from 1.10.3 to 1.11.0 in /.config in the dependencies group (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/506\"\u003e#506\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the dependencies group across 1 directory with 3 updates (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/505\"\u003e#505\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/601b6905c7c7819efb1f2c820a853827b835ec4f\"\u003e\u003ccode\u003e601b690\u003c/code\u003e\u003c/a\u003e Add platform version check (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/548\"\u003e#548\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/f8de21d2a42ba53679a6baba96773249b5205174\"\u003e\u003ccode\u003ef8de21d\u003c/code\u003e\u003c/a\u003e chore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/547\"\u003e#547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/bc972b8146943335a592600c59f1a03d3979cedf\"\u003e\u003ccode\u003ebc972b8\u003c/code\u003e\u003c/a\u003e chore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/546\"\u003e#546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/2a54adab4035b398a0bba671da981816cbf3b8f9\"\u003e\u003ccode\u003e2a54ada\u003c/code\u003e\u003c/a\u003e chore: Temporarily disable tombi schema.strict for pyproject.toml (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/545\"\u003e#545\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/384ce35dbf27ca74b0f92b751b93c25633e2d8d4\"\u003e\u003ccode\u003e384ce35\u003c/code\u003e\u003c/a\u003e chore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/544\"\u003e#544\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/4900c15e756d60c214fb059cf735f5d34770731c\"\u003e\u003ccode\u003e4900c15\u003c/code\u003e\u003c/a\u003e chore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/543\"\u003e#543\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/523a99d720a809a346a55474fa1deaaaa78ef8da\"\u003e\u003ccode\u003e523a99d\u003c/code\u003e\u003c/a\u003e chore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/542\"\u003e#542\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/77ff6e6bab69662edc408d3fb4e1134c4ce69e81\"\u003e\u003ccode\u003e77ff6e6\u003c/code\u003e\u003c/a\u003e chore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/540\"\u003e#540\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/44a2e5c015c003712b2aea4ee43dde012507c5b1\"\u003e\u003ccode\u003e44a2e5c\u003c/code\u003e\u003c/a\u003e chore(deps): update all dependencies (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/539\"\u003e#539\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansible/ansible-compat/commit/b4dc1bb2583c23ceb221f906fe3352c943cafd56\"\u003e\u003ccode\u003eb4dc1bb\u003c/code\u003e\u003c/a\u003e Add finalize workflow for secure sonarcloud checks (\u003ca href=\"https://redirect.github.com/ansible/ansible-compat/issues/538\"\u003e#538\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ansible/ansible-compat/compare/v24.10.0...v25.12.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `argparse-manpage` from 4.6 to 4.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/praiskup/argparse-manpage/releases\"\u003eargparse-manpage's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eargparse-manpage v4.7\u003c/h2\u003e\n\u003cp\u003eNews in v4.7\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003esys.stdout used instead of /dev/stdout\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003efixed build compatibility with newer setuptools\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003efixed deprecation warnings for datetime and setuptools\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003enew compat method for handling SOURCE_DATE_EPOCH\u003c/p\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/praiskup/argparse-manpage/blob/main/NEWS\"\u003eargparse-manpage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cpre\u003e\u003ccode\u003e\nWARNING: The 'build_manpage' setup.py command will be removed v5\nWARNING: We'll drop the Python 2.7 support in v5\n\u003cp\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eNews in v4.7\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003esys.stdout used instead of /dev/stdout\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003efixed build compatibility with newer setuptools\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003efixed deprecation warnings for datetime and setuptools\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003enew compat method for handling SOURCE_DATE_EPOCH\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre\u003e\u003ccode\u003e\nNews in v4.6\n\u003cul\u003e\n\u003cli\u003eFix the build against Python 3.13\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eNews in v4.5\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWe newly provide \u003ccode\u003ebuild_manpages.build_py\u003c/code\u003e and \u003ccode\u003ebuild_manpages.install\u003c/code\u003e\ncommand classes that are re-usable from \u003ccode\u003epyproject.toml\u003c/code\u003e.  No need to\nprovide \u003ccode\u003esetup.py\u003c/code\u003e because of \u003ccode\u003eargparse-manpage\u003c/code\u003e.  Solved issue#85.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre\u003e\u003ccode\u003e\nNews in v4.4\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003eprog=\u003c/code\u003e specifier (in setup.py/setup.cfg/pyproject.toml) is now\u003cbr /\u003e\nbetter handled so it doesn't conflict with ArgumentParser(prog=..).\u003cbr /\u003e\nFixes \u003ca href=\"https://redirect.github.com/praiskup/argparse-manpage/issues/79\"\u003epraiskup/argparse-manpage#79\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNews in v4.3\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe pyproject.toml parsing feature now depends on the python3-tomli library\u003cbr /\u003e\ninstead of python-toml for \u0026quot;python_environment \u0026gt;3, \u0026lt;=3.10\u0026quot;.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eNews in v4.2\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for pyproject.toml specification of manpages added.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/7883becca340aa3ea124143e032848a7b2bdf84b\"\u003e\u003ccode\u003e7883bec\u003c/code\u003e\u003c/a\u003e Release v4.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/765389ed4ee835c09451823d7fbfe22b0dc1674a\"\u003e\u003ccode\u003e765389e\u003c/code\u003e\u003c/a\u003e Move the SOURCE_DATE_EPOCH hack on one place\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/a06ed9c1f03360f8089819c8e845cd670687eb64\"\u003e\u003ccode\u003ea06ed9c\u003c/code\u003e\u003c/a\u003e ci: fix RPM build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/c985432ee15824c43c75548c7ec1bd6f105a7f22\"\u003e\u003ccode\u003ec985432\u003c/code\u003e\u003c/a\u003e Fix deprecation warnings for datetime and setuptools\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/306658941368ff0c2dfe2e4fa29b889fb5bbeb2b\"\u003e\u003ccode\u003e3066589\u003c/code\u003e\u003c/a\u003e ci: fedora-tox update list of environments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/b3a2c50e2abc47bd822d848864a80e35251a3147\"\u003e\u003ccode\u003eb3a2c50\u003c/code\u003e\u003c/a\u003e ci: enable ruff \u0026amp; bump deps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/6dc54a5272e70b081af728958fd7554a6b0372f3\"\u003e\u003ccode\u003e6dc54a5\u003c/code\u003e\u003c/a\u003e Fix compatibility with newer setuptools\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/29f89bba536cf28f6ed66721367ff2ee3f6209b7\"\u003e\u003ccode\u003e29f89bb\u003c/code\u003e\u003c/a\u003e Fix some comments about sys.argv alteration for usage message\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/praiskup/argparse-manpage/commit/ade76cc8ef49ec804955c6b4027dbae52d482034\"\u003e\u003ccode\u003eade76cc\u003c/code\u003e\u003c/a\u003e Use sys.stdout instead of /dev/stdout\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/praiskup/argparse-manpage/compare/v4.6...v4.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asttokens` from 3.0.0 to 3.0.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/bdbf396fc0e006912ba82f1137dfd6b2d5aa9af2\"\u003e\u003ccode\u003ebdbf396\u003c/code\u003e\u003c/a\u003e Update mypy; add 3.14 to the CI; drop python 3.8 support (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/167\"\u003e#167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/f859c055e8453650e1987c5aefaaec36582d3a07\"\u003e\u003ccode\u003ef859c05\u003c/code\u003e\u003c/a\u003e Add tests for astroid v2, v3, and v4 to the CI (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/166\"\u003e#166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/84ef059ba28d08816d3d881e363b9ed42bbeae3a\"\u003e\u003ccode\u003e84ef059\u003c/code\u003e\u003c/a\u003e Adapt asttokens for astroid 4.x (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/165\"\u003e#165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/9db9335648659520c7c8453bc39550fa4f95d539\"\u003e\u003ccode\u003e9db9335\u003c/code\u003e\u003c/a\u003e Various links improvements (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3371ebf7f48f6a731d409fffd6ba235e6a95d85b\"\u003e\u003ccode\u003e3371ebf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/161\"\u003e#161\u003c/a\u003e from gristlabs/dependabot/pip/docs/requests-2.32.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3a60115d3efdb01efc8a6442b59fdd0071518e70\"\u003e\u003ccode\u003e3a60115\u003c/code\u003e\u003c/a\u003e Bump requests from 2.32.2 to 2.32.4 in /docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/584b51c6c084455ad4597886657783d1b661ddfa\"\u003e\u003ccode\u003e584b51c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/160\"\u003e#160\u003c/a\u003e from gristlabs/dependabot/pip/docs/urllib3-2.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3e9d703323ce94987bf9e030bd010eae13fa15b4\"\u003e\u003ccode\u003e3e9d703\u003c/code\u003e\u003c/a\u003e Bump urllib3 from 2.2.2 to 2.5.0 in /docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/64d3f7c3637775fef832a9a9cdb78ec02da494e6\"\u003e\u003ccode\u003e64d3f7c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/158\"\u003e#158\u003c/a\u003e from gristlabs/dependabot/pip/docs/jinja2-3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/9b5fb1abfb171cfb1f01c2d996cbd31e9d1f0660\"\u003e\u003ccode\u003e9b5fb1a\u003c/code\u003e\u003c/a\u003e Bump jinja2 from 3.1.4 to 3.1.6 in /docs\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gristlabs/asttokens/compare/v3.0.0...v3.0.1\"\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 `backrefs` from 5.8 to 6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facelessuser/backrefs/releases\"\u003ebackrefs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Include Unicode 17 zip for early Python 3.15 usage, though Python 3.15 functionality is not guaranteed.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Fix issues with regex imports in later versions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e6.0.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Fix a regression that created an ASCII binary property that would override the ASCII block property.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e6.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: POSIX character classes will now always use POSIX compatibility rules instead of Unicode standard rules,\nif any are specified in the Unicode specification. The affected character classes are: \u003ccode\u003e[[:alnum:]]\u003c/code\u003e, \u003ccode\u003e[[:digit:]]\u003c/code\u003e,\n\u003ccode\u003e[[:xdigit:]]\u003c/code\u003e, and  \u003ccode\u003e[[:punct:]]\u003c/code\u003e. To explicitly use standard Unicode rules for these compatibility properties, use\nthe Unicode property form instead: \u003ccode\u003e[\\p{Alnum}]\u003c/code\u003e, \u003ccode\u003e[\\p{Digit}]\u003c/code\u003e, \u003ccode\u003e[\\p{Punct}]\u003c/code\u003e, or \u003ccode\u003e[\\p{XDigit}]\u003c/code\u003e. This has changed\nto ensure no confusion for users expecting compatible POSIX style character class properties.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Scoped ASCII/Unicode flags (\u003ccode\u003e(?a:pattern)\u003c/code\u003e/\u003ccode\u003e(?u:pattern)\u003c/code\u003e) should be respected for Unicode properties in\n\u003ccode\u003ebre\u003c/code\u003e and will ensure ASCII or Unicode range if used.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Fix issues related to detecting disabled scoped flags.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e5.9\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Add support for Python 3.14.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eENHANCE\u003c/strong\u003e: Switch to deploying with PyPI's \u0026quot;Trusted Publisher\u0026quot;.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/da5453e08f49292b8cc2acab099816819de6c56e\"\u003e\u003ccode\u003eda5453e\u003c/code\u003e\u003c/a\u003e Remove build badge\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/30c281210b1dd417ccb7eb3f8e009acf49aad923\"\u003e\u003ccode\u003e30c2812\u003c/code\u003e\u003c/a\u003e Update docs to use zensical (\u003ca href=\"https://redirect.github.com/facelessuser/backrefs/issues/194\"\u003e#194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/e66f6c4ce60f847680e6c604ec17df6caad538cc\"\u003e\u003ccode\u003ee66f6c4\u003c/code\u003e\u003c/a\u003e Fix import of regex stuff\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/12062282532c41f94fabff589c82db00b86def86\"\u003e\u003ccode\u003e1206228\u003c/code\u003e\u003c/a\u003e Include Unicode 17 zip for Python 3.15 early access\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/23738f0d07dcc57c4ca863e412aef63be0060fe5\"\u003e\u003ccode\u003e23738f0\u003c/code\u003e\u003c/a\u003e Fix codec warning is Unicode download script\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/63f8a4b14750828b7c1e385844fd36f6f89859e4\"\u003e\u003ccode\u003e63f8a4b\u003c/code\u003e\u003c/a\u003e Fix grammar\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/7f4bf611e6e7fcc2aa4e0eba2872b5f51b7fc908\"\u003e\u003ccode\u003e7f4bf61\u003c/code\u003e\u003c/a\u003e Rework POSIX alias\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/956df5f387f1958110e5a7cf2a98d42a8309d9b6\"\u003e\u003ccode\u003e956df5f\u003c/code\u003e\u003c/a\u003e Fix ASCII block regression\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/7a948f083c3c87114a8dd87c95dff1893f3af82a\"\u003e\u003ccode\u003e7a948f0\u003c/code\u003e\u003c/a\u003e Clean up code and add more comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/9b2e406be36c1e0fc72651adbc7d2d63c4151483\"\u003e\u003ccode\u003e9b2e406\u003c/code\u003e\u003c/a\u003e Add more flag tests\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facelessuser/backrefs/compare/5.8...6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bracex` from 2.5.post1 to 2.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facelessuser/bracex/releases\"\u003ebracex's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.6\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\u003c/ul\u003e\n\u003c/blockquote\u003e\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/bracex/commit/6d109c55372f0d5086adb7cf84a951cc06391a69\"\u003e\u003ccode\u003e6d109c5\u003c/code\u003e\u003c/a\u003e Add trusted publishing and support for Python 3.14 (\u003ca href=\"https://redirect.github.com/facelessuser/bracex/issues/44\"\u003e#44\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/bracex/commit/c14d46fb495a8fdcd0ec51d4dd42aa587807407d\"\u003e\u003ccode\u003ec14d46f\u003c/code\u003e\u003c/a\u003e Add security policy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/bracex/commit/14645af4bf4de0e1abe4fd6c29bf98871f549273\"\u003e\u003ccode\u003e14645af\u003c/code\u003e\u003c/a\u003e Typos: remove duplicate words\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/facelessuser/bracex/compare/2.5.post1...2.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cachetools` from 6.0.0 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/v6.0.0...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.6.15 to 2026.1.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\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\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/27ca98ad845ee6d130a88301622c137893f71620\"\u003e\u003ccode\u003e27ca98a\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 7.0.9 to 7.0.11 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/56c59a63909cfd3162b37e7bc16956e64df0f737\"\u003e\u003ccode\u003e56c59a6\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.0 to 6.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ae0021cd43a77bfba67d20a041469cdf6996570e\"\u003e\u003ccode\u003eae0021c\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.0.0 to 6.1.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/380\"\u003e#380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddf5d0b5d2a3d55fd92a79f141dbb5e074caf924\"\u003e\u003ccode\u003eddf5d0b\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5.0.1 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.06.15...2026.01.04\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cffi` from 1.17.1 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only) - huge thanks to the folks at Quansight Labs for all the work to get this one sorted!\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.0.0b1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only).\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/6366c01d84e9a78e7e85f12ebe9760ba5d19b6d3\"\u003e\u003ccode\u003e6366c01\u003c/code\u003e\u003c/a\u003e release 2.0.0 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/95c847663aec401e4003927a274e4de9b8595f4f\"\u003e\u003ccode\u003e95c8476\u003c/code\u003e\u003c/a\u003e 2.0.0 post beta backports (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/195cbda66b6be9297ef6d584644e50cfdcca4e8a\"\u003e\u003ccode\u003e195cbda\u003c/code\u003e\u003c/a\u003e Release 2.0.0b1 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b4bbe7940d3f76027534db1aecbae9b61c35221a\"\u003e\u003ccode\u003eb4bbe79\u003c/code\u003e\u003c/a\u003e fix version test to support beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/7ed073de66e713cf791b6fdfa23685c81fdfd6ad\"\u003e\u003ccode\u003e7ed073d\u003c/code\u003e\u003c/a\u003e Add support for the free-threaded build (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/178\"\u003e#178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/67a170dc7972dc9361743690b38da3d963b200ef\"\u003e\u003ccode\u003e67a170d\u003c/code\u003e\u003c/a\u003e Change the license from MIT to MIT-no-attribution, which is the same without ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/92645ec9329feb03e3fa86240b40fe0fc37469d1\"\u003e\u003ccode\u003e92645ec\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support/testing (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/177\"\u003e#177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/2b81170583a898478a6996c9705d8c38ab7f73a1\"\u003e\u003ccode\u003e2b81170\u003c/code\u003e\u003c/a\u003e doc: update test commands in Section Testing/development tips (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/25172b84cf51cf58241f074ccd1efd9c7648cb43\"\u003e\u003ccode\u003e25172b8\u003c/code\u003e\u003c/a\u003e doc: update year (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b57a92c03eb2078a99c900519a37d18b4d52324f\"\u003e\u003ccode\u003eb57a92c\u003c/code\u003e\u003c/a\u003e issue 147: force-compute nested structs before parent structs.  Occurs mainly...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.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 `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 `coverage` from 7.9.1 to 7.13.1\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.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\n.. _issue 2105: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2105\"\u003ecoveragepy/coveragepy#2105\u003c/a\u003e\n.. _issue 2109: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2109\"\u003ecoveragepy/coveragepy#2109\u003c/a\u003e\n.. _issue 2110: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2110\"\u003ecoveragepy/coveragepy#2110\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-13-0:\u003c/p\u003e\n\u003ch2\u003eVersion 7.13.0 — 2025-12-08\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFeature: coverage.py now supports :file:\u003ccode\u003e.coveragerc.toml\u003c/code\u003e configuration\nfiles. These files use TOML syntax and take priority over\n:file:\u003ccode\u003epyproject.toml\u003c/code\u003e but lower priority than :file:\u003ccode\u003e.coveragerc\u003c/code\u003e files.\nCloses \u003ccode\u003eissue 1643\u003c/code\u003e_ thanks to \u003ccode\u003eOlena Yefymenko \u0026lt;pull 1952_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: we now include a permanent .pth file which is installed with the code,\nfixing \u003ccode\u003eissue 2084\u003c/code\u003e_.  In 7.12.1b1 this was done incorrectly: it didn't work\nwhen using the source wheel (\u003ccode\u003epy3-none-any\u003c/code\u003e).  This is now fixed. Thanks,\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a6afdc36332d797fb4f4262fc9ff2b2da5bb99c8\"\u003e\u003ccode\u003ea6afdc3\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.13.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a497081b6759957a1c52957fdbb34848e0d46276\"\u003e\u003ccode\u003ea497081\u003c/code\u003e\u003c/a\u003e docs: prep for 7.13.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/e9920336e5118a7a7002b1eb606400cd3be640b2\"\u003e\u003ccode\u003ee992033\u003c/code\u003e\u003c/a\u003e docs: polish up CHANGES\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/18bba6e60958d5c825a93882b8997f2cfc6ecfe3\"\u003e\u003ccode\u003e18bba6e\u003c/code\u003e\u003c/a\u003e chore: bump the action-dependencies group with 4 updates (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2111\"\u003e#2111\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/80fb80826f3bd8953018d4a4a134a7fc42643784\"\u003e\u003ccode\u003e80fb808\u003c/code\u003e\u003c/a\u003e refactor: (?x:...) lets us use re.VERBOSE even when combining later\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/cc272bdc050308328e3ee64800b5e298468260c8\"\u003e\u003ccode\u003ecc272bd\u003c/code\u003e\u003c/a\u003e docs: leave a comment so we'll find this when 3.12 is the minimum\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/70d007d160d40b40de1bae89ad2856c2191c1c94\"\u003e\u003ccode\u003e70d007d\u003c/code\u003e\u003c/a\u003e types: be explicit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a2c1940fd2eae103c2366859d75cb7de195a0439\"\u003e\u003ccode\u003ea2c1940\u003c/code\u003e\u003c/a\u003e types: fully import modules that will be patched\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/57b975d3b8e069364525b2e8d5a88b7fbc0e8b93\"\u003e\u003ccode\u003e57b975d\u003c/code\u003e\u003c/a\u003e types: explicit Protocol inheritance permits changing parameter names\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/63ec12d7c87748e7a03ea2eb6240edeaffc7ccde\"\u003e\u003ccode\u003e63ec12d\u003c/code\u003e\u003c/a\u003e types: clarify that morfs arguments can be a single morf\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.9.1...7.13.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cryptography` from 45.0.4 to 46.0.3\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\u003e46.0.3 - 2025-10-15\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Fixed compilation when using LibreSSL 4.2.0.\n\u003cp\u003e.. _v46-0-2:\u003c/p\u003e\n\u003cp\u003e46.0.2 - 2025-09-30\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.4.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v46-0-1:\u003c/p\u003e\n\u003cp\u003e46.0.1 - 2025-09-16\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Fixed an issue where users installing via ``pip`` on Python 3.14 development\n  versions would not properly install a dependency.\n* Fixed an issue building the free-threaded macOS 3.14 wheels.\n\u003cp\u003e.. _v46-0-0:\u003c/p\u003e\n\u003cp\u003e46.0.0 - 2025-09-16\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Support for Python 3.7 has been removed.\u003c/li\u003e\n\u003cli\u003eSupport for OpenSSL \u0026lt; 3.0 is deprecated and will be removed in the next\nrelease.\u003c/li\u003e\n\u003cli\u003eSupport for \u003ccode\u003ex86_64\u003c/code\u003e macOS (including publishing wheels) is deprecated\nand will be removed in two releases. We will switch to publishing an\n\u003ccode\u003earm64\u003c/code\u003e only wheel for macOS.\u003c/li\u003e\n\u003cli\u003eSupport for 32-bit Windows (including publishing wheels) is deprecated\nand will be removed in two releases. Users should move to a 64-bit\nPython installation.\u003c/li\u003e\n\u003cli\u003eUpdated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.3.\u003c/li\u003e\n\u003cli\u003eWe now build \u003ccode\u003eppc64le\u003c/code\u003e \u003ccode\u003emanylinux\u003c/code\u003e wheels and publish them to PyPI.\u003c/li\u003e\n\u003cli\u003eWe now build \u003ccode\u003ewin_arm64\u003c/code\u003e (Windows on Arm) wheels and publish them to PyPI.\u003c/li\u003e\n\u003cli\u003eAdded support for free-threaded Python 3.14.\u003c/li\u003e\n\u003cli\u003eRemoved the deprecated \u003ccode\u003eget_attribute_for_oid\u003c/code\u003e method on\n:class:\u003ccode\u003e~cryptography.x509.CertificateSigningRequest\u003c/code\u003e. Users should use\n:meth:\u003ccode\u003e~cryptography.x509.Attributes.get_attribute_for_oid\u003c/code\u003e instead.\u003c/li\u003e\n\u003cli\u003eRemoved the deprecated \u003ccode\u003eCAST5\u003c/code\u003e, \u003ccode\u003eSEED\u003c/code\u003e, \u003ccode\u003eIDEA\u003c/code\u003e, and \u003ccode\u003eBlowfish\u003c/code\u003e\nclasses from the cipher module. These are still available in\n:doc:\u003ccode\u003e/hazmat/decrepit/index\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eIn X.509, when performing a PSS signature with a SHA-3 hash, it is now\nencoded with the official NIST SHA3 OID.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v45-0-7:\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/pyca/cryptography/commit/c0af4dd7b75921bbe9f1d41a03dbd4b64a9e3403\"\u003e\u003ccode\u003ec0af4dd\u003c/code\u003e\u003c/a\u003e release 46.0.3 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13681\"\u003e#13681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/99efe5ad150a56efadafacaffd0e3ee319373904\"\u003e\u003ccode\u003e99efe5a\u003c/code\u003e\u003c/a\u003e bump version for 46.0.2 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13531\"\u003e#13531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e735cfc27502320101c130335c556394a125ba52\"\u003e\u003ccode\u003ee735cfc\u003c/code\u003e\u003c/a\u003e release 46.0.1 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13450\"\u003e#13450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/4e457ffba43a6d87efc63c33041e2081438dd8a4\"\u003e\u003ccode\u003e4e457ff\u003c/code\u003e\u003c/a\u003e Explicitly specify python in mac uv build invocation (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13447\"\u003e#13447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/2726efdb6d67f1c90cf9c6062d9fe051965586f8\"\u003e\u003ccode\u003e2726efd\u003c/code\u003e\u003c/a\u003e Depend on CFFI 2.0.0 or newer on Python \u0026gt; 3.8 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13448\"\u003e#13448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/62230623d183706632c0eb7822c96ac95e3710a8\"\u003e\u003ccode\u003e6223062\u003c/code\u003e\u003c/a\u003e release 46.0.0 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13446\"\u003e#13446\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/563c4915b0931455706f761a4579c26698824eae\"\u003e\u003ccode\u003e563c491\u003c/code\u003e\u003c/a\u003e Update comment for pyopenssl-release tag (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13445\"\u003e#13445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/d2f6f7faced35b73277bc624ff496f8af696b172\"\u003e\u003ccode\u003ed2f6f7f\u003c/code\u003e\u003c/a\u003e Bump downstream dependencies in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13439\"\u003e#13439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e7ab02bd679d0b4f55d93486fe27e62554ef15d4\"\u003e\u003ccode\u003ee7ab02b\u003c/code\u003e\u003c/a\u003e we'll ship this with 3.5.3 why not (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13442\"\u003e#13442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/0b68a4bffb61202e4d4f5074cd30c2b9d15f429e\"\u003e\u003ccode\u003e0b68a4b\u003c/code\u003e\u003c/a\u003e Another pair of bump dependencies fix (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13444\"\u003e#13444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/cryptography/compare/45.0.4...46.0.3\"\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.9 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/issu...\n\n_Description has been truncated_","html_url":"https://github.com/pycontribs/subprocess-tee/pull/204","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/pycontribs%2Fsubprocess-tee/issues/204","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/204/packages"}},{"old_version":"1.17.1","new_version":"2.0.0","update_type":"major","path":null,"pr_created_at":"2026-01-01T22:22:25.000Z","version_change":"1.17.1 → 2.0.0","issue":{"uuid":"3775297670","node_id":"PR_kwDOMqBXXs67O8LA","number":102,"state":"closed","title":"chore: bump the backend-tests-python-dependencies group across 1 directory with 20 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-02-01T22:30:35.000Z","author_association":null,"state_reason":null,"created_at":"2026-01-01T22:22:25.000Z","updated_at":"2026-02-01T22:30:36.000Z","time_to_close":2678890,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore: bump","group_name":"backend-tests-python-dependencies","update_count":20,"packages":[{"name":"attrs","old_version":"25.3.0","new_version":"25.4.0","repository_url":"https://github.com/sponsors/hynek"},{"name":"boto3","old_version":"1.40.21","new_version":"1.42.19","repository_url":"https://github.com/boto/boto3"},{"name":"certifi","old_version":"2025.8.3","new_version":"2025.11.12","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"cryptography","old_version":"45.0.7","new_version":"46.0.3","repository_url":"https://github.com/pyca/cryptography"},{"name":"execnet","old_version":"2.1.1","new_version":"2.1.2","repository_url":"https://github.com/pytest-dev/execnet"},{"name":"filelock","old_version":"3.19.1","new_version":"3.20.1","repository_url":"https://github.com/tox-dev/py-filelock"},{"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":"kubernetes","old_version":"33.1.0","new_version":"34.1.0","repository_url":"https://github.com/kubernetes-client/python"},{"name":"pillow","old_version":"11.3.0","new_version":"12.0.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"pycparser","old_version":"2.22","new_version":"2.23","repository_url":"https://github.com/eliben/pycparser"},{"name":"pymongo","old_version":"4.14.1","new_version":"4.15.5","repository_url":"https://github.com/mongodb/mongo-python-driver"},{"name":"pyparsing","old_version":"3.2.3","new_version":"3.3.1","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":"stripe","old_version":"12.5.0","new_version":"14.1.0","repository_url":"https://github.com/stripe/stripe-python"},{"name":"urllib3","old_version":"2.5.0","new_version":"2.6.2","repository_url":"https://github.com/urllib3/urllib3"},{"name":"redis","old_version":"6.4.0","new_version":"7.1.0","repository_url":"https://github.com/redis/redis-py"},{"name":"pydantic","old_version":"2.11.7","new_version":"2.12.5","repository_url":"https://github.com/pydantic/pydantic"}],"path":null,"ecosystem":"pip"},"body":"Bumps the backend-tests-python-dependencies group with 20 updates in the /backend/tests directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [attrs](https://github.com/sponsors/hynek) | `25.3.0` | `25.4.0` |\n| [boto3](https://github.com/boto/boto3) | `1.40.21` | `1.42.19` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.8.3` | `2025.11.12` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.1` | `2.0.0` |\n| [cryptography](https://github.com/pyca/cryptography) | `45.0.7` | `46.0.3` |\n| [execnet](https://github.com/pytest-dev/execnet) | `2.1.1` | `2.1.2` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.19.1` | `3.20.1` |\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| [kubernetes](https://github.com/kubernetes-client/python) | `33.1.0` | `34.1.0` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.3.0` | `12.0.0` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `2.23` |\n| [pymongo](https://github.com/mongodb/mongo-python-driver) | `4.14.1` | `4.15.5` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.3` | `3.3.1` |\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| [stripe](https://github.com/stripe/stripe-python) | `12.5.0` | `14.1.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.5.0` | `2.6.2` |\n| [redis](https://github.com/redis/redis-py) | `6.4.0` | `7.1.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.7` | `2.12.5` |\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 `boto3` from 1.40.21 to 1.42.19\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/98bf6652e6ae1c14f25e4a2752d49b8279222702\"\u003e\u003ccode\u003e98bf665\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.19'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/a86b3cf9e203e89dd4f87a0a5b2db0bf0fa73c11\"\u003e\u003ccode\u003ea86b3cf\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.19\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/a96980b209925aa1e51355309978ac87f85c2cb9\"\u003e\u003ccode\u003ea96980b\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/3a1085f1892c22c9596694c9c7072308fb30002c\"\u003e\u003ccode\u003e3a1085f\u003c/code\u003e\u003c/a\u003e Remove elastictranscoder from documentation (\u003ca href=\"https://redirect.github.com/boto/boto3/issues/4686\"\u003e#4686\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/83130e5c5b393c9c3faf64d252cf3c90ce7fe597\"\u003e\u003ccode\u003e83130e5\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.18'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/2ad1b19890c5ef492e3103bdd08915852d992675\"\u003e\u003ccode\u003e2ad1b19\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.18' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/56a53e6a42b1bf071b00a0bd240aa1a0e8f89924\"\u003e\u003ccode\u003e56a53e6\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.18\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/960d57e96fde8e1dfe7d9402bb87f313cbb2f559\"\u003e\u003ccode\u003e960d57e\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/9a88f847b55bca7702fec6d3f01aee9933dc1910\"\u003e\u003ccode\u003e9a88f84\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.17'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/c302093c8a68dec9517437a225ec37d89a85eba8\"\u003e\u003ccode\u003ec302093\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.17' into develop\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.40.21...1.42.19\"\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 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\u003eSee full diff in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.08.03...2025.11.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cffi` from 1.17.1 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only) - huge thanks to the folks at Quansight Labs for all the work to get this one sorted!\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.0.0b1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only).\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/6366c01d84e9a78e7e85f12ebe9760ba5d19b6d3\"\u003e\u003ccode\u003e6366c01\u003c/code\u003e\u003c/a\u003e release 2.0.0 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/95c847663aec401e4003927a274e4de9b8595f4f\"\u003e\u003ccode\u003e95c8476\u003c/code\u003e\u003c/a\u003e 2.0.0 post beta backports (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/195cbda66b6be9297ef6d584644e50cfdcca4e8a\"\u003e\u003ccode\u003e195cbda\u003c/code\u003e\u003c/a\u003e Release 2.0.0b1 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b4bbe7940d3f76027534db1aecbae9b61c35221a\"\u003e\u003ccode\u003eb4bbe79\u003c/code\u003e\u003c/a\u003e fix version test to support beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/7ed073de66e713cf791b6fdfa23685c81fdfd6ad\"\u003e\u003ccode\u003e7ed073d\u003c/code\u003e\u003c/a\u003e Add support for the free-threaded build (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/178\"\u003e#178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/67a170dc7972dc9361743690b38da3d963b200ef\"\u003e\u003ccode\u003e67a170d\u003c/code\u003e\u003c/a\u003e Change the license from MIT to MIT-no-attribution, which is the same without ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/92645ec9329feb03e3fa86240b40fe0fc37469d1\"\u003e\u003ccode\u003e92645ec\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support/testing (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/177\"\u003e#177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/2b81170583a898478a6996c9705d8c38ab7f73a1\"\u003e\u003ccode\u003e2b81170\u003c/code\u003e\u003c/a\u003e doc: update test commands in Section Testing/development tips (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/25172b84cf51cf58241f074ccd1efd9c7648cb43\"\u003e\u003ccode\u003e25172b8\u003c/code\u003e\u003c/a\u003e doc: update year (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b57a92c03eb2078a99c900519a37d18b4d52324f\"\u003e\u003ccode\u003eb57a92c\u003c/code\u003e\u003c/a\u003e issue 147: force-compute nested structs before parent structs.  Occurs mainly...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cryptography` from 45.0.7 to 46.0.3\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\u003e46.0.3 - 2025-10-15\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Fixed compilation when using LibreSSL 4.2.0.\n\u003cp\u003e.. _v46-0-2:\u003c/p\u003e\n\u003cp\u003e46.0.2 - 2025-09-30\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.4.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v46-0-1:\u003c/p\u003e\n\u003cp\u003e46.0.1 - 2025-09-16\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Fixed an issue where users installing via ``pip`` on Python 3.14 development\n  versions would not properly install a dependency.\n* Fixed an issue building the free-threaded macOS 3.14 wheels.\n\u003cp\u003e.. _v46-0-0:\u003c/p\u003e\n\u003cp\u003e46.0.0 - 2025-09-16\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Support for Python 3.7 has been removed.\u003c/li\u003e\n\u003cli\u003eSupport for OpenSSL \u0026lt; 3.0 is deprecated and will be removed in the next\nrelease.\u003c/li\u003e\n\u003cli\u003eSupport for \u003ccode\u003ex86_64\u003c/code\u003e macOS (including publishing wheels) is deprecated\nand will be removed in two releases. We will switch to publishing an\n\u003ccode\u003earm64\u003c/code\u003e only wheel for macOS.\u003c/li\u003e\n\u003cli\u003eSupport for 32-bit Windows (including publishing wheels) is deprecated\nand will be removed in two releases. Users should move to a 64-bit\nPython installation.\u003c/li\u003e\n\u003cli\u003eUpdated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.3.\u003c/li\u003e\n\u003cli\u003eWe now build \u003ccode\u003eppc64le\u003c/code\u003e \u003ccode\u003emanylinux\u003c/code\u003e wheels and publish them to PyPI.\u003c/li\u003e\n\u003cli\u003eWe now build \u003ccode\u003ewin_arm64\u003c/code\u003e (Windows on Arm) wheels and publish them to PyPI.\u003c/li\u003e\n\u003cli\u003eAdded support for free-threaded Python 3.14.\u003c/li\u003e\n\u003cli\u003eRemoved the deprecated \u003ccode\u003eget_attribute_for_oid\u003c/code\u003e method on\n:class:\u003ccode\u003e~cryptography.x509.CertificateSigningRequest\u003c/code\u003e. Users should use\n:meth:\u003ccode\u003e~cryptography.x509.Attributes.get_attribute_for_oid\u003c/code\u003e instead.\u003c/li\u003e\n\u003cli\u003eRemoved the deprecated \u003ccode\u003eCAST5\u003c/code\u003e, \u003ccode\u003eSEED\u003c/code\u003e, \u003ccode\u003eIDEA\u003c/code\u003e, and \u003ccode\u003eBlowfish\u003c/code\u003e\nclasses from the cipher module. These are still available in\n:doc:\u003ccode\u003e/hazmat/decrepit/index\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eIn X.509, when performing a PSS signature with a SHA-3 hash, it is now\nencoded with the official NIST SHA3 OID.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v45-0-7:\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/c0af4dd7b75921bbe9f1d41a03dbd4b64a9e3403\"\u003e\u003ccode\u003ec0af4dd\u003c/code\u003e\u003c/a\u003e release 46.0.3 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13681\"\u003e#13681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/99efe5ad150a56efadafacaffd0e3ee319373904\"\u003e\u003ccode\u003e99efe5a\u003c/code\u003e\u003c/a\u003e bump version for 46.0.2 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13531\"\u003e#13531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e735cfc27502320101c130335c556394a125ba52\"\u003e\u003ccode\u003ee735cfc\u003c/code\u003e\u003c/a\u003e release 46.0.1 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13450\"\u003e#13450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/4e457ffba43a6d87efc63c33041e2081438dd8a4\"\u003e\u003ccode\u003e4e457ff\u003c/code\u003e\u003c/a\u003e Explicitly specify python in mac uv build invocation (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13447\"\u003e#13447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/2726efdb6d67f1c90cf9c6062d9fe051965586f8\"\u003e\u003ccode\u003e2726efd\u003c/code\u003e\u003c/a\u003e Depend on CFFI 2.0.0 or newer on Python \u0026gt; 3.8 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13448\"\u003e#13448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/62230623d183706632c0eb7822c96ac95e3710a8\"\u003e\u003ccode\u003e6223062\u003c/code\u003e\u003c/a\u003e release 46.0.0 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13446\"\u003e#13446\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/563c4915b0931455706f761a4579c26698824eae\"\u003e\u003ccode\u003e563c491\u003c/code\u003e\u003c/a\u003e Update comment for pyopenssl-release tag (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13445\"\u003e#13445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/d2f6f7faced35b73277bc624ff496f8af696b172\"\u003e\u003ccode\u003ed2f6f7f\u003c/code\u003e\u003c/a\u003e Bump downstream dependencies in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13439\"\u003e#13439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e7ab02bd679d0b4f55d93486fe27e62554ef15d4\"\u003e\u003ccode\u003ee7ab02b\u003c/code\u003e\u003c/a\u003e we'll ship this with 3.5.3 why not (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13442\"\u003e#13442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/0b68a4bffb61202e4d4f5074cd30c2b9d15f429e\"\u003e\u003ccode\u003e0b68a4b\u003c/code\u003e\u003c/a\u003e Another pair of bump dependencies fix (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13444\"\u003e#13444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/cryptography/compare/45.0.7...46.0.3\"\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 `filelock` from 3.19.1 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\u003ch2\u003e3.20.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd tox.toml to sdist by \u003ca href=\"https://github.com/mtelka\"\u003e\u003ccode\u003e@​mtelka\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/436\"\u003etox-dev/filelock#436\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate docs with example by \u003ca href=\"https://github.com/znichollscr\"\u003e\u003ccode\u003e@​znichollscr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/438\"\u003etox-dev/filelock#438\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd 3.14 support and drop 3.9 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/448\"\u003etox-dev/filelock#448\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/mtelka\"\u003e\u003ccode\u003e@​mtelka\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/436\"\u003etox-dev/filelock#436\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/znichollscr\"\u003e\u003ccode\u003e@​znichollscr\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/438\"\u003etox-dev/filelock#438\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.19.1...3.20.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.19.1...3.20.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/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.19.1...3.20.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 `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 `kubernetes` from 33.1.0 to 34.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kubernetes-client/python/releases\"\u003ekubernetes's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eKubernetes Python Client v34.1.0 Stable Release\u003c/h2\u003e\n\u003cp\u003eGetting started:\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003epip install --pre --upgrade kubernetes\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr from source, download attached zip file, then\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003eunzip client-python-v34.1.0.zip\ncd client-python-v34.1.0\npython setup.py install\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThen follow examples in \u003ca href=\"https://github.com/kubernetes-client/python/tree/release-34.0/examples\"\u003ehttps://github.com/kubernetes-client/python/tree/release-34.0/examples\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://github.com/kubernetes-client/python/blob/release-34.0/CHANGELOG.md\"\u003ehttps://github.com/kubernetes-client/python/blob/release-34.0/CHANGELOG.md\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eKubernetes Python Client v34.1.0 Beta 1 Release\u003c/h2\u003e\n\u003cp\u003eGetting started:\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003epip install --pre --upgrade kubernetes\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr from source, download attached zip file, then\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003eunzip client-python-v34.1.0b1.zip\ncd client-python-v34.1.0b1\npython setup.py install\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThen follow examples in \u003ca href=\"https://github.com/kubernetes-client/python/tree/release-34.0/examples\"\u003ehttps://github.com/kubernetes-client/python/tree/release-34.0/examples\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eChangelog: \u003ca href=\"https://github.com/kubernetes-client/python/blob/release-34.0/CHANGELOG.md\"\u003ehttps://github.com/kubernetes-client/python/blob/release-34.0/CHANGELOG.md\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eKubernetes Python Client v34.1.0 Alpha 1 Release\u003c/h2\u003e\n\u003cp\u003eGetting started:\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003epip install --pre --upgrade kubernetes\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr from source, download attached zip file, then\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003eunzip client-python-v34.1.0a1.zip\ncd client-python-v34.1.0a1\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kubernetes-client/python/blob/master/CHANGELOG.md\"\u003ekubernetes's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev34.1.0b1\u003c/h1\u003e\n\u003cp\u003eKubernetes API Version: v1.34.1\u003c/p\u003e\n\u003ch1\u003ev34.1.0a1\u003c/h1\u003e\n\u003cp\u003eKubernetes API Version: v1.34.1\u003c/p\u003e\n\u003ch3\u003eAPI Change\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003eomitempty\u003c/code\u003e and \u003ccode\u003eopt\u003c/code\u003e tag to the API \u003ccode\u003ev1beta2\u003c/code\u003e AdminAccess type in the \u003ccode\u003eDeviceRequestAllocationResult\u003c/code\u003e struct. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/132338\"\u003ekubernetes/kubernetes#132338\u003c/a\u003e, \u003ca href=\"https://github.com/PatrickLaabs\"\u003e\u003ccode\u003e@​PatrickLaabs\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a \u003ccode\u003eruntime.ApplyConfiguration\u003c/code\u003e interface implemented by all generated apply configuration types. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/132194\"\u003ekubernetes/kubernetes#132194\u003c/a\u003e, \u003ca href=\"https://github.com/alvaroaleman\"\u003e\u003ccode\u003e@​alvaroaleman\u003c/code\u003e\u003c/a\u003e) [SIG API Machinery and Instrumentation]\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a detailed event for in-place pod vertical scaling completed, improving cluster management and debugging. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/130387\"\u003ekubernetes/kubernetes#130387\u003c/a\u003e, \u003ca href=\"https://github.com/shiya0705\"\u003e\u003ccode\u003e@​shiya0705\u003c/code\u003e\u003c/a\u003e) [SIG API Machinery, Apps, Autoscaling, Node, Scheduling and Testing]\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a mechanism for configurable container restarts: \u003cem\u003econtainer-level restart rules\u003c/em\u003e. This was an alpha feature behind the \u003ccode\u003eContainerRestartRules\u003c/code\u003e feature gate. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/132642\"\u003ekubernetes/kubernetes#132642\u003c/a\u003e, \u003ca href=\"https://github.com/yuanwang04\"\u003e\u003ccode\u003e@​yuanwang04\u003c/code\u003e\u003c/a\u003e) [SIG API Machinery, Apps, Node and Testing]\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a new \u003ccode\u003eFileKeyRef\u003c/code\u003e field to containers, allowing them to load variables from files by setting this field.\u003c/p\u003e\n\u003cp\u003eIntroduced the \u003ccode\u003eEnvFiles\u003c/code\u003e feature gate to govern activation of this functionality. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/132626\"\u003ekubernetes/kubernetes#132626\u003c/a\u003e, \u003ca href=\"https://github.com/HirazawaUi\"\u003e\u003ccode\u003e@​HirazawaUi\u003c/code\u003e\u003c/a\u003e) [SIG API Machinery, Apps, Node and Testing]\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded driver-owned fields in \u003ccode\u003eResourceSlice\u003c/code\u003e to mark whether the device was shareable among multiple resource claims (or requests) and to specify how each capacity could be shared between different requests.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded user-owned fields in \u003ccode\u003eResourceClaim\u003c/code\u003e to specify resource requirements against each device capacity.\u003c/li\u003e\n\u003cli\u003eAdded scheduler-owned field in \u003ccode\u003eResourceClaim.Status\u003c/code\u003e to specify how much device capacity is reserved for a specific request.\u003c/li\u003e\n\u003cli\u003eAdded an additional identifier to \u003ccode\u003eResourceClaim.Status\u003c/code\u003e for the device supports multiple allocations.\u003c/li\u003e\n\u003cli\u003eAdded a new constraint type to enforce uniqueness of specified attributes across all allocated devices. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/132522\"\u003ekubernetes/kubernetes#132522\u003c/a\u003e, \u003ca href=\"https://github.com/sunya-ch\"\u003e\u003ccode\u003e@​sunya-ch\u003c/code\u003e\u003c/a\u003e) [SIG API Machinery, Apps, Architecture, CLI, Cluster Lifecycle, Network, Node, Release, Scheduling and Testing]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded new optional APIs in \u003ccode\u003eResouceSlice.Basic\u003c/code\u003e and \u003ccode\u003eResourceClaim.Status.AllocatedDeviceStatus\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/130160\"\u003ekubernetes/kubernetes#130160\u003c/a\u003e, \u003ca href=\"https://github.com/KobayashiD27\"\u003e\u003ccode\u003e@​KobayashiD27\u003c/code\u003e\u003c/a\u003e) [SIG API Machinery, Apps, Architecture, Node, Release, Scheduling and Testing]\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support for specifying \u003ccode\u003econtrolplane\u003c/code\u003e or \u003ccode\u003ecluster\u003c/code\u003e egress selectors in JWT authenticators via the \u003ccode\u003eissuer.egressSelectorType\u003c/code\u003e field in the \u003ccode\u003eAuthenticationConfiguration.jwt\u003c/code\u003e array. If unset, the previous behavior of using no egress selector is preserved. This functionality requires the \u003ccode\u003eStructuredAuthenticationConfigurationEgressSelector\u003c/code\u003e beta feature gate (enabled by default). (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/132768\"\u003ekubernetes/kubernetes#132768\u003c/a\u003e, \u003ca href=\"https://github.com/enj\"\u003e\u003ccode\u003e@​enj\u003c/code\u003e\u003c/a\u003e) [SIG API Machinery, Auth and Testing]\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support in the Kubelet for monitoring the health of devices allocated via Dynamic Resource Allocation (DRA) and report it in the \u003ccode\u003epod.status.containerStatuses.allocatedResourcesStatus\u003c/code\u003e field. This required the DRA plugin to implement the new v1alpha1 \u003ccode\u003eNodeHealth\u003c/code\u003e gRPC service. This feature was controlled by the \u003ccode\u003eResourceHealthStatus\u003c/code\u003e feature gate. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/130606\"\u003ekubernetes/kubernetes#130606\u003c/a\u003e, \u003ca href=\"https://github.com/Jpsassine\"\u003e\u003ccode\u003e@​Jpsassine\u003c/code\u003e\u003c/a\u003e) [SIG Apps, Architecture, Auth, CLI, Cloud Provider, Cluster Lifecycle, Etcd, Network, Node, Release, Scheduling, Storage and Testing]\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support in the kubelet's image pull credential tracking for service account-based verification. When an image was pulled using service account credentials via external credential providers, subsequent Pods using the same service account (UID, name, and namespace) could access the cached image without re-authentication for the lifetime of that service account. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/132771\"\u003ekubernetes/kubernetes#132771\u003c/a\u003e, \u003ca href=\"https://github.com/aramase\"\u003e\u003ccode\u003e@​aramase\u003c/code\u003e\u003c/a\u003e) [SIG Auth, Node and Testing]\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded validation to reject Pods using the \u003ccode\u003ePodLevelResources\u003c/code\u003e feature on Windows OS due to lack of support. The API server rejected Pods with pod-level resources and a \u003ccode\u003ePod.spec.os.name\u003c/code\u003e targeting Windows. Kubelet on nodes running Windows also rejected Pods with pod-level resources at the admission phase. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/133046\"\u003ekubernetes/kubernetes#133046\u003c/a\u003e, \u003ca href=\"https://github.com/toVersus\"\u003e\u003ccode\u003e@​toVersus\u003c/code\u003e\u003c/a\u003e) [SIG Apps and Node]\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded warnings when creating headless service with set \u003ccode\u003eloadBalancerIP\u003c/code\u003e,\u003ccode\u003eexternalIPs\u003c/code\u003e and/or \u003ccode\u003eSessionAffinity\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/132214\"\u003ekubernetes/kubernetes#132214\u003c/a\u003e, \u003ca href=\"https://github.com/Peac36\"\u003e\u003ccode\u003e@​Peac36\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllowed \u003ccode\u003epvc.spec.VolumeAttributesClassName\u003c/code\u003e to change from non-nil to nil. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/132106\"\u003ekubernetes/kubernetes#132106\u003c/a\u003e, \u003ca href=\"https://github.com/AndrewSirenko\"\u003e\u003ccode\u003e@​AndrewSirenko\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllowed setting the \u003ccode\u003ehostnameOverride\u003c/code\u003e field in \u003ccode\u003ePodSpec\u003c/code\u003e to specify any RFC 1123 DNS subdomain as the pod's hostname. The \u003ccode\u003eHostnameOverride\u003c/code\u003e feature gate was introduced to control enablement of this functionality. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/132558\"\u003ekubernetes/kubernetes#132558\u003c/a\u003e, \u003ca href=\"https://github.com/HirazawaUi\"\u003e\u003ccode\u003e@​HirazawaUi\u003c/code\u003e\u003c/a\u003e) [SIG API Machinery, Apps, Network, Node and Testing]\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged underlying logic for \u003ccode\u003eEviction Manager\u003c/code\u003e helper functions. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/132277\"\u003ekubernetes/kubernetes#132277\u003c/a\u003e, \u003ca href=\"https://github.com/KevinTMtz\"\u003e\u003ccode\u003e@​KevinTMtz\u003c/code\u003e\u003c/a\u003e) [SIG Node, Scheduling and Testing]\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged underlying logic to propagate pod-level hugepage cgroup to containers when they did not specify hugepage resources.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded validation to enforce the hugepage aggregated container limits to be smaller than or equal to pod-level limits. This was already enforced with the defaulted requests from the specified limits, however it did not make it clear about both hugepage requests and limits. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/131089\"\u003ekubernetes/kubernetes#131089\u003c/a\u003e, \u003ca href=\"https://github.com/KevinTMtz\"\u003e\u003ccode\u003e@​KevinTMtz\u003c/code\u003e\u003c/a\u003e) [SIG Apps, Node and Testing]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCorrected the documentation to clarify that \u003ccode\u003epodSelector\u003c/code\u003e is optional and described its default behavior. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/131354\"\u003ekubernetes/kubernetes#131354\u003c/a\u003e, \u003ca href=\"https://github.com/tomoish\"\u003e\u003ccode\u003e@​tomoish\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDRA API: resource.k8s.io/v1alpha3 now only contains DeviceTaintRule. All other types got removed because they became obsolete when introducing the v1beta1 API in 1.32.\nbefore updating a cluster where resourceclaims, resourceclaimtemplates, deviceclasses, or resourceslices might have been stored using Kubernetes \u0026lt; 1.32, delete all of those resources before updating and recreate them as needed while running Kubernetes \u0026gt;= 1.32. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/132000\"\u003ekubernetes/kubernetes#132000\u003c/a\u003e, \u003ca href=\"https://github.com/pohly\"\u003e\u003ccode\u003e@​pohly\u003c/code\u003e\u003c/a\u003e) [SIG Etcd, Node, Scheduling and Testing]\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDRA: Starting with Kubernetes 1.34, the alpha-level \u003ccode\u003eresource.k8s.io/admin-access\u003c/code\u003e label has been updated to \u003ccode\u003eresource.kubernetes.io/admin-access\u003c/code\u003e. Admins using the alpha feature and updating from 1.33 can set both labels, upgrade, then remove \u003ccode\u003eresource.k8s.io/admin-access\u003c/code\u003e when no downgrade is going to happen anymore. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/131996\"\u003ekubernetes/kubernetes#131996\u003c/a\u003e, \u003ca href=\"https://github.com/ritazh\"\u003e\u003ccode\u003e@​ritazh\u003c/code\u003e\u003c/a\u003e) [SIG Node and Testing]\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDRA: The scheduler plugin prevented abnormal filter runtimes by timing out after 10 seconds. This was configurable via the plugin configuration's \u003ccode\u003eFilterTimeout\u003c/code\u003e. Setting it to zero disabled the timeout and restored the behavior of Kubernetes \u0026lt;= 1.33. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/132033\"\u003ekubernetes/kubernetes#132033\u003c/a\u003e, \u003ca href=\"https://github.com/pohly\"\u003e\u003ccode\u003e@​pohly\u003c/code\u003e\u003c/a\u003e) [SIG Node, Scheduling and Testing]\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDRA: When the prioritized list feature was used in a request and the resulting number of allocated devices exceeded the number of allowed devices per claim, the scheduler aborted the attempt to allocate devices early. Previously, it tried to many different combinations, which could take a long time. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/130593\"\u003ekubernetes/kubernetes#130593\u003c/a\u003e, \u003ca href=\"https://github.com/mortent\"\u003e\u003ccode\u003e@​mortent\u003c/code\u003e\u003c/a\u003e) [SIG Apps, Node, Scheduling and Testing]\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDRA: removed support for the v1alpha4 kubelet gRPC API (added in 1.31, superseded in 1.32). DRA drivers using the helper package from Kubernetes  \u0026gt;= 1.32 use the v1beta1 API and continue to be supported. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/132574\"\u003ekubernetes/kubernetes#132574\u003c/a\u003e, \u003ca href=\"https://github.com/pohly\"\u003e\u003ccode\u003e@​pohly\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDeprecated \u003ccode\u003eStreamingConnectionIdleTimeout\u003c/code\u003e field of the kubelet config. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/131992\"\u003ekubernetes/kubernetes#131992\u003c/a\u003e, \u003ca href=\"https://github.com/lalitc375\"\u003e\u003ccode\u003e@​lalitc375\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDynamic Resource Allocation: Graduated core functionality to general availability (GA). This newly stable feature uses the \u003cem\u003estructured parameters\u003c/em\u003e flavor of DRA. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/132706\"\u003ekubernetes/kubernetes#132706\u003c/a\u003e, \u003ca href=\"https://github.com/pohly\"\u003e\u003ccode\u003e@​pohly\u003c/code\u003e\u003c/a\u003e) [SIG API Machinery, Apps, Auth, Autoscaling, Etcd, Node, Scheduling and Testing]\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eEnabled kube-apiserver support for \u003ccode\u003ePodCertificateRequest\u003c/code\u003e and \u003ccode\u003ePodCertificate\u003c/code\u003e projected volumes (behind the \u003ccode\u003ePodCertificateRequest\u003c/code\u003e feature gate). (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/128010\"\u003ekubernetes/kubernetes#128010\u003c/a\u003e, \u003ca href=\"https://github.com/ahmedtd\"\u003e\u003ccode\u003e@​ahmedtd\u003c/code\u003e\u003c/a\u003e) [SIG API Machinery, Apps, Auth, Cloud Provider, Etcd, Node, Storage and Testing]\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eExtended resources backed by DRA feature allowed cluster operator to specify \u003ccode\u003eextendedResourceName\u003c/code\u003e in \u003ccode\u003eDeviceClass\u003c/code\u003e, and application operator to continue using extended resources in pod's requests to request for DRA devices matching the DeviceClass.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eNodeResourcesFit\u003c/code\u003e plugin scoring didn't work for extended resources backed by DRA. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/130653\"\u003ekubernetes/kubernetes#130653\u003c/a\u003e, \u003ca href=\"https://github.com/yliaog\"\u003e\u003ccode\u003e@​yliaog\u003c/code\u003e\u003c/a\u003e) [SIG API Machinery, Apps, Auth, Node, Scheduling and Testing]\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eExtended the NodePorts scheduling plugin to consider hostPorts used by restartable init containers. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/132040\"\u003ekubernetes/kubernetes#132040\u003c/a\u003e, \u003ca href=\"https://github.com/avrittrohwer\"\u003e\u003ccode\u003e@​avrittrohwer\u003c/code\u003e\u003c/a\u003e) [SIG Scheduling and Testing]\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed a 1.33 regression that causes a nil panic in kube-scheduler when aggregating resource requested across container's spec and status. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/132895\"\u003ekubernetes/kubernetes#132895\u003c/a\u003e, \u003ca href=\"https://github.com/yue9944882\"\u003e\u003ccode\u003e@​yue9944882\u003c/code\u003e\u003c/a\u003e) [SIG Node and Scheduling]\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed prerelease lifecycle for \u003ccode\u003ePodCertificateRequest\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/133350\"\u003ekubernetes/kubernetes#133350\u003c/a\u003e, \u003ca href=\"https://github.com/carlory\"\u003e\u003ccode\u003e@​carlory\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIntroduced OpenAPI format support for \u003ccode\u003ek8s-short-name\u003c/code\u003e and \u003ccode\u003ek8s-long-name\u003c/code\u003e in CustomResourceDefinition schemas. (\u003ca href=\"https://redirect.github.com/kubernetes/kubernetes/pull/132504\"\u003ekubernetes/kubernetes#132504\u003c/a\u003e, \u003ca href=\"https://github.com/jpbetz\"\u003e\u003ccode\u003e@​jpbetz\u003c/code\u003e\u003c/a\u003e) [SIG API Machinery, Architecture, Auth, CLI, Cloud Provider, Cluster Lifecycle, Instrumentation, Network, Node, Scheduling and Storage]\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/kubernetes-client/python/commit/5b23a44aa06010ac6ffe423d7b0e090caf7882ff\"\u003e\u003ccode\u003e5b23a44\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kubernetes-client/python/issues/2455\"\u003e#2455\u003c/a\u003e from yliaog/automated-release-of-34.1.0-upstream-rel...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kubernetes-client/python/commit/8866972d0e42684f289f14a30e9db645873c5a07\"\u003e\u003ccode\u003e8866972\u003c/code\u003e\u003c/a\u003e Updated the compatibility matrix and maintenance status\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kubernetes-client/python/commit/9bb20149e75c65640b868d6d0eb389d2a8930059\"\u003e\u003ccode\u003e9bb2014\u003c/code\u003e\u003c/a\u003e generated client change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kubernetes-client/python/commit/efa2b2610b4b4223fd06137b0c7f6c326338d669\"\u003e\u003ccode\u003eefa2b26\u003c/code\u003e\u003c/a\u003e update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kubernetes-client/python/commit/b374f2ea67b2caa183e52f1e1ce57e27aaadac89\"\u003e\u003ccode\u003eb374f2e\u003c/code\u003e\u003c/a\u003e update version constants for 34.1.0 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kubernetes-client/python/commit/9d14e9fbdd7bce1ed3c5bac4cb54caac3605e353\"\u003e\u003ccode\u003e9d14e9f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kubernetes-client/python/issues/2452\"\u003e#2452\u003c/a\u003e from yliaog/automated-release-of-34.1.0b1-upstream-r...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kubernetes-client/python/commit/749ec15345a6a1d1daa2fbab7779dd554669335c\"\u003e\u003ccode\u003e749ec15\u003c/code\u003e\u003c/a\u003e generated client change\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kubernetes-client/python/commit/14901c6b346a14a4b925435c124bd98dc8abe247\"\u003e\u003ccode\u003e14901c6\u003c/code\u003e\u003c/a\u003e update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kubernetes-client/python/commit/fe16bed8478ea77dd94ee544d94fc93093745447\"\u003e\u003ccode\u003efe16bed\u003c/code\u003e\u003c/a\u003e update version constants for 34.1.0b1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kubernetes-client/python/commit/c66f45a265b851aeb13d6986eb7c61df9562ec0d\"\u003e\u003ccode\u003ec66f45a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kubernetes-client/python/issues/2448\"\u003e#2448\u003c/a\u003e from yliaog/automated-release-of-34.1.0a1-upstream-r...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kubernetes-client/python/compare/v33.1.0...v34.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pillow` from 11.3.0 to 12.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-pillow/Pillow/releases\"\u003epillow's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e12.0.0\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://pillow.readthedocs.io/en/stable/releasenotes/12.0.0.html\"\u003ehttps://pillow.readthedocs.io/en/stable/releasenotes/12.0.0.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eRemovals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove support for FreeType \u0026lt;= 2.9.0 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9159\"\u003e#9159\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.9 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9119\"\u003e#9119\u003c/a\u003e [\u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eRemove deprecations for Pillow 12.0.0 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9053\"\u003e#9053\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDeprecations\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecate Image._show \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9186\"\u003e#9186\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eDeprecate ImageCmsProfile product_name and product_info \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/8995\"\u003e#8995\u003c/a\u003e [\u003ca href=\"https://github.com/lukegb\"\u003e\u003ccode\u003e@​lukegb\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImagingHistogramInstance can use two bands \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9251\"\u003e#9251\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate 12.0.0 release notes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9247\"\u003e#9247\u003c/a\u003e [\u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdded ImageDraw alpha channel examples \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9201\"\u003e#9201\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate Python version \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9230\"\u003e#9230\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdated macOS tested Pillow versions \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9209\"\u003e#9209\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd GitHub profile link to release notes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9197\"\u003e#9197\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eSplit versionadded info \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9190\"\u003e#9190\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eDocument ImageFile.MAXBLOCK \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9163\"\u003e#9163\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdated macOS version in CI targets \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9157\"\u003e#9157\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eFix typos \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9135\"\u003e#9135\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdded \u0026quot;Colors\u0026quot; to concepts \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9067\"\u003e#9067\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate macOS tested Pillow versions \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9068\"\u003e#9068\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eThanks, folks! \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9056\"\u003e#9056\u003c/a\u003e [\u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eSetup nit: \u0026quot;fork\u0026quot; should be lowercased \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9055\"\u003e#9055\u003c/a\u003e [\u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDependencies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate dependency cibuildwheel to v3.2.1 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9246\"\u003e#9246\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9233\"\u003e#9233\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003epre-commit-ci[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate harfbuzz to 12.1.0 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9218\"\u003e#9218\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate libtiff to 4.7.1 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9222\"\u003e#9222\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate FreeType to 2.14.1 on macOS and Linux wheels \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9217\"\u003e#9217\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency cibuildwheel to v3.2.0 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9219\"\u003e#9219\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate Ghostscript to 10.6.0 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9202\"\u003e#9202\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate openjpeg to 2.5.4 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9215\"\u003e#9215\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate harfbuzz to 11.5.0 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9203\"\u003e#9203\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency mypy to v1.18.2 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9213\"\u003e#9213\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency mypy to v1.18.1 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9207\"\u003e#9207\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate github-actions \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9194\"\u003e#9194\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdated harfbuzz to 11.4.5 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9150\"\u003e#9150\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate zlib-ng to 2.2.5 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9140\"\u003e#9140\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate raqm to 0.10.3 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9137\"\u003e#9137\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate libjpeg-turbo to 3.1.2 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9188\"\u003e#9188\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9180\"\u003e#9180\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003epre-commit-ci[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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-pillow/Pillow/commit/693df7b42c666f88c719f9973be0ad71607328e0\"\u003e\u003ccode\u003e693df7b\u003c/code\u003e\u003c/a\u003e 12.0.0 version bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/d175bb88a302e161173e05b1c4103910d7366623\"\u003e\u003ccode\u003ed175bb8\u003c/code\u003e\u003c/a\u003e Use macos-14 for iOS arm64 simulator (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9258\"\u003e#9258\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/592b2f820aa1f75f8ae8bf4f30e1b4bc62023535\"\u003e\u003ccode\u003e592b2f8\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Use macos-latest for iOS arm64 simulator\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/5dddb2ce94a715e54442c1d30c9ffc04914d96fe\"\u003e\u003ccode\u003e5dddb2c\u003c/code\u003e\u003c/a\u003e Use enums for Modes and RawModes in C (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9256\"\u003e#9256\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/e7b72a3bbdec4e3f4120e6b5fe4082d78315ff13\"\u003e\u003ccode\u003ee7b72a3\u003c/code\u003e\u003c/a\u003e Add ImageText (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9098\"\u003e#9098\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/864d4b6e0937e9d468de26b933f31b1639e0f22a\"\u003e\u003ccode\u003e864d4b6\u003c/code\u003e\u003c/a\u003e Shift bits before making value negative (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9255\"\u003e#9255\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/994a9def5d94bc59b60447bbab445834f7f9f9bf\"\u003e\u003ccode\u003e994a9de\u003c/code\u003e\u003c/a\u003e Install arro3 dependencies when type checking (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9254\"\u003e#9254\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/d5e1601b32ea43b45ce8f820e4b349e9b5e2dd6c\"\u003e\u003ccode\u003ed5e1601\u003c/code\u003e\u003c/a\u003e Improved documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/e533ccccfcef79c031ac1178a9b78db2fb000a6f\"\u003e\u003ccode\u003ee533ccc\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into imagetext\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/95a85dc6693ca221643906214b0e1f4590986c0f\"\u003e\u003ccode\u003e95a85dc\u003c/code\u003e\u003c/a\u003e Use snake case\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-pillow/Pillow/compare/11.3.0...12.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pycparser` from 2.22 to 2.23\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/eliben/pycparser/releases\"\u003epycparser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003erelease_v2.23\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow abstract declarator \u0026quot;static\u0026quot; (GH issue \u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/539\"\u003e#539\u003c/a\u003e) by \u003ca href=\"https://github.com/gperciva\"\u003e\u003ccode\u003e@​gperciva\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/545\"\u003eeliben/pycparser#545\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/550\"\u003eeliben/pycparser#550\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd dirent and socket typedefs. by \u003ca href=\"https://github.com/MegaManSec\"\u003e\u003ccode\u003e@​MegaManSec\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/558\"\u003eeliben/pycparser#558\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport for labels with no statement by \u003ca href=\"https://github.com/ignatirabo\"\u003e\u003ccode\u003e@​ignatirabo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/562\"\u003eeliben/pycparser#562\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept empty 'case' or 'default' labels by \u003ca href=\"https://github.com/ignatirabo\"\u003e\u003ccode\u003e@​ignatirabo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/564\"\u003eeliben/pycparser#564\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: preserve parentheses for statement exprs by \u003ca href=\"https://github.com/zawan-ila\"\u003e\u003ccode\u003e@​zawan-ila\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/566\"\u003eeliben/pycparser#566\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: hex float types by \u003ca href=\"https://github.com/zawan-ila\"\u003e\u003ccode\u003e@​zawan-ila\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/567\"\u003eeliben/pycparser#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExplicit error for comments, with README link by \u003ca href=\"https://github.com/cellularmitosis\"\u003e\u003ccode\u003e@​cellularmitosis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/569\"\u003eeliben/pycparser#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eshowemptyattrs option on Node.show() by \u003ca href=\"https://github.com/cellularmitosis\"\u003e\u003ccode\u003e@​cellularmitosis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/570\"\u003eeliben/pycparser#570\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd fake typedefs for GNU Extension 128-bit integers. by \u003ca href=\"https://github.com/dj-wednesday\"\u003e\u003ccode\u003e@​dj-wednesday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/577\"\u003eeliben/pycparser#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTypedef for __kernel_sa_family_t in linux/socket.h by \u003ca href=\"https://github.com/crosser\"\u003e\u003ccode\u003e@​crosser\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/578\"\u003eeliben/pycparser#578\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/gperciva\"\u003e\u003ccode\u003e@​gperciva\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/545\"\u003eeliben/pycparser#545\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MegaManSec\"\u003e\u003ccode\u003e@​MegaManSec\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/558\"\u003eeliben/pycparser#558\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ignatirabo\"\u003e\u003ccode\u003e@​ignatirabo\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/562\"\u003eeliben/pycparser#562\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zawan-ila\"\u003e\u003ccode\u003e@​zawan-ila\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/566\"\u003eeliben/pycparser#566\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cellularmitosis\"\u003e\u003ccode\u003e@​cellularmitosis\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/569\"\u003eeliben/pycparser#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dj-wednesday\"\u003e\u003ccode\u003e@​dj-wednesday\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/577\"\u003eeliben/pycparser#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crosser\"\u003e\u003ccode\u003e@​crosser\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/eliben/pycparser/pull/578\"\u003eeliben/pycparser#578\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/eliben/pycparser/compare/release_v2.22...release_v2.23\"\u003ehttps://github.com/eliben/pycparser/compare/release_v2.22...release_v2.23\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/5b60167602e7914139b3e277266ccdff5c24dbf2\"\u003e\u003ccode\u003e5b60167\u003c/code\u003e\u003c/a\u003e Prepare for release 2.23\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/7b24736bbb875a5c6c6f0520412f03aace75d0ee\"\u003e\u003ccode\u003e7b24736\u003c/code\u003e\u003c/a\u003e Typedef for __kernel_sa_family_t in _fake_typedefs.h (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/578\"\u003e#578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/90184f1f4eb1234fb9e7ae0c8b74eab9ea963482\"\u003e\u003ccode\u003e90184f1\u003c/code\u003e\u003c/a\u003e Add fake typedefs for GNU Extension 128-bit integers. (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/577\"\u003e#577\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/f04fdcde3d95be4a632948718d0c46eac09c50ce\"\u003e\u003ccode\u003ef04fdcd\u003c/code\u003e\u003c/a\u003e showemptyattrs option on Node.show() (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/570\"\u003e#570\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/156eae7f42843d8a3e78a68995d9cc7485577e38\"\u003e\u003ccode\u003e156eae7\u003c/code\u003e\u003c/a\u003e Explicit error for comments, with README link (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/569\"\u003e#569\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/2215299261306df71e2cec23bb3acd7b8f31f8db\"\u003e\u003ccode\u003e2215299\u003c/code\u003e\u003c/a\u003e fix: hex float types (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/567\"\u003e#567\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/037bd31d4e0e69e8c4d80e45311ae46abc15dd4e\"\u003e\u003ccode\u003e037bd31\u003c/code\u003e\u003c/a\u003e fix: preserve parentheses for statement exprs (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/566\"\u003e#566\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/9cecc090151b31d8821786bca3b25851a4a33272\"\u003e\u003ccode\u003e9cecc09\u003c/code\u003e\u003c/a\u003e Accept empty 'case' or 'default' labels (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/564\"\u003e#564\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/7ae671d3ac44e1000bcbe7108b24bdb9187443ac\"\u003e\u003ccode\u003e7ae671d\u003c/code\u003e\u003c/a\u003e Support for labels with no statement (\u003ca href=\"https://redirect.github.com/eliben/pycparser/issues/562\"\u003e#562\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliben/pycparser/commit/42b542324859a108f2cf35bcfe21fe5877ceb091\"\u003e\u003ccode\u003e42b5423\u003c/...\n\n_Description has been truncated_","html_url":"https://github.com/kjaskiewiczz/mender-server/pull/102","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/kjaskiewiczz%2Fmender-server/issues/102","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/102/packages"}},{"old_version":"1.17.1","new_version":"2.0.0","update_type":"major","path":"/siri-watsonx-orchestrate","pr_created_at":"2025-12-29T14:44:47.000Z","version_change":"1.17.1 → 2.0.0","issue":{"uuid":"3767588651","node_id":"PR_kwDOPj-SKM661cle","number":27,"state":"open","title":"Bump cffi from 1.17.1 to 2.0.0 in /siri-watsonx-orchestrate","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":"2025-12-29T14:44:47.000Z","updated_at":"2025-12-29T14:44:48.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"}],"path":"/siri-watsonx-orchestrate","ecosystem":"pip"},"body":"Bumps [cffi](https://github.com/python-cffi/cffi) from 1.17.1 to 2.0.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only) - huge thanks to the folks at Quansight Labs for all the work to get this one sorted!\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.0.0b1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only).\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/6366c01d84e9a78e7e85f12ebe9760ba5d19b6d3\"\u003e\u003ccode\u003e6366c01\u003c/code\u003e\u003c/a\u003e release 2.0.0 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/95c847663aec401e4003927a274e4de9b8595f4f\"\u003e\u003ccode\u003e95c8476\u003c/code\u003e\u003c/a\u003e 2.0.0 post beta backports (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/195cbda66b6be9297ef6d584644e50cfdcca4e8a\"\u003e\u003ccode\u003e195cbda\u003c/code\u003e\u003c/a\u003e Release 2.0.0b1 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b4bbe7940d3f76027534db1aecbae9b61c35221a\"\u003e\u003ccode\u003eb4bbe79\u003c/code\u003e\u003c/a\u003e fix version test to support beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/7ed073de66e713cf791b6fdfa23685c81fdfd6ad\"\u003e\u003ccode\u003e7ed073d\u003c/code\u003e\u003c/a\u003e Add support for the free-threaded build (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/178\"\u003e#178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/67a170dc7972dc9361743690b38da3d963b200ef\"\u003e\u003ccode\u003e67a170d\u003c/code\u003e\u003c/a\u003e Change the license from MIT to MIT-no-attribution, which is the same without ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/92645ec9329feb03e3fa86240b40fe0fc37469d1\"\u003e\u003ccode\u003e92645ec\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support/testing (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/177\"\u003e#177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/2b81170583a898478a6996c9705d8c38ab7f73a1\"\u003e\u003ccode\u003e2b81170\u003c/code\u003e\u003c/a\u003e doc: update test commands in Section Testing/development tips (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/25172b84cf51cf58241f074ccd1efd9c7648cb43\"\u003e\u003ccode\u003e25172b8\u003c/code\u003e\u003c/a\u003e doc: update year (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b57a92c03eb2078a99c900519a37d18b4d52324f\"\u003e\u003ccode\u003eb57a92c\u003c/code\u003e\u003c/a\u003e issue 147: force-compute nested structs before parent structs.  Occurs mainly...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=cffi\u0026package-manager=pip\u0026previous-version=1.17.1\u0026new-version=2.0.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/IBM/oic-i-agentic-ai-tutorials/pull/27","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/IBM%2Foic-i-agentic-ai-tutorials/issues/27","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/27/packages"}},{"old_version":"1.17.1","new_version":"2.0.0","update_type":"major","path":null,"pr_created_at":"2025-12-22T22:32:38.000Z","version_change":"1.17.1 → 2.0.0","issue":{"uuid":"3755433246","node_id":"PR_kwDOAozSis66Opa_","number":516,"state":"open","title":"Bump the all-deps group across 1 directory with 72 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":"2025-12-22T22:32:38.000Z","updated_at":"2025-12-22T22:35:08.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"all-deps","update_count":72,"packages":[{"name":"aiofiles","old_version":"24.1.0","new_version":"25.1.0","repository_url":"https://github.com/Tinche/aiofiles"},{"name":"aiosqlite","old_version":"0.20.0","new_version":"0.22.0","repository_url":"https://github.com/omnilib/aiosqlite"},{"name":"antlr4-python3-runtime","old_version":"4.13.1","new_version":"4.13.2"},{"name":"asyncua","old_version":"1.1.5","new_version":"1.1.8","repository_url":"https://github.com/FreeOpcUa/opcua-asyncio"},{"name":"atomicwrites","old_version":"1.4.0","new_version":"1.4.1","repository_url":"https://github.com/untitaker/python-atomicwrites"},{"name":"autobahn","old_version":"21.3.1","new_version":"25.12.2","repository_url":"https://github.com/crossbario/autobahn-python"},{"name":"awkward","old_version":"2.6.10","new_version":"2.8.11","repository_url":"https://github.com/scikit-hep/awkward-1.0"},{"name":"awkward-cpp","old_version":"40","new_version":"51","repository_url":"https://github.com/scikit-hep/awkward-1.0"},{"name":"blinker","old_version":"1.8.2","new_version":"1.9.0","repository_url":"https://github.com/pallets-eco/blinker"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"click","old_version":"8.1.7","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"comtypes","old_version":"1.4.12","new_version":"1.4.14","repository_url":"https://github.com/enthought/comtypes"},{"name":"configparser","old_version":"7.1.0","new_version":"7.2.0","repository_url":"https://github.com/jaraco/configparser"},{"name":"contourpy","old_version":"1.1.1","new_version":"1.3.3","repository_url":"https://github.com/contourpy/contourpy"},{"name":"cpylog","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/SteveDoyle2/cpylog"},{"name":"docutils","old_version":"0.20.1","new_version":"0.22.4","repository_url":"https://github.com/rtfd/recommonmark"},{"name":"ezdxf","old_version":"1.1.4","new_version":"1.4.3","repository_url":"https://github.com/mozman/ezdxf"},{"name":"fonttools","old_version":"4.57.0","new_version":"4.61.1","repository_url":"https://github.com/fonttools/fonttools"},{"name":"fsspec","old_version":"2025.3.0","new_version":"2025.12.0","repository_url":"https://github.com/fsspec/filesystem_spec"},{"name":"geomdl","old_version":"5.3.1","new_version":"5.4.0","repository_url":"https://github.com/orbingol/NURBS-Python"},{"name":"ijson","old_version":"3.3.0","new_version":"3.4.0.post0","repository_url":"https://github.com/ICRAR/ijson"},{"name":"imageio","old_version":"2.35.1","new_version":"2.37.2","repository_url":"https://github.com/imageio/imageio"},{"name":"importlib-metadata","old_version":"8.5.0","new_version":"8.7.1","repository_url":"https://github.com/python/importlib_metadata"},{"name":"importlib-resources","old_version":"6.4.5","new_version":"6.5.2","repository_url":"https://github.com/python/importlib_resources"},{"name":"joblib","old_version":"1.4.2","new_version":"1.5.3","repository_url":"https://github.com/joblib/joblib"},{"name":"kiwisolver","old_version":"1.4.7","new_version":"1.4.9","repository_url":"https://github.com/nucleic/kiwi"},{"name":"llvmlite","old_version":"0.41.1","new_version":"0.46.0","repository_url":"https://github.com/numba/llvmlite"},{"name":"markdown","old_version":"3.7","new_version":"3.10","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"markdown-it-py","old_version":"3.0.0","new_version":"4.0.0","repository_url":"https://github.com/executablebooks/markdown-it-py"},{"name":"matplotlib","old_version":"3.7.5","new_version":"3.10.8","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"msgpack","old_version":"1.1.1","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"networkx","old_version":"3.1","new_version":"3.6.1","repository_url":"https://github.com/networkx/networkx"},{"name":"numba","old_version":"0.58.1","new_version":"0.63.1","repository_url":"https://github.com/numba/numba"},{"name":"numpy","old_version":"1.24.4","new_version":"2.4.0","repository_url":"https://github.com/numpy/numpy"},{"name":"pandas","old_version":"2.0.3","new_version":"2.3.3","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"pillow","old_version":"10.4.0","new_version":"12.0.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.3.6","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"posthog","old_version":"4.2.0","new_version":"7.4.2","repository_url":"https://github.com/posthog/posthog-python"},{"name":"protobuf","old_version":"5.29.5","new_version":"6.33.2","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pyfakefs","old_version":"5.10.2","new_version":"6.0.0","repository_url":"https://github.com/pytest-dev/pyfakefs"},{"name":"pygit2","old_version":"1.13.3","new_version":"1.19.0","repository_url":"https://github.com/libgit2/pygit2"},{"name":"pyjwt","old_version":"2.9.0","new_version":"2.10.1","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"pynastran","old_version":"1.3.4","new_version":"1.4.1","repository_url":"https://github.com/SteveDoyle2/pyNastran"},{"name":"pyopenxr","old_version":"1.1.4601","new_version":"1.1.5301","repository_url":"https://github.com/cmbruns/pyopenxr"},{"name":"pyoptools","old_version":"0.2.1","new_version":"0.3.7"},{"name":"pyparsing","old_version":"3.1.4","new_version":"3.3.0","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"pypresence","old_version":"4.3.0","new_version":"4.6.1","repository_url":"https://github.com/qwertyquerty/pypresence"},{"name":"pyproj","old_version":"3.5.0","new_version":"3.7.2","repository_url":"https://github.com/pyproj4/pyproj"},{"name":"python-docx","old_version":"1.1.2","new_version":"1.2.0","repository_url":"https://github.com/python-openxml/python-docx"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"pyvista","old_version":"0.44.2","new_version":"0.46.4","repository_url":"https://github.com/pyvista/pyvista"},{"name":"pywavelets","old_version":"1.4.1","new_version":"1.9.0","repository_url":"https://github.com/PyWavelets/pywt"},{"name":"requests","old_version":"2.32.4","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"scikit-image","old_version":"0.21.0","new_version":"0.26.0","repository_url":"https://github.com/scikit-image/scikit-image"},{"name":"scikit-learn","old_version":"1.3.2","new_version":"1.8.0","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"scipy","old_version":"1.10.1","new_version":"1.16.3","repository_url":"https://github.com/scipy/scipy"},{"name":"sentry-sdk","old_version":"2.47.0","new_version":"2.48.0","repository_url":"https://github.com/getsentry/sentry-python"},{"name":"shapely","old_version":"2.0.7","new_version":"2.1.2","repository_url":"https://github.com/shapely/shapely"},{"name":"soupsieve","old_version":"2.7","new_version":"2.8.1","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"streamdeck","old_version":"0.9.6","new_version":"0.9.8","repository_url":"https://github.com/abcminiuser/python-elgato-streamdeck"},{"name":"sympy","old_version":"1.13.3","new_version":"1.14.0","repository_url":"https://github.com/sympy/sympy"},{"name":"testtools","old_version":"2.7.2","new_version":"2.8.2","repository_url":"https://github.com/testing-cabal/testtools"},{"name":"threadpoolctl","old_version":"3.5.0","new_version":"3.6.0","repository_url":"https://github.com/joblib/threadpoolctl"},{"name":"tifffile","old_version":"2023.7.10","new_version":"2025.12.20","repository_url":"https://github.com/cgohlke/tifffile"},{"name":"txaio","old_version":"23.1.1","new_version":"25.12.2","repository_url":"https://github.com/crossbario/txaio"},{"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":"tzlocal","old_version":"5.2","new_version":"5.3.1","repository_url":"https://github.com/regebro/tzlocal"},{"name":"urllib3","old_version":"2.2.3","new_version":"2.6.2","repository_url":"https://github.com/urllib3/urllib3"},{"name":"vtk","old_version":"9.3.1","new_version":"9.5.2"},{"name":"xarray","old_version":"2023.1.0","new_version":"2025.12.0","repository_url":"https://github.com/pydata/xarray"},{"name":"zipp","old_version":"3.20.2","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"}],"path":null,"ecosystem":"pip"},"body":"Bumps the all-deps group with 72 updates in the /constraints directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [aiofiles](https://github.com/Tinche/aiofiles) | `24.1.0` | `25.1.0` |\n| [aiosqlite](https://github.com/omnilib/aiosqlite) | `0.20.0` | `0.22.0` |\n| [antlr4-python3-runtime](http://www.antlr.org) | `4.13.1` | `4.13.2` |\n| [asyncua](https://github.com/FreeOpcUa/opcua-asyncio) | `1.1.5` | `1.1.8` |\n| [atomicwrites](https://github.com/untitaker/python-atomicwrites) | `1.4.0` | `1.4.1` |\n| [autobahn](https://github.com/crossbario/autobahn-python) | `21.3.1` | `25.12.2` |\n| [awkward](https://github.com/scikit-hep/awkward-1.0) | `2.6.10` | `2.8.11` |\n| [awkward-cpp](https://github.com/scikit-hep/awkward-1.0) | `40` | `51` |\n| [blinker](https://github.com/pallets-eco/blinker) | `1.8.2` | `1.9.0` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.1` | `2.0.0` |\n| [click](https://github.com/pallets/click) | `8.1.7` | `8.3.1` |\n| [comtypes](https://github.com/enthought/comtypes) | `1.4.12` | `1.4.14` |\n| [configparser](https://github.com/jaraco/configparser) | `7.1.0` | `7.2.0` |\n| [contourpy](https://github.com/contourpy/contourpy) | `1.1.1` | `1.3.3` |\n| [cpylog](https://github.com/SteveDoyle2/cpylog) | `1.5.0` | `1.6.0` |\n| [docutils](https://github.com/rtfd/recommonmark) | `0.20.1` | `0.22.4` |\n| [ezdxf](https://github.com/mozman/ezdxf) | `1.1.4` | `1.4.3` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.57.0` | `4.61.1` |\n| [fsspec](https://github.com/fsspec/filesystem_spec) | `2025.3.0` | `2025.12.0` |\n| [geomdl](https://github.com/orbingol/NURBS-Python) | `5.3.1` | `5.4.0` |\n| [ijson](https://github.com/ICRAR/ijson) | `3.3.0` | `3.4.0.post0` |\n| [imageio](https://github.com/imageio/imageio) | `2.35.1` | `2.37.2` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `8.5.0` | `8.7.1` |\n| [importlib-resources](https://github.com/python/importlib_resources) | `6.4.5` | `6.5.2` |\n| [joblib](https://github.com/joblib/joblib) | `1.4.2` | `1.5.3` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.4.7` | `1.4.9` |\n| [llvmlite](https://github.com/numba/llvmlite) | `0.41.1` | `0.46.0` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.7` | `3.10` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `3.0.0` | `4.0.0` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.7.5` | `3.10.8` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.1` | `1.1.2` |\n| [networkx](https://github.com/networkx/networkx) | `3.1` | `3.6.1` |\n| [numba](https://github.com/numba/numba) | `0.58.1` | `0.63.1` |\n| [numpy](https://github.com/numpy/numpy) | `1.24.4` | `2.4.0` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.0.3` | `2.3.3` |\n| [pillow](https://github.com/python-pillow/Pillow) | `10.4.0` | `12.0.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.3.6` | `4.5.1` |\n| [posthog](https://github.com/posthog/posthog-python) | `4.2.0` | `7.4.2` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.5` | `6.33.2` |\n| [pyfakefs](https://github.com/pytest-dev/pyfakefs) | `5.10.2` | `6.0.0` |\n| [pygit2](https://github.com/libgit2/pygit2) | `1.13.3` | `1.19.0` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.9.0` | `2.10.1` |\n| [pynastran](https://github.com/SteveDoyle2/pyNastran) | `1.3.4` | `1.4.1` |\n| [pyopenxr](https://github.com/cmbruns/pyopenxr) | `1.1.4601` | `1.1.5301` |\n| pyoptools | `0.2.1` | `0.3.7` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.1.4` | `3.3.0` |\n| [pypresence](https://github.com/qwertyquerty/pypresence) | `4.3.0` | `4.6.1` |\n| [pyproj](https://github.com/pyproj4/pyproj) | `3.5.0` | `3.7.2` |\n| [python-docx](https://github.com/python-openxml/python-docx) | `1.1.2` | `1.2.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [pyvista](https://github.com/pyvista/pyvista) | `0.44.2` | `0.46.4` |\n| [pywavelets](https://github.com/PyWavelets/pywt) | `1.4.1` | `1.9.0` |\n| [requests](https://github.com/psf/requests) | `2.32.4` | `2.32.5` |\n| [scikit-image](https://github.com/scikit-image/scikit-image) | `0.21.0` | `0.26.0` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.3.2` | `1.8.0` |\n| [scipy](https://github.com/scipy/scipy) | `1.10.1` | `1.16.3` |\n| [sentry-sdk](https://github.com/getsentry/sentry-python) | `2.47.0` | `2.48.0` |\n| [shapely](https://github.com/shapely/shapely) | `2.0.7` | `2.1.2` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.8.1` |\n| [streamdeck](https://github.com/abcminiuser/python-elgato-streamdeck) | `0.9.6` | `0.9.8` |\n| [sympy](https://github.com/sympy/sympy) | `1.13.3` | `1.14.0` |\n| [testtools](https://github.com/testing-cabal/testtools) | `2.7.2` | `2.8.2` |\n| [threadpoolctl](https://github.com/joblib/threadpoolctl) | `3.5.0` | `3.6.0` |\n| [tifffile](https://github.com/cgohlke/tifffile) | `2023.7.10` | `2025.12.20` |\n| [txaio](https://github.com/crossbario/txaio) | `23.1.1` | `25.12.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| [tzlocal](https://github.com/regebro/tzlocal) | `5.2` | `5.3.1` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.2.3` | `2.6.2` |\n| [vtk](https://vtk.org) | `9.3.1` | `9.5.2` |\n| [xarray](https://github.com/pydata/xarray) | `2023.1.0` | `2025.12.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.20.2` | `3.23.0` |\n\n\nUpdates `aiofiles` from 24.1.0 to 25.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Tinche/aiofiles/releases\"\u003eaiofiles's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev25.1.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSwitch to \u003ca href=\"https://docs.astral.sh/uv/\"\u003euv\u003c/a\u003e + add Python v3.14 support.  (\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eruff\u003c/code\u003e formatter and linter. \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/216\"\u003e#216\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8 support. If you require it, use version 24.1.0. \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/204\"\u003e#204\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/danielsmyers\"\u003e\u003ccode\u003e@​danielsmyers\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/185\"\u003eTinche/aiofiles#185\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stankudrow\"\u003e\u003ccode\u003e@​stankudrow\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/192\"\u003eTinche/aiofiles#192\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/waketzheng\"\u003e\u003ccode\u003e@​waketzheng\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/221\"\u003eTinche/aiofiles#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/Tinche/aiofiles/compare/v24.1.0...v25.1.0\"\u003ehttps://github.com/Tinche/aiofiles/compare/v24.1.0...v25.1.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Tinche/aiofiles/blob/main/CHANGELOG.md\"\u003eaiofiles's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e25.1.0 (2025-10-09)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSwitch to \u003ca href=\"https://docs.astral.sh/uv/\"\u003euv\u003c/a\u003e + add Python v3.14 support.\n(\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eruff\u003c/code\u003e formatter and linter.\n\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/216\"\u003e#216\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop Python 3.8 support. If you require it, use version 24.1.0.\n\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/pull/204\"\u003e#204\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/Tinche/aiofiles/commit/348f5ef6561c2b2c8a7497bd10487eab4102332f\"\u003e\u003ccode\u003e348f5ef\u003c/code\u003e\u003c/a\u003e v25.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/5e1bb8f12b09bce440cc9d1e28387d239cbc2577\"\u003e\u003ccode\u003e5e1bb8f\u003c/code\u003e\u003c/a\u003e docs: update readme to use ruff badge (\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/issues/221\"\u003e#221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/6fdc25c7812d6738ccf51c5e7d4cd68500053a52\"\u003e\u003ccode\u003e6fdc25c\u003c/code\u003e\u003c/a\u003e Move to uv. (\u003ca href=\"https://redirect.github.com/Tinche/aiofiles/issues/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/1989132423dc300c61e22434abd02725e922ddeb\"\u003e\u003ccode\u003e1989132\u003c/code\u003e\u003c/a\u003e set 'function' as a default fixture loop scope value\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/8986452a1b28b109903078f8e9a805ec01e248a6\"\u003e\u003ccode\u003e8986452\u003c/code\u003e\u003c/a\u003e add the 'asyncio_default_fixture_loop_scope=session' option\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/ccab1ff77640c59b353046cb528c25ffa11caa73\"\u003e\u003ccode\u003eccab1ff\u003c/code\u003e\u003c/a\u003e update pytest-asyncio==1.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/8727c96f5be46235af412a9fe504ba7c149df7f3\"\u003e\u003ccode\u003e8727c96\u003c/code\u003e\u003c/a\u003e add PR \u003ca href=\"https://redirect.github.com/Tinche/aiofiles/issues/216\"\u003e#216\u003c/a\u003e into the CHANGELOG\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/a9388e5f8de9142c3e920917775e741bbf9f73b2\"\u003e\u003ccode\u003ea9388e5\u003c/code\u003e\u003c/a\u003e add TID and ignore TID252\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/760366489aed1fb041ef35652e2babb1870973d0\"\u003e\u003ccode\u003e7603664\u003c/code\u003e\u003c/a\u003e remove [ruff].exclude keyval\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Tinche/aiofiles/commit/7c49a5c5f2520233198487145423a7842805d740\"\u003e\u003ccode\u003e7c49a5c\u003c/code\u003e\u003c/a\u003e add final newlines\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Tinche/aiofiles/compare/v24.1.0...v25.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `aiosqlite` from 0.20.0 to 0.22.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/omnilib/aiosqlite/blob/main/CHANGELOG.md\"\u003eaiosqlite's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.22.0\u003c/h2\u003e\n\u003cp\u003eFeature release\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003eset_authorizer\u003c/code\u003e query access controls (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/349\"\u003e#349\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWait for transaction queue to complete when closing connection (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/305\"\u003e#305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEmit warning when connection goes out of scope without being closed (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/355\"\u003e#355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove dependency on \u003ccode\u003etyping_extensions\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/365\"\u003e#365\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre lang=\"text\"\u003e\u003ccode\u003e$ git shortlog -s v0.21.0...v0.22.0\n     1\tAlec Berryman\n     1\tAmethyst Reese\n     1\tDavid Andreoletti\n     1\tMarkus Heidelberg\n     1\tbeerpsi\n    19\tdependabot[bot]\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003ev0.21.0\u003c/h2\u003e\n\u003cp\u003eMaintenance release\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix: close connection correctly when BaseException raised in connection (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/317\"\u003e#317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMetadata improvements\u003c/li\u003e\n\u003cli\u003eTested and supported on Python 3.13\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.8\u003c/li\u003e\n\u003cli\u003eDrop testing on PyPy\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre lang=\"text\"\u003e\u003ccode\u003e$ git shortlog -s v0.20.0...v0.21.0\n     6\tAmethyst Reese\n     1\tGabriel\n     1\tStanley Kudrow\n    11\tdependabot[bot]\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aiosqlite/commit/a869d73678adbc14472e4ac2c31f4e706efe8ef3\"\u003e\u003ccode\u003ea869d73\u003c/code\u003e\u003c/a\u003e Version bump v0.22.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aiosqlite/commit/1cd60adcab12347577150a6fa6c7d92b7b86d989\"\u003e\u003ccode\u003e1cd60ad\u003c/code\u003e\u003c/a\u003e Emit warning if connection is deleted before it is closed (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/355\"\u003e#355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aiosqlite/commit/611d7b4f29fc3d7df6c173b2e79b0892e9d249aa\"\u003e\u003ccode\u003e611d7b4\u003c/code\u003e\u003c/a\u003e Add set_authorizer support for fine-grained access control (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/349\"\u003e#349\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aiosqlite/commit/81d00c8f1676851c8634ca98f99e0973083ea75f\"\u003e\u003ccode\u003e81d00c8\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5 to 6 (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/357\"\u003e#357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aiosqlite/commit/7a26722f7e6da6a1ae0febf515b4624794173fcc\"\u003e\u003ccode\u003e7a26722\u003c/code\u003e\u003c/a\u003e Bump coverage[toml] from 7.8.0 to 7.10.7 (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aiosqlite/commit/445754087ec452f888cc152debf79590d8a25d86\"\u003e\u003ccode\u003e4457540\u003c/code\u003e\u003c/a\u003e Bump flake8 from 7.2.0 to 7.3.0 (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/346\"\u003e#346\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aiosqlite/commit/b650dad318ad72e582b7ba1143cc05f270f8ab6b\"\u003e\u003ccode\u003eb650dad\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 5 to 6 (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aiosqlite/commit/065ffdd1291693c5e69d2f3efff17e351d9a0163\"\u003e\u003ccode\u003e065ffdd\u003c/code\u003e\u003c/a\u003e Bump mypy from 1.15.0 to 1.19.0 (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aiosqlite/commit/3a6d7b03bf86054551b6fd90498056f652671c52\"\u003e\u003ccode\u003e3a6d7b0\u003c/code\u003e\u003c/a\u003e Remove obsolete dependency on typing_extensions (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/365\"\u003e#365\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/omnilib/aiosqlite/commit/e9d6b44af028e7704293b5d7a31ae02077fea5e6\"\u003e\u003ccode\u003ee9d6b44\u003c/code\u003e\u003c/a\u003e Bump black from 25.1.0 to 25.11.0 (\u003ca href=\"https://redirect.github.com/omnilib/aiosqlite/issues/364\"\u003e#364\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/omnilib/aiosqlite/compare/v0.20.0...v0.22.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `antlr4-python3-runtime` from 4.13.1 to 4.13.2\n\nUpdates `asyncua` from 1.1.5 to 1.1.8\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/FreeOpcUa/opcua-asyncio/releases\"\u003easyncua's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.1.8\u003c/h2\u003e\n\u003cp\u003efix release script and upload\u003c/p\u003e\n\u003ch2\u003ev1.1.7\u003c/h2\u003e\n\u003cp\u003eorigin/master, origin/HEAD) Replace time.time() with time.monotonic() in asyncua core modules\nb3dd3a17ffdd554807df230b6b34403b8c946c30 make pytest loop scope explicit\na5d72a2dc2a53e21d84c5f3b9091e27ae14e007e finally unfreeze pytest-asyncio\ncc874c30e2154e86a43523006ecb5839412cc157 Feat: Support import/export of struct and enum Field descriptions (\u003ca href=\"https://redirect.github.com/FreeOpcUa/opcua-asyncio/issues/1851\"\u003e#1851\u003c/a\u003e)\n97095b909c141daf9b7d300114f7d5d924444b76 Support pre 1.04 struct length fields for B\u0026amp;R\n5b1091795dc7745efb94acd94381db17274779e8 fix  connecting to new prosys opcua server (\u003ca href=\"https://redirect.github.com/FreeOpcUa/opcua-asyncio/issues/1827\"\u003e#1827\u003c/a\u003e)\n120d2e8c090fe0dbe34fb27a3e2f723dcb83ab8d Fix small bug if imported xml has also the stardard namespace included (\u003ca href=\"https://redirect.github.com/FreeOpcUa/opcua-asyncio/issues/1832\"\u003e#1832\u003c/a\u003e)\nd52d319b7ccf8c52f0e0fce469d06b9a10db0a24 Enhancement: Chunked Build ETree Function (\u003ca href=\"https://redirect.github.com/FreeOpcUa/opcua-asyncio/issues/1833\"\u003e#1833\u003c/a\u003e)\n6b6f4bb220b47b7d6d5612dc4d8daccf386373b0 Fix: Issues with missing namespace URIs when importing and exporting XMLs (\u003ca href=\"https://redirect.github.com/FreeOpcUa/opcua-asyncio/issues/1830\"\u003e#1830\u003c/a\u003e)\nf12f3e19b3e7a3bc3db38add30176eef0cecd300 fix ClientNonce and/or peer_certificate may be None\ne3e02e3cfaca19647aec9348e9452594c6ebd657 Include support for x509 certificate chains in DER format (\u003ca href=\"https://redirect.github.com/FreeOpcUa/opcua-asyncio/issues/1822\"\u003e#1822\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003ev1.1.6\u003c/h2\u003e\n\u003cp\u003eupdate ua adresse space to 1.0.5\nParse ExtensionObjects with missing length (= -1)\nadd: Number in uatypes.py\nAllow setting password to None.\nFix usage of X509IdentityToken\u003c/p\u003e\n\u003cp\u003ebug fixes\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/FreeOpcUa/opcua-asyncio/commit/d8a5de3fe4050f82f39690bb43157a4b8e20c545\"\u003e\u003ccode\u003ed8a5de3\u003c/code\u003e\u003c/a\u003e new release v1.1.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/FreeOpcUa/opcua-asyncio/commit/fe795e16ad86a4aea8ee09905ab080f9a0841748\"\u003e\u003ccode\u003efe795e1\u003c/code\u003e\u003c/a\u003e fix release script\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/FreeOpcUa/opcua-asyncio/commit/cacd6a0c355cd5d5e3af9e1d50c8829b69c2ed88\"\u003e\u003ccode\u003ecacd6a0\u003c/code\u003e\u003c/a\u003e Replace time.time() with time.monotonic() in asyncua core modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/FreeOpcUa/opcua-asyncio/commit/b3dd3a17ffdd554807df230b6b34403b8c946c30\"\u003e\u003ccode\u003eb3dd3a1\u003c/code\u003e\u003c/a\u003e make pytest loop scope explicit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/FreeOpcUa/opcua-asyncio/commit/a5d72a2dc2a53e21d84c5f3b9091e27ae14e007e\"\u003e\u003ccode\u003ea5d72a2\u003c/code\u003e\u003c/a\u003e finally unfreeze pytest-asyncio\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/FreeOpcUa/opcua-asyncio/commit/cc874c30e2154e86a43523006ecb5839412cc157\"\u003e\u003ccode\u003ecc874c3\u003c/code\u003e\u003c/a\u003e Feat: Support import/export of struct and enum Field descriptions (\u003ca href=\"https://redirect.github.com/FreeOpcUa/opcua-asyncio/issues/1851\"\u003e#1851\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/FreeOpcUa/opcua-asyncio/commit/97095b909c141daf9b7d300114f7d5d924444b76\"\u003e\u003ccode\u003e97095b9\u003c/code\u003e\u003c/a\u003e Support pre 1.04 struct length fields for B\u0026amp;R\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/FreeOpcUa/opcua-asyncio/commit/5b1091795dc7745efb94acd94381db17274779e8\"\u003e\u003ccode\u003e5b10917\u003c/code\u003e\u003c/a\u003e fix  connecting to new prosys opcua server (\u003ca href=\"https://redirect.github.com/FreeOpcUa/opcua-asyncio/issues/1827\"\u003e#1827\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/FreeOpcUa/opcua-asyncio/commit/120d2e8c090fe0dbe34fb27a3e2f723dcb83ab8d\"\u003e\u003ccode\u003e120d2e8\u003c/code\u003e\u003c/a\u003e Fix small bug if imported xml has also the stardard namespace included (\u003ca href=\"https://redirect.github.com/FreeOpcUa/opcua-asyncio/issues/1832\"\u003e#1832\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/FreeOpcUa/opcua-asyncio/commit/d52d319b7ccf8c52f0e0fce469d06b9a10db0a24\"\u003e\u003ccode\u003ed52d319\u003c/code\u003e\u003c/a\u003e Enhancement: Chunked Build ETree Function (\u003ca href=\"https://redirect.github.com/FreeOpcUa/opcua-asyncio/issues/1833\"\u003e#1833\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/FreeOpcUa/opcua-asyncio/compare/v1.1.5...v1.1.8\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `atomicwrites` from 1.4.0 to 1.4.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/untitaker/python-atomicwrites/commit/e05d8c985a10176ad43eefb9c4bfa6d7ab176719\"\u003e\u003ccode\u003ee05d8c9\u003c/code\u003e\u003c/a\u003e version 1.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/untitaker/python-atomicwrites/commit/ea90c67ffe5f38cd39d89625022d417da1966522\"\u003e\u003ccode\u003eea90c67\u003c/code\u003e\u003c/a\u003e fix name typo (\u003ca href=\"https://redirect.github.com/untitaker/python-atomicwrites/issues/60\"\u003e#60\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/untitaker/python-atomicwrites/commit/c35cd32eb364d5a4210e64bf38fd1a55f329f316\"\u003e\u003ccode\u003ec35cd32\u003c/code\u003e\u003c/a\u003e Add Power Support ppc64le (\u003ca href=\"https://redirect.github.com/untitaker/python-atomicwrites/issues/57\"\u003e#57\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/untitaker/python-atomicwrites/commit/9f8db6527db8a7d20879756ff83d86009df8c9c5\"\u003e\u003ccode\u003e9f8db65\u003c/code\u003e\u003c/a\u003e wrap line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/untitaker/python-atomicwrites/commit/6699a1fc44bc5cea2ee258cf960a8bd6cc584e21\"\u003e\u003ccode\u003e6699a1f\u003c/code\u003e\u003c/a\u003e migrate to travis-ci.com\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/untitaker/python-atomicwrites/commit/ec443a88e5e6cfbc9b667b1bcfd52e5a0a485f7e\"\u003e\u003ccode\u003eec443a8\u003c/code\u003e\u003c/a\u003e Add documentation for open_kwargs, fix \u003ca href=\"https://redirect.github.com/untitaker/python-atomicwrites/issues/56\"\u003e#56\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/untitaker/python-atomicwrites/commit/de33f6fac140f32a6eff9eb002feaa6dc7182182\"\u003e\u003ccode\u003ede33f6f\u003c/code\u003e\u003c/a\u003e Update README.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/untitaker/python-atomicwrites/commit/d17830127887b97f404f1596ac76d46d730e31f5\"\u003e\u003ccode\u003ed178301\u003c/code\u003e\u003c/a\u003e Update README.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/untitaker/python-atomicwrites/commit/72b5dcc9c5225fc8b54559f0f9c02d3211dfd403\"\u003e\u003ccode\u003e72b5dcc\u003c/code\u003e\u003c/a\u003e Update README.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/untitaker/python-atomicwrites/commit/14e7f1f5407344f215f0b06b5cbe49fe65e90d1d\"\u003e\u003ccode\u003e14e7f1f\u003c/code\u003e\u003c/a\u003e Clean up some FAQ/Frequently asked question repetition in readme (\u003ca href=\"https://redirect.github.com/untitaker/python-atomicwrites/issues/53\"\u003e#53\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/untitaker/python-atomicwrites/compare/1.4.0...1.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `autobahn` from 21.3.1 to 25.12.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/crossbario/autobahn-python/releases\"\u003eautobahn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eRelease v25_12_2\u003c/h1\u003e\n\u003cp\u003eOfficial release v25_12_2\u003c/p\u003e\n\u003ch2\u003eIncluded Platforms\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eLinux\u003c/strong\u003e: x86_64, ARM64 (manylinux_2_34 wheels with NVX)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003emacOS\u003c/strong\u003e: Apple Silicon ARM64 (binary wheels with NVX)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eWindows\u003c/strong\u003e: x86_64 (binary wheels with NVX)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePython Versions\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eCPython\u003c/strong\u003e: 3.11, 3.12, 3.13, 3.14\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePyPy\u003c/strong\u003e: 3.11\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstallation\u003c/h2\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003epip install autobahn[all]==v25_12_2\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr download wheels directly from this release.\u003c/p\u003e\n\u003ch2\u003eBuild Information\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eRelease Date\u003c/strong\u003e: 2025-12-15 11:12:00 UTC\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTotal Wheels\u003c/strong\u003e: 16\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSource Distributions\u003c/strong\u003e: 3\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cp\u003eAutobahn|Python provides:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eWebSocket\u003c/strong\u003e client and server implementations (RFC 6455)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eWAMP\u003c/strong\u003e client library for both Twisted and asyncio\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNVX acceleration\u003c/strong\u003e for high-performance networking (binary wheels)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePure Python fallback\u003c/strong\u003e wheels for maximum compatibility\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://autobahn.readthedocs.io\"\u003eRead the Docs\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crossbario/autobahn-python\"\u003eGitHub Repository\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://wamp-proto.org\"\u003eWAMP Protocol\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eDevelopment Build fork-7ce4f0c4-oberstet_autobahn_python-sync_autobahn_zlmdb-202512132337\u003c/h1\u003e\n\u003cp\u003eDevelopment build from pull request\u003c/p\u003e\n\u003ch2\u003eBuild Information\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/crossbario/autobahn-python/blob/master/docs/changelog.rst\"\u003eautobahn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e25.12.2\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBuild \u0026amp; CI/CD\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSynchronize CI/CD, FlatBuffers vendoring, and wamp-ai/wamp-cicd submodules between autobahn-python and zlmdb (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1822\"\u003e#1822\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSwitch manylinux container from 2_34 to 2_28 for x86_64 ISA compatibility (fixes auditwheel flatc bundling)\u003c/li\u003e\n\u003cli\u003eIncrease ARM64 build timeout to 60 minutes for QEMU emulation\u003c/li\u003e\n\u003cli\u003eAdd .github/workflows/README.md documenting CI/CD architecture\u003c/li\u003e\n\u003cli\u003eConsolidate download-github-release and download-release-artifacts recipes\u003c/li\u003e\n\u003cli\u003eAdd checksum verification to artifact download workflow\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFlatBuffers\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSimplify vendored FlatBuffers - use upstream as-is\u003c/li\u003e\n\u003cli\u003eTrack vendored FlatBuffers in git (like zlmdb approach)\u003c/li\u003e\n\u003cli\u003eAdd version() function to vendored FlatBuffers runtime\u003c/li\u003e\n\u003cli\u003eAdd check_zlmdb_flatbuffers_version_in_sync() for cross-project compatibility\u003c/li\u003e\n\u003cli\u003eGenerate .bfbs files for WAMP schemas during wheel build\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eOther\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRename install-flatc to install-flatc-system with prominent warning\u003c/li\u003e\n\u003cli\u003eRemove legacy readthedocs.yml to activate .readthedocs.yaml\u003c/li\u003e\n\u003cli\u003eRemove dev-latest optional dependency (PyPI rejects direct URLs)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e25.12.1\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eNew\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd vendored Flatbuffers (v25.9.23) (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1761\"\u003e#1761\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd WAMP serdes functional and benchmark testing; WAMP-Flatbuffers; WAMP Serializer Composition (transport/payload) (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1765\"\u003e#1765\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFix\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix 1757 (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1758\"\u003e#1758\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix 1767 (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1769\"\u003e#1769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix 1771 complete (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1774\"\u003e#1774\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eOther\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRel v25.10.2 (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1734\"\u003e#1734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRel v25.10.2 part2 (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1741\"\u003e#1741\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWAMP Flatbuffers serialization test coverage; WAMP message classes refactoring (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1773\"\u003e#1773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eModernization phase 1.1 (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1785\"\u003e#1785\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePhase 1.2: Build Tooling Modernization (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1788\"\u003e#1788\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePhase 1.3: CI/CD Modernization (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1791\"\u003e#1791\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRel25 12 1 (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1794\"\u003e#1794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eModernization phase 1.4 (\u003ca href=\"https://redirect.github.com/crossbario/autobahn-python/issues/1797\"\u003e#1797\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crossbario/autobahn-python/commit/5e4f7e086a074892231377f465099946e8f66ac4\"\u003e\u003ccode\u003e5e4f7e0\u003c/code\u003e\u003c/a\u003e docs: add changelog and release notes for v25.12.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crossbario/autobahn-python/commit/e97953b3cdc42b103075146dabe9eb9f30111c8b\"\u003e\u003ccode\u003ee97953b\u003c/code\u003e\u003c/a\u003e fix: add checksum verification and unify artifact download paths\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crossbario/autobahn-python/commit/05f1193cb2b2cdf71a92edfd2d12965083000a68\"\u003e\u003ccode\u003e05f1193\u003c/code\u003e\u003c/a\u003e fix: download-github-release now downloads all release artifacts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crossbario/autobahn-python/commit/467581c1ef461c97e3c24ece03d61119bbc0e126\"\u003e\u003ccode\u003e467581c\u003c/code\u003e\u003c/a\u003e Synchronize CI/CD, Flatbuffers vendoring and wamp-ai and wamp-cicd Submodules...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crossbario/autobahn-python/commit/60f226c5356feaab3545f7d015c0655924d9444c\"\u003e\u003ccode\u003e60f226c\u003c/code\u003e\u003c/a\u003e build: remove legacy readthedocs.yml to activate .readthedocs.yaml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crossbario/autobahn-python/commit/0dac159de6194c94d4be19b1958bddf627aba856\"\u003e\u003ccode\u003e0dac159\u003c/code\u003e\u003c/a\u003e Add missing docs deps to dev, ignore CFFI build artifacts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crossbario/autobahn-python/commit/e2503361b7c6f7cfd9fd38b5e2093703f3035166\"\u003e\u003ccode\u003ee250336\u003c/code\u003e\u003c/a\u003e Simplify vendored flatbuffers - use upstream as-is\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crossbario/autobahn-python/commit/03e2e157268713e71e10f5322e521349bc485116\"\u003e\u003ccode\u003e03e2e15\u003c/code\u003e\u003c/a\u003e Track vendored flatbuffers in git (like zlmdb approach)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crossbario/autobahn-python/commit/41f7e3c6595b911c482f332f5ea40de7f9c0bc1c\"\u003e\u003ccode\u003e41f7e3c\u003c/code\u003e\u003c/a\u003e Move vendor-flatbuffers logic to external Python script\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/crossbario/autobahn-python/commit/8db464888d9c738fb51b78544706c130cc1c47a6\"\u003e\u003ccode\u003e8db4648\u003c/code\u003e\u003c/a\u003e bump package version\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/crossbario/autobahn-python/compare/v21.3.1...v25.12.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `awkward` from 2.6.10 to 2.8.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scikit-hep/awkward-1.0/releases\"\u003eawkward's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.8.11\u003c/h2\u003e\n\u003ch2\u003eNew features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: add behavior cls validation hook by \u003ca href=\"https://github.com/pfackeldey\"\u003e\u003ccode\u003e@​pfackeldey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3710\"\u003escikit-hep/awkward#3710\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add a playground for cccl studies by \u003ca href=\"https://github.com/pfackeldey\"\u003e\u003ccode\u003e@​pfackeldey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3734\"\u003escikit-hep/awkward#3734\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add cuda.compute implementation to CCCL study by \u003ca href=\"https://github.com/shwina\"\u003e\u003ccode\u003e@​shwina\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3748\"\u003escikit-hep/awkward#3748\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: ability to optionally disable the caching of virtual arrays on themselves by \u003ca href=\"https://github.com/ikrommyd\"\u003e\u003ccode\u003e@​ikrommyd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3741\"\u003escikit-hep/awkward#3741\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug-fixes and performance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: string array numpy conversion fails with int32 offsets from parquet by \u003ca href=\"https://github.com/DylanModesitt\"\u003e\u003ccode\u003e@​DylanModesitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3697\"\u003escikit-hep/awkward#3697\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: only check length against empty form in \u003ccode\u003eak.from_buffers\u003c/code\u003e if it is known by \u003ca href=\"https://github.com/ikrommyd\"\u003e\u003ccode\u003e@​ikrommyd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3714\"\u003escikit-hep/awkward#3714\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: typestr respects now limit_cols for .show and \u003cem\u003erepr_mimebundle\u003c/em\u003e by \u003ca href=\"https://github.com/pfackeldey\"\u003e\u003ccode\u003e@​pfackeldey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3712\"\u003escikit-hep/awkward#3712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: \u003ccode\u003eArrayBuilder.__bool__ \u003c/code\u003e raises \u003ccode\u003eTypeError\u003c/code\u003e when builder length is 1 by \u003ca href=\"https://github.com/T90REAL\"\u003e\u003ccode\u003e@​T90REAL\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3738\"\u003escikit-hep/awkward#3738\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: prevent teardown from crashing GPU test suite by \u003ca href=\"https://github.com/ianna\"\u003e\u003ccode\u003e@​ianna\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3747\"\u003escikit-hep/awkward#3747\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: hide awkward.ak_* and awkward.str.akstr_* from 'awkward' and 'awkward.str' module by \u003ca href=\"https://github.com/pfackeldey\"\u003e\u003ccode\u003e@​pfackeldey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3752\"\u003escikit-hep/awkward#3752\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: align multi-level indices before merge in \u003ccode\u003eto_dataframe()\u003c/code\u003e by \u003ca href=\"https://github.com/TaiSakuma\"\u003e\u003ccode\u003e@​TaiSakuma\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3733\"\u003escikit-hep/awkward#3733\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: numba test failures on Python 3.14 by \u003ca href=\"https://github.com/ianna\"\u003e\u003ccode\u003e@​ianna\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3757\"\u003escikit-hep/awkward#3757\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: incorrect passing of \u003ccode\u003eIndex\u003c/code\u003e inside nplike function in \u003ccode\u003eto_IndexedOptionArray64\u003c/code\u003e by \u003ca href=\"https://github.com/ikrommyd\"\u003e\u003ccode\u003e@​ikrommyd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3727\"\u003escikit-hep/awkward#3727\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: weights should not be raised to the power n in the n-th moment calculation by \u003ca href=\"https://github.com/ikrommyd\"\u003e\u003ccode\u003e@​ikrommyd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3729\"\u003escikit-hep/awkward#3729\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: \u003ccode\u003eak.Record\u003c/code\u003e creation from iterable with nested dicts by \u003ca href=\"https://github.com/ikrommyd\"\u003e\u003ccode\u003e@​ikrommyd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3728\"\u003escikit-hep/awkward#3728\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: keep track of buffer key instead of field path for VirtualNDArrays \u0026amp; PlaceholderArrays by \u003ca href=\"https://github.com/pfackeldey\"\u003e\u003ccode\u003e@​pfackeldey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3751\"\u003escikit-hep/awkward#3751\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: typetracer nplike's \u003ccode\u003eall\u003c/code\u003e function leads to infinite recursion for \u003ccode\u003eaxis=None\u003c/code\u003e by \u003ca href=\"https://github.com/ikrommyd\"\u003e\u003ccode\u003e@​ikrommyd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3765\"\u003escikit-hep/awkward#3765\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eOther\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: fix compilation on self-hosted CI and test with multiple versions of CUDA by \u003ca href=\"https://github.com/ariostas\"\u003e\u003ccode\u003e@​ariostas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3704\"\u003escikit-hep/awkward#3704\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: update acknowledgements to include NumFOCUS affiliation by \u003ca href=\"https://github.com/ianna\"\u003e\u003ccode\u003e@​ianna\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3708\"\u003escikit-hep/awkward#3708\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: update pre-commit hooks 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/scikit-hep/awkward/pull/3709\"\u003escikit-hep/awkward#3709\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: pytest log_level is better than log_cli_level by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3719\"\u003escikit-hep/awkward#3719\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: update requirements files for latest possible python versions by \u003ca href=\"https://github.com/ikrommyd\"\u003e\u003ccode\u003e@​ikrommyd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3739\"\u003escikit-hep/awkward#3739\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump the actions group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3744\"\u003escikit-hep/awkward#3744\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: update pre-commit hooks 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/scikit-hep/awkward/pull/3754\"\u003escikit-hep/awkward#3754\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: Remove CUDA 11 support by \u003ca href=\"https://github.com/shwina\"\u003e\u003ccode\u003e@​shwina\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3758\"\u003escikit-hep/awkward#3758\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(ci): use macos-15-intel for x86 wheel building and testing by \u003ca href=\"https://github.com/ariostas\"\u003e\u003ccode\u003e@​ariostas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3720\"\u003escikit-hep/awkward#3720\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: add new versions to version selector by \u003ca href=\"https://github.com/ariostas\"\u003e\u003ccode\u003e@​ariostas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3707\"\u003escikit-hep/awkward#3707\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: 3.14 is supported by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3717\"\u003escikit-hep/awkward#3717\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: add T90REAL as a contributor for code by \u003ca href=\"https://github.com/allcontributors\"\u003e\u003ccode\u003e@​allcontributors\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3742\"\u003escikit-hep/awkward#3742\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Add dependency and version change guidelines by \u003ca href=\"https://github.com/ianna\"\u003e\u003ccode\u003e@​ianna\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3745\"\u003escikit-hep/awkward#3745\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: add shwina as a contributor for code by \u003ca href=\"https://github.com/allcontributors\"\u003e\u003ccode\u003e@​allcontributors\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3759\"\u003escikit-hep/awkward#3759\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Add an example summation reducer using cccl by \u003ca href=\"https://github.com/maxymnaumchyk\"\u003e\u003ccode\u003e@​maxymnaumchyk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3762\"\u003escikit-hep/awkward#3762\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/T90REAL\"\u003e\u003ccode\u003e@​T90REAL\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3738\"\u003escikit-hep/awkward#3738\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shwina\"\u003e\u003ccode\u003e@​shwina\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3748\"\u003escikit-hep/awkward#3748\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/scikit-hep/awkward/compare/v2.8.10...v2.8.11\"\u003ehttps://github.com/scikit-hep/awkward/compare/v2.8.10...v2.8.11\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 2.8.10\u003c/h2\u003e\n\u003ch2\u003eNew features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: preserve field order when replacing existing fields in with_field by \u003ca href=\"https://github.com/DylanModesitt\"\u003e\u003ccode\u003e@​DylanModesitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3681\"\u003escikit-hep/awkward#3681\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add to_/from_safetensors by \u003ca href=\"https://github.com/pfackeldey\"\u003e\u003ccode\u003e@​pfackeldey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/scikit-hep/awkward/pull/3685\"\u003escikit-hep/awkward#3685\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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-hep/awkward/commit/c4a2e57b47f6738670ffc0e4781a3990e7c3ff03\"\u003e\u003ccode\u003ec4a2e57\u003c/code\u003e\u003c/a\u003e awkward 2.8.11 and awkward-cpp 51\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-hep/awkward/commit/60072263c91fd8d5df48b487427319c5a10ae70d\"\u003e\u003ccode\u003e6007226\u003c/code\u003e\u003c/a\u003e awkward 2.8.11 and awkward-cpp 51\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-hep/awkward/commit/0ad8b1e25b0bd493508bade8ab8d79a383a854a0\"\u003e\u003ccode\u003e0ad8b1e\u003c/code\u003e\u003c/a\u003e fix: typetracer nplike's \u003ccode\u003eall\u003c/code\u003e function leads to infinite recursion for `axis...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-hep/awkward/commit/0941b378a8236a660990bd02d2c14e4d6593f28e\"\u003e\u003ccode\u003e0941b37\u003c/code\u003e\u003c/a\u003e fix: keep track of buffer key instead of field path for VirtualNDArrays \u0026amp; Pla...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-hep/awkward/commit/efea08c134963bc37c1013adc4ab320ebeb4d7a3\"\u003e\u003ccode\u003eefea08c\u003c/code\u003e\u003c/a\u003e chore(ci): use macos-15-intel for x86 wheel building and testing (\u003ca href=\"https://redirect.github.com/scikit-hep/awkward-1.0/issues/3720\"\u003e#3720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-hep/awkward/commit/87765b6adb379ba27b0f6b984607c250443b170c\"\u003e\u003ccode\u003e87765b6\u003c/code\u003e\u003c/a\u003e fix: \u003ccode\u003eak.Record\u003c/code\u003e creation from iterable with nested dicts (\u003ca href=\"https://redirect.github.com/scikit-hep/awkward-1.0/issues/3728\"\u003e#3728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-hep/awkward/commit/306274c1fd6028ed549fa0f9a5e47a8bd76e693c\"\u003e\u003ccode\u003e306274c\u003c/code\u003e\u003c/a\u003e fix: weights should not be raised to the power n in the n-th moment calculati...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-hep/awkward/commit/8872e1f4ffd781b07c2a661c235dc2d0a5f5bade\"\u003e\u003ccode\u003e8872e1f\u003c/code\u003e\u003c/a\u003e fix: incorrect passing of \u003ccode\u003eIndex\u003c/code\u003e inside nplike function in `to_IndexedOption...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-hep/awkward/commit/1594a70bb0d39e174996275dd251305a13f83b2b\"\u003e\u003ccode\u003e1594a70\u003c/code\u003e\u003c/a\u003e fix: numba test failures on Python 3.14 (\u003ca href=\"https://redirect.github.com/scikit-hep/awkward-1.0/issues/3757\"\u003e#3757\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-hep/awkward/commit/ca066ddc96dd690d52956535fc7422de71ed92e3\"\u003e\u003ccode\u003eca066dd\u003c/code\u003e\u003c/a\u003e feat: ability to optionally disable the caching of virtual arrays on themselv...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scikit-hep/awkward-1.0/compare/v2.6.10...v2.8.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `awkward-cpp` from 40 to 51\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/scikit-hep/awkward-1.0/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `blinker` from 1.8.2 to 1.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets-eco/blinker/releases\"\u003eblinker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.0\u003c/h2\u003e\n\u003cp\u003eThis is the Blinker 1.9.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecations, or introduce potentially breaking changes. 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\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/blinker/1.9.0/\"\u003ehttps://pypi.org/project/blinker/1.9.0/\u003c/a\u003e\nChanges: \u003ca href=\"https://blinker.readthedocs.io/en/stable/#version-1-9-0\"\u003ehttps://blinker.readthedocs.io/en/stable/#version-1-9-0\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets-eco/blinker/milestone/1?closed=1\"\u003ehttps://github.com/pallets-eco/blinker/milestone/1?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. \u003ca href=\"https://redirect.github.com/pallets-eco/blinker/issues/175\"\u003e#175\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove previously deprecated \u003ccode\u003e__version__\u003c/code\u003e, \u003ccode\u003ereceiver_connected\u003c/code\u003e, \u003ccode\u003eSignal.temporarily_connected_to\u003c/code\u003e and \u003ccode\u003eWeakNamespace\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets-eco/blinker/issues/172\"\u003e#172\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSkip weakref signal cleanup if the interpreter is shutting down. \u003ca href=\"https://redirect.github.com/pallets-eco/blinker/issues/173\"\u003e#173\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-eco/blinker/blob/main/CHANGES.rst\"\u003eblinker's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.9.0\u003c/h2\u003e\n\u003cp\u003eReleased 2024-11-08\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8. :pr:\u003ccode\u003e175\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRemove previously deprecated \u003ccode\u003e__version__\u003c/code\u003e, \u003ccode\u003ereceiver_connected\u003c/code\u003e,\n\u003ccode\u003eSignal.temporarily_connected_to\u003c/code\u003e and \u003ccode\u003eWeakNamespace\u003c/code\u003e. :pr:\u003ccode\u003e172\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSkip weakref signal cleanup if the interpreter is shutting down.\n:issue:\u003ccode\u003e173\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-eco/blinker/commit/669f3a027828d19786e708b511277fabcd6b9532\"\u003e\u003ccode\u003e669f3a0\u003c/code\u003e\u003c/a\u003e release version 1.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/blinker/commit/cfe116fa7912d8dcb0deee4907aa63d1efaadf5b\"\u003e\u003ccode\u003ecfe116f\u003c/code\u003e\u003c/a\u003e try disabling attestions on test pypi\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/blinker/commit/16e4bd70a19353d9d7cf47e4df7de54936296377\"\u003e\u003ccode\u003e16e4bd7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pallets-eco/blinker/issues/174\"\u003e#174\u003c/a\u003e from projectgus/bugfix/weakref_disconnect_shutdown\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/blinker/commit/42561fdf065032f5c39aea04d8c3fb4db93f73f3\"\u003e\u003ccode\u003e42561fd\u003c/code\u003e\u003c/a\u003e Fix \u0026quot;Exception ignored\u0026quot; in weakref callback during interpreter shutdown.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/blinker/commit/dcce3e97743494433025e0b68f742f3582b6ba6a\"\u003e\u003ccode\u003edcce3e9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pallets-eco/blinker/issues/175\"\u003e#175\u003c/a\u003e from pallets-eco/drop-python3.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/blinker/commit/efa95eaa080b0d4a8dcfc46ad1f387ea1ddebd97\"\u003e\u003ccode\u003eefa95ea\u003c/code\u003e\u003c/a\u003e drop support for python 3.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/blinker/commit/82305185358d8ce21619ec0f324688a14a89c23b\"\u003e\u003ccode\u003e8230518\u003c/code\u003e\u003c/a\u003e update dev dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/blinker/commit/94f1202f08c6d00a9fe1ecf5c8cba9da84e4b22f\"\u003e\u003ccode\u003e94f1202\u003c/code\u003e\u003c/a\u003e update dev dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/blinker/commit/8c983ecd764e1d113d24522838c2a7312460b7eb\"\u003e\u003ccode\u003e8c983ec\u003c/code\u003e\u003c/a\u003e remove previously deprecated code (\u003ca href=\"https://redirect.github.com/pallets-eco/blinker/issues/172\"\u003e#172\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets-eco/blinker/commit/f5915f3bfcd9f9da0caf6cd4858bf68068c52963\"\u003e\u003ccode\u003ef5915f3\u003c/code\u003e\u003c/a\u003e set up pre-commit lite workflow\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets-eco/blinker/compare/1.8.2...1.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cffi` from 1.17.1 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only) - huge thanks to the folks at Quansight Labs for all the work to get this one sorted!\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.0.0b1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only).\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/6366c01d84e9a78e7e85f12ebe9760ba5d19b6d3\"\u003e\u003ccode\u003e6366c01\u003c/code\u003e\u003c/a\u003e release 2.0.0 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/95c847663aec401e4003927a274e4de9b8595f4f\"\u003e\u003ccode\u003e95c8476\u003c/code\u003e\u003c/a\u003e 2.0.0 post beta backports (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/195cbda66b6be9297ef6d584644e50cfdcca4e8a\"\u003e\u003ccode\u003e195cbda\u003c/code\u003e\u003c/a\u003e Release 2.0.0b1 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b4bbe7940d3f76027534db1aecbae9b61c35221a\"\u003e\u003ccode\u003eb4bbe79\u003c/code\u003e\u003c/a\u003e fix version test to support beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/7ed073de66e713cf791b6fdfa23685c81fdfd6ad\"\u003e\u003ccode\u003e7ed073d\u003c/code\u003e\u003c/a\u003e Add support for the free-threaded build (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/178\"\u003e#178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/67a170dc7972dc9361743690b38da3d963b200ef\"\u003e\u003ccode\u003e67a170d\u003c/code\u003e\u003c/a\u003e Change the license from MIT to MIT-no-attribution, which is the same without ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/92645ec9329feb03e3fa86240b40fe0fc37469d1\"\u003e\u003ccode\u003e92645ec\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support/testing (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/177\"\u003e#177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/2b81170583a898478a6996c9705d8c38ab7f73a1\"\u003e\u003ccode\u003e2b81170\u003c/code\u003e\u003c/a\u003e doc: update test commands in Section Testing/development tips (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/25172b84cf51cf58241f074ccd1efd9c7648cb43\"\u003e\u003ccode\u003e25172b8\u003c/code\u003e\u003c/a\u003e doc: update year (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b57a92c03eb2078a99c900519a37d18b4d52324f\"\u003e\u003ccode\u003eb57a92c\u003c/code\u003e\u003c/a\u003e issue 147: force-compute nested structs before parent structs.  Occurs mainly...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.1.7 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.7...8.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `comtypes` from 1.4.12 to 1.4.14\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/enthought/comtypes/releases\"\u003ecomtypes's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.14\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eReplace \u003ccode\u003esetup.py\u003c/code\u003e with \u003ccode\u003epyproject.toml\u003c/code\u003e. By \u003ca href=\"https://github.com/moi15moi\"\u003e\u003ccode\u003e@​moi15moi\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eUpdate codebases for PEP585 compliance. By \u003ca href=\"https://github.com/junkmd\"\u003e\u003ccode\u003e@​junkmd\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.4.13\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove Python 3.8 and add Python 3.14 to the CI pipelines. By \u003ca href=\"https://github.com/junkmd\"\u003e\u003ccode\u003e@​junkmd\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eDeclare the minimum Python version as 3.9. By \u003ca href=\"https://github.com/junkmd\"\u003e\u003ccode\u003e@​junkmd\u003c/code\u003e\u003c/a\u003e. By \u003ca href=\"https://github.com/junkmd\"\u003e\u003ccode\u003e@​junkmd\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003ePyCArgObject.value\u003c/code\u003e for Python 3.14 compatibility. By \u003ca href=\"https://github.com/junkmd\"\u003e\u003ccode\u003e@​junkmd\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd version bridges for the \u003ccode\u003e__pointer_type__\u003c/code\u003e attribute protocol. By \u003ca href=\"https://github.com/junkmd\"\u003e\u003ccode\u003e@​junkmd\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/enthought/comtypes/blob/main/CHANGES.txt\"\u003ecomtypes's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 1.4.14\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eReplace \u003ccode\u003esetup.py\u003c/code\u003e with \u003ccode\u003epyproject.toml\u003c/code\u003e. By \u003ca href=\"https://github.com/moi15moi\"\u003e\u003ccode\u003e@​moi15moi\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eUpdate codebases for PEP585 compliance. By \u003ca href=\"https://github.com/junkmd\"\u003e\u003ccode\u003e@​junkmd\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease 1.4.13\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove Python 3.8 and add Python 3.14 to the CI pipelines. By \u003ca href=\"https://github.com/junkmd\"\u003e\u003ccode\u003e@​junkmd\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eDeclare the minimum Python version as 3.9. By \u003ca href=\"https://github.com/junkmd\"\u003e\u003ccode\u003e@​junkmd\u003c/code\u003e\u003c/a\u003e. By \u003ca href=\"https://github.com/junkmd\"\u003e\u003ccode\u003e@​junkmd\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003ePyCArgObject.value\u003c/code\u003e for Python 3.14 compatibility. By \u003ca href=\"https://github.com/junkmd\"\u003e\u003ccode\u003e@​junkmd\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd version bridges for the \u003ccode\u003e__pointer_type__\u003c/code\u003e attribute protocol. By \u003ca href=\"https://github.com/junkmd\"\u003e\u003ccode\u003e@​junkmd\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/enthought/comtypes/commit/b4226687d1df5ccaa6d0ee0df596c0c9adc50b0a\"\u003e\u003ccode\u003eb422668\u003c/code\u003e\u003c/a\u003e Bump version and update change log for 1.4.14 (\u003ca href=\"https://redirect.github.com/enthought/comtypes/issues/882\"\u003e#882\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/enthought/comtypes/commit/ee4320fc96134277bf72cd42df4221772bcd902b\"\u003e\u003ccode\u003eee4320f\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003ecollections.abc.Iterator\u003c/code\u003e in \u003ccode\u003etypeannotator\u003c/code\u003e to align with PEP 585. (\u003ca href=\"https://redirect.github.com/enthought/comtypes/issues/881\"\u003e#881\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/enthought/comtypes/commit/4c95d110d0d5fd286378bae0dc211b69c01f837d\"\u003e\u003ccode\u003e4c95d11\u003c/code\u003e\u003c/a\u003e Replace setup.py with pyproject.toml (\u003ca href=\"https://redirect.github.com/enthought/comtypes/issues/848\"\u003e#848\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/enthought/comtypes/commit/f2bd6052aa6daf3d3791e30b40bdd3fd85e3bfdd\"\u003e\u003ccode\u003ef2bd605\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003e*.py\u003c/code\u003e and \u003ccode\u003e_post_coinit/*.py\u003c/code\u003e files for PEP585 compliance. (\u003ca href=\"https://redirect.github.com/enthought/comtypes/issues/880\"\u003e#880\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/enthought/comtypes/commit/ab2b95e8c76b2fa6ddc24cc911742845ede79f54\"\u003e\u003ccode\u003eab2b95e\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003etools/**/*.py\u003c/code\u003e, \u003ccode\u003eserver/*.py\u003c/code\u003e and \u003ccode\u003eclient/*.py\u003c/code\u003e files for PEP585 comp...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/enthought/comtypes/commit/4134455d4c290a10e084a97c9b18ccb5ef62aaf4\"\u003e\u003ccode\u003e4134455\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003etest/*.py\u003c/code\u003e files for PEP585 compliance. (\u003ca href=\"https://redirect.github.com/enthought/comtypes/issues/878\"\u003e#878\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/enthought/comtypes/commit/5fd01e33d9f2fc571a0f02fffab1f4ed8b241931\"\u003e\u003ccode\u003e5fd01e3\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003ehints.pyi\u003c/code\u003e and the type symbols under \u003ccode\u003eTYPE_CHECKING\u003c/code\u003e blocks in the g...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/enthought/comtypes/commit/6d80cc6a742623130564469aaa543582e10c6301\"\u003e\u003ccode\u003e6d80cc6\u003c/code\u003e\u003c/a\u003e Improve \u003ccode\u003eGetModuleFileName\u003c/code\u003e tests and clarify virtual environment behavior. (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/enthought/comtypes/commit/fb8fd5823d83f866df43ce6f15d1b8dfd7f51f8c\"\u003e\u003ccode\u003efb8fd58\u003c/code\u003e\u003c/a\u003e Bump version and update change log for 1.4.13 (\u003ca href=\"https://redirect.github.com/enthought/comtypes/issues/874\"\u003e#874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/enthought/comtypes/commit/2429d3461e30387daa901cf59fdab02aae851696\"\u003e\u003ccode\u003e2429d34\u003c/code\u003e\u003c/a\u003e Support Python 3.14 and drop Python 3.8. (\u003ca href=\"https://redirect.github.com/enthought/comtypes/issues/839\"\u003e#839\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/enthought/comtypes/compare/1.4.12...1.4.14\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `configparser` from 7.1.0 to 7.2.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jaraco/configparser/blob/main/NEWS.rst\"\u003econfigparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev7.2.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRefreshed with implementation from CPython main (3.14).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaraco/configparser/commit/196691a5900488f11cdf276af745e36776e2209a\"\u003e\u003ccode\u003e196691a\u003c/code\u003e\u003c/a\u003e Finalize\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/j...\n\n_Description has been truncated_","html_url":"https://github.com/FreeCAD/FreeCAD-addons/pull/516","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/FreeCAD%2FFreeCAD-addons/issues/516","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/516/packages"}}]}