{"id":2641,"name":"sigstore","ecosystem":"pip","repository_url":"https://github.com/sigstore/sigstore-python","issues_count":91,"created_at":"2025-06-06T15:02:08.526Z","updated_at":"2025-06-06T15:02:08.526Z","purl":"pkg:pypi/sigstore","metadata":{"id":4340240,"name":"sigstore","ecosystem":"pypi","description":"A tool for signing Python package distributions","homepage":"https://pypi.org/project/sigstore/","licenses":"Apache Software License","normalized_licenses":["Apache-2.0"],"repository_url":"https://github.com/sigstore/sigstore-python","keywords_array":[],"namespace":null,"versions_count":55,"first_release_published_at":"2022-04-28T16:53:13.000Z","latest_release_published_at":"2025-06-06T06:10:31.000Z","latest_release_number":"3.6.3","last_synced_at":"2025-06-06T06:31:44.209Z","created_at":"2022-04-28T17:01:45.392Z","updated_at":"2025-06-06T06:34:14.763Z","registry_url":"https://pypi.org/project/sigstore/","install_command":"pip install sigstore --index-url https://pypi.org/simple","documentation_url":"https://sigstore.github.io/sigstore-python/","metadata":{"funding":null,"documentation":"https://sigstore.github.io/sigstore-python/","classifiers":["Development Status :: 5 - Production/Stable","Intended Audience :: Developers","License :: OSI Approved :: Apache Software License","Programming Language :: Python :: 3","Programming Language :: Python :: 3 :: Only","Programming Language :: Python :: 3.10","Programming Language :: Python :: 3.11","Programming Language :: Python :: 3.12","Programming Language :: Python :: 3.13","Programming Language :: Python :: 3.9","Topic :: Security","Topic :: Security :: Cryptography"],"normalized_name":"sigstore"},"repo_metadata":{"id":37481947,"uuid":"447691086","full_name":"sigstore/sigstore-python","owner":"sigstore","description":"A Sigstore client written in Python","archived":false,"fork":false,"pushed_at":"2025-05-27T17:34:00.000Z","size":2420,"stargazers_count":266,"open_issues_count":49,"forks_count":58,"subscribers_count":9,"default_branch":"main","last_synced_at":"2025-05-29T00:30:55.219Z","etag":null,"topics":["codesigning","python","security","supply-chain"],"latest_commit_sha":null,"homepage":"https://pypi.org/p/sigstore","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/sigstore.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-01-13T17:29:37.000Z","updated_at":"2025-05-27T17:34:04.000Z","dependencies_parsed_at":"2023-12-16T22:39:38.394Z","dependency_job_id":"e360db1e-8743-4bb4-9bbe-1ba6f3453e55","html_url":"https://github.com/sigstore/sigstore-python","commit_stats":{"total_commits":853,"total_committers":36,"mean_commits":"23.694444444444443","dds":0.5275498241500587,"last_synced_commit":"cac62e8e611d4286a49ecda7f33d356381ab7919"},"previous_names":["trailofbits/pysign"],"tags_count":61,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sigstore","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":258359774,"owners_count":22688549,"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":"sigstore","name":"sigstore","uuid":"71096353","kind":"organization","description":"Software Supply Chain Security","email":"info@sigstore.dev","website":"https://sigstore.dev","location":"United States of America","twitter":"projectsigstore","company":null,"icon_url":"https://avatars.githubusercontent.com/u/71096353?v=4","repositories_count":50,"last_synced_at":"2023-03-03T19:42:33.042Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/sigstore","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-14T05:04:40.320Z","updated_at":"2023-03-03T19:42:33.059Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sigstore","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sigstore/repositories"},"tags":[{"name":"v3.6.2","sha":"6937b05c3379fb6a3b23e47597a26e2cc72ababe","kind":"tag","published_at":"2025-04-14T07:36:57.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v3.6.2","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v3.6.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v3.6.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v3.6.2/manifests"},{"name":"v3.6.1","sha":"896cfe13105495e6dc6f8faf23e1007da35edeeb","kind":"commit","published_at":"2024-12-19T17:07:55.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v3.6.1","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v3.6.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v3.6.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v3.6.1/manifests"},{"name":"v3.6.0","sha":"44aa3ebe74cfce9fbc39bb5d771f3c2e5fb5daaf","kind":"commit","published_at":"2024-12-10T22:17:30.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v3.6.0","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v3.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v3.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v3.6.0/manifests"},{"name":"v3.5.3","sha":"87ff7f160d86a6eecf22160e7826a4de614ded49","kind":"commit","published_at":"2024-11-27T21:32:51.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v3.5.3","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v3.5.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v3.5.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v3.5.3/manifests"},{"name":"v3.5.2","sha":"276ed3d9bf8a9bd1d955eebcbf2fb6875e4591e8","kind":"commit","published_at":"2024-11-27T21:25:41.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v3.5.2","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v3.5.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v3.5.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v3.5.2/manifests"},{"name":"v3.5.1","sha":"0ac33eeaeb62ca466cef2708ca1dd5864382a008","kind":"commit","published_at":"2024-10-25T14:56:32.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v3.5.1","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v3.5.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v3.5.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v3.5.1/manifests"},{"name":"v3.5.0","sha":"68a7497e48f8c596b60ac7b67647d4299367c713","kind":"commit","published_at":"2024-10-24T16:01:16.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v3.5.0","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v3.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v3.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v3.5.0/manifests"},{"name":"v3.4.0","sha":"df51c7ab4d6773e3865e4d0194a2e1d117208273","kind":"commit","published_at":"2024-10-10T17:00:46.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v3.4.0","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v3.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v3.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v3.4.0/manifests"},{"name":"v3.3.0","sha":"343cbbf46e15160a6c483b24bb316ef20f2341d5","kind":"commit","published_at":"2024-09-18T15:00:57.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v3.3.0","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v3.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v3.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v3.3.0/manifests"},{"name":"v3.2.0","sha":"fc29ec190575ae345cea23f0953b64ca6f2ab8ba","kind":"commit","published_at":"2024-08-19T17:14:19.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v3.2.0","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v3.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v3.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v3.2.0/manifests"},{"name":"v3.1.0","sha":"3cda2b5f2498247754e650d51d7ef2ab1da4dc38","kind":"commit","published_at":"2024-07-31T21:04:30.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v3.1.0","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v3.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v3.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v3.1.0/manifests"},{"name":"v3.0.0","sha":"8578b545c2f8949211a185e5cf0ece7c17030a7a","kind":"commit","published_at":"2024-05-16T16:10:59.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v3.0.0","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v3.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v3.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v3.0.0/manifests"},{"name":"v3.0.0rc2","sha":"3a19f8878a9659f40451560a01f14e2e9b5adb33","kind":"commit","published_at":"2024-05-07T16:12:27.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v3.0.0rc2","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v3.0.0rc2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v3.0.0rc2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v3.0.0rc2/manifests"},{"name":"v3.0.0rc1","sha":"d9965ca6c4a0ad260293a1d31eabb2996661ec9c","kind":"commit","published_at":"2024-05-02T15:19:54.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v3.0.0rc1","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v3.0.0rc1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v3.0.0rc1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v3.0.0rc1/manifests"},{"name":"v2.1.5","sha":"8e365d752bb51f8cb8e6244f85c90bc838ceee58","kind":"tag","published_at":"2024-04-08T14:22:36.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v2.1.5","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v2.1.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v2.1.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v2.1.5/manifests"},{"name":"v2.1.4","sha":"2edc752c231ed2c41e924886ddd7c8bce4fd9ed4","kind":"tag","published_at":"2024-04-08T11:18:12.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v2.1.4","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v2.1.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v2.1.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v2.1.4/manifests"},{"name":"v2.1.3","sha":"3c042244aaa1b69d7a868fed02ca57076c4721de","kind":"commit","published_at":"2024-03-19T17:25:32.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v2.1.3","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v2.1.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v2.1.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v2.1.3/manifests"},{"name":"v2.1.2","sha":"332f6d2e99a197616decd020163a5a9a53ab7f83","kind":"commit","published_at":"2024-02-04T10:22:29.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v2.1.2","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v2.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v2.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v2.1.2/manifests"},{"name":"v2.1.1","sha":"f99055fdad4ea1de8953b8f2c2cdcb93f00d11d6","kind":"commit","published_at":"2024-02-04T10:16:25.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v2.1.1","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v2.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v2.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v2.1.1/manifests"},{"name":"v2.1.0","sha":"8ac00497f1f7674f42b25433e169f02039df8e08","kind":"commit","published_at":"2023-12-13T06:17:50.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v2.1.0","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v2.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v2.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v2.1.0/manifests"},{"name":"v2.0.1","sha":"2d6177d3bfa619b3e4de5cfc72a19caa0196b471","kind":"commit","published_at":"2023-10-17T20:33:13.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v2.0.1","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v2.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v2.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v2.0.1/manifests"},{"name":"v2.0.0","sha":"6c7069ea845f04ed2c6164a801b63af8b5d1be86","kind":"commit","published_at":"2023-09-28T18:34:48.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v2.0.0","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v2.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v2.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v2.0.0/manifests"},{"name":"v2.0.0rc3","sha":"87681a9e7af3f71f30c5eedd1e696d2dda3513fd","kind":"commit","published_at":"2023-09-12T03:10:33.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v2.0.0rc3","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v2.0.0rc3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v2.0.0rc3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v2.0.0rc3/manifests"},{"name":"v2.0.0rc2","sha":"0d0cef0221358793e13ce275cbae3a7bc7b11950","kind":"commit","published_at":"2023-07-21T19:09:58.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v2.0.0rc2","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v2.0.0rc2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v2.0.0rc2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v2.0.0rc2/manifests"},{"name":"v2.0.0rc1","sha":"2c132f4f82bcb12faf16fcea9df944c724078977","kind":"commit","published_at":"2023-06-23T14:02:23.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v2.0.0rc1","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v2.0.0rc1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v2.0.0rc1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v2.0.0rc1/manifests"},{"name":"v1.1.2","sha":"f2123ba8f11a0b46481fe1927ababf2d4c612d91","kind":"commit","published_at":"2023-04-22T22:24:00.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v1.1.2","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v1.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v1.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v1.1.2/manifests"},{"name":"v1.1.2rc1","sha":"c60f76e4ece5d469096b16b5d38e6dacd905cad4","kind":"commit","published_at":"2023-03-15T21:22:03.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v1.1.2rc1","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v1.1.2rc1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v1.1.2rc1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v1.1.2rc1/manifests"},{"name":"v1.1.1","sha":"b65f64140a334e2de468259dab8f058dc9fa0c3a","kind":"tag","published_at":"2023-03-06T22:11:35.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v1.1.1","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v1.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v1.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v1.1.1/manifests"},{"name":"v1.1.1rc1","sha":"681018ca59e575dbef7cc679cd5efcbefd705541","kind":"tag","published_at":"2023-03-06T15:45:38.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v1.1.1rc1","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v1.1.1rc1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v1.1.1rc1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v1.1.1rc1/manifests"},{"name":"v1.1.0","sha":"c65f3d8e49a3762164321533ab0205d00360b652","kind":"tag","published_at":"2023-01-31T18:05:47.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v1.1.0","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v1.1.0/manifests"},{"name":"v1.0.0","sha":"55f98f663721be34a5e5b63fb72e740c3d580f66","kind":"tag","published_at":"2023-01-13T14:50:51.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v1.0.0","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v1.0.0/manifests"},{"name":"v1.0.0rc1","sha":"d1a24e903d3b5d1690336330a9fd16e6c2560b5e","kind":"commit","published_at":"2023-01-12T00:48:07.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v1.0.0rc1","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v1.0.0rc1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v1.0.0rc1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v1.0.0rc1/manifests"},{"name":"v0.10.0","sha":"66581529803929c3ccc45334632ccd90f06e0de4","kind":"tag","published_at":"2023-01-09T19:45:58.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v0.10.0","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v0.10.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.10.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.10.0/manifests"},{"name":"v0.9.0","sha":"62865f364852c1842e4ccacc821e3190f9b92eb8","kind":"tag","published_at":"2022-12-22T16:32:46.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v0.9.0","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v0.9.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.9.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.9.0/manifests"},{"name":"v0.8.3","sha":"0bd51fd56de5f624198cbd5f9faf4f309c763ccf","kind":"tag","published_at":"2022-11-23T22:12:47.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v0.8.3","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v0.8.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.8.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.8.3/manifests"},{"name":"v0.8.2","sha":"075f0467b8f841a58020611ec150ecb1a8db3ef5","kind":"tag","published_at":"2022-11-23T22:05:35.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v0.8.2","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v0.8.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.8.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.8.2/manifests"},{"name":"v0.8.1","sha":"3b29ccb1c60fd229e3785952c6ffd16c606a942e","kind":"tag","published_at":"2022-11-23T21:59:20.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v0.8.1","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v0.8.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.8.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.8.1/manifests"},{"name":"v0.8.0","sha":"d5506a6c8d8836342364a24af4027e4c4a454d1d","kind":"tag","published_at":"2022-11-23T21:38:50.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v0.8.0","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v0.8.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.8.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.8.0/manifests"},{"name":"v0.7.0","sha":"5410427e89653fe4344f72506d057f2872683f4c","kind":"tag","published_at":"2022-11-04T14:08:48.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v0.7.0","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v0.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.7.0/manifests"},{"name":"v0.6.8","sha":"2b7a574e60b8a08542d946c67e92f815355e83a7","kind":"tag","published_at":"2022-10-24T19:54:08.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v0.6.8","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v0.6.8","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.6.8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.6.8/manifests"},{"name":"v0.6.7","sha":"8ef54d8bb3ec89f1a582990024b55495605f1693","kind":"commit","published_at":"2022-10-11T18:29:57.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v0.6.7","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v0.6.7","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.6.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.6.7/manifests"},{"name":"v0.6.6","sha":"2e438cd895e217b7e5c201832c6fd301619b5409","kind":"commit","published_at":"2022-10-05T00:45:34.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v0.6.6","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v0.6.6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.6.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.6.6/manifests"},{"name":"v0.6.5","sha":"4c8a5337c68315cf9d13410d379d0e9020631110","kind":"tag","published_at":"2022-09-15T20:55:39.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v0.6.5","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v0.6.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.6.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.6.5/manifests"},{"name":"v0.6.4","sha":"566d34e2bfa8f8bf9dd781099d0d765cffb568d8","kind":"tag","published_at":"2022-09-08T17:35:34.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v0.6.4","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v0.6.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.6.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.6.4/manifests"},{"name":"v0.6.3","sha":"bff2e635da74627b62b31efd746f533bf97801ed","kind":"commit","published_at":"2022-08-01T00:31:08.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v0.6.3","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v0.6.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.6.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.6.3/manifests"},{"name":"v0.6.2","sha":"ea5cda9c29e6f9546e77a5b74517cf482b5d1a45","kind":"commit","published_at":"2022-06-21T20:57:11.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v0.6.2","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v0.6.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.6.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.6.2/manifests"},{"name":"v0.6.1","sha":"dea9c08363b114c15d86008414f41f1b00dafac4","kind":"commit","published_at":"2022-06-10T18:48:06.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v0.6.1","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v0.6.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.6.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.6.1/manifests"},{"name":"v0.6.0","sha":"7b763a6e1ab1a9f792fc4b18f78036016ea20fd5","kind":"commit","published_at":"2022-06-10T16:18:12.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v0.6.0","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v0.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.6.0/manifests"},{"name":"v0.5.1","sha":"05b7ab4de650271873469ef087273c28d1cac4d7","kind":"commit","published_at":"2022-06-06T19:01:00.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v0.5.1","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v0.5.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.5.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.5.1/manifests"},{"name":"v0.5.1rc2","sha":"10ab4f9d179794c22a781e6fa72c0a57de6d4cac","kind":"commit","published_at":"2022-06-04T18:33:29.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v0.5.1rc2","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v0.5.1rc2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.5.1rc2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.5.1rc2/manifests"},{"name":"v0.5.1rc1","sha":"4d0c9f101309de49ae8f723488fb8c8247346ae7","kind":"commit","published_at":"2022-06-04T18:28:43.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v0.5.1rc1","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v0.5.1rc1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.5.1rc1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.5.1rc1/manifests"},{"name":"v0.5.0","sha":"a495ece800753d795fef311ebe8fea2f13e7ac68","kind":"commit","published_at":"2022-06-03T14:25:35.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v0.5.0","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v0.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.5.0/manifests"},{"name":"v0.4.2","sha":"dd2be1d19eeb0fbffbc36afe27bba7ba03fe97cf","kind":"commit","published_at":"2022-05-17T22:46:22.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v0.4.2","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v0.4.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.4.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.4.2/manifests"},{"name":"v0.4.1","sha":"f2deb98e0c6080afe7c045047074a10e18cc3cd6","kind":"commit","published_at":"2022-05-11T16:53:25.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v0.4.1","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v0.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.4.1/manifests"},{"name":"v0.4.0","sha":"457ddfab0356f71c8d790bb5cea66956a632fd0a","kind":"commit","published_at":"2022-05-10T21:06:15.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v0.4.0","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v0.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.4.0/manifests"},{"name":"v0.3.1","sha":"177e415a46fb16cc87fa1657067f8dead1eba384","kind":"commit","published_at":"2022-05-02T23:08:01.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v0.3.1","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v0.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.3.1/manifests"},{"name":"v0.3.0","sha":"3dfc786b27ad831546bb85c84420efdb96f064db","kind":"commit","published_at":"2022-05-02T23:04:48.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v0.3.0","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v0.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.3.0/manifests"},{"name":"v0.2.0","sha":"1af4b824e3bc36fbe8e400f77c224b1a939b639a","kind":"commit","published_at":"2022-04-30T06:16:43.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v0.2.0","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.2.0/manifests"},{"name":"v0.1.0","sha":"d3d463f65fb4b2c4ceb7e8446855e9b47dcd959f","kind":"commit","published_at":"2022-04-29T22:14:54.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v0.1.0","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.1.0/manifests"},{"name":"v0.0.1-pre.3","sha":"0fc52e3345e758db6119577fca05a75fa79f44c6","kind":"commit","published_at":"2022-04-28T22:46:28.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v0.0.1-pre.3","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v0.0.1-pre.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.0.1-pre.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.0.1-pre.3/manifests"},{"name":"v0.0.1-pre.1","sha":"7fb389549650eb0c52b090db6393bd44f60a3583","kind":"commit","published_at":"2022-01-18T19:36:39.000Z","download_url":"https://codeload.github.com/sigstore/sigstore-python/tar.gz/v0.0.1-pre.1","html_url":"https://github.com/sigstore/sigstore-python/releases/tag/v0.0.1-pre.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.0.1-pre.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sigstore%2Fsigstore-python/tags/v0.0.1-pre.1/manifests"}]},"repo_metadata_updated_at":"2025-06-06T06:34:14.763Z","dependent_packages_count":3,"downloads":94451,"downloads_period":"last-month","dependent_repos_count":9,"rankings":{"downloads":4.448464643751531,"dependent_repos_count":4.956183038226079,"dependent_packages_count":3.2732248313335557,"stargazers_count":5.207936316725943,"forks_count":6.278259770723174,"docker_downloads_count":null,"average":4.832813720152057},"purl":"pkg:pypi/sigstore","advisories":[{"uuid":"GSA_kwCzR0hTQS1oaGZnLWZ3cnctODd3N84ABCSW","url":"https://github.com/advisories/GHSA-hhfg-fwrw-87w7","title":"sigstore has insufficient validation of integration timestamp during verification","description":"### Summary\n\nVersions of sigstore-python newer than 2.0.0 but prior to 3.6.0 perform insufficient validation of the \"integration time\" present in \"v2\" and \"v3\" bundles during the verification flow: the \"integration time\" is verified *if* a source of signed time (such as an inclusion promise) is present, but is otherwise trusted if no source of signed time is present.\n\nThis does not affect \"v1\" bundles, as the \"v1\" bundle format always requires an inclusion promise.\n\n### Details\n\nSigstore uses signed time to support verification of signatures made against short-lived signing keys. \n\n### Impact\n\nThe impact and severity of this weakness is *low*, as Sigstore contains multiple other enforcing components that prevent an attacker who modifies the integration timestamp within a bundle from impersonating a valid signature. In particular, an attacker who modifies the integration timestamp can induce a Denial of Service, but in no different manner than already possible with bundle access (e.g. modifying the signature itself such that it fails to verify).\n\nSeparately, an attacker could upload a *new* entry to the transparency service, and substitute their new entry's time. However, this would still be rejected at validation time, as the new entry's (valid) signed time would be outside the validity window of the original signing certificate and would nonetheless render the attacker auditable.\n","origin":"UNSPECIFIED","severity":"LOW","published_at":"2024-12-11T18:42:00.000Z","withdrawn_at":null,"classification":"GENERAL","cvss_score":2.7,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N/E:U/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","references":["https://github.com/sigstore/sigstore-python/security/advisories/GHSA-hhfg-fwrw-87w7","https://nvd.nist.gov/vuln/detail/CVE-2024-55655","https://github.com/sigstore/sigstore-python/commit/300b502ae99ebfaace124f1f4e422a6a669369cf","https://github.com/sigstore/sigstore-python/releases/tag/v3.6.0","https://github.com/advisories/GHSA-hhfg-fwrw-87w7"],"source_kind":"github","identifiers":["GHSA-hhfg-fwrw-87w7","CVE-2024-55655"],"repository_url":"https://github.com/sigstore/sigstore-python","blast_radius":2.5764547754861775,"packages":[{"versions":[{"first_patched_version":"3.6.0","vulnerable_version_range":"\u003e= 2.0.0, \u003c 3.6.0"}],"ecosystem":"pypi","package_name":"sigstore"}],"created_at":"2024-12-11T19:08:07.634Z","updated_at":"2025-04-19T01:09:00.636Z","epss_percentage":0.00056,"epss_percentile":0.17553}],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/sigstore","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/pypi/sigstore","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/sigstore/dependencies","status":null,"funding_links":[],"critical":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/sigstore/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/sigstore/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/sigstore/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/sigstore/related_packages","maintainers":[{"uuid":"trailofbits","login":"trailofbits","name":null,"email":null,"url":null,"packages_count":32,"html_url":"https://pypi.org/user/trailofbits/","role":null,"created_at":"2023-01-06T17:18:02.805Z","updated_at":"2023-01-06T17:18:02.805Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/trailofbits/packages"},{"uuid":"di","login":"di","name":null,"email":null,"url":null,"packages_count":51,"html_url":"https://pypi.org/user/di/","role":null,"created_at":"2022-11-23T22:47:02.609Z","updated_at":"2022-11-23T22:47:02.609Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/di/packages"},{"uuid":"woodruffw","login":"woodruffw","name":null,"email":null,"url":null,"packages_count":26,"html_url":"https://pypi.org/user/woodruffw/","role":null,"created_at":"2022-11-23T22:47:02.622Z","updated_at":"2022-11-23T22:47:02.622Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/woodruffw/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":690329,"maintainers_count":292761,"namespaces_count":0,"keywords_count":228590,"github":"pypi","metadata":{"funded_packages_count":48950},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2025-06-06T05:32:09.692Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/namespaces"}},"unique_repositories_count":21,"unique_repositories_count_past_30_days":1,"recent_issues":[{"uuid":"4332904418","node_id":"PR_kwDOSJWqA87V0GnP","number":25,"state":"open","title":"chore(deps-dev): update sigstore requirement from \u003c4,\u003e=3.0 to \u003e=3.0,\u003c5 in /python","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-04-27T03:32:00.000Z","updated_at":"2026-05-02T23:00:12.821Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev): update","packages":[{"name":"sigstore","old_version":"\u003c4,\u003e=3.0","new_version":"\u003e=3.0,\u003c5","repository_url":"https://github.com/sigstore/sigstore-python"}],"path":"/python","ecosystem":"pip"},"body":"Updates the requirements on [sigstore](https://github.com/sigstore/sigstore-python) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sigstore/sigstore-python/releases\"\u003esigstore's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.2.0\u003c/h2\u003e\n\u003cp\u003eThis release fixes a minor security issue in OIDC authentication and a compatibility issue with Fulcio Signed Certificate Timestamps. All users are recommended to upgrade.\u003c/p\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd state validation to OIDC flow to prevent Cross-site request forgery\nduring OIDC authorization\n(\u003ca href=\"https://github.com/sigstore/sigstore-python/security/advisories/GHSA-hm8f-75xx-w2vr\"\u003eGHSA-hm8f-75xx-w2vr\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003everification now ensures that artifact digest documented in bundle and the real digest match\n(this is a bundle consistency check: bundle signature was always verified over real digest)\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1652\"\u003e#1652\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix issue with Signed Certificate Timestamp parsing where extensions\nwere not allowed by sigstore-python\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1657\"\u003e1657\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1659\"\u003e1659\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate supported public key algorithms\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1604\"\u003e#1604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etrust: Update embedded TUF root\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1589\"\u003e#1589\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved support for Python 3.9 as it is end-of-life\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1645\"\u003e#1645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoved unused nonce in Oauth flow\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1649\"\u003e#1649\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/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.2.0]\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd state validation to OIDC flow to prevent Cross-site request forgery\nduring OIDC authorization\n(\u003ca href=\"https://github.com/sigstore/sigstore-python/security/advisories/GHSA-hm8f-75xx-w2vr\"\u003eGHSA-hm8f-75xx-w2vr\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003everification now ensures that artifact digest documented in bundle and the real digest match\n(this is a bundle consistency check: bundle signature was always verified over real digest)\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1652\"\u003e#1652\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix issue with Signed Certificate Timestamp parsing where extensions\nwere not allowed by sigstore-python\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1657\"\u003e1657\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1659\"\u003e1659\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate supported public key algorithms\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1604\"\u003e#1604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etrust: Update embedded TUF root\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1589\"\u003e#1589\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved support for Python 3.9 as it is end-of-life\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1645\"\u003e#1645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoved unused nonce in Oauth flow\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1649\"\u003e#1649\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\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\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/94818e43224db2aed78f3cf066a561cf95982051\"\u003e\u003ccode\u003e94818e4\u003c/code\u003e\u003c/a\u003e Release 4.2 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1670\"\u003e#1670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/5e77497fe8f0b202bdd118949074ec2f20da69aa\"\u003e\u003ccode\u003e5e77497\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/ae9caa77cb3d7ba0d593a88e3d17ee41722f765f\"\u003e\u003ccode\u003eae9caa7\u003c/code\u003e\u003c/a\u003e build(deps-dev): update ruff requirement from \u0026lt;0.14.14 to \u0026lt;0.14.15 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1668\"\u003e#1668\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/b1e5095f07dc75122462309ad283882a10a617b9\"\u003e\u003ccode\u003eb1e5095\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/1669\"\u003e#1669\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/f5feace956ac11b4eae78090857bd0d7580855c2\"\u003e\u003ccode\u003ef5feace\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/1666\"\u003e#1666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/802f96b1d86ed620bb27adf00c924bbc04833d69\"\u003e\u003ccode\u003e802f96b\u003c/code\u003e\u003c/a\u003e build(deps): bump sigstore/sigstore-conformance from 0.0.24 to 0.0.25 in the ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/4ba9ca3d808b06b483e6ac241fe24f31f773202d\"\u003e\u003ccode\u003e4ba9ca3\u003c/code\u003e\u003c/a\u003e build(deps): bump pyasn1 from 0.6.1 to 0.6.2 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1662\"\u003e#1662\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/409fadb7fd1c6fb3465b2c0045a942c64c980a8a\"\u003e\u003ccode\u003e409fadb\u003c/code\u003e\u003c/a\u003e build(deps-dev): update ruff requirement from \u0026lt;0.14.13 to \u0026lt;0.14.14 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1663\"\u003e#1663\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/b1ef51c78b34dbd772ec2a2d8d07ad6a6b4d853d\"\u003e\u003ccode\u003eb1ef51c\u003c/code\u003e\u003c/a\u003e build(deps-dev): update ruff requirement from \u0026lt;0.14.12 to \u0026lt;0.14.13 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1658\"\u003e#1658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/e6cc009700fa2c36f742a04e4552123e4854238f\"\u003e\u003ccode\u003ee6cc009\u003c/code\u003e\u003c/a\u003e Include SCT extension in signature data (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1659\"\u003e#1659\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sigstore/sigstore-python/compare/v3.0.0...v4.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore 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/manav8498/Shadow/pull/25","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/manav8498%2FShadow/issues/25","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/25/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":"3914148277","node_id":"PR_kwDORLxCwM7CXeMg","number":1,"state":"open","title":"Bump sigstore from 3.6.6 to 4.2.0 in the pip group","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-09T02:34:25.000Z","updated_at":"2026-02-09T02:34:26.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"sigstore","old_version":"3.6.6","new_version":"4.2.0","repository_url":"https://github.com/sigstore/sigstore-python"}],"path":"the pip group","ecosystem":"pip"},"body":"Bumps the pip group with 1 update: [sigstore](https://github.com/sigstore/sigstore-python).\n\nUpdates `sigstore` from 3.6.6 to 4.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sigstore/sigstore-python/releases\"\u003esigstore's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.2.0\u003c/h2\u003e\n\u003cp\u003eThis release fixes a minor security issue in OIDC authentication and a compatibility issue with Fulcio Signed Certificate Timestamps. All users are recommended to upgrade.\u003c/p\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd state validation to OIDC flow to prevent Cross-site request forgery\nduring OIDC authorization\n(\u003ca href=\"https://github.com/sigstore/sigstore-python/security/advisories/GHSA-hm8f-75xx-w2vr\"\u003eGHSA-hm8f-75xx-w2vr\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003everification now ensures that artifact digest documented in bundle and the real digest match\n(this is a bundle consistency check: bundle signature was always verified over real digest)\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1652\"\u003e#1652\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix issue with Signed Certificate Timestamp parsing where extensions\nwere not allowed by sigstore-python\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1657\"\u003e1657\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1659\"\u003e1659\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate supported public key algorithms\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1604\"\u003e#1604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etrust: Update embedded TUF root\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1589\"\u003e#1589\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved support for Python 3.9 as it is end-of-life\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1645\"\u003e#1645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoved unused nonce in Oauth flow\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1649\"\u003e#1649\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\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\u003c!-- 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.2.0]\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd state validation to OIDC flow to prevent Cross-site request forgery\nduring OIDC authorization\n(\u003ca href=\"https://github.com/sigstore/sigstore-python/security/advisories/GHSA-hm8f-75xx-w2vr\"\u003eGHSA-hm8f-75xx-w2vr\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003everification now ensures that artifact digest documented in bundle and the real digest match\n(this is a bundle consistency check: bundle signature was always verified over real digest)\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1652\"\u003e#1652\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix issue with Signed Certificate Timestamp parsing where extensions\nwere not allowed by sigstore-python\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1657\"\u003e1657\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1659\"\u003e1659\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate supported public key algorithms\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1604\"\u003e#1604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etrust: Update embedded TUF root\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1589\"\u003e#1589\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved support for Python 3.9 as it is end-of-life\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1645\"\u003e#1645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoved unused nonce in Oauth flow\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1649\"\u003e#1649\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\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\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/94818e43224db2aed78f3cf066a561cf95982051\"\u003e\u003ccode\u003e94818e4\u003c/code\u003e\u003c/a\u003e Release 4.2 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1670\"\u003e#1670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/5e77497fe8f0b202bdd118949074ec2f20da69aa\"\u003e\u003ccode\u003e5e77497\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/ae9caa77cb3d7ba0d593a88e3d17ee41722f765f\"\u003e\u003ccode\u003eae9caa7\u003c/code\u003e\u003c/a\u003e build(deps-dev): update ruff requirement from \u0026lt;0.14.14 to \u0026lt;0.14.15 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1668\"\u003e#1668\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/b1e5095f07dc75122462309ad283882a10a617b9\"\u003e\u003ccode\u003eb1e5095\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/1669\"\u003e#1669\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/f5feace956ac11b4eae78090857bd0d7580855c2\"\u003e\u003ccode\u003ef5feace\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/1666\"\u003e#1666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/802f96b1d86ed620bb27adf00c924bbc04833d69\"\u003e\u003ccode\u003e802f96b\u003c/code\u003e\u003c/a\u003e build(deps): bump sigstore/sigstore-conformance from 0.0.24 to 0.0.25 in the ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/4ba9ca3d808b06b483e6ac241fe24f31f773202d\"\u003e\u003ccode\u003e4ba9ca3\u003c/code\u003e\u003c/a\u003e build(deps): bump pyasn1 from 0.6.1 to 0.6.2 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1662\"\u003e#1662\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/409fadb7fd1c6fb3465b2c0045a942c64c980a8a\"\u003e\u003ccode\u003e409fadb\u003c/code\u003e\u003c/a\u003e build(deps-dev): update ruff requirement from \u0026lt;0.14.13 to \u0026lt;0.14.14 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1663\"\u003e#1663\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/b1ef51c78b34dbd772ec2a2d8d07ad6a6b4d853d\"\u003e\u003ccode\u003eb1ef51c\u003c/code\u003e\u003c/a\u003e build(deps-dev): update ruff requirement from \u0026lt;0.14.12 to \u0026lt;0.14.13 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1658\"\u003e#1658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/e6cc009700fa2c36f742a04e4552123e4854238f\"\u003e\u003ccode\u003ee6cc009\u003c/code\u003e\u003c/a\u003e Include SCT extension in signature data (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1659\"\u003e#1659\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sigstore/sigstore-python/compare/v3.6.6...v4.2.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=sigstore\u0026package-manager=pip\u0026previous-version=3.6.6\u0026new-version=4.2.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 \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/srsoftwaredev015/release-tools_python/pull/1","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/srsoftwaredev015%2Frelease-tools_python/issues/1","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1/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":"3858024745","node_id":"PR_kwDOGj4sTc6_eOMg","number":2198,"state":"closed","title":"chore(deps): bump sigstore from 4.1.0 to 4.2.0 in /requirements","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-01-28T00:21:29.000Z","author_association":null,"state_reason":null,"created_at":"2026-01-26T22:56:04.000Z","updated_at":"2026-01-28T00:21:30.000Z","time_to_close":91525,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"sigstore","old_version":"4.1.0","new_version":"4.2.0","repository_url":"https://github.com/sigstore/sigstore-python"}],"path":"/requirements","ecosystem":"pip"},"body":"Bumps [sigstore](https://github.com/sigstore/sigstore-python) from 4.1.0 to 4.2.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sigstore/sigstore-python/releases\"\u003esigstore's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.2.0\u003c/h2\u003e\n\u003cp\u003eThis release fixes a minor security issue in OIDC authentication and a compatibility issue with Fulcio Signed Certificate Timestamps. All users are recommended to upgrade.\u003c/p\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd state validation to OIDC flow to prevent Cross-site request forgery\nduring OIDC authorization\n(\u003ca href=\"https://github.com/sigstore/sigstore-python/security/advisories/GHSA-hm8f-75xx-w2vr\"\u003eGHSA-hm8f-75xx-w2vr\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003everification now ensures that artifact digest documented in bundle and the real digest match\n(this is a bundle consistency check: bundle signature was always verified over real digest)\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1652\"\u003e#1652\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix issue with Signed Certificate Timestamp parsing where extensions\nwere not allowed by sigstore-python\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1657\"\u003e1657\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1659\"\u003e1659\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate supported public key algorithms\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1604\"\u003e#1604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etrust: Update embedded TUF root\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1589\"\u003e#1589\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved support for Python 3.9 as it is end-of-life\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1645\"\u003e#1645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoved unused nonce in Oauth flow\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1649\"\u003e#1649\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/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.2.0]\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd state validation to OIDC flow to prevent Cross-site request forgery\nduring OIDC authorization\n(\u003ca href=\"https://github.com/sigstore/sigstore-python/security/advisories/GHSA-hm8f-75xx-w2vr\"\u003eGHSA-hm8f-75xx-w2vr\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003everification now ensures that artifact digest documented in bundle and the real digest match\n(this is a bundle consistency check: bundle signature was always verified over real digest)\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1652\"\u003e#1652\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix issue with Signed Certificate Timestamp parsing where extensions\nwere not allowed by sigstore-python\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1657\"\u003e1657\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1659\"\u003e1659\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate supported public key algorithms\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1604\"\u003e#1604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etrust: Update embedded TUF root\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1589\"\u003e#1589\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved support for Python 3.9 as it is end-of-life\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1645\"\u003e#1645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoved unused nonce in Oauth flow\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1649\"\u003e#1649\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/sigstore/sigstore-python/commit/94818e43224db2aed78f3cf066a561cf95982051\"\u003e\u003ccode\u003e94818e4\u003c/code\u003e\u003c/a\u003e Release 4.2 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1670\"\u003e#1670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/5e77497fe8f0b202bdd118949074ec2f20da69aa\"\u003e\u003ccode\u003e5e77497\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/ae9caa77cb3d7ba0d593a88e3d17ee41722f765f\"\u003e\u003ccode\u003eae9caa7\u003c/code\u003e\u003c/a\u003e build(deps-dev): update ruff requirement from \u0026lt;0.14.14 to \u0026lt;0.14.15 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1668\"\u003e#1668\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/b1e5095f07dc75122462309ad283882a10a617b9\"\u003e\u003ccode\u003eb1e5095\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/1669\"\u003e#1669\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/f5feace956ac11b4eae78090857bd0d7580855c2\"\u003e\u003ccode\u003ef5feace\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/1666\"\u003e#1666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/802f96b1d86ed620bb27adf00c924bbc04833d69\"\u003e\u003ccode\u003e802f96b\u003c/code\u003e\u003c/a\u003e build(deps): bump sigstore/sigstore-conformance from 0.0.24 to 0.0.25 in the ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/4ba9ca3d808b06b483e6ac241fe24f31f773202d\"\u003e\u003ccode\u003e4ba9ca3\u003c/code\u003e\u003c/a\u003e build(deps): bump pyasn1 from 0.6.1 to 0.6.2 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1662\"\u003e#1662\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/409fadb7fd1c6fb3465b2c0045a942c64c980a8a\"\u003e\u003ccode\u003e409fadb\u003c/code\u003e\u003c/a\u003e build(deps-dev): update ruff requirement from \u0026lt;0.14.13 to \u0026lt;0.14.14 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1663\"\u003e#1663\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/b1ef51c78b34dbd772ec2a2d8d07ad6a6b4d853d\"\u003e\u003ccode\u003eb1ef51c\u003c/code\u003e\u003c/a\u003e build(deps-dev): update ruff requirement from \u0026lt;0.14.12 to \u0026lt;0.14.13 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1658\"\u003e#1658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/e6cc009700fa2c36f742a04e4552123e4854238f\"\u003e\u003ccode\u003ee6cc009\u003c/code\u003e\u003c/a\u003e Include SCT extension in signature data (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1659\"\u003e#1659\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sigstore/sigstore-python/compare/v4.1.0...v4.2.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=sigstore\u0026package-manager=pip\u0026previous-version=4.1.0\u0026new-version=4.2.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)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/mikeyhodl/warehouse/network/alerts).\n\n\u003c/details\u003e","html_url":"https://github.com/mikeyhodl/warehouse/pull/2198","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikeyhodl%2Fwarehouse/issues/2198","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2198/packages"},{"uuid":"3857769585","node_id":"PR_kwDOBAUWrs6_dWxs","number":338,"state":"open","title":"Bump sigstore from 3.6.5 to 4.2.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":["ezio-melotti"],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-26T21:36:43.000Z","updated_at":"2026-01-26T22:07:40.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"sigstore","old_version":"3.6.5","new_version":"4.2.0","repository_url":"https://github.com/sigstore/sigstore-python"}],"path":null,"ecosystem":"pip"},"body":"Bumps [sigstore](https://github.com/sigstore/sigstore-python) from 3.6.5 to 4.2.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sigstore/sigstore-python/releases\"\u003esigstore's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.2.0\u003c/h2\u003e\n\u003cp\u003eThis release fixes a minor security issue in OIDC authentication and a compatibility issue with Fulcio Signed Certificate Timestamps. All users are recommended to upgrade.\u003c/p\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd state validation to OIDC flow to prevent Cross-site request forgery\nduring OIDC authorization\n(\u003ca href=\"https://github.com/sigstore/sigstore-python/security/advisories/GHSA-hm8f-75xx-w2vr\"\u003eGHSA-hm8f-75xx-w2vr\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003everification now ensures that artifact digest documented in bundle and the real digest match\n(this is a bundle consistency check: bundle signature was always verified over real digest)\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1652\"\u003e#1652\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix issue with Signed Certificate Timestamp parsing where extensions\nwere not allowed by sigstore-python\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1657\"\u003e1657\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1659\"\u003e1659\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate supported public key algorithms\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1604\"\u003e#1604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etrust: Update embedded TUF root\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1589\"\u003e#1589\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved support for Python 3.9 as it is end-of-life\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1645\"\u003e#1645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoved unused nonce in Oauth flow\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1649\"\u003e#1649\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\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\u003c!-- 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.2.0]\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd state validation to OIDC flow to prevent Cross-site request forgery\nduring OIDC authorization\n(\u003ca href=\"https://github.com/sigstore/sigstore-python/security/advisories/GHSA-hm8f-75xx-w2vr\"\u003eGHSA-hm8f-75xx-w2vr\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003everification now ensures that artifact digest documented in bundle and the real digest match\n(this is a bundle consistency check: bundle signature was always verified over real digest)\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1652\"\u003e#1652\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix issue with Signed Certificate Timestamp parsing where extensions\nwere not allowed by sigstore-python\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1657\"\u003e1657\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1659\"\u003e1659\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate supported public key algorithms\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1604\"\u003e#1604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etrust: Update embedded TUF root\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1589\"\u003e#1589\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved support for Python 3.9 as it is end-of-life\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1645\"\u003e#1645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoved unused nonce in Oauth flow\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1649\"\u003e#1649\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\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\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/94818e43224db2aed78f3cf066a561cf95982051\"\u003e\u003ccode\u003e94818e4\u003c/code\u003e\u003c/a\u003e Release 4.2 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1670\"\u003e#1670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/5e77497fe8f0b202bdd118949074ec2f20da69aa\"\u003e\u003ccode\u003e5e77497\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/ae9caa77cb3d7ba0d593a88e3d17ee41722f765f\"\u003e\u003ccode\u003eae9caa7\u003c/code\u003e\u003c/a\u003e build(deps-dev): update ruff requirement from \u0026lt;0.14.14 to \u0026lt;0.14.15 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1668\"\u003e#1668\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/b1e5095f07dc75122462309ad283882a10a617b9\"\u003e\u003ccode\u003eb1e5095\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/1669\"\u003e#1669\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/f5feace956ac11b4eae78090857bd0d7580855c2\"\u003e\u003ccode\u003ef5feace\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/1666\"\u003e#1666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/802f96b1d86ed620bb27adf00c924bbc04833d69\"\u003e\u003ccode\u003e802f96b\u003c/code\u003e\u003c/a\u003e build(deps): bump sigstore/sigstore-conformance from 0.0.24 to 0.0.25 in the ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/4ba9ca3d808b06b483e6ac241fe24f31f773202d\"\u003e\u003ccode\u003e4ba9ca3\u003c/code\u003e\u003c/a\u003e build(deps): bump pyasn1 from 0.6.1 to 0.6.2 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1662\"\u003e#1662\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/409fadb7fd1c6fb3465b2c0045a942c64c980a8a\"\u003e\u003ccode\u003e409fadb\u003c/code\u003e\u003c/a\u003e build(deps-dev): update ruff requirement from \u0026lt;0.14.13 to \u0026lt;0.14.14 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1663\"\u003e#1663\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/b1ef51c78b34dbd772ec2a2d8d07ad6a6b4d853d\"\u003e\u003ccode\u003eb1ef51c\u003c/code\u003e\u003c/a\u003e build(deps-dev): update ruff requirement from \u0026lt;0.14.12 to \u0026lt;0.14.13 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1658\"\u003e#1658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/e6cc009700fa2c36f742a04e4552123e4854238f\"\u003e\u003ccode\u003ee6cc009\u003c/code\u003e\u003c/a\u003e Include SCT extension in signature data (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1659\"\u003e#1659\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sigstore/sigstore-python/compare/v3.6.5...v4.2.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=sigstore\u0026package-manager=pip\u0026previous-version=3.6.5\u0026new-version=4.2.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)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/python/release-tools/network/alerts).\n\n\u003c/details\u003e","html_url":"https://github.com/python/release-tools/pull/338","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/python%2Frelease-tools/issues/338","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/338/packages"},{"uuid":"3808350731","node_id":"PR_kwDOIPxgHc6853KS","number":85,"state":"closed","title":"build(deps): bump the python-deps group across 1 directory with 24 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-01-15T10:41:32.000Z","author_association":null,"state_reason":null,"created_at":"2026-01-13T11:07:19.000Z","updated_at":"2026-01-15T10:41:34.000Z","time_to_close":171253,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python-deps","update_count":24,"packages":[{"name":"redis","old_version":"6.4.0","new_version":"7.1.0","repository_url":"https://github.com/redis/redis-py"},{"name":"dynaconf","old_version":"3.2.11","new_version":"3.2.12","repository_url":"https://github.com/dynaconf/dynaconf"},{"name":"securesystemslib","old_version":"1.3.0","new_version":"1.3.1","repository_url":"https://github.com/secure-systems-lab/securesystemslib"},{"name":"sqlalchemy","old_version":"2.0.43","new_version":"2.0.45","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"psycopg2","old_version":"2.9.10","new_version":"2.9.11","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"alembic","old_version":"1.16.4","new_version":"1.18.0","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"pydantic","old_version":"2.11.7","new_version":"2.12.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"celery","old_version":"5.5.3","new_version":"5.6.2","repository_url":"https://github.com/celery/celery"},{"name":"boto3","old_version":"1.40.16","new_version":"1.42.26","repository_url":"https://github.com/boto/boto3"},{"name":"awswrangler","old_version":"3.12.1","new_version":"3.14.0","repository_url":"https://github.com/aws/aws-sdk-pandas"},{"name":"sigstore","old_version":"3.6.5","new_version":"4.1.0","repository_url":"https://github.com/sigstore/sigstore-python"},{"name":"google-cloud-kms","old_version":"3.5.1","new_version":"3.7.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"tox","old_version":"4.28.4","new_version":"4.34.1","repository_url":"https://github.com/tox-dev/tox"},{"name":"coverage","old_version":"7.10.5","new_version":"7.13.1","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"black","old_version":"25.1.0","new_version":"25.12.0","repository_url":"https://github.com/psf/black"},{"name":"isort","old_version":"6.0.1","new_version":"7.0.0","repository_url":"https://github.com/PyCQA/isort"},{"name":"mypy","old_version":"1.17.1","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"pytest","old_version":"8.4.1","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"6.2.1","new_version":"7.0.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"sphinx-rtd-theme","old_version":"3.0.2","new_version":"3.1.0","repository_url":"https://github.com/readthedocs/sphinx_rtd_theme"},{"name":"sphinxcontrib-plantuml","old_version":"0.30","new_version":"0.31","repository_url":"https://github.com/sphinx-contrib/plantuml"},{"name":"pre-commit","old_version":"4.3.0","new_version":"4.5.1","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"bandit","old_version":"1.8.6","new_version":"1.9.2","repository_url":"https://github.com/PyCQA/bandit"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-deps group with 23 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [redis](https://github.com/redis/redis-py) | `6.4.0` | `7.1.0` |\n| [dynaconf](https://github.com/dynaconf/dynaconf) | `3.2.11` | `3.2.12` |\n| [securesystemslib](https://github.com/secure-systems-lab/securesystemslib) | `1.3.0` | `1.3.1` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.43` | `2.0.45` |\n| [psycopg2](https://github.com/psycopg/psycopg2) | `2.9.10` | `2.9.11` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.16.4` | `1.18.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.7` | `2.12.5` |\n| [celery](https://github.com/celery/celery) | `5.5.3` | `5.6.2` |\n| [boto3](https://github.com/boto/boto3) | `1.40.16` | `1.42.26` |\n| [awswrangler](https://github.com/aws/aws-sdk-pandas) | `3.12.1` | `3.14.0` |\n| [sigstore](https://github.com/sigstore/sigstore-python) | `3.6.5` | `4.1.0` |\n| [google-cloud-kms](https://github.com/googleapis/google-cloud-python) | `3.5.1` | `3.7.0` |\n| [tox](https://github.com/tox-dev/tox) | `4.28.4` | `4.34.1` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.10.5` | `7.13.1` |\n| [black](https://github.com/psf/black) | `25.1.0` | `25.12.0` |\n| [isort](https://github.com/PyCQA/isort) | `6.0.1` | `7.0.0` |\n| [mypy](https://github.com/python/mypy) | `1.17.1` | `1.19.1` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.1` | `9.0.2` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `6.2.1` | `7.0.0` |\n| [sphinx-rtd-theme](https://github.com/readthedocs/sphinx_rtd_theme) | `3.0.2` | `3.1.0` |\n| [sphinxcontrib-plantuml](https://github.com/sphinx-contrib/plantuml) | `0.30` | `0.31` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.3.0` | `4.5.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.8.6` | `1.9.2` |\n\n\nUpdates `redis` from 6.4.0 to 7.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/redis-py/releases\"\u003eredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003ch2\u003e🚀 New Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdding MSETEX command support. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3823\"\u003e#3823\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdding CLAIM option to XREADGROUP command + unit tests (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3825\"\u003e#3825\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eApply routing and response aggregation policies in OSS Cluster mode (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3834\"\u003e#3834\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧪 Experimental Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdding support for CAS/CAD commands. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3837\"\u003e#3837\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdding support for HYBRID search. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3813\"\u003e#3813\u003c/a\u003e \u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3843\"\u003e#3843\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🔥 Breaking changes (in experimental features)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eReplace default health check and failure detector with custom (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3822\"\u003e#3822\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd **options to parse functions for sentinel (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3831\"\u003e#3831\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eGenerating unique command cache key (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3765\"\u003e#3765\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧰 Maintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdding Redis 8.4 RC1 image to test matrix. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3820\"\u003e#3820\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove Python 3.9 support. Add Python 3.14 support. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3814\"\u003e#3814\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSync readme with 7.0.1 and update lib version to latest stable released version - 7.0.1 (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3821\"\u003e#3821\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump rojopolis/spellcheck-github-actions from 0.52.0 to 0.53.0 (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3827\"\u003e#3827\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact from 4 to 5 (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3828\"\u003e#3828\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump github/codeql-action from 3 to 4 (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3829\"\u003e#3829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixing flaky tests (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3833\"\u003e#3833\u003c/a\u003e \u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3838\"\u003e#3838\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate 8.4 RC image tag to 8.4-RC1-pre.2 for pipeline test matrix (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3832\"\u003e#3832\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing f-string when returning an error. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3841\"\u003e#3841\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdding latest 8.4 image to test matrix. Updating the Hybrid VSIM query format to be in sync with spec after srv issue was fixed. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3843\"\u003e#3843\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpand cluster READ_COMMANDS with additional read-only commands and reorganize the list of commands by category (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3845\"\u003e#3845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Type Hints for List Command Parameters from str to KeyT (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3848\"\u003e#3848\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanging log level to be debug for failed maintenance notification enablement when enabled='auto' (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3851\"\u003e#3851\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded custom event handler section (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3853\"\u003e#3853\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanging current version to 8.4 as it is already GA (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3854\"\u003e#3854\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWe'd like to thank all the contributors who worked on this release!\n\u003ca href=\"https://github.com/ShubhamKaudewar\"\u003e\u003ccode\u003e@​ShubhamKaudewar\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/matthewwiese\"\u003e\u003ccode\u003e@​matthewwiese\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/peperon\"\u003e\u003ccode\u003e@​peperon\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/vladvildanov\"\u003e\u003ccode\u003e@​vladvildanov\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/petyaslavova\"\u003e\u003ccode\u003e@​petyaslavova\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.0.1\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003cp\u003eThis release adds small fixes related to documentation.\u003c/p\u003e\n\u003ch2\u003e🧰 Maintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd 'multi_database' section to documentation index (313d93f)\u003c/li\u003e\n\u003cli\u003eRevised multi-database client documentation(78df745)\u003c/li\u003e\n\u003cli\u003eAdding info about Multi-database client in README.md (3f7a55e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/f7c1755d732a677e0eb05e74e46520115c087153\"\u003e\u003ccode\u003ef7c1755\u003c/code\u003e\u003c/a\u003e Changing current version to 8.4 as it is already GA (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3854\"\u003e#3854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/2235cc76d59a009d546e773d959261503ec3568e\"\u003e\u003ccode\u003e2235cc7\u003c/code\u003e\u003c/a\u003e Added custom event handler section (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3853\"\u003e#3853\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/8cc50a5bc9cb972354e17fd9cd8b8542a6f1e4f5\"\u003e\u003ccode\u003e8cc50a5\u003c/code\u003e\u003c/a\u003e Changing log level to be debug for failed maintenance notification enablement...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/d1769a2e2b66c7cd0067358db10db1cc26b2967a\"\u003e\u003ccode\u003ed1769a2\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3612\"\u003e#3612\u003c/a\u003e Generating unique command cache key (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3765\"\u003e#3765\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/b49dce1ff0f38c38a5fb89b3f332e84eae8186cb\"\u003e\u003ccode\u003eb49dce1\u003c/code\u003e\u003c/a\u003e Update Type Hints for List Command Parameters from str to KeyT (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3848\"\u003e#3848\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/46ff0426550d65e51c7686fa0e12e8954d5d1bcd\"\u003e\u003ccode\u003e46ff042\u003c/code\u003e\u003c/a\u003e Expand cluster READ_COMMANDS with additional read-only commands and reorganiz...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/dc476754600e480dd29a16a2290db5a442114b33\"\u003e\u003ccode\u003edc47675\u003c/code\u003e\u003c/a\u003e Updating lib version to 7.1.0 and added note in README that Python 3.9 suppor...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/f026c1e66be68dc18d89e60bd54c5032bd927680\"\u003e\u003ccode\u003ef026c1e\u003c/code\u003e\u003c/a\u003e Adding latest 8.4 image to test matrix. Updating the Hybrid VSIM query format...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/a5ab18fb76522cb1341c81e0032d29df87c85013\"\u003e\u003ccode\u003ea5ab18f\u003c/code\u003e\u003c/a\u003e Adding support for HYBRID search. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3813\"\u003e#3813\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/e6fb50506967dbdd6e8c334190c32651ebea1506\"\u003e\u003ccode\u003ee6fb505\u003c/code\u003e\u003c/a\u003e Adding support for CAS/CAD commands. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3837\"\u003e#3837\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/redis/redis-py/compare/v6.4.0...v7.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `dynaconf` from 3.2.11 to 3.2.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dynaconf/dynaconf/releases\"\u003edynaconf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.2.12\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eIncremental improvment to access performance by \u003ca href=\"https://github.com/pedro-psb\"\u003e\u003ccode\u003e@​pedro-psb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/pull/1304\"\u003edynaconf/dynaconf#1304\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: get method to return Any type. by \u003ca href=\"https://github.com/rochacbruno\"\u003e\u003ccode\u003e@​rochacbruno\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/pull/1314\"\u003edynaconf/dynaconf#1314\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eperf: add lru caching to \u003ccode\u003efind_the_correct_casing\u003c/code\u003e function by \u003ca href=\"https://github.com/pedro-psb\"\u003e\u003ccode\u003e@​pedro-psb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/pull/1326\"\u003edynaconf/dynaconf#1326\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/dynaconf/dynaconf/compare/3.2.11...3.2.12\"\u003ehttps://github.com/dynaconf/dynaconf/compare/3.2.11...3.2.12\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dynaconf/dynaconf/blob/3.2.12/CHANGELOG.md\"\u003edynaconf's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pedro-psb/dynaconf/releases/tag/3.2.12\"\u003e3.2.12\u003c/a\u003e - 2025-10-10\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eget method to return Any type.. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003eremove unnecessary recursive evaluation call on Settings.get. \u003cem\u003eBy Pedro Brochado\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003eimprove performance of settings access in a loop (part 1). \u003cem\u003eBy Pedro Brochado\u003c/em\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/dynaconf/dynaconf/commit/7606f351ac460b15c56e7a538300de4a501c56e7\"\u003e\u003ccode\u003e7606f35\u003c/code\u003e\u003c/a\u003e Release version 3.2.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/da44e5182940299dd90ca3e2a0e0e3c23cb9ebf7\"\u003e\u003ccode\u003eda44e51\u003c/code\u003e\u003c/a\u003e perf: add lru caching to \u003ccode\u003efind_the_correct_casing\u003c/code\u003e function (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1326\"\u003e#1326\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/b75eda0da141bdc29f707f2cb0c29e06b03a72bb\"\u003e\u003ccode\u003eb75eda0\u003c/code\u003e\u003c/a\u003e fix: get method to return Any type.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/4f3df1a47bcb71feddf7565f603e7994c65ede65\"\u003e\u003ccode\u003e4f3df1a\u003c/code\u003e\u003c/a\u003e misc: add some profile/perf scripts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/420acebf64e77ba475df94dfd7d409207e5e239d\"\u003e\u003ccode\u003e420aceb\u003c/code\u003e\u003c/a\u003e refactor: merge \u003cem\u003esafe\u003c/em\u003e{get,copy} into .get and .copy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/18c0c8422dc9651d57c76d1b098ad6fb3f75c09d\"\u003e\u003ccode\u003e18c0c84\u003c/code\u003e\u003c/a\u003e fix: remove unnecessary recursive evaluation call on Settings.get\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/0fde96f2e0b71309e63800ddac8eceda062155a9\"\u003e\u003ccode\u003e0fde96f\u003c/code\u003e\u003c/a\u003e refactor: rewrite decorator as explicit call\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/52efd9ed78d2187550e03a2ae5008661d5e28df9\"\u003e\u003ccode\u003e52efd9e\u003c/code\u003e\u003c/a\u003e Bump to version 3.2.12-dev0\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/dynaconf/dynaconf/compare/3.2.11...3.2.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `securesystemslib` from 1.3.0 to 1.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/releases\"\u003esecuresystemslib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.3.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/blob/v1.3.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e for details.\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/secure-systems-lab/securesystemslib/blob/main/CHANGELOG.md\"\u003esecuresystemslib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003esecuresystemslib v1.3.1\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAWSSigner: Don't send payload to AWS for signing, send hash only (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1026\"\u003e#1026\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSet Development status classifier to \u0026quot;production/stable\u0026quot; in Python\npackaging (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1030\"\u003e#1030\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternals\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMinor infrastructure changes (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1005\"\u003e#1005\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1013\"\u003e#1013\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/secure-systems-lab/securesystemslib/commit/6f774190b90f0aa9d5d7e077680adbaa29c5cd6c\"\u003e\u003ccode\u003e6f77419\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1030\"\u003e#1030\u003c/a\u003e from jku/release-prep-1.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/b71cc5271a9a7b6898c79c1a12393d90996d5388\"\u003e\u003ccode\u003eb71cc52\u003c/code\u003e\u003c/a\u003e Prepare release 1.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/f6835096a845acf25dc3675105937be2565b9e66\"\u003e\u003ccode\u003ef683509\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1026\"\u003e#1026\u003c/a\u003e from ArkadiuszNitkaSWI/fix-aws-signer\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/97527198c7bf5b75ef9fb8996412df5453995080\"\u003e\u003ccode\u003e9752719\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1027\"\u003e#1027\u003c/a\u003e from secure-systems-lab/dependabot/pip/test-and-lint...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/4226b762bf3333b5947af9cf29ed751afbfd69b9\"\u003e\u003ccode\u003e4226b76\u003c/code\u003e\u003c/a\u003e build(deps): bump the test-and-lint-dependencies group with 4 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/6394e3e467c091a06ee95dad674dec7e991758c8\"\u003e\u003ccode\u003e6394e3e\u003c/code\u003e\u003c/a\u003e Review changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/dee9a831390c9a69c0e66f7c34779e9eea6dcc6d\"\u003e\u003ccode\u003edee9a83\u003c/code\u003e\u003c/a\u003e linter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/07b0fc780d9d1f4c0843ce3e2096e1216814bd06\"\u003e\u003ccode\u003e07b0fc7\u003c/code\u003e\u003c/a\u003e update .gitignore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/e8158a4eb131760714290b9839e3e40f9cd4229c\"\u003e\u003ccode\u003ee8158a4\u003c/code\u003e\u003c/a\u003e Fix AWS signer, allow messages bigger than 4kB\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/e23f855ddecb97d4baddffc068e9591451b9aa72\"\u003e\u003ccode\u003ee23f855\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1023\"\u003e#1023\u003c/a\u003e from secure-systems-lab/dependabot/pip/dependencies-...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/compare/v1.3.0...v1.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlalchemy` from 2.0.43 to 2.0.45\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/releases\"\u003esqlalchemy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.0.45\u003c/h1\u003e\n\u003cp\u003eReleased: December 9, 2025\u003c/p\u003e\n\u003ch2\u003eorm\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed issue where calling \u003ccode\u003eMapper.add_property()\u003c/code\u003e within mapper event\nhooks such as \u003ccode\u003eMapperEvents.instrument_class()\u003c/code\u003e,\n\u003ccode\u003eMapperEvents.after_mapper_constructed()\u003c/code\u003e, or\n\u003ccode\u003eMapperEvents.before_mapper_configured()\u003c/code\u003e would raise an\n\u003ccode\u003eAttributeError\u003c/code\u003e because the mapper's internal property collections were\nnot yet initialized. The \u003ccode\u003eMapper.add_property()\u003c/code\u003e method now handles\nearly-stage property additions correctly, allowing properties including\ncolumn properties, deferred columns, and relationships to be added during\nmapper initialization events.  Pull request courtesy G Allajmi.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12858\"\u003e#12858\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed issue in Python 3.14 where dataclass transformation would fail when\na mapped class using \u003ccode\u003eMappedAsDataclass\u003c/code\u003e included a\n\u003ccode\u003erelationship()\u003c/code\u003e referencing a class that was not available at\nruntime (e.g., within a \u003ccode\u003eTYPE_CHECKING\u003c/code\u003e block). This occurred when using\nPython 3.14's \u003ca href=\"https://peps.python.org/pep-0649\"\u003ePEP 649\u003c/a\u003e deferred annotations feature, which is the\ndefault behavior without a \u003ccode\u003efrom __future__ import annotations\u003c/code\u003e\ndirective.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12952\"\u003e#12952\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eexamples\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e[examples] [bug]\u003c/strong\u003e Fixed the \u0026quot;short_selects\u0026quot; performance example where the cache was being\nused in all the examples, making it impossible to compare performance with\nand without the cache.   Less important comparisons like \u0026quot;lambdas\u0026quot; and\n\u0026quot;baked queries\u0026quot; have been removed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003esql\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[sql] [bug]\u003c/strong\u003e Some improvements to the \u003ccode\u003e_sql.ClauseElement.params()\u003c/code\u003e method to\nreplace bound parameters in a query were made, however the ultimate issue\nin \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12915\"\u003e#12915\u003c/a\u003e involving ORM \u003ccode\u003e_orm.aliased()\u003c/code\u003e cannot be fixed fully\nuntil 2.1, where the method is being rewritten to work without relying on\nCore cloned traversal.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12915\"\u003e#12915\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[sql] [bug]\u003c/strong\u003e Fixed issue where using the \u003ccode\u003eColumnOperators.in_()\u003c/code\u003e operator with a\nnested \u003ccode\u003eCompoundSelect\u003c/code\u003e statement (e.g. an \u003ccode\u003eINTERSECT\u003c/code\u003e of\n\u003ccode\u003eUNION\u003c/code\u003e queries) would raise a \u003ccode\u003eNotImplementedError\u003c/code\u003e when the\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psycopg2` from 2.9.10 to 2.9.11\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psycopg/psycopg2/blob/master/NEWS\"\u003epsycopg2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eCurrent release\u003c/h2\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.11\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eAvoid a segfault passing more arguments than placeholders if Python is built\nwith assertions enabled (:ticket:\u003ccode\u003e[#1791](https://github.com/psycopg/psycopg2/issues/1791)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eAdd riscv64 platform binary packages (:ticket:\u003ccode\u003e[#1813](https://github.com/psycopg/psycopg2/issues/1813)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e~psycopg2.errorcodes\u003c/code\u003e map and \u003ccode\u003e~psycopg2.errors\u003c/code\u003e classes updated to\nPostgreSQL 18.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.8.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.10\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.13.\u003c/li\u003e\n\u003cli\u003eReceive notifications on commit (:ticket:\u003ccode\u003e[#1728](https://github.com/psycopg/psycopg2/issues/1728)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e~psycopg2.errorcodes\u003c/code\u003e map and \u003ccode\u003e~psycopg2.errors\u003c/code\u003e classes updated to\nPostgreSQL 17.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.7.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.9\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.12.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.6.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.8\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWheel package bundled with PostgreSQL 16 libpq in order to add support for\nrecent features, such as \u003ccode\u003esslcertmode\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.7\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix propagation of exceptions raised during module initialization\n(:ticket:\u003ccode\u003e[#1598](https://github.com/psycopg/psycopg2/issues/1598)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix building when pg_config returns an empty string (:ticket:\u003ccode\u003e[#1599](https://github.com/psycopg/psycopg2/issues/1599)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eWheel package bundled with OpenSSL 1.1.1v.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.6\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/psycopg/psycopg2/commit/fd9ae8cad2bcfc3e7e9410e7b6f07cda8f4f05ec\"\u003e\u003ccode\u003efd9ae8c\u003c/code\u003e\u003c/a\u003e chore: bump to version 2.9.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/d923840546942534f0956d9202f914fd9feac5fd\"\u003e\u003ccode\u003ed923840\u003c/code\u003e\u003c/a\u003e chore: update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/d42dc7169d3cd93517e282e9ef5dc2a2b40650a2\"\u003e\u003ccode\u003ed42dc71\u003c/code\u003e\u003c/a\u003e Merge branch 'fix-1791'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/4fde6560c32f06ad1304404c9f7f86148dcc4be0\"\u003e\u003ccode\u003e4fde656\u003c/code\u003e\u003c/a\u003e fix: avoid failed assert passing more arguments than placeholders\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/8308c19d6af0d904b313997539ed33415990a74e\"\u003e\u003ccode\u003e8308c19\u003c/code\u003e\u003c/a\u003e fix: drop warning about the use of deprecated PyWeakref_GetObject function\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/1a1eabf098a3374409bb2ab4b594777b900f396d\"\u003e\u003ccode\u003e1a1eabf\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/github-script from 7 to 8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/897af8b38beda851d7257dfc525129e37c0ec9e0\"\u003e\u003ccode\u003e897af8b\u003c/code\u003e\u003c/a\u003e build(deps): bump peter-evans/repository-dispatch from 3 to 4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/ceefd305117113ca10e383a626e87ba0796f3638\"\u003e\u003ccode\u003eceefd30\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/checkout from 4 to 5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/4dc585430cabe94cee96c5a9de0265d0f55370f1\"\u003e\u003ccode\u003e4dc5854\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/setup-python from 5 to 6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/1945788dcf6172bb1b9328ebc3587ccf0e6a659c\"\u003e\u003ccode\u003e1945788\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg2/issues/1802\"\u003e#1802\u003c/a\u003e from edgarrmondragon/cp314-wheels\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psycopg/psycopg2/compare/2.9.10...2.9.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `alembic` from 1.16.4 to 1.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/alembic/releases\"\u003ealembic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.18.0\u003c/h1\u003e\n\u003cp\u003eReleased: January 9, 2026\u003c/p\u003e\n\u003ch2\u003efeature\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[feature] [operations]\u003c/strong\u003e When alembic is run in \u0026quot;verbose\u0026quot; mode, alembic now logs a message to\nindicate from which file is used to load the configuration.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1737\"\u003e#1737\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[feature] [autogenerate]\u003c/strong\u003e Autogenerate reflection sweeps now use the \u0026quot;bulk\u0026quot; inspector methods\nintroduced in SQLAlchemy 2.0, which for selected dialects including\nPostgreSQL and Oracle use batched queries to reflect whole collections of\ntables using O(1) queries rather than O(N).\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1771\"\u003e#1771\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[feature] [autogenerate]\u003c/strong\u003e Release 1.18.0 introduces a plugin system that allows for automatic\nloading of third-party extensions as well as configurable autogenerate\ncompare functionality on a per-environment basis.\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003ePlugin\u003c/code\u003e class provides a common interface for extensions that\nregister handlers among Alembic's existing extension points such as\n\u003ccode\u003eOperations.register_operation()\u003c/code\u003e and\n\u003ccode\u003eOperations.implementation_for()\u003c/code\u003e. A new interface for registering\nautogenerate comparison handlers,\n\u003ccode\u003ePlugin.add_autogenerate_comparator()\u003c/code\u003e, provides for autogenerate\ncompare functionality that may be custom-configured on a per-environment\nbasis using the new\n\u003ccode\u003eEnvironmentContext.configure.autogenerate_plugins\u003c/code\u003e parameter.\u003c/p\u003e\n\u003cp\u003eThe change does not impact well known Alembic add-ons such as\n\u003ccode\u003ealembic-utils\u003c/code\u003e, which continue to work as before; however, such add-ons\nhave the option to provide plugin entrypoints going forward.\u003c/p\u003e\n\u003cp\u003eAs part of this change, Alembic's autogenerate compare functionality is\nreorganized into a series of internal plugins under the\n\u003ccode\u003ealembic.autogenerate\u003c/code\u003e namespace, which may be individually or\ncollectively identified for inclusion and/or exclusion within the\n\u003ccode\u003eEnvironmentContext.configure()\u003c/code\u003e call using a new parameter\n\u003ccode\u003eEnvironmentContext.configure.autogenerate_plugins\u003c/code\u003e. This\nparameter is also where third party comparison plugins may also be\nindicated.\u003c/p\u003e\n\u003cp\u003eSee \u003ccode\u003ealembic.plugins.toplevel\u003c/code\u003e for complete documentation on\nthe new \u003ccode\u003ePlugin\u003c/code\u003e class as well as autogenerate-specific usage\ninstructions.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/alembic/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.11.7 to 2.12.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.12.5 2025-11-26\u003c/h2\u003e\n\u003ch2\u003ev2.12.5 (2025-11-26)\u003c/h2\u003e\n\u003cp\u003eThis is the fifth 2.12 patch release, addressing an issue with the \u003ccode\u003eMISSING\u003c/code\u003e sentinel and providing several documentation improvements.\u003c/p\u003e\n\u003cp\u003eThe next 2.13 minor release will be published in a couple weeks, and will include a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature addressing\nthe remaining unexpected changes to the \u003cem\u003eserialize as any\u003c/em\u003e behavior.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix pickle error when using \u003ccode\u003emodel_construct()\u003c/code\u003e on a model with \u003ccode\u003eMISSING\u003c/code\u003e as a default value by \u003ca href=\"https://github.com/ornariece\"\u003e\u003ccode\u003e@​ornariece\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12522\"\u003e#12522\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSeveral updates to the documentation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.4...v2.12.5\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.12.4...v2.12.5\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.12.4 2025-11-05\u003c/h2\u003e\n\u003ch2\u003ev2.12.4 (2025-11-05)\u003c/h2\u003e\n\u003cp\u003eThis is the fourth 2.12 patch release, fixing more regressions, and reverting a change in the \u003ccode\u003ebuild()\u003c/code\u003e method\nof the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis patch release also fixes an issue with the serialization of IP address types, when \u003ccode\u003eserialize_as_any\u003c/code\u003e is used. The next patch release\nwill try to address the remaining issues with \u003cem\u003eserialize as any\u003c/em\u003e behavior by introducing a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature, that\nshould be used in most cases in place of \u003cem\u003eserialize as any\u003c/em\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with forward references in parent \u003ccode\u003eTypedDict\u003c/code\u003e classes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12427\"\u003e#12427\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis issue is only relevant on Python 3.14 and greater.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eExclude fields with \u003ccode\u003eexclude_if\u003c/code\u003e from JSON Schema required fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12430\"\u003e#12430\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRevert URL percent-encoding of credentials in the \u003ccode\u003ebuild()\u003c/code\u003e method of the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1833\"\u003epydantic-core#1833\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis was initially considered as a bugfix, but caused regressions and as such was fully reverted. The next release will include\nan opt-in option to percent-encode components of the URL.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd type inference for IP address types by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1868\"\u003epydantic-core#1868\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThe 2.12 changes to the \u003ccode\u003eserialize_as_any\u003c/code\u003e behavior made it so that IP address types could not properly serialize to JSON.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid getting default values from defaultdict by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1853\"\u003epydantic-core#1853\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis fixes a subtle regression in the validation behavior of the \u003ca href=\"https://docs.python.org/3/library/collections.html#collections.defaultdict\"\u003e\u003ccode\u003ecollections.defaultdict\u003c/code\u003e\u003c/a\u003e\ntype.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with field serializers on nested typed dictionaries by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1879\"\u003epydantic-core#1879\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd more \u003ccode\u003epydantic-core\u003c/code\u003e builds for the three-threaded version of Python 3.14 by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1864\"\u003epydantic-core#1864\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.3...v2.12.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.12.3...v2.12.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.12.3 2025-10-17\u003c/h2\u003e\n\u003ch2\u003ev2.12.3 (2025-10-17)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThis is the third 2.13 patch release, fixing issues related to the \u003ccode\u003eFieldInfo\u003c/code\u003e class, and reverting a change to the supported \u003ca href=\"https://docs.pydantic.dev/latest/concepts/validators/#model-validators\"\u003e\u003cem\u003eafter\u003c/em\u003e model validator\u003c/a\u003e function signatures.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.12.5 (2025-11-26)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.5\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis is the fifth 2.12 patch release, addressing an issue with the \u003ccode\u003eMISSING\u003c/code\u003e sentinel and providing several documentation improvements.\u003c/p\u003e\n\u003cp\u003eThe next 2.13 minor release will be published in a couple weeks, and will include a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature addressing\nthe remaining unexpected changes to the \u003cem\u003eserialize as any\u003c/em\u003e behavior.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix pickle error when using \u003ccode\u003emodel_construct()\u003c/code\u003e on a model with \u003ccode\u003eMISSING\u003c/code\u003e as a default value by \u003ca href=\"https://github.com/ornariece\"\u003e\u003ccode\u003e@​ornariece\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12522\"\u003e#12522\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSeveral updates to the documentation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.12.4 (2025-11-05)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis is the fourth 2.12 patch release, fixing more regressions, and reverting a change in the \u003ccode\u003ebuild()\u003c/code\u003e method\nof the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis patch release also fixes an issue with the serialization of IP address types, when \u003ccode\u003eserialize_as_any\u003c/code\u003e is used. The next patch release\nwill try to address the remaining issues with \u003cem\u003eserialize as any\u003c/em\u003e behavior by introducing a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature, that\nshould be used in most cases in place of \u003cem\u003eserialize as any\u003c/em\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with forward references in parent \u003ccode\u003eTypedDict\u003c/code\u003e classes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12427\"\u003e#12427\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis issue is only relevant on Python 3.14 and greater.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eExclude fields with \u003ccode\u003eexclude_if\u003c/code\u003e from JSON Schema required fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12430\"\u003e#12430\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRevert URL percent-encoding of credentials in the \u003ccode\u003ebuild()\u003c/code\u003e method\nof the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in\n\u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1833\"\u003epydantic-core#1833\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis was initially considered as a bugfix, but caused regressions and as such was fully reverted. The next release will include\nan opt-in option to percent-encode components of the URL.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd type inference for IP address types by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1868\"\u003epydantic-core#1868\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThe 2.12 changes to the \u003ccode\u003eserialize_as_any\u003c/code\u003e behavior made it so that IP address types could not properly serialize to JSON.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid getting default values from defaultdict by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1853\"\u003epydantic-core#1853\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis fixes a subtle regression in the validation behavior of the \u003ca href=\"https://docs.python.org/3/library/collections.html#collections.defaultdict\"\u003e\u003ccode\u003ecollections.defaultdict\u003c/code\u003e\u003c/a\u003e\ntype.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with field serializers on nested typed dictionaries by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1879\"\u003epydantic-core#1879\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd more \u003ccode\u003epydantic-core\u003c/code\u003e builds for the three-threaded version of Python 3.14 by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1864\"\u003epydantic-core#1864\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.12.3 (2025-10-17)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.3\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/bd2d0dd0137dfa1a8fdff2529b9dfb1547980150\"\u003e\u003ccode\u003ebd2d0dd\u003c/code\u003e\u003c/a\u003e Prepare release v2.12.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7d0302ec7ec2cf115de3450a615522875bdd8b56\"\u003e\u003ccode\u003e7d0302e\u003c/code\u003e\u003c/a\u003e Document security implications when using \u003ccode\u003ecreate_model()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/e9ef980def726b6f59b6c495ddc9dc259a0228db\"\u003e\u003ccode\u003ee9ef980\u003c/code\u003e\u003c/a\u003e Fix typo in Standard Library Types documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/f2c20c00c265a31a13c48f9bae923a87c829952e\"\u003e\u003ccode\u003ef2c20c0\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003epydantic-docs\u003c/code\u003e dev dependency, make use of versioning blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a76c1aa26f2d64a3fd080ac515d80832689197e8\"\u003e\u003ccode\u003ea76c1aa\u003c/code\u003e\u003c/a\u003e Update documentation about JSON Schema\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/8cbc72ca489891e574fba45238ee8bd4f8e719a2\"\u003e\u003ccode\u003e8cbc72c\u003c/code\u003e\u003c/a\u003e Add documentation about custom \u003ccode\u003e__init__()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/99eba599069da137b3f708ffa74627f2b456ba73\"\u003e\u003ccode\u003e99eba59\u003c/code\u003e\u003c/a\u003e Add additional test for \u003ccode\u003eFieldInfo.get_default()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/c71076988e507ea93844c77c3bf0bbb85a5716af\"\u003e\u003ccode\u003ec710769\u003c/code\u003e\u003c/a\u003e Special case \u003ccode\u003eMISSING\u003c/code\u003e sentinel in \u003ccode\u003esmart_deepcopy()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/20a9d771c210fd77d52366ac923258c4c199727f\"\u003e\u003ccode\u003e20a9d77\u003c/code\u003e\u003c/a\u003e Do not delete mock validator/serializer in \u003ccode\u003erebuild_dataclass()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/c86515a3a8f2120148fab2eaedd3bc45925779d0\"\u003e\u003ccode\u003ec86515a\u003c/code\u003e\u003c/a\u003e Update parts of the model and \u003ccode\u003erevalidate_instances\u003c/code\u003e documentation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.11.7...v2.12.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `celery` 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's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.6.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix recursive WorkController instantiation in DjangoWorkerFixup + AttributeError when pool_cls is a string by \u003ca href=\"https://github.com/bruunotrindade\"\u003e\u003ccode\u003e@​bruunotrindade\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10045\"\u003ecelery/celery#10045\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBugfix: Revoked tasks now immediately update backend status to REVOKED by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9869\"\u003ecelery/celery#9869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for release: v5.6.2 by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10049\"\u003ecelery/celery#10049\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bruunotrindade\"\u003e\u003ccode\u003e@​bruunotrindade\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10045\"\u003ecelery/celery#10045\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/celery/celery/compare/v5.6.1...v5.6.2\"\u003ehttps://github.com/celery/celery/compare/v5.6.1...v5.6.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev5.6.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix Redis Sentinel ACL authentication support by \u003ca href=\"https://github.com/anthonykuzmich7\"\u003e\u003ccode\u003e@​anthonykuzmich7\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10013\"\u003ecelery/celery#10013\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix: Broker heartbeats not sent during graceful shutdown by \u003ca href=\"https://github.com/weetster\"\u003e\u003ccode\u003e@​weetster\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9986\"\u003ecelery/celery#9986\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs \u003ca href=\"https://redirect.github.com/celery/celery/issues/5410\"\u003e#5410\u003c/a\u003e -- Document confirm_publish broker transport option by \u003ca href=\"https://github.com/JaeHyuckSa\"\u003e\u003ccode\u003e@​JaeHyuckSa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10016\"\u003ecelery/celery#10016\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eclose DB pools only in prefork mode by \u003ca href=\"https://github.com/petrprikryl\"\u003e\u003ccode\u003e@​petrprikryl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10020\"\u003ecelery/celery#10020\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix: Avoid unnecessary Django database connection creation during cleanup by \u003ca href=\"https://github.com/snopoke\"\u003e\u003ccode\u003e@​snopoke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10015\"\u003ecelery/celery#10015\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ereliable prefork detection by \u003ca href=\"https://github.com/petrprikryl\"\u003e\u003ccode\u003e@​petrprikryl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10023\"\u003ecelery/celery#10023\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebetter coverage by \u003ca href=\"https://github.com/petrprikryl\"\u003e\u003ccode\u003e@​petrprikryl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10029\"\u003ecelery/celery#10029\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocs: clarify \u003ccode\u003eresult_extended\u003c/code\u003e vs periodic task metadata and show \u003ccode\u003eheaders[\u0026quot;periodic_task_name\u0026quot;]\u003c/code\u003e example by \u003ca href=\"https://github.com/SpaceShaman\"\u003e\u003ccode\u003e@​SpaceShaman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10030\"\u003ecelery/celery#10030\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop importing pytest_subtests by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10032\"\u003ecelery/celery#10032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOnly use exceptiongroup backport for Python \u0026lt; 3.11 by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10033\"\u003ecelery/celery#10033\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for release: v5.6.1 by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10037\"\u003ecelery/celery#10037\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthonykuzmich7\"\u003e\u003ccode\u003e@​anthonykuzmich7\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10013\"\u003ecelery/celery#10013\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weetster\"\u003e\u003ccode\u003e@​weetster\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9986\"\u003ecelery/celery#9986\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JaeHyuckSa\"\u003e\u003ccode\u003e@​JaeHyuckSa\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10016\"\u003ecelery/celery#10016\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snopoke\"\u003e\u003ccode\u003e@​snopoke\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10015\"\u003ecelery/celery#10015\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SpaceShaman\"\u003e\u003ccode\u003e@​SpaceShaman\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10030\"\u003ecelery/celery#10030\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/celery/celery/compare/v5.6.0...v5.6.1\"\u003ehttps://github.com/celery/celery/compare/v5.6.0...v5.6.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev5.6.0\u003c/h2\u003e\n\u003cp\u003eCelery v5.6.0 is now available.\u003c/p\u003e\n\u003ch2\u003eKey Highlights\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://docs.celeryq.dev/en/stable/history/whatsnew-5.6.html\"\u003eWhat's new in Celery 5.6\u003c/a\u003e for a complete overview or read the main highlights below.\u003c/p\u003e\n\u003ch3\u003ePython 3.9 Minimum Version\u003c/h3\u003e\n\u003cp\u003eCelery 5.6.0 drops support for Python 3.8 (EOL). The minimum required Python version is now 3.9. Users still on Python 3.8 must upgrade their Python version before upgrading to Celery 5.6.0.\u003c/p\u003e\n\u003cp\u003eAdditionally, this release includes initial support for Python 3.14.\u003c/p\u003e\n\u003ch3\u003eSQS: Reverted to \u003ccode\u003epycurl\u003c/code\u003e from \u003ccode\u003eurllib3\u003c/code\u003e\u003c/h3\u003e\n\u003cp\u003eThe switch from \u003ccode\u003epycurl\u003c/code\u003e to \u003ccode\u003eurllib3\u003c/code\u003e for the SQS transport (introduced in Celery 5.5.0 via Kombu) has been reverted due to critical issues affecting SQS users.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/celery/celery/blob/main/Changelog.rst\"\u003ecelery's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e5.6.2\u003c/h1\u003e\n\u003cp\u003e:release-date: 2026-01-04\n:release-by: Tomer Nosrati\u003c/p\u003e\n\u003cp\u003eWhat's Changed\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n- Fix recursive WorkController instantiation in DjangoWorkerFixup + AttributeError when pool_cls is a string ([#10045](https://github.com/celery/celery/issues/10045))\n- Bugfix: Revoked tasks now immediately update backend status to REVOKED ([#9869](https://github.com/celery/celery/issues/9869))\n- Prepare for release: v5.6.2 ([#10049](https://github.com/celery/celery/issues/10049))\n\u003cp\u003e.. _version-5.6.1:\u003c/p\u003e\n\u003ch1\u003e5.6.1\u003c/h1\u003e\n\u003cp\u003e:release-date: 2025-12-29\n:release-by: Tomer Nosrati\u003c/p\u003e\n\u003cp\u003eWhat's Changed\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix Redis Sentinel ACL authentication support (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10013\"\u003e#10013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix: Broker heartbeats not sent during graceful shutdown (\u003ca href=\"https://redirect.github.com/celery/celery/issues/9986\"\u003e#9986\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs \u003ca href=\"https://redirect.github.com/celery/celery/issues/5410\"\u003e#5410\u003c/a\u003e -- Document confirm_publish broker transport option (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10016\"\u003e#10016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eclose DB pools only in prefork mode (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10020\"\u003e#10020\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix: Avoid unnecessary Django database connection creation during cleanup (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10015\"\u003e#10015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereliable prefork detection (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10023\"\u003e#10023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ebetter coverage (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10029\"\u003e#10029\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocs: clarify \u003ccode\u003eresult_extended\u003c/code\u003e vs periodic task metadata and show \u003ccode\u003eheaders[\u0026quot;periodic_task_name\u0026quot;]\u003c/code\u003e example (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10030\"\u003e#10030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStop importing pytest_subtests (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10032\"\u003e#10032\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOnly use exceptiongroup backport for Python \u0026lt; 3.11 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10033\"\u003e#10033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrepare for release: v5.6.1 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10037\"\u003e#10037\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _version-5.6.0:\u003c/p\u003e\n\u003ch1\u003e5.6.0\u003c/h1\u003e\n\u003cp\u003e:release-date: 2025-11-30\n:release-by: Tomer Nosrati\u003c/p\u003e\n\u003cp\u003eCelery v5.6.0 is now available.\u003c/p\u003e\n\u003cp\u003eKey Highlights\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nSee :ref:`whatsnew-5.6` for a complete overview or read the main highlights below.\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/6a43c846f183ef0cbade24f4b9a8f7a6ea113b44\"\u003e\u003ccode\u003e6a43c84\u003c/code\u003e\u003c/a\u003e Prepare for release: v5.6.2 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10049\"\u003e#10049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/333a82f746734151c5cbe848916085455b0a3748\"\u003e\u003ccode\u003e333a82f\u003c/code\u003e\u003c/a\u003e Bugfix: Revoked tasks now immediately update backend status to REVOKED (\u003ca href=\"https://redirect.github.com/celery/celery/issues/9869\"\u003e#9869\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/9d6ab110d947270c4edf0b42454266d2954e653d\"\u003e\u003ccode\u003e9d6ab11\u003c/code\u003e\u003c/a\u003e Fix recursive WorkController instantiation in DjangoWorkerFixup + AttributeEr...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/21dbc73f81d2fae058de49e665afaa1cd92da5c0\"\u003e\u003ccode\u003e21dbc73\u003c/code\u003e\u003c/a\u003e Prepare for release: v5.6.1 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10037\"\u003e#10037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/ba20bed7723c684d12ddd62d6a7c0c0d901b3351\"\u003e\u003ccode\u003eba20bed\u003c/code\u003e\u003c/a\u003e Only use exceptiongroup backport for Python \u0026lt; 3.11 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10033\"\u003e#10033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/21675299bc2d10c648448ec5221136e07c1eec1a\"\u003e\u003ccode\u003e2167529\u003c/code\u003e\u003c/a\u003e Stop importing pytest_subtests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/0527296acb1f1790788301d4395ba6d5ce2a9704\"\u003e\u003ccode\u003e0527296\u003c/code\u003e\u003c/a\u003e Bump google-cloud-firestore from 2.21.0 to 2.22.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/5f8659bdba4561796d66e938a1e2c71d4489562f\"\u003e\u003ccode\u003e5f8659b\u003c/code\u003e\u003c/a\u003e Clarify 'result_extended' setting usage in tasks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/f19db7008682c782d85e69b5ce736970491752ea\"\u003e\u003ccode\u003ef19db70\u003c/code\u003e\u003c/a\u003e Bump mypy from 1.19.0 to 1.19.1 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10028\"\u003e#10028\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/6da72bde60553a1c350eef1e17d834d004ed099d\"\u003e\u003ccode\u003e6da72bd\u003c/code\u003e\u003c/a\u003e better coverage (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10029\"\u003e#10029\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/celery/celery/compare/v5.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 `boto3` from 1.40.16 to 1.42.26\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/5ffffe1fb42fe0f283a537738f4567eed3c560c9\"\u003e\u003ccode\u003e5ffffe1\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.26'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/ab8545a9a3b1791833f1b898c07da0b0b7041ea8\"\u003e\u003ccode\u003eab8545a\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.26\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/47198117acb1ccf87bf9289508517bc0a075f870\"\u003e\u003ccode\u003e4719811\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/93978170acb80cf7b6ff85c3a9b657e2022bb9fb\"\u003e\u003ccode\u003e9397817\u003c/code\u003e\u003c/a\u003e Add note on logical operators (\u003ca href=\"https://redirect.github.com/boto/boto3/issues/4141\"\u003e#4141\u003c/a\u003e)\u003c/li\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/f4381e378a62008168a4947355d8fb73700f6e8c\"\u003e\u003ccode\u003ef4381e3\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.25' into develop\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\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.40.16...1.42.26\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `awswrangler` from 3.12.1 to 3.14.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aws/aws-sdk-pandas/releases\"\u003eawswrangler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eAWS SDK for pandas 3.14.0\u003c/h2\u003e\n\u003ch2\u003eNotable Changes ⚠️\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: upgrade pg8000 due to CVE-2025-61385 by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3225\"\u003eaws/aws-sdk-pandas#3225\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures / Enhancements 🚀\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: support redshift \u003ccode\u003eCLEANPATH\u003c/code\u003e by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3211\"\u003eaws/aws-sdk-pandas#3211\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add result reuse configuration to query execution functions by \u003ca href=\"https://github.com/DavidKatz-il\"\u003e\u003ccode\u003e@​DavidKatz-il\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3212\"\u003eaws/aws-sdk-pandas#3212\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBugfixes 🐛\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: Add \u003ccode\u003es3_output\u003c/code\u003e parameter to \u003ccode\u003e_start_query_execution\u003c/code\u003e call in \u0026quot;overwrite\u0026quot; mode by \u003ca href=\"https://github.com/sergeymazin\"\u003e\u003ccode\u003e@​sergeymazin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3205\"\u003eaws/aws-sdk-pandas#3205\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: iceberg overwrite partitions with s3 output by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3220\"\u003eaws/aws-sdk-pandas#3220\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: Correct MemoryFormat.set() Parameter Type Annotation by \u003ca href=\"https://github.com/DaltonWorsnup\"\u003e\u003ccode\u003e@​DaltonWorsnup\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3221\"\u003eaws/aws-sdk-pandas#3221\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: normalize AWS_SESSION_TOKEN=None to empty string for delta-rs compatibility by \u003ca href=\"https://github.com/skoschik\"\u003e\u003ccode\u003e@​skoschik\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3223\"\u003eaws/aws-sdk-pandas#3223\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity / Dependency Updates 🛡️\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the github-actions group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3208\"\u003eaws/aws-sdk-pandas#3208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: update pyarrow constraints by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3210\"\u003eaws/aws-sdk-pandas#3210\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump the production-dependencies group across 1 directory with 4 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3213\"\u003eaws/aws-sdk-pandas#3213\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump actions/setup-node from 5 to 6 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3214\"\u003eaws/aws-sdk-pandas#3214\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eHousekeeping 🧹\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: replace deprecated pr linting action by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3215\"\u003eaws/aws-sdk-pandas#3215\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: Release 3.14.0 by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3227\"\u003eaws/aws-sdk-pandas#3227\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: Update Snyk action by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3228\"\u003eaws/aws-sdk-pandas#3228\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: fix incorrect license field by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3229\"\u003eaws/aws-sdk-pandas#3229\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: Update layers.rst by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3230\"\u003eaws/aws-sdk-pandas#3230\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/sergeymazin\"\u003e\u003ccode\u003e@​sergeymazin\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3205\"\u003eaws/aws-sdk-pandas#3205\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DaltonWorsnup\"\u003e\u003ccode\u003e@​DaltonWorsnup\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3221\"\u003eaws/aws-sdk-pandas#3221\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/skoschik\"\u003e\u003ccode\u003e@​skoschik\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3223\"\u003eaws/aws-sdk-pandas#3223\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/aws/aws-sdk-pandas/compare/3.13.0...3.14.0\"\u003ehttps://github.com/aws/aws-sdk-pandas/compare/3.13.0...3.14.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eAWS SDK for pandas 3.13.0\u003c/h2\u003e\n\u003ch2\u003eNotable Changes ⚠️\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eupdated \u003ccode\u003eaiohhtp==3.12.15\u003c/code\u003eto fix CVE-2025-53643 (LOW) by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3197\"\u003eaws/aws-sdk-pandas#3197\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures / Enhancements 🚀\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: ray 2.49.0 by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3194\"\u003eaws/aws-sdk-pandas#3194\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add support for aurora-mysql and aurora-postgresql engines by \u003ca href=\"https://github.com/senorcinco\"\u003e\u003ccode\u003e@​senorcinco\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3188\"\u003eaws/aws-sdk-pandas#3188\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBugfixes 🐛\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: opensearch session by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3170\"\u003eaws/aws-sdk-pandas#3170\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: typo with Redshift write example by \u003ca href=\"https://github.com/Falydoor\"\u003e\u003ccode\u003e@​Falydoor\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3184\"\u003eaws/aws-sdk-pandas#3184\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: do not remove new columns values by \u003ca href=\"https://github.com/Braalfa\"\u003e\u003ccode\u003e@​Braalfa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3181\"\u003eaws/aws-sdk-pandas#3181\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity / Dependency Updates 🛡️\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the production-dependencies group across 1 directory with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3178\"\u003eaws/aws-sdk-pandas#3178\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump the production-dependencies 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/aws/aws-sdk-pandas/pull/3180\"\u003eaws/aws-sdk-pandas#3180\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/aws/aws-sdk-pandas/commit/20193b48db3a0e57d26a344e646811495e0c4e46\"\u003e\u003ccode\u003e20193b4\u003c/code\u003e\u003c/a\u003e Update layers.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/d1c7910e3b3bb125733c9f0318f4e639e7e13d1f\"\u003e\u003ccode\u003ed1c7910\u003c/code\u003e\u003c/a\u003e pin pyarrow in lambda layer\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/3521ddc6ae4f19ce6faaf43c34d1b3575b267d6b\"\u003e\u003ccode\u003e3521ddc\u003c/code\u003e\u003c/a\u003e chore: Release 3.14.0 (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/issues/3227\"\u003e#3227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/2371f80eead3b17d344a3a39794610e61e082e1f\"\u003e\u003ccode\u003e2371f80\u003c/code\u003e\u003c/a\u003e fix(delta-rs): normalize AWS_SESSION_TOKEN=None to empty string for delta-rs ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/9b843841000fbbe0d0aa91f6b0becc0c459204a2\"\u003e\u003ccode\u003e9b84384\u003c/code\u003e\u003c/a\u003e Correct MemoryFormat.set() Parameter Type Annotation (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/issues/3221\"\u003e#3221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/f5980f2adbd561f73564cfdbfd4e268b2c41fccd\"\u003e\u003ccode\u003ef5980f2\u003c/code\u003e\u003c/a\u003e chore: upgrade pg8000 due to a CVE-2025-61385 (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/issues/3225\"\u003e#3225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/ed4057e0d835585d72a434c284ee7f74fd6e9d33\"\u003e\u003ccode\u003eed4057e\u003c/code\u003e\u003c/a\u003e fix: iceberg overwrite partitions with s3 output (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/issues/3220\"\u003e#3220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/d425c500a2e2a30b3ac537e24bf34b900432215b\"\u003e\u003ccode\u003ed425c50\u003c/code\u003e\u003c/a\u003e [FIX] Add s3_output parameter to _start_query_execution call in \u0026quot;overwrite\u0026quot; m...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/294f35e4dd2c41ff5a1a0bc92c9134533355692a\"\u003e\u003ccode\u003e294f35e\u003c/code\u003e\u003c/a\u003e chore: replace pr linting action (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/issues/3215\"\u003e#3215\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/c81581ca40579735cd0caa6e91f1fa5d2c3b46d7\"\u003e\u003ccode\u003ec81581c\u003c/code\u003e\u003c/a\u003e chore(deps): bump actions/setup-node in the github-actions group (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/issues/3214\"\u003e#3214\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aws/aws-sdk-pandas/compare/3.12.1...3.14.0\"\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.5 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 provide...\n\n_Description has been truncated_","html_url":"https://github.com/MVrachev/repository-service-tuf-worker/pull/85","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/MVrachev%2Frepository-service-tuf-worker/issues/85","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/85/packages"},{"uuid":"3788014432","node_id":"PR_kwDOBAUWrs673oKi","number":331,"state":"closed","title":"Bump the pip group across 1 directory with 3 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":["ezio-melotti"],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-01-07T12:19:50.000Z","author_association":null,"state_reason":null,"created_at":"2026-01-07T09:35:09.000Z","updated_at":"2026-01-07T12:19:57.000Z","time_to_close":9881,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"pip","update_count":3,"packages":[{"name":"sigstore","old_version":"3.6.5","new_version":"4.1.0","repository_url":"https://github.com/sigstore/sigstore-python"},{"name":"mypy","old_version":"1.19.0","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"pyfakefs","old_version":"5.10.2","new_version":"6.0.0","repository_url":"https://github.com/pytest-dev/pyfakefs"},{"name":"pytest","old_version":"8.4.2","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip group with 4 updates in the / directory: [sigstore](https://github.com/sigstore/sigstore-python), [mypy](https://github.com/python/mypy), [pyfakefs](https://github.com/pytest-dev/pyfakefs) and [pytest](https://github.com/pytest-dev/pytest).\n\nUpdates `sigstore` from 3.6.5 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.5...v4.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.19.0 to 1.19.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003eMypy 1.19.1\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix noncommutative joins with bounded TypeVars (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20345\"\u003e20345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRespect output format for cached runs by serializing raw errors in cache metas (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20372\"\u003e20372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003etypes.NoneType\u003c/code\u003e in match cases (A5rocks, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20383\"\u003e20383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix mypyc generator regression with empty tuple (BobTheBuidler, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20371\"\u003e20371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash involving Unpack-ed TypeVarTuple (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20323\"\u003e20323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on star import of redefinition (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20333\"\u003e20333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on typevar with forward ref used in other module (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20334\"\u003e20334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFail with an explicit error on PyPy (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20389\"\u003e20389\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAcknowledgements\u003c/h3\u003e\n\u003cp\u003eThanks to all mypy contributors who contributed to this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eA5rocks\u003c/li\u003e\n\u003cli\u003eBobTheBuidler\u003c/li\u003e\n\u003cli\u003ebzoracler\u003c/li\u003e\n\u003cli\u003eChainfire\u003c/li\u003e\n\u003cli\u003eChristoph Tyralla\u003c/li\u003e\n\u003cli\u003eDavid Foster\u003c/li\u003e\n\u003cli\u003eFrank Dana\u003c/li\u003e\n\u003cli\u003eGuo Ci\u003c/li\u003e\n\u003cli\u003eiap\u003c/li\u003e\n\u003cli\u003eIvan Levkivskyi\u003c/li\u003e\n\u003cli\u003eJames Hilton-Balfe\u003c/li\u003e\n\u003cli\u003ejhance\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eJukka Lehtosalo\u003c/li\u003e\n\u003cli\u003eKarelKenens\u003c/li\u003e\n\u003cli\u003eKevin Kannammalil\u003c/li\u003e\n\u003cli\u003eMarc Mueller\u003c/li\u003e\n\u003cli\u003eMichael Carlstrom\u003c/li\u003e\n\u003cli\u003eMichael J. Sullivan\u003c/li\u003e\n\u003cli\u003ePiotr Sawicki\u003c/li\u003e\n\u003cli\u003eRandolf Scholz\u003c/li\u003e\n\u003cli\u003eShantanu\u003c/li\u003e\n\u003cli\u003eSigve Sebastian Farstad\u003c/li\u003e\n\u003cli\u003esobolevn\u003c/li\u003e\n\u003cli\u003eStanislav Terliakov\u003c/li\u003e\n\u003cli\u003eStephen Morton\u003c/li\u003e\n\u003cli\u003eTheodore Ando\u003c/li\u003e\n\u003cli\u003eThiago J. Barbalho\u003c/li\u003e\n\u003cli\u003ewyattscarpenter\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eI’d also like to thank my employer, Dropbox, for supporting mypy development.\u003c/p\u003e\n\u003ch2\u003eMypy 1.18\u003c/h2\u003e\n\u003cp\u003eWe’ve just uploaded mypy 1.18.1 to the Python Package Index (\u003ca href=\"https://pypi.org/project/mypy/\"\u003ePyPI\u003c/a\u003e).\nMypy is a static type checker for Python. This release includes new features, performance\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/412c19a6bde31e7afa7f41afdf8356664689ae80\"\u003e\u003ccode\u003e412c19a\u003c/code\u003e\u003c/a\u003e Bump version to 1.19.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/20aea0a6ca0710f5427239bdd2fd8e8bf1caf634\"\u003e\u003ccode\u003e20aea0a\u003c/code\u003e\u003c/a\u003e Update changelog for 1.19.1 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20414\"\u003e#20414\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/2b23b507524bf1bd7513eea6f2a16fb91e072cb6\"\u003e\u003ccode\u003e2b23b50\u003c/code\u003e\u003c/a\u003e Serialize raw errors in cache metas (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20372\"\u003e#20372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/f60f90fb8872bf722e32aefd548daaf6d8560e05\"\u003e\u003ccode\u003ef60f90f\u003c/code\u003e\u003c/a\u003e Fail on PyPy in main instead of setup.py (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20389\"\u003e#20389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/58d485b4ea4776e0b9d4045b306cb0818ecc2aa6\"\u003e\u003ccode\u003e58d485b\u003c/code\u003e\u003c/a\u003e Fail with an explicit error on PyPy (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20384\"\u003e#20384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/a4b31a26788b70c4a2a19adbafa2bbda43dc2e8b\"\u003e\u003ccode\u003ea4b31a2\u003c/code\u003e\u003c/a\u003e Allow \u003ccode\u003etypes.NoneType\u003c/code\u003e in match cases (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20383\"\u003e#20383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/8a6eff478416cd3ed3931a6ed77ce61c88ab69e9\"\u003e\u003ccode\u003e8a6eff4\u003c/code\u003e\u003c/a\u003e [mypyc] fix generator regression with empty tuple (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20371\"\u003e#20371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/70eceea682c041c0d8e8462dffef9c7bb252e014\"\u003e\u003ccode\u003e70eceea\u003c/code\u003e\u003c/a\u003e Fix noncommutative joins with bounded TypeVars (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20345\"\u003e#20345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/3890fc49bf7cc02db04b1e63eb2540aaacdeecc0\"\u003e\u003ccode\u003e3890fc4\u003c/code\u003e\u003c/a\u003e Fix crash involving Unpack-ed TypeVarTuple (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20323\"\u003e#20323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c93d917a86993e06dcc88e508f28f4f5199ce1c8\"\u003e\u003ccode\u003ec93d917\u003c/code\u003e\u003c/a\u003e Fix crash on star import of redefinition (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20333\"\u003e#20333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.19.0...v1.19.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyfakefs` from 5.10.2 to 6.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pyfakefs/releases\"\u003epyfakefs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epyfakefs release version 6.0.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eremoves some deprecated functionality\u003c/li\u003e\n\u003cli\u003eremoves support for Python \u0026lt; 3.10\u003c/li\u003e\n\u003cli\u003esee the \u003ca href=\"https://github.com/pytest-dev/pyfakefs/blob/version-6.0/CHANGES.md#version-600-2025-12-21\"\u003erelease notes\u003c/a\u003e for a list of changes\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pyfakefs/blob/main/CHANGES.md\"\u003epyfakefs's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://pypi.python.org/pypi/pyfakefs/6.0.0\"\u003eVersion 6.0.0\u003c/a\u003e (2025-12-21)\u003c/h2\u003e\n\u003cp\u003eRemoves some deprecated functionality, removes support for Python \u0026lt; 3.10.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eremoved support for Python versions \u0026lt; 3.10; patch releases based on \u003ccode\u003epyfakefs\u003c/code\u003e 5.10\nsupporting older versions may be made on demand\u003c/li\u003e\n\u003cli\u003eremoved support for patching legacy modules \u003ccode\u003escandir\u003c/code\u003e and \u003ccode\u003epathlib2\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003echanged the default for \u003ccode\u003eFakeFilesystem.shuffle_listdir_results\u003c/code\u003e to \u003ccode\u003eTrue\u003c/code\u003e to reflect\nthe real filesystem behavior\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanges\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadded some support for Python 3.15a3\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efixes a problem with \u003ccode\u003ePath\u003c/code\u003e type hints using the pipe symbol in wrapped functions\ninside an \u003ccode\u003efs\u003c/code\u003e dependent fixture (see \u003ca href=\"https://redirect.github.com/pytest-dev/pyfakefs/issues/1242\"\u003e#1242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efixes problem with new \u003ccode\u003ecoverage\u003c/code\u003e in Python 3.14 using the fake filesystem\n(see \u003ca href=\"https://redirect.github.com/pytest-dev/pyfakefs/issues/1245\"\u003e#1245\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadded project information to documentation pages\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInfrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadded CI tests for Python 3.15\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\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/pyfakefs/commit/fe83300fa947d680afe687386c5d25a4c15819c6\"\u003e\u003ccode\u003efe83300\u003c/code\u003e\u003c/a\u003e Release 6.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pyfakefs/commit/326eaa377a4acf75ef5e1092778faf905d9329ac\"\u003e\u003ccode\u003e326eaa3\u003c/code\u003e\u003c/a\u003e Pin myst-parser to latest version 4.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pyfakefs/commit/ff7d90820b863726816b229cbe9f9c190ef7298e\"\u003e\u003ccode\u003eff7d908\u003c/code\u003e\u003c/a\u003e Add project info to documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pyfakefs/commit/42ad731dc9665d735d864208c21d862ba691c6a0\"\u003e\u003ccode\u003e42ad731\u003c/code\u003e\u003c/a\u003e Adapt to changes in Python 3.15a3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pyfakefs/commit/7613b9fb0ebb3c3bd15dbc6c089385f8986ef6a0\"\u003e\u003ccode\u003e7613b9f\u003c/code\u003e\u003c/a\u003e Add CI tests for Python 3.15\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pyfakefs/commit/4a4dea86226e8653f3ade74b85f562b0a1b5cc53\"\u003e\u003ccode\u003e4a4dea8\u003c/code\u003e\u003c/a\u003e Make old, deprecated \u0026quot;import py\u0026quot; optional (\u003ca href=\"https://redirect.github.com/pytest-dev/pyfakefs/issues/1257\"\u003e#1257\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pyfakefs/commit/f0794eebd424523eb2bb5d4280106379efebb4c4\"\u003e\u003ccode\u003ef0794ee\u003c/code\u003e\u003c/a\u003e Update furo from 2025.7.19 to 2025.12.19\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pyfakefs/commit/09a128334f49182a70dc8e671f83678e2a7ae9aa\"\u003e\u003ccode\u003e09a1283\u003c/code\u003e\u003c/a\u003e Update pre-commit from 4.5.0 to 4.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pyfakefs/commit/57e6dfeef6131665816121bf721135996b11aec5\"\u003e\u003ccode\u003e57e6dfe\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pyfakefs/commit/722ab00af67871af59bf28bb8c9c97931b75f016\"\u003e\u003ccode\u003e722ab00\u003c/code\u003e\u003c/a\u003e Bump actions/cache from 4 to 5\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pyfakefs/compare/v5.10.2...v6.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest` from 8.4.2 to 9.0.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest/releases\"\u003epytest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.0.2\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.2 (2025-12-06)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13896\"\u003e#13896\u003c/a\u003e: The terminal progress feature added in pytest 9.0.0 has been disabled by default, except on Windows, due to compatibility issues with some terminal emulators.\u003c/p\u003e\n\u003cp\u003eYou may enable it again by passing \u003ccode\u003e-p terminalprogress\u003c/code\u003e. We may enable it by default again once compatibility improves in the future.\u003c/p\u003e\n\u003cp\u003eAdditionally, when the environment variable \u003ccode\u003eTERM\u003c/code\u003e is \u003ccode\u003edumb\u003c/code\u003e, the escape codes are no longer emitted, even if the plugin is enabled.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13904\"\u003e#13904\u003c/a\u003e: Fixed the TOML type of the \u003ccode\u003etmp_path_retention_count\u003c/code\u003e settings in the API reference from number to string.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13946\"\u003e#13946\u003c/a\u003e: The private \u003ccode\u003econfig.inicfg\u003c/code\u003e attribute was changed in a breaking manner in pytest 9.0.0.\nDue to its usage in the ecosystem, it is now restored to working order using a compatibility shim.\nIt will be deprecated in pytest 9.1 and removed in pytest 10.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13965\"\u003e#13965\u003c/a\u003e: Fixed quadratic-time behavior when handling \u003ccode\u003eunittest\u003c/code\u003e subtests in Python 3.10.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImproved documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/4492\"\u003e#4492\u003c/a\u003e: The API Reference now contains cross-reference-able documentation of \u003ccode\u003epytest's command-line flags \u0026lt;command-line-flags\u0026gt;\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e9.0.1\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.1 (2025-11-12)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13895\"\u003e#13895\u003c/a\u003e: Restore support for skipping tests via \u003ccode\u003eraise unittest.SkipTest\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13896\"\u003e#13896\u003c/a\u003e: The terminal progress plugin added in pytest 9.0 is now automatically disabled when iTerm2 is detected, it generated desktop notifications instead of the desired functionality.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13904\"\u003e#13904\u003c/a\u003e: Fixed the TOML type of the verbosity settings in the API reference from number to string.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13910\"\u003e#13910\u003c/a\u003e: Fixed \u003c!-- raw HTML omitted --\u003eUserWarning: Do not expect file_or_dir\u003c!-- raw HTML omitted --\u003e on some earlier Python 3.12 and 3.13 point versions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePackaging updates and notes for downstreams\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13933\"\u003e#13933\u003c/a\u003e: The tox configuration has been adjusted to make sure the desired\nversion string can be passed into its \u003ccode\u003epackage_env\u003c/code\u003e through\nthe \u003ccode\u003eSETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTEST\u003c/code\u003e environment\nvariable as a part of the release process -- by \u003ccode\u003ewebknjaz\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributor-facing changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13891\"\u003e#13891\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13942\"\u003e#13942\u003c/a\u003e: The CI/CD part of the release automation is now capable of\ncreating GitHub Releases without having a Git checkout on\ndisk -- by \u003ccode\u003ebluetech\u003c/code\u003e and \u003ccode\u003ewebknjaz\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13933\"\u003e#13933\u003c/a\u003e: The tox configuration has been adjusted to make sure the desired\nversion string can be passed into its \u003ccode\u003epackage_env\u003c/code\u003e through\nthe \u003ccode\u003eSETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTEST\u003c/code\u003e environment\nvariable as a part of the release process -- by \u003ccode\u003ewebknjaz\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/3d10b5148e03eb82b3ee29181dbdc73cf82699e2\"\u003e\u003ccode\u003e3d10b51\u003c/code\u003e\u003c/a\u003e Prepare release version 9.0.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/188750b725add8c3400eee6fbb6b80559c296d69\"\u003e\u003ccode\u003e188750b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14030\"\u003e#14030\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/1e4b01d1f...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/b7d7bef90cb9a6db8ac1d3dd5b9ae0eb9abd6c58\"\u003e\u003ccode\u003eb7d7bef\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14014\"\u003e#14014\u003c/a\u003e from bluetech/compat-note\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/bd08e85ac76614ff5ca9ae338aee8d8b06c8fae0\"\u003e\u003ccode\u003ebd08e85\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14013\"\u003e#14013\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/922b60377...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/bc783862991241c442c9f9c068e51737ec15ea10\"\u003e\u003ccode\u003ebc78386\u003c/code\u003e\u003c/a\u003e Add CLI options reference documentation (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13930\"\u003e#13930\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/5a4e398ce89bc23d2cf3fd98c042fdffb6fa8afa\"\u003e\u003ccode\u003e5a4e398\u003c/code\u003e\u003c/a\u003e Fix docs typo (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14005\"\u003e#14005\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14008\"\u003e#14008\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/d7ae6df394398168bf9d926f803c26849c8f07ee\"\u003e\u003ccode\u003ed7ae6df\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14006\"\u003e#14006\u003c/a\u003e from pytest-dev/maintenance/update-plugin-list-tmpl...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/556f6a22e12d13d1ffeceaf64424eb95d5e0fb87\"\u003e\u003ccode\u003e556f6a2\u003c/code\u003e\u003c/a\u003e pre-commit: fix rst-lint after new release (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13999\"\u003e#13999\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14001\"\u003e#14001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/c60fbe63a26f64a42738e3f3527a8f79024fdf50\"\u003e\u003ccode\u003ec60fbe6\u003c/code\u003e\u003c/a\u003e Fix quadratic-time behavior when handling \u003ccode\u003eunittest\u003c/code\u003e subtests in Python 3.10 ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/73d9b011183d9a1c4a7007c1119d97a6e627788e\"\u003e\u003ccode\u003e73d9b01\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13995\"\u003e#13995\u003c/a\u003e from nicoddemus/patchback/backports/9.0.x/1b5200c0f...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest/compare/8.4.2...9.0.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\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/python/release-tools/pull/331","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/python%2Frelease-tools/issues/331","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/331/packages"},{"uuid":"3774180327","node_id":"PR_kwDOBAUWrs67LUY_","number":325,"state":"closed","title":"Bump the pip group with 5 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":["ezio-melotti"],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-01-07T09:34:56.000Z","author_association":null,"state_reason":null,"created_at":"2026-01-01T06:06:00.000Z","updated_at":"2026-01-07T09:34:57.000Z","time_to_close":530936,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"pip","update_count":5,"packages":[{"name":"python-gnupg","old_version":"0.5.5","new_version":"0.5.6","repository_url":"https://github.com/vsajip/python-gnupg"},{"name":"sigstore","old_version":"3.6.5","new_version":"4.1.0","repository_url":"https://github.com/sigstore/sigstore-python"},{"name":"mypy","old_version":"1.19.0","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"pyfakefs","old_version":"5.10.2","new_version":"6.0.0","repository_url":"https://github.com/pytest-dev/pyfakefs"},{"name":"pytest","old_version":"8.4.2","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip group with 5 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [python-gnupg](https://github.com/vsajip/python-gnupg) | `0.5.5` | `0.5.6` |\n| [sigstore](https://github.com/sigstore/sigstore-python) | `3.6.5` | `4.1.0` |\n| [mypy](https://github.com/python/mypy) | `1.19.0` | `1.19.1` |\n| [pyfakefs](https://github.com/pytest-dev/pyfakefs) | `5.10.2` | `6.0.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.2` | `9.0.2` |\n\nUpdates `python-gnupg` from 0.5.5 to 0.5.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/vsajip/python-gnupg/releases\"\u003epython-gnupg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eEnhancement and bug-fix release 0.5.6\u003c/h2\u003e\n\u003cp\u003eThis is an enhancement and bug-fix release, and all users are encouraged to upgrade.\u003c/p\u003e\n\u003cp\u003eBrief summary:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/vsajip/python-gnupg/issues/261\"\u003e#261\u003c/a\u003e: Ensure capability, fingerprint and keygrip are added to subkey_info.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSet username in the result when Verify uses a signing key that has expired or been revoked. Thanks to Steven Galgano for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis release has been signed with my code signing key:\u003c/p\u003e\n\u003cp\u003eVinay Sajip (CODE SIGNING KEY) \u0026lt;vinay_sajip at yahoo.co.uk\u0026gt;\nFingerprint: CA74 9061 914E AC13 8E66 EADB 9147 B477 339A 9B86\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/vsajip/python-gnupg/commit/54e9ca0f80f5a0d0b4252e13d5c431f3f5f40c71\"\u003e\u003ccode\u003e54e9ca0\u003c/code\u003e\u003c/a\u003e Changes for 0.5.6.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vsajip/python-gnupg/commit/8825037344b03473595e694e01a1e0fa5e74023f\"\u003e\u003ccode\u003e8825037\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 (\u003ca href=\"https://redirect.github.com/vsajip/python-gnupg/issues/268\"\u003e#268\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vsajip/python-gnupg/commit/909cf606f07097feb5316c265f0108a4c753f9a5\"\u003e\u003ccode\u003e909cf60\u003c/code\u003e\u003c/a\u003e Remove Travis CI and AppVeyor config (\u003ca href=\"https://redirect.github.com/vsajip/python-gnupg/issues/269\"\u003e#269\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vsajip/python-gnupg/commit/f0bfa1acb7000cfff3bfdec5d9bff15299c364d3\"\u003e\u003ccode\u003ef0bfa1a\u003c/code\u003e\u003c/a\u003e Drop redundant \u003ccode\u003ewheel\u003c/code\u003e from PEP 517 build deps (\u003ca href=\"https://redirect.github.com/vsajip/python-gnupg/issues/264\"\u003e#264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vsajip/python-gnupg/commit/9b0399b4684a1f8d9e763c99c94cd9baed5ebc34\"\u003e\u003ccode\u003e9b0399b\u003c/code\u003e\u003c/a\u003e Fix typo: spell decrypted_data correctly in the documentation. (\u003ca href=\"https://redirect.github.com/vsajip/python-gnupg/issues/263\"\u003e#263\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vsajip/python-gnupg/commit/fcedea7ac922cf5113c28beff16e59340fa4731c\"\u003e\u003ccode\u003efcedea7\u003c/code\u003e\u003c/a\u003e Added capability to subkey_info, reformatted code.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vsajip/python-gnupg/commit/eca04eb5c9f5d251bb32a183427acb8fbe564102\"\u003e\u003ccode\u003eeca04eb\u003c/code\u003e\u003c/a\u003e Set username when Verify uses a signing key that has expired or been (\u003ca href=\"https://redirect.github.com/vsajip/python-gnupg/issues/262\"\u003e#262\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vsajip/python-gnupg/commit/acfa89869940b81a96c6eb1e475c1c4f645ae879\"\u003e\u003ccode\u003eacfa898\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/vsajip/python-gnupg/issues/261\"\u003e#261\u003c/a\u003e: Ensure fingerprint and keygrip are added to subkey_info.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vsajip/python-gnupg/commit/8148db43edf62ca8310000f0aaae138784c0e51b\"\u003e\u003ccode\u003e8148db4\u003c/code\u003e\u003c/a\u003e Bump version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vsajip/python-gnupg/commit/2e829849129d4789b8877fe621349b09ca5b29cd\"\u003e\u003ccode\u003e2e82984\u003c/code\u003e\u003c/a\u003e Added tag 0.5.5 for changeset 1b77f5b12ad7\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/vsajip/python-gnupg/compare/0.5.5...0.5.6\"\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.5 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.5...v4.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.19.0 to 1.19.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003eMypy 1.19.1\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix noncommutative joins with bounded TypeVars (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20345\"\u003e20345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRespect output format for cached runs by serializing raw errors in cache metas (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20372\"\u003e20372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003etypes.NoneType\u003c/code\u003e in match cases (A5rocks, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20383\"\u003e20383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix mypyc generator regression with empty tuple (BobTheBuidler, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20371\"\u003e20371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash involving Unpack-ed TypeVarTuple (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20323\"\u003e20323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on star import of redefinition (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20333\"\u003e20333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on typevar with forward ref used in other module (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20334\"\u003e20334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFail with an explicit error on PyPy (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20389\"\u003e20389\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAcknowledgements\u003c/h3\u003e\n\u003cp\u003eThanks to all mypy contributors who contributed to this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eA5rocks\u003c/li\u003e\n\u003cli\u003eBobTheBuidler\u003c/li\u003e\n\u003cli\u003ebzoracler\u003c/li\u003e\n\u003cli\u003eChainfire\u003c/li\u003e\n\u003cli\u003eChristoph Tyralla\u003c/li\u003e\n\u003cli\u003eDavid Foster\u003c/li\u003e\n\u003cli\u003eFrank Dana\u003c/li\u003e\n\u003cli\u003eGuo Ci\u003c/li\u003e\n\u003cli\u003eiap\u003c/li\u003e\n\u003cli\u003eIvan Levkivskyi\u003c/li\u003e\n\u003cli\u003eJames Hilton-Balfe\u003c/li\u003e\n\u003cli\u003ejhance\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eJukka Lehtosalo\u003c/li\u003e\n\u003cli\u003eKarelKenens\u003c/li\u003e\n\u003cli\u003eKevin Kannammalil\u003c/li\u003e\n\u003cli\u003eMarc Mueller\u003c/li\u003e\n\u003cli\u003eMichael Carlstrom\u003c/li\u003e\n\u003cli\u003eMichael J. Sullivan\u003c/li\u003e\n\u003cli\u003ePiotr Sawicki\u003c/li\u003e\n\u003cli\u003eRandolf Scholz\u003c/li\u003e\n\u003cli\u003eShantanu\u003c/li\u003e\n\u003cli\u003eSigve Sebastian Farstad\u003c/li\u003e\n\u003cli\u003esobolevn\u003c/li\u003e\n\u003cli\u003eStanislav Terliakov\u003c/li\u003e\n\u003cli\u003eStephen Morton\u003c/li\u003e\n\u003cli\u003eTheodore Ando\u003c/li\u003e\n\u003cli\u003eThiago J. Barbalho\u003c/li\u003e\n\u003cli\u003ewyattscarpenter\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eI’d also like to thank my employer, Dropbox, for supporting mypy development.\u003c/p\u003e\n\u003ch2\u003eMypy 1.18\u003c/h2\u003e\n\u003cp\u003eWe’ve just uploaded mypy 1.18.1 to the Python Package Index (\u003ca href=\"https://pypi.org/project/mypy/\"\u003ePyPI\u003c/a\u003e).\nMypy is a static type checker for Python. This release includes new features, performance\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/412c19a6bde31e7afa7f41afdf8356664689ae80\"\u003e\u003ccode\u003e412c19a\u003c/code\u003e\u003c/a\u003e Bump version to 1.19.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/20aea0a6ca0710f5427239bdd2fd8e8bf1caf634\"\u003e\u003ccode\u003e20aea0a\u003c/code\u003e\u003c/a\u003e Update changelog for 1.19.1 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20414\"\u003e#20414\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/2b23b507524bf1bd7513eea6f2a16fb91e072cb6\"\u003e\u003ccode\u003e2b23b50\u003c/code\u003e\u003c/a\u003e Serialize raw errors in cache metas (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20372\"\u003e#20372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/f60f90fb8872bf722e32aefd548daaf6d8560e05\"\u003e\u003ccode\u003ef60f90f\u003c/code\u003e\u003c/a\u003e Fail on PyPy in main instead of setup.py (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20389\"\u003e#20389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/58d485b4ea4776e0b9d4045b306cb0818ecc2aa6\"\u003e\u003ccode\u003e58d485b\u003c/code\u003e\u003c/a\u003e Fail with an explicit error on PyPy (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20384\"\u003e#20384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/a4b31a26788b70c4a2a19adbafa2bbda43dc2e8b\"\u003e\u003ccode\u003ea4b31a2\u003c/code\u003e\u003c/a\u003e Allow \u003ccode\u003etypes.NoneType\u003c/code\u003e in match cases (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20383\"\u003e#20383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/8a6eff478416cd3ed3931a6ed77ce61c88ab69e9\"\u003e\u003ccode\u003e8a6eff4\u003c/code\u003e\u003c/a\u003e [mypyc] fix generator regression with empty tuple (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20371\"\u003e#20371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/70eceea682c041c0d8e8462dffef9c7bb252e014\"\u003e\u003ccode\u003e70eceea\u003c/code\u003e\u003c/a\u003e Fix noncommutative joins with bounded TypeVars (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20345\"\u003e#20345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/3890fc49bf7cc02db04b1e63eb2540aaacdeecc0\"\u003e\u003ccode\u003e3890fc4\u003c/code\u003e\u003c/a\u003e Fix crash involving Unpack-ed TypeVarTuple (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20323\"\u003e#20323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c93d917a86993e06dcc88e508f28f4f5199ce1c8\"\u003e\u003ccode\u003ec93d917\u003c/code\u003e\u003c/a\u003e Fix crash on star import of redefinition (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20333\"\u003e#20333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.19.0...v1.19.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyfakefs` from 5.10.2 to 6.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pyfakefs/releases\"\u003epyfakefs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epyfakefs release version 6.0.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eremoves some deprecated functionality\u003c/li\u003e\n\u003cli\u003eremoves support for Python \u0026lt; 3.10\u003c/li\u003e\n\u003cli\u003esee the \u003ca href=\"https://github.com/pytest-dev/pyfakefs/blob/version-6.0/CHANGES.md#version-600-2025-12-21\"\u003erelease notes\u003c/a\u003e for a list of changes\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pyfakefs/blob/main/CHANGES.md\"\u003epyfakefs's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://pypi.python.org/pypi/pyfakefs/6.0.0\"\u003eVersion 6.0.0\u003c/a\u003e (2025-12-21)\u003c/h2\u003e\n\u003cp\u003eRemoves some deprecated functionality, removes support for Python \u0026lt; 3.10.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eremoved support for Python versions \u0026lt; 3.10; patch releases based on \u003ccode\u003epyfakefs\u003c/code\u003e 5.10\nsupporting older versions may be made on demand\u003c/li\u003e\n\u003cli\u003eremoved support for patching legacy modules \u003ccode\u003escandir\u003c/code\u003e and \u003ccode\u003epathlib2\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003echanged the default for \u003ccode\u003eFakeFilesystem.shuffle_listdir_results\u003c/code\u003e to \u003ccode\u003eTrue\u003c/code\u003e to reflect\nthe real filesystem behavior\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanges\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadded some support for Python 3.15a3\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efixes a problem with \u003ccode\u003ePath\u003c/code\u003e type hints using the pipe symbol in wrapped functions\ninside an \u003ccode\u003efs\u003c/code\u003e dependent fixture (see \u003ca href=\"https://redirect.github.com/pytest-dev/pyfakefs/issues/1242\"\u003e#1242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efixes problem with new \u003ccode\u003ecoverage\u003c/code\u003e in Python 3.14 using the fake filesystem\n(see \u003ca href=\"https://redirect.github.com/pytest-dev/pyfakefs/issues/1245\"\u003e#1245\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadded project information to documentation pages\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInfrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadded CI tests for Python 3.15\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\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/pyfakefs/commit/fe83300fa947d680afe687386c5d25a4c15819c6\"\u003e\u003ccode\u003efe83300\u003c/code\u003e\u003c/a\u003e Release 6.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pyfakefs/commit/326eaa377a4acf75ef5e1092778faf905d9329ac\"\u003e\u003ccode\u003e326eaa3\u003c/code\u003e\u003c/a\u003e Pin myst-parser to latest version 4.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pyfakefs/commit/ff7d90820b863726816b229cbe9f9c190ef7298e\"\u003e\u003ccode\u003eff7d908\u003c/code\u003e\u003c/a\u003e Add project info to documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pyfakefs/commit/42ad731dc9665d735d864208c21d862ba691c6a0\"\u003e\u003ccode\u003e42ad731\u003c/code\u003e\u003c/a\u003e Adapt to changes in Python 3.15a3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pyfakefs/commit/7613b9fb0ebb3c3bd15dbc6c089385f8986ef6a0\"\u003e\u003ccode\u003e7613b9f\u003c/code\u003e\u003c/a\u003e Add CI tests for Python 3.15\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pyfakefs/commit/4a4dea86226e8653f3ade74b85f562b0a1b5cc53\"\u003e\u003ccode\u003e4a4dea8\u003c/code\u003e\u003c/a\u003e Make old, deprecated \u0026quot;import py\u0026quot; optional (\u003ca href=\"https://redirect.github.com/pytest-dev/pyfakefs/issues/1257\"\u003e#1257\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pyfakefs/commit/f0794eebd424523eb2bb5d4280106379efebb4c4\"\u003e\u003ccode\u003ef0794ee\u003c/code\u003e\u003c/a\u003e Update furo from 2025.7.19 to 2025.12.19\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pyfakefs/commit/09a128334f49182a70dc8e671f83678e2a7ae9aa\"\u003e\u003ccode\u003e09a1283\u003c/code\u003e\u003c/a\u003e Update pre-commit from 4.5.0 to 4.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pyfakefs/commit/57e6dfeef6131665816121bf721135996b11aec5\"\u003e\u003ccode\u003e57e6dfe\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pyfakefs/commit/722ab00af67871af59bf28bb8c9c97931b75f016\"\u003e\u003ccode\u003e722ab00\u003c/code\u003e\u003c/a\u003e Bump actions/cache from 4 to 5\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pyfakefs/compare/v5.10.2...v6.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest` from 8.4.2 to 9.0.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest/releases\"\u003epytest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.0.2\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.2 (2025-12-06)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13896\"\u003e#13896\u003c/a\u003e: The terminal progress feature added in pytest 9.0.0 has been disabled by default, except on Windows, due to compatibility issues with some terminal emulators.\u003c/p\u003e\n\u003cp\u003eYou may enable it again by passing \u003ccode\u003e-p terminalprogress\u003c/code\u003e. We may enable it by default again once compatibility improves in the future.\u003c/p\u003e\n\u003cp\u003eAdditionally, when the environment variable \u003ccode\u003eTERM\u003c/code\u003e is \u003ccode\u003edumb\u003c/code\u003e, the escape codes are no longer emitted, even if the plugin is enabled.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13904\"\u003e#13904\u003c/a\u003e: Fixed the TOML type of the \u003ccode\u003etmp_path_retention_count\u003c/code\u003e settings in the API reference from number to string.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13946\"\u003e#13946\u003c/a\u003e: The private \u003ccode\u003econfig.inicfg\u003c/code\u003e attribute was changed in a breaking manner in pytest 9.0.0.\nDue to its usage in the ecosystem, it is now restored to working order using a compatibility shim.\nIt will be deprecated in pytest 9.1 and removed in pytest 10.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13965\"\u003e#13965\u003c/a\u003e: Fixed quadratic-time behavior when handling \u003ccode\u003eunittest\u003c/code\u003e subtests in Python 3.10.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImproved documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/4492\"\u003e#4492\u003c/a\u003e: The API Reference now contains cross-reference-able documentation of \u003ccode\u003epytest's command-line flags \u0026lt;command-line-flags\u0026gt;\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e9.0.1\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.1 (2025-11-12)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13895\"\u003e#13895\u003c/a\u003e: Restore support for skipping tests via \u003ccode\u003eraise unittest.SkipTest\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13896\"\u003e#13896\u003c/a\u003e: The terminal progress plugin added in pytest 9.0 is now automatically disabled when iTerm2 is detected, it generated desktop notifications instead of the desired functionality.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13904\"\u003e#13904\u003c/a\u003e: Fixed the TOML type of the verbosity settings in the API reference from number to string.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13910\"\u003e#13910\u003c/a\u003e: Fixed \u003c!-- raw HTML omitted --\u003eUserWarning: Do not expect file_or_dir\u003c!-- raw HTML omitted --\u003e on some earlier Python 3.12 and 3.13 point versions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePackaging updates and notes for downstreams\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13933\"\u003e#13933\u003c/a\u003e: The tox configuration has been adjusted to make sure the desired\nversion string can be passed into its \u003ccode\u003epackage_env\u003c/code\u003e through\nthe \u003ccode\u003eSETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTEST\u003c/code\u003e environment\nvariable as a part of the release process -- by \u003ccode\u003ewebknjaz\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributor-facing changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13891\"\u003e#13891\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13942\"\u003e#13942\u003c/a\u003e: The CI/CD part of the release automation is now capable of\ncreating GitHub Releases without having a Git checkout on\ndisk -- by \u003ccode\u003ebluetech\u003c/code\u003e and \u003ccode\u003ewebknjaz\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13933\"\u003e#13933\u003c/a\u003e: The tox configuration has been adjusted to make sure the desired\nversion string can be passed into its \u003ccode\u003epackage_env\u003c/code\u003e through\nthe \u003ccode\u003eSETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTEST\u003c/code\u003e environment\nvariable as a part of the release process -- by \u003ccode\u003ewebknjaz\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/3d10b5148e03eb82b3ee29181dbdc73cf82699e2\"\u003e\u003ccode\u003e3d10b51\u003c/code\u003e\u003c/a\u003e Prepare release version 9.0.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/188750b725add8c3400eee6fbb6b80559c296d69\"\u003e\u003ccode\u003e188750b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14030\"\u003e#14030\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/1e4b01d1f...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/b7d7bef90cb9a6db8ac1d3dd5b9ae0eb9abd6c58\"\u003e\u003ccode\u003eb7d7bef\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14014\"\u003e#14014\u003c/a\u003e from bluetech/compat-note\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/bd08e85ac76614ff5ca9ae338aee8d8b06c8fae0\"\u003e\u003ccode\u003ebd08e85\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14013\"\u003e#14013\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/922b60377...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/bc783862991241c442c9f9c068e51737ec15ea10\"\u003e\u003ccode\u003ebc78386\u003c/code\u003e\u003c/a\u003e Add CLI options reference documentation (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13930\"\u003e#13930\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/5a4e398ce89bc23d2cf3fd98c042fdffb6fa8afa\"\u003e\u003ccode\u003e5a4e398\u003c/code\u003e\u003c/a\u003e Fix docs typo (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14005\"\u003e#14005\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14008\"\u003e#14008\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/d7ae6df394398168bf9d926f803c26849c8f07ee\"\u003e\u003ccode\u003ed7ae6df\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14006\"\u003e#14006\u003c/a\u003e from pytest-dev/maintenance/update-plugin-list-tmpl...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/556f6a22e12d13d1ffeceaf64424eb95d5e0fb87\"\u003e\u003ccode\u003e556f6a2\u003c/code\u003e\u003c/a\u003e pre-commit: fix rst-lint after new release (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13999\"\u003e#13999\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14001\"\u003e#14001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/c60fbe63a26f64a42738e3f3527a8f79024fdf50\"\u003e\u003ccode\u003ec60fbe6\u003c/code\u003e\u003c/a\u003e Fix quadratic-time behavior when handling \u003ccode\u003eunittest\u003c/code\u003e subtests in Python 3.10 ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/73d9b011183d9a1c4a7007c1119d97a6e627788e\"\u003e\u003ccode\u003e73d9b01\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13995\"\u003e#13995\u003c/a\u003e from nicoddemus/patchback/backports/9.0.x/1b5200c0f...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest/compare/8.4.2...9.0.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\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/python/release-tools/pull/325","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/python%2Frelease-tools/issues/325","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/325/packages"},{"uuid":"3670853702","node_id":"PR_kwDOHGh5u8610wID","number":915,"state":"closed","title":"build(deps): bump the pipenv group across 1 directory with 34 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-01-13T11:09:04.000Z","author_association":null,"state_reason":null,"created_at":"2025-11-27T10:46:16.000Z","updated_at":"2026-01-13T11:09:06.000Z","time_to_close":4062168,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"pipenv","update_count":34,"packages":[{"name":"rich-click","old_version":"1.8.8","new_version":"1.9.4","repository_url":"https://github.com/ewels/rich-click"},{"name":"securesystemslib","old_version":"1.3.0","new_version":"1.3.1","repository_url":"https://github.com/secure-systems-lab/securesystemslib"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"dynaconf","old_version":"3.2.10","new_version":"3.2.12","repository_url":"https://github.com/dynaconf/dynaconf"},{"name":"isort","old_version":"6.0.1","new_version":"7.0.0","repository_url":"https://github.com/PyCQA/isort"},{"name":"sqlalchemy","old_version":"2.0.40","new_version":"2.0.44","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"psycopg2","old_version":"2.9.10","new_version":"2.9.11","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"beaupy","old_version":"3.10.1","new_version":"3.10.2","repository_url":"https://github.com/petereon/beaupy"},{"name":"sigstore","old_version":"3.6.2","new_version":"4.1.0","repository_url":"https://github.com/sigstore/sigstore-python"},{"name":"boto3","old_version":"1.38.8","new_version":"1.41.5","repository_url":"https://github.com/boto/boto3"},{"name":"google-cloud-kms","old_version":"3.4.1","new_version":"3.7.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"hvac","old_version":"2.3.0","new_version":"2.4.0","repository_url":"https://github.com/hvac/hvac"},{"name":"azure-keyvault-keys","old_version":"4.10.0","new_version":"4.11.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"prompt-toolkit","old_version":"3.0.51","new_version":"3.0.52","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"setuptools","old_version":"80.3.1","new_version":"80.9.0","repository_url":"https://github.com/pypa/setuptools"},{"name":"pykcs11","old_version":"1.5.17","new_version":"1.5.18","repository_url":"https://github.com/LudovicRousseau/PyKCS11"},{"name":"exceptiongroup","old_version":"1.2.2","new_version":"1.3.1","repository_url":"https://github.com/agronholm/exceptiongroup"},{"name":"black","old_version":"25.1.0","new_version":"25.11.0","repository_url":"https://github.com/psf/black"},{"name":"flake8","old_version":"7.2.0","new_version":"7.3.0","repository_url":"https://github.com/pycqa/flake8"},{"name":"tox","old_version":"4.25.0","new_version":"4.32.0","repository_url":"https://github.com/tox-dev/tox"},{"name":"pytest","old_version":"8.3.5","new_version":"9.0.1","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"6.1.1","new_version":"7.0.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pytest-xdist","old_version":"3.6.1","new_version":"3.8.0","repository_url":"https://github.com/pytest-dev/pytest-xdist"},{"name":"mypy","old_version":"1.15.0","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"},{"name":"pip","old_version":"25.1.1","new_version":"25.3","repository_url":"https://github.com/pypa/pip"},{"name":"sphinxcontrib-plantuml","old_version":"0.30","new_version":"0.31","repository_url":"https://github.com/sphinx-contrib/plantuml"},{"name":"hatchling","old_version":"1.27.0","new_version":"1.28.0","repository_url":"https://github.com/pypa/hatch"},{"name":"build","old_version":"1.2.2.post1","new_version":"1.3.0","repository_url":"https://github.com/pypa/build"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.5.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"bandit","old_version":"1.8.3","new_version":"1.9.2","repository_url":"https://github.com/PyCQA/bandit"},{"name":"types-requests","old_version":"2.32.0.20250328","new_version":"2.32.4.20250913","repository_url":"https://github.com/typeshed-internal/stub_uploader"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pipenv group with 31 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [rich-click](https://github.com/ewels/rich-click) | `1.8.8` | `1.9.4` |\n| [securesystemslib](https://github.com/secure-systems-lab/securesystemslib) | `1.3.0` | `1.3.1` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [dynaconf](https://github.com/dynaconf/dynaconf) | `3.2.10` | `3.2.12` |\n| [isort](https://github.com/PyCQA/isort) | `6.0.1` | `7.0.0` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.40` | `2.0.44` |\n| [psycopg2](https://github.com/psycopg/psycopg2) | `2.9.10` | `2.9.11` |\n| [beaupy](https://github.com/petereon/beaupy) | `3.10.1` | `3.10.2` |\n| [sigstore](https://github.com/sigstore/sigstore-python) | `3.6.2` | `4.1.0` |\n| [boto3](https://github.com/boto/boto3) | `1.38.8` | `1.41.5` |\n| [google-cloud-kms](https://github.com/googleapis/google-cloud-python) | `3.4.1` | `3.7.0` |\n| [hvac](https://github.com/hvac/hvac) | `2.3.0` | `2.4.0` |\n| [azure-keyvault-keys](https://github.com/Azure/azure-sdk-for-python) | `4.10.0` | `4.11.0` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.51` | `3.0.52` |\n| [setuptools](https://github.com/pypa/setuptools) | `80.3.1` | `80.9.0` |\n| [pykcs11](https://github.com/LudovicRousseau/PyKCS11) | `1.5.17` | `1.5.18` |\n| [exceptiongroup](https://github.com/agronholm/exceptiongroup) | `1.2.2` | `1.3.1` |\n| [black](https://github.com/psf/black) | `25.1.0` | `25.11.0` |\n| [flake8](https://github.com/pycqa/flake8) | `7.2.0` | `7.3.0` |\n| [tox](https://github.com/tox-dev/tox) | `4.25.0` | `4.32.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.5` | `9.0.1` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `6.1.1` | `7.0.0` |\n| [pytest-xdist](https://github.com/pytest-dev/pytest-xdist) | `3.6.1` | `3.8.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.18.2` |\n| [pip](https://github.com/pypa/pip) | `25.1.1` | `25.3` |\n| [sphinxcontrib-plantuml](https://github.com/sphinx-contrib/plantuml) | `0.30` | `0.31` |\n| [hatchling](https://github.com/pypa/hatch) | `1.27.0` | `1.28.0` |\n| [build](https://github.com/pypa/build) | `1.2.2.post1` | `1.3.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.5.0` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.8.3` | `1.9.2` |\n| [types-requests](https://github.com/typeshed-internal/stub_uploader) | `2.32.0.20250328` | `2.32.4.20250913` |\n\n\nUpdates `rich-click` from 1.8.8 to 1.9.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ewels/rich-click/releases\"\u003erich-click's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.9.4\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded Typer 0.20 support\u003c/li\u003e\n\u003cli\u003eFix lack of support for \u003ccode\u003eflag_value=...\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.3\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed subcommand discovery in help text. Behavior should now be the same as \u003ccode\u003e1.8\u003c/code\u003e. [\u003ca href=\"https://redirect.github.com/ewels/rich-click/pull/304\"\u003e#304\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.3.dev0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed subcommand discovery in help text. Behavior should now be the same as \u003ccode\u003e1.8\u003c/code\u003e. [\u003ca href=\"https://redirect.github.com/ewels/rich-click/pull/304\"\u003e#304\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed legacy Windows rendering\u003c/li\u003e\n\u003cli\u003eFix issue with parent \u003ccode\u003eclick.Group\u003c/code\u003e and child \u003ccode\u003erich_click.RichCommand\u003c/code\u003e error formatter not resolving.\u003c/li\u003e\n\u003cli\u003eAdd headers to tables (by default these are not shown).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.2.dev0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed legacy windows rendering\u003c/li\u003e\n\u003cli\u003eFix issue with parent \u003ccode\u003eclick.Group\u003c/code\u003e and child \u003ccode\u003erich_click.RichCommand\u003c/code\u003e error formatter not resolving.\u003c/li\u003e\n\u003cli\u003eAdd headers to tables (by default these are not shown).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed bug where running the \u003ccode\u003erich-click\u003c/code\u003e CLI on a \u003ccode\u003e@rich_click.argument()\u003c/code\u003e sometimes caused arguments show up in the option panel when it shouldn't.\u003c/li\u003e\n\u003cli\u003eSlightly reduced horizontal padding of the \u003ccode\u003emodern\u003c/code\u003e theme format.\u003c/li\u003e\n\u003cli\u003eFixed Click 8.3 compatibility with rendering defaults in help text.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.0\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\nVersion 1.9.0 deprecates support for a lot of old versions of things:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ePython 3.7 support is removed.\u003c/strong\u003e The minimum supported Python version is 3.8.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eClick 7 support is removed.\u003c/strong\u003e The minimum supported Click version is 8.0.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRich 10 and 11 support is removed.\u003c/strong\u003e The minimum supported Rich version is 12.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\nVersion 1.9.0 introduces a minor breaking change:\nThe \u003ccode\u003eDEFAULT_STRING\u003c/code\u003e, \u003ccode\u003eENVVAR_STRING\u003c/code\u003e, \u003ccode\u003eREQUIRED_STRING\u003c/code\u003e, and \u003ccode\u003eDEPRECATED_STRING\u003c/code\u003e config options are now rendered with \u003ccode\u003eText.from_markup\u003c/code\u003e.\nSo for example, \u003ccode\u003eREQUIRED_STRING = \u0026quot;[required]\u0026quot;\u003c/code\u003e would be rendered as Rich markup.\nYou must now escape the rich markup: \u003ccode\u003eREQUIRED_STRING = \u0026quot;\\\\[required]\u0026quot;\u003c/code\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003eBig changes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eThemes!\u003c/strong\u003e Check them out with \u003ccode\u003erich-click --themes\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTyper support:\u003c/strong\u003e \u003ccode\u003erich-click typer_app --help\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRichPanels\u003c/strong\u003e API introduced. This replaces the \u0026quot;groups\u0026quot; feature going forward (although groups will continue to be supported).\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e@click.option_panel()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e@click.command_panel()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eIDE tab completion support for decorators\u003c/strong\u003e. Now you should no longer need to guess what goes in \u003ccode\u003e@click.option()\u003c/code\u003e or \u003ccode\u003e@click.command(context_settings=...)\u003c/code\u003e etc.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHelp for arguments:\u003c/strong\u003e \u003ccode\u003ehelp=\u003c/code\u003e is now a valid kwarg for \u003ccode\u003e@click.argument()\u003c/code\u003e decorator. See docs for more information.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSmall changes:\u003c/strong\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ewels/rich-click/blob/main/CHANGELOG.md\"\u003erich-click's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.9.4 (2025-10-24)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded Typer 0.20 support\u003c/li\u003e\n\u003cli\u003eFix lack of support for \u003ccode\u003eflag_value=...\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.9.3 (2025-10-09)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed subcommand discovery in help text. Behavior should now be the same as \u003ccode\u003e1.8\u003c/code\u003e. [\u003ca href=\"https://redirect.github.com/ewels/rich-click/pull/304\"\u003e#304\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.9.2 (2025-10-04)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed legacy windows rendering\u003c/li\u003e\n\u003cli\u003eFix issue with parent \u003ccode\u003eclick.Group\u003c/code\u003e and child \u003ccode\u003erich_click.RichCommand\u003c/code\u003e error formatter not resolving.\u003c/li\u003e\n\u003cli\u003eAdd headers to tables (by default these are not shown).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.9.1 (2025-09-20)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed bug where running the \u003ccode\u003erich-click\u003c/code\u003e CLI on a \u003ccode\u003e@rich_click.argument()\u003c/code\u003e sometimes caused arguments show up in the option panel when it shouldn't.\u003c/li\u003e\n\u003cli\u003eSlightly reduced horizontal padding of the \u003ccode\u003emodern\u003c/code\u003e theme format.\u003c/li\u003e\n\u003cli\u003eFixed Click 8.3 compatibility with rendering defaults in help text.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.9.0 (2025-09-16)\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\nVersion 1.9.0 deprecates support for a lot of old versions of things:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ePython 3.7 support is removed.\u003c/strong\u003e The minimum supported Python version is 3.8.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eClick 7 support is removed.\u003c/strong\u003e The minimum supported Click version is 8.0.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRich 10 and 11 support is removed.\u003c/strong\u003e The minimum supported Rich version is 12.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\nVersion 1.9.0 introduces a minor breaking change:\nThe \u003ccode\u003eDEFAULT_STRING\u003c/code\u003e, \u003ccode\u003eENVVAR_STRING\u003c/code\u003e, \u003ccode\u003eREQUIRED_STRING\u003c/code\u003e, and \u003ccode\u003eDEPRECATED_STRING\u003c/code\u003e config options are now rendered with \u003ccode\u003eText.from_markup\u003c/code\u003e.\nSo for example, \u003ccode\u003eREQUIRED_STRING = \u0026quot;[required]\u0026quot;\u003c/code\u003e would be rendered as Rich markup.\nYou must now escape the rich markup: \u003ccode\u003eREQUIRED_STRING = \u0026quot;\\\\[required]\u0026quot;\u003c/code\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003eBig changes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eThemes!\u003c/strong\u003e Check them out with \u003ccode\u003erich-click --themes\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTyper support:\u003c/strong\u003e \u003ccode\u003erich-click typer_app --help\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRichPanels\u003c/strong\u003e API introduced. This replaces the \u0026quot;groups\u0026quot; feature going forward (although groups will continue to be supported).\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e@click.option_panel()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e@click.command_panel()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eIDE tab completion support for decorators\u003c/strong\u003e. Now you should no longer need to guess what goes in \u003ccode\u003e@click.option()\u003c/code\u003e or \u003ccode\u003e@click.command(context_settings=...)\u003c/code\u003e etc.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHelp for arguments:\u003c/strong\u003e \u003ccode\u003ehelp=\u003c/code\u003e is now a valid kwarg for \u003ccode\u003e@click.argument()\u003c/code\u003e decorator. See docs for more information.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSmall changes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u0026quot;Deprecated\u0026quot; text properly handled and stylized in all places.\u003c/li\u003e\n\u003cli\u003eCommand aliases: \u003ccode\u003e@cli.command(aliases=[\u0026quot;foo\u0026quot;])\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/ewels/rich-click/commit/7577bb99779c3789f252bc59617daaefdd81cf75\"\u003e\u003ccode\u003e7577bb9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ewels/rich-click/issues/309\"\u003e#309\u003c/a\u003e from dwreeves/1.9.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/69152920143a12f4f9c47ccf9056a164048b7935\"\u003e\u003ccode\u003e6915292\u003c/code\u003e\u003c/a\u003e version bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/d1d294c8868d5b363e7ae96608722cb50223f3ec\"\u003e\u003ccode\u003ed1d294c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ewels/rich-click/issues/308\"\u003e#308\u003c/a\u003e from dwreeves/fix-flag-value-issue\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/2bcbd9f7c716079437c3f6024ad089335a184889\"\u003e\u003ccode\u003e2bcbd9f\u003c/code\u003e\u003c/a\u003e update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/fdbe0267dd492cfbc07817b0f2de5090c2e65b1a\"\u003e\u003ccode\u003efdbe026\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ewels/rich-click/issues/306\"\u003e#306\u003c/a\u003e from omad/patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/f55d3b8cb01feaaee720498bcea3581c859867cb\"\u003e\u003ccode\u003ef55d3b8\u003c/code\u003e\u003c/a\u003e Merge branch 'patch-1' of github.com-dwreeves:omad/rich-click into patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/515a091913fbe70a0172143ce7feed253e3763db\"\u003e\u003ccode\u003e515a091\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ewels/rich-click/issues/307\"\u003e#307\u003c/a\u003e from dwreeves/typer-0.20-support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/49dff4b13a1357307386edc73c540ecbda1c4854\"\u003e\u003ccode\u003e49dff4b\u003c/code\u003e\u003c/a\u003e Fix Typer 0.20\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/78793440af87f4e9b9204bbff90bfa2bf6fedbc2\"\u003e\u003ccode\u003e7879344\u003c/code\u003e\u003c/a\u003e Fix example links for documentation site\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/0ea0e0a13b199cc1cf28ece1338bf0838772727b\"\u003e\u003ccode\u003e0ea0e0a\u003c/code\u003e\u003c/a\u003e Bump to 1.9.3\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ewels/rich-click/compare/v1.8.8...v1.9.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `securesystemslib` from 1.3.0 to 1.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/releases\"\u003esecuresystemslib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.3.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/blob/v1.3.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e for details.\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/secure-systems-lab/securesystemslib/blob/main/CHANGELOG.md\"\u003esecuresystemslib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003esecuresystemslib v1.3.1\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAWSSigner: Don't send payload to AWS for signing, send hash only (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1026\"\u003e#1026\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSet Development status classifier to \u0026quot;production/stable\u0026quot; in Python\npackaging (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1030\"\u003e#1030\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternals\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMinor infrastructure changes (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1005\"\u003e#1005\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1013\"\u003e#1013\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/secure-systems-lab/securesystemslib/commit/6f774190b90f0aa9d5d7e077680adbaa29c5cd6c\"\u003e\u003ccode\u003e6f77419\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1030\"\u003e#1030\u003c/a\u003e from jku/release-prep-1.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/b71cc5271a9a7b6898c79c1a12393d90996d5388\"\u003e\u003ccode\u003eb71cc52\u003c/code\u003e\u003c/a\u003e Prepare release 1.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/f6835096a845acf25dc3675105937be2565b9e66\"\u003e\u003ccode\u003ef683509\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1026\"\u003e#1026\u003c/a\u003e from ArkadiuszNitkaSWI/fix-aws-signer\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/97527198c7bf5b75ef9fb8996412df5453995080\"\u003e\u003ccode\u003e9752719\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1027\"\u003e#1027\u003c/a\u003e from secure-systems-lab/dependabot/pip/test-and-lint...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/4226b762bf3333b5947af9cf29ed751afbfd69b9\"\u003e\u003ccode\u003e4226b76\u003c/code\u003e\u003c/a\u003e build(deps): bump the test-and-lint-dependencies group with 4 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/6394e3e467c091a06ee95dad674dec7e991758c8\"\u003e\u003ccode\u003e6394e3e\u003c/code\u003e\u003c/a\u003e Review changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/dee9a831390c9a69c0e66f7c34779e9eea6dcc6d\"\u003e\u003ccode\u003edee9a83\u003c/code\u003e\u003c/a\u003e linter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/07b0fc780d9d1f4c0843ce3e2096e1216814bd06\"\u003e\u003ccode\u003e07b0fc7\u003c/code\u003e\u003c/a\u003e update .gitignore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/e8158a4eb131760714290b9839e3e40f9cd4229c\"\u003e\u003ccode\u003ee8158a4\u003c/code\u003e\u003c/a\u003e Fix AWS signer, allow messages bigger than 4kB\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/e23f855ddecb97d4baddffc068e9591451b9aa72\"\u003e\u003ccode\u003ee23f855\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1023\"\u003e#1023\u003c/a\u003e from secure-systems-lab/dependabot/pip/dependencies-...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/compare/v1.3.0...v1.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.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 `rich` from 14.0.0 to 14.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Textualize/rich/releases\"\u003erich's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eThe Easy as Pi release\u003c/h2\u003e\n\u003cp\u003eThis release bumps Python compatibility to the just-released Python 3.14.\u003c/p\u003e\n\u003ch2\u003e[14.2.0] - 2025-10-09\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePython3.14 compatibility \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3861\"\u003eTextualize/rich#3861\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eThe Lively Release\u003c/h2\u003e\n\u003cp\u003eLive objects may now be nested. Previously a progress bar inside another progress context would fail. See the changelog below for this and other changes.\u003c/p\u003e\n\u003ch2\u003e[14.1.0] - 2025-06-25\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved \u003ccode\u003etyping_extensions\u003c/code\u003e from runtime dependencies \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3763\"\u003eTextualize/rich#3763\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLive objects (including Progress) may now be nested \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3768\"\u003eTextualize/rich#3768\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded padding property to Syntax which returns a tuple of four integers \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3782\"\u003eTextualize/rich#3782\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed extraction of recursive exceptions \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3772\"\u003eTextualize/rich#3772\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed padding applied to Syntax \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3782\"\u003eTextualize/rich#3782\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003ePanel\u003c/code\u003e title missing the panel background style \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3569\"\u003eTextualize/rich#3569\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eTTY_INTERACTIVE\u003c/code\u003e environment variable to force interactive mode off or on \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3777\"\u003eTextualize/rich#3777\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/Textualize/rich/blob/master/CHANGELOG.md\"\u003erich's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[14.2.0] - 2025-10-09\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePython3.14 compatibility \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3861\"\u003eTextualize/rich#3861\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[14.1.0] - 2025-06-25\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved \u003ccode\u003etyping_extensions\u003c/code\u003e from runtime dependencies \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3763\"\u003eTextualize/rich#3763\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLive objects (including Progress) may now be nested \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3768\"\u003eTextualize/rich#3768\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded padding property to Syntax which returns a tuple of four integers \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3782\"\u003eTextualize/rich#3782\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed extraction of recursive exceptions \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3772\"\u003eTextualize/rich#3772\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed padding applied to Syntax \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3782\"\u003eTextualize/rich#3782\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003ePanel\u003c/code\u003e title missing the panel background style \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3569\"\u003eTextualize/rich#3569\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eTTY_INTERACTIVE\u003c/code\u003e environment variable to force interactive mode off or on \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3777\"\u003eTextualize/rich#3777\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/Textualize/rich/commit/494f83c923ca54ecc943bf5e60c0004e65fbb54e\"\u003e\u003ccode\u003e494f83c\u003c/code\u003e\u003c/a\u003e changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/d476e85a19ea62966a25f6df0e0a287da52ab35f\"\u003e\u003ccode\u003ed476e85\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3862\"\u003e#3862\u003c/a\u003e from GeroZayas/docs/es-readme-sync-2025-10\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/518daaa39c17bad485c970bf229424784fbdf044\"\u003e\u003ccode\u003e518daaa\u003c/code\u003e\u003c/a\u003e docs(es): sync README.es.md (macOS, 16 colors, Python 3.8+)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/cd5074f87804aac2f6e5c6143e1cac5e3a0bddc5\"\u003e\u003ccode\u003ecd5074f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3861\"\u003e#3861\u003c/a\u003e from Textualize/python314\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/041406ca9b60af8fcc00cd7fc1b2973ab51eb851\"\u003e\u003ccode\u003e041406c\u003c/code\u003e\u003c/a\u003e removed asv\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/655b5210cb1403100a646d167cf027eec760dd9f\"\u003e\u003ccode\u003e655b521\u003c/code\u003e\u003c/a\u003e test fixes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/27c2d2df7523315de4b81577d414db8c1c7312f9\"\u003e\u003ccode\u003e27c2d2d\u003c/code\u003e\u003c/a\u003e bump for Python3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/ea9d4db5d84b4e834979304e3053bf757daae322\"\u003e\u003ccode\u003eea9d4db\u003c/code\u003e\u003c/a\u003e Update feature_request.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/2dca1b70359dac61e1bbfb6f14ebe19a5ab79c3d\"\u003e\u003ccode\u003e2dca1b7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3808\"\u003e#3808\u003c/a\u003e from Textualize/bump1410\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/19b6dddd807b887eaaf313174fff3eb2e22cda25\"\u003e\u003ccode\u003e19b6ddd\u003c/code\u003e\u003c/a\u003e version bump\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Textualize/rich/compare/v14.0.0...v14.2.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 `dynaconf` from 3.2.10 to 3.2.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dynaconf/dynaconf/releases\"\u003edynaconf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.2.12\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eIncremental improvment to access performance by \u003ca href=\"https://github.com/pedro-psb\"\u003e\u003ccode\u003e@​pedro-psb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/pull/1304\"\u003edynaconf/dynaconf#1304\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: get method to return Any type. by \u003ca href=\"https://github.com/rochacbruno\"\u003e\u003ccode\u003e@​rochacbruno\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/pull/1314\"\u003edynaconf/dynaconf#1314\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eperf: add lru caching to \u003ccode\u003efind_the_correct_casing\u003c/code\u003e function by \u003ca href=\"https://github.com/pedro-psb\"\u003e\u003ccode\u003e@​pedro-psb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/pull/1326\"\u003edynaconf/dynaconf#1326\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/dynaconf/dynaconf/compare/3.2.11...3.2.12\"\u003ehttps://github.com/dynaconf/dynaconf/compare/3.2.11...3.2.12\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.2.11\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eRelease version 3.2.11\u003c/p\u003e\n\u003cp\u003eShortlog of commits since last release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBruno Rocha (9): \u003ca href=\"https://github.com/rochacbruno\"\u003e\u003ccode\u003e@​rochacbruno\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003efix(cli): handle empty hooks and boolean environments.\u003c/li\u003e\n\u003cli\u003efix: Better way for CLI to find the Django Settings\u003c/li\u003e\n\u003cli\u003efix: windows CI\u003c/li\u003e\n\u003cli\u003efeat: Run CLI as module with \u003ccode\u003epython -m dynaconf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1290\"\u003e#1290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: use sys.argv instead of click.get_os_args (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1292\"\u003e#1292\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: \u003ccode\u003e-k\u003c/code\u003e must exit code 1 when key do not exist (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1293\"\u003e#1293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: envless load file (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1295\"\u003e#1295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: add correct supported python version to 3.2.x\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFabricio Aguiar (1): \u003ca href=\"https://github.com/fao89\"\u003e\u003ccode\u003e@​fao89\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003efix: make raw variables private (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1287\"\u003e#1287\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePedro Brochado (1): \u003ca href=\"https://github.com/pedro-psb\"\u003e\u003ccode\u003e@​pedro-psb\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003edocs: clarification on redis hash title when using custom envvar prefixes (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMilestone \u003ca href=\"https://github.com/dynaconf/dynaconf/milestone/31?closed=1\"\u003ehttps://github.com/dynaconf/dynaconf/milestone/31?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/dynaconf/dynaconf/compare/3.2.10...3.2.11\"\u003ehttps://github.com/dynaconf/dynaconf/compare/3.2.10...3.2.11\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/dynaconf/dynaconf/blob/3.2.12/CHANGELOG.md\"\u003edynaconf's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pedro-psb/dynaconf/releases/tag/3.2.12\"\u003e3.2.12\u003c/a\u003e - 2025-10-10\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eget method to return Any type.. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003eremove unnecessary recursive evaluation call on Settings.get. \u003cem\u003eBy Pedro Brochado\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003eimprove performance of settings access in a loop (part 1). \u003cem\u003eBy Pedro Brochado\u003c/em\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/releases/tag/3.2.11\"\u003e3.2.11\u003c/a\u003e - 2025-05-06\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd correct supported python version to 3.2.x. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e-k\u003c/code\u003e must exit code 1 when key do not exist (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1293\"\u003e#1293\u003c/a\u003e). \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003euse sys.argv instead of click.get_os_args (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1292\"\u003e#1292\u003c/a\u003e). \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003ewindows CI. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003emake raw variables private (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1287\"\u003e#1287\u003c/a\u003e). \u003cem\u003eBy Fabricio Aguiar\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003eBetter way for CLI to find the Django Settings. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003ehandle empty hooks and boolean environments.. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eenvless load file (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1295\"\u003e#1295\u003c/a\u003e). \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003eRun CLI as module with \u003ccode\u003epython -m dynaconf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1290\"\u003e#1290\u003c/a\u003e). \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eclarification on redis hash title when using custom envvar prefixes (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1273\"\u003e#1273\u003c/a\u003e). \u003cem\u003eBy Pedro Brochado\u003c/em\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/dynaconf/dynaconf/commit/7606f351ac460b15c56e7a538300de4a501c56e7\"\u003e\u003ccode\u003e7606f35\u003c/code\u003e\u003c/a\u003e Release version 3.2.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/da44e5182940299dd90ca3e2a0e0e3c23cb9ebf7\"\u003e\u003ccode\u003eda44e51\u003c/code\u003e\u003c/a\u003e perf: add lru caching to \u003ccode\u003efind_the_correct_casing\u003c/code\u003e function (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1326\"\u003e#1326\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/b75eda0da141bdc29f707f2cb0c29e06b03a72bb\"\u003e\u003ccode\u003eb75eda0\u003c/code\u003e\u003c/a\u003e fix: get method to return Any type.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/4f3df1a47bcb71feddf7565f603e7994c65ede65\"\u003e\u003ccode\u003e4f3df1a\u003c/code\u003e\u003c/a\u003e misc: add some profile/perf scripts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/420acebf64e77ba475df94dfd7d409207e5e239d\"\u003e\u003ccode\u003e420aceb\u003c/code\u003e\u003c/a\u003e refactor: merge \u003cem\u003esafe\u003c/em\u003e{get,copy} into .get and .copy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/18c0c8422dc9651d57c76d1b098ad6fb3f75c09d\"\u003e\u003ccode\u003e18c0c84\u003c/code\u003e\u003c/a\u003e fix: remove unnecessary recursive evaluation call on Settings.get\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/0fde96f2e0b71309e63800ddac8eceda062155a9\"\u003e\u003ccode\u003e0fde96f\u003c/code\u003e\u003c/a\u003e refactor: rewrite decorator as explicit call\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/52efd9ed78d2187550e03a2ae5008661d5e28df9\"\u003e\u003ccode\u003e52efd9e\u003c/code\u003e\u003c/a\u003e Bump to version 3.2.12-dev0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/c61da8fd191196c1341bd3d8a8dd895e9cf671ae\"\u003e\u003ccode\u003ec61da8f\u003c/code\u003e\u003c/a\u003e Release version 3.2.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/f8189fb6c130ff4709450e7daebcf1c174aea248\"\u003e\u003ccode\u003ef8189fb\u003c/code\u003e\u003c/a\u003e fix: add correct supported python version to 3.2.x\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/dynaconf/dynaconf/compare/3.2.10...3.2.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `isort` from 6.0.1 to 7.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/isort/releases\"\u003eisort's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.0.0\u003c/h2\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003ch2\u003e:boom: Breaking Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9 (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2430\"\u003e#2430\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:rocket: Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eShow absolute paths in skipped file messages (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2416\"\u003e#2416\u003c/a\u003e) \u003ca href=\"https://github.com/pranlawate\"\u003e\u003ccode\u003e@​pranlawate\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:beetle: Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSome fixes for Python 3.14 (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2433\"\u003e#2433\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTest on \u003ccode\u003e3.14\u003c/code\u003e and fix any bugs (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2425\"\u003e#2425\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CHANGELOG.md + Fix Formatting and Grammar (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2419\"\u003e#2419\u003c/a\u003e) \u003ca href=\"https://github.com/lukbrew25\"\u003e\u003ccode\u003e@​lukbrew25\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix output of hanging indent for long lines with noqa (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2407\"\u003e#2407\u003c/a\u003e) \u003ca href=\"https://github.com/matan1008\"\u003e\u003ccode\u003e@​matan1008\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:construction_worker: Continuous Integration\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFormat with \u003ccode\u003eruff\u003c/code\u003e instead of \u003ccode\u003eblack\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2432\"\u003e#2432\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTarget 3.10 for \u003ccode\u003eruff\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2431\"\u003e#2431\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate development dependencies to latest version (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2426\"\u003e#2426\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: update pre-commit examples to version 6.1.0 (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2413\"\u003e#2413\u003c/a\u003e) \u003ca href=\"https://github.com/pranlawate\"\u003e\u003ccode\u003e@​pranlawate\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall cleanup for developer environment (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2418\"\u003e#2418\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:package: Dependencies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/setup-python from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2411\"\u003e#2411\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e6.1.0\u003c/h2\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate docs discussions channel (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2410\"\u003e#2410\u003c/a\u003e) \u003ca href=\"https://github.com/staticdev\"\u003e\u003ccode\u003e@​staticdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd python 3.14 classifier and badge (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2409\"\u003e#2409\u003c/a\u003e) \u003ca href=\"https://github.com/staticdev\"\u003e\u003ccode\u003e@​staticdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop use of non-standard pkg_resources API (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2405\"\u003e#2405\u003c/a\u003e) \u003ca href=\"https://github.com/dvarrazzo\"\u003e\u003ccode\u003e@​dvarrazzo\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse working isort version in pre-commit example (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2402\"\u003e#2402\u003c/a\u003e) \u003ca href=\"https://github.com/iainelder\"\u003e\u003ccode\u003e@​iainelder\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix typo in _get_files_from_dir_cached test (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2392\"\u003e#2392\u003c/a\u003e) \u003ca href=\"https://github.com/tiltingpenguin\"\u003e\u003ccode\u003e@​tiltingpenguin\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eResolve bandit warnings (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2379\"\u003e#2379\u003c/a\u003e) \u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd tox for cross-platform, parallel test suite execution (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2378\"\u003e#2378\u003c/a\u003e) \u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Project URLs to PyPI Side Panel (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2387\"\u003e#2387\u003c/a\u003e) \u003ca href=\"https://github.com/guillermodotn\"\u003e\u003ccode\u003e@​guillermodotn\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typos (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2376\"\u003e#2376\u003c/a\u003e) \u003ca href=\"https://github.com/co63oc\"\u003e\u003ccode\u003e@​co63oc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:construction_worker: Continuous Integration\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd make bash scripts portable (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2377\"\u003e#2377\u003c/a\u003e) \u003ca href=\"https://github.com/staticdev\"\u003e\u003ccode\u003e@​staticdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:package: Dependencies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 4 to 5 in the github-actions group (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2406\"\u003e#2406\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/isort/blob/main/CHANGELOG.md\"\u003eisort's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003cp\u003eNOTE: isort follows the \u003ca href=\"https://semver.org/\"\u003esemver\u003c/a\u003e versioning standard.\nFind out more about isort's release policy \u003ca href=\"https://pycqa.github.io/isort/docs/major_releases/release_policy\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eUnreleased\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved \u003ccode\u003e--old-finders\u003c/code\u003e and \u003ccode\u003e--magic-placement\u003c/code\u003e flags and \u003ccode\u003eold_finders\u003c/code\u003e configuration option. The legacy finder logic that relied on environment introspection has been removed (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2445\"\u003e#2445\u003c/a\u003e) \u003ca href=\"https://github.com/joao-faria-dev\"\u003e\u003ccode\u003e@​joao-faria-dev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e6.1.0 October 1 2025\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd python 3.14 classifier and badge (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2409\"\u003e#2409\u003c/a\u003e) \u003ca href=\"https://github.com/staticdev\"\u003e\u003ccode\u003e@​staticdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop use of non-standard pkg_resources API (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2405\"\u003e#2405\u003c/a\u003e) \u003ca href=\"https://github.com/dvarrazzo\"\u003e\u003ccode\u003e@​dvarrazzo\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/PyCQA/isort/commit/0a09c783808cfe77bb3269250f663ff733d23302\"\u003e\u003ccode\u003e0a09c78\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2433\"\u003e#2433\u003c/a\u003e from DanielNoord/python-314\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/0fee794a05b5d0c471ac80bc8943f9843ca29644\"\u003e\u003ccode\u003e0fee794\u003c/code\u003e\u003c/a\u003e Add 3.14 to \u003ccode\u003estdlibds\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/332a1ad0b68bf3a3acac055b0ec3666408b3b425\"\u003e\u003ccode\u003e332a1ad\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003ezstandard\u003c/code\u003e for 3.14 compat\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/f756e5653afcf6d79ec4d0240b1868cbebd8fafd\"\u003e\u003ccode\u003ef756e56\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2432\"\u003e#2432\u003c/a\u003e from DanielNoord/ruff-it-up\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/52f5134889d345ff35afdcb86501c8221b804c70\"\u003e\u003ccode\u003e52f5134\u003c/code\u003e\u003c/a\u003e Format with \u003ccode\u003eruff\u003c/code\u003e instead of \u003ccode\u003eblack\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/012aa69fcadb3c89ff92a3d96aa449be7ae6746f\"\u003e\u003ccode\u003e012aa69\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2431\"\u003e#2431\u003c/a\u003e from DanielNoord/ruff-it-up\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/89773dbb371192541092657972a74e9ce0bbbc74\"\u003e\u003ccode\u003e89773db\u003c/code\u003e\u003c/a\u003e Target 3.10 with \u003ccode\u003eruff\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/933e382f98a0c77b4c6e33c4e3ef12bd57192884\"\u003e\u003ccode\u003e933e382\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2430\"\u003e#2430\u003c/a\u003e from DanielNoord/drop-39\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/8b6e00cbe643a216da57fed4baa282d0a4a1b829\"\u003e\u003ccode\u003e8b6e00c\u003c/code\u003e\u003c/a\u003e Remove support for Python 3.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/b5f9f296ad873734e8caa3a731f27360648d9b37\"\u003e\u003ccode\u003eb5f9f29\u003c/code\u003e\u003c/a\u003e Bump profile plugin to 3.10+ and re-lock\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PyCQA/isort/compare/6.0.1...7.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlalchemy` from 2.0.40 to 2.0.44\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/releases\"\u003esqlalchemy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.0.44\u003c/h1\u003e\n\u003cp\u003eReleased: October 10, 2025\u003c/p\u003e\n\u003ch2\u003eplatform\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e[platform] [bug]\u003c/strong\u003e Unblocked automatic greenlet installation for Python 3.14 now that\nthere are greenlet wheels on pypi for python 3.14.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eorm\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [usecase]\u003c/strong\u003e The way ORM Annotated Declarative interprets Python \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e type aliases\nin \u003ccode\u003eMapped[]\u003c/code\u003e annotations has been refined to expand the lookup scheme. A\n\u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e type can now be resolved based on either its direct presence in\n\u003ccode\u003e_orm.registry.type_annotation_map\u003c/code\u003e or its immediate resolved\nvalue, as long as a recursive lookup across multiple \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e types is\nnot required for it to resolve. This change reverses part of the\nrestrictions introduced in 2.0.37 as part of \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/11955\"\u003e#11955\u003c/a\u003e, which\ndeprecated (and disallowed in 2.1) the ability to resolve any \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e\ntype that was not explicitly present in\n\u003ccode\u003e_orm.registry.type_annotation_map\u003c/code\u003e. Recursive lookups of\n\u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e types remains deprecated in 2.0 and disallowed in version 2.1,\nas do implicit lookups of \u003ccode\u003eNewType\u003c/code\u003e types without an entry in\n\u003ccode\u003e_orm.registry.type_annotation_map\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eAdditionally, new support has been added for generic \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e aliases that\nrefer to \u003ca href=\"https://peps.python.org/pep-0593\"\u003ePEP 593\u003c/a\u003e \u003ccode\u003eAnnotated\u003c/code\u003e constructs containing\n\u003ccode\u003e_orm.mapped_column()\u003c/code\u003e configurations. See the sections below for\nexamples.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12829\"\u003e#12829\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed a caching issue where \u003ccode\u003e_orm.with_loader_criteria()\u003c/code\u003e would\nincorrectly reuse cached bound parameter values when used with\n\u003ccode\u003e_sql.CompoundSelect\u003c/code\u003e constructs such as \u003ccode\u003e_sql.union()\u003c/code\u003e. The\nissue was caused by the cache key for compound selects not including the\nexecution options that are part of the \u003ccode\u003e_sql.Executable\u003c/code\u003e base class,\nwhich \u003ccode\u003e_orm.with_loader_criteria()\u003c/code\u003e uses to apply its criteria\ndynamically. The fix ensures that compound selects and other executable\nconstructs properly include execution options in their cache key traversal.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12905\"\u003e#12905\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eengine\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e[engine] [bug]\u003c/strong\u003e Implemented initial support for free-threaded Python by adding new tests\nand reworking the test harness to include Python 3.13t and Python 3.14t in\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psycopg2` from 2.9.10 to 2.9.11\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psycopg/psycopg2/blob/master/NEWS\"\u003epsycopg2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eCurrent release\u003c/h2\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.11\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eAvoid a segfault passing more arguments than placeholders if Python is built\nwith assertions enabled (:ticket:\u003ccode\u003e[#1791](https://github.com/psycopg/psycopg2/issues/1791)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eAdd riscv64 platform binary packages (:ticket:\u003ccode\u003e[#1813](https://github.com/psycopg/psycopg2/issues/1813)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e~psycopg2.errorcodes\u003c/code\u003e map and \u003ccode\u003e~psycopg2.errors\u003c/code\u003e classes updated to\nPostgreSQL 18.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.8.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.10\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.13.\u003c/li\u003e\n\u003cli\u003eReceive notifications on commit (:ticket:\u003ccode\u003e[#1728](https://github.com/psycopg/psycopg2/issues/1728)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e~psycopg2.errorcodes\u003c/code\u003e map and \u003ccode\u003e~psycopg2.errors\u003c/code\u003e classes updated to\nPostgreSQL 17.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.7.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.9\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.12.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.6.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.8\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWheel package bundled with PostgreSQL 16 libpq in order to add support for\nrecent features, such as \u003ccode\u003esslcertmode\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.7\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix propagation of exceptions raised during module initialization\n(:ticket:\u003ccode\u003e[#1598](https://github.com/psycopg/psycopg2/issues/1598)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix building when pg_config returns an empty string (:ticket:\u003ccode\u003e[#1599](https://github.com/psycopg/psycopg2/issues/1599)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eWheel package bundled with OpenSSL 1.1.1v.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.6\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/psycopg/psycopg2/commit/fd9ae8cad2bcfc3e7e9410e7b6f07cda8f4f05ec\"\u003e\u003ccode\u003efd9ae8c\u003c/code\u003e\u003c/a\u003e chore: bump to version 2.9.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/d923840546942534f0956d9202f914fd9feac5fd\"\u003e\u003ccode\u003ed923840\u003c/code\u003e\u003c/a\u003e chore: update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/d42dc7169d3cd93517e282e9ef5dc2a2b40650a2\"\u003e\u003ccode\u003ed42dc71\u003c/code\u003e\u003c/a\u003e Merge branch 'fix-1791'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/4fde6560c32f06ad1304404c9f7f86148dcc4be0\"\u003e\u003ccode\u003e4fde656\u003c/code\u003e\u003c/a\u003e fix: avoid failed assert passing more arguments than placeholders\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/8308c19d6af0d904b313997539ed33415990a74e\"\u003e\u003ccode\u003e8308c19\u003c/code\u003e\u003c/a\u003e fix: drop warning about the use of deprecated PyWeakref_GetObject function\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/1a1eabf098a3374409bb2ab4b594777b900f396d\"\u003e\u003ccode\u003e1a1eabf\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/github-script from 7 to 8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/897af8b38beda851d7257dfc525129e37c0ec9e0\"\u003e\u003ccode\u003e897af8b\u003c/code\u003e\u003c/a\u003e build(deps): bump peter-evans/repository-dispatch from 3 to 4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/ceefd305117113ca10e383a626e87ba0796f3638\"\u003e\u003ccode\u003eceefd30\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/checkout from 4 to 5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/4dc585430cabe94cee96c5a9de0265d0f55370f1\"\u003e\u003ccode\u003e4dc5854\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/setup-python from 5 to 6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/1945788dcf6172bb1b9328ebc3587ccf0e6a659c\"\u003e\u003ccode\u003e1945788\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg2/issues/1802\"\u003e#1802\u003c/a\u003e from edgarrmondragon/cp314-wheels\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psycopg/psycopg2/compare/2.9.10...2.9.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `beaupy` 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/petereon/beaupy/releases\"\u003ebeaupy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.10.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): update dependency flake8 to v7.1.1 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/129\"\u003epetereon/beaupy#129\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency isort to v5.13.2 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/130\"\u003epetereon/beaupy#130\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency mypy to v1.14.1 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/131\"\u003epetereon/beaupy#131\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: adding documentation for global config by \u003ca href=\"https://github.com/petereon\"\u003e\u003ccode\u003e@​petereon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/148\"\u003epetereon/beaupy#148\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency pytest to v8.4.2 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/147\"\u003epetereon/beaupy#147\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency black to v25 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/144\"\u003epetereon/beaupy#144\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency pydoc-markdown to v4.8.2 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/132\"\u003epetereon/beaupy#132\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/petereon/beaupy/compare/v3.10.1...v3.10.2\"\u003ehttps://github.com/petereon/beaupy/compare/v3.10.1...v3.10.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/a2dc15764508c0451ed4dc386f3b0761fe7a9ce2\"\u003e\u003ccode\u003ea2dc157\u003c/code\u003e\u003c/a\u003e chore: bump version from 3.10.1 to 3.10.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/7599e5a43be6893c81612314f410ffa602a15f57\"\u003e\u003ccode\u003e7599e5a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/132\"\u003e#132\u003c/a\u003e from petereon/renovate/pydoc-markdown-4.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/6b2bb33d4fef6f2a607e1f42c873bd92ffc2b0d5\"\u003e\u003ccode\u003e6b2bb33\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency pydoc-markdown to v4.8.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/d2b0cbc3bb6b191816fdef9319a150e9b305ae7f\"\u003e\u003ccode\u003ed2b0cbc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/144\"\u003e#144\u003c/a\u003e from petereon/renovate/black-25.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/926fb4e8773f587417e7a3f453af1641364888e5\"\u003e\u003ccode\u003e926fb4e\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency black to v25\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/df126efc542641c8f7385f8087a19a95ee1615b7\"\u003e\u003ccode\u003edf126ef\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/147\"\u003e#147\u003c/a\u003e from petereon/renovate/pytest-8.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/0eb77250022a166836a4594a489d9c178591234b\"\u003e\u003ccode\u003e0eb7725\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency pytest to v8.4.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/7b9234631ce3510e433fbb59d4c0e829d70fd569\"\u003e\u003ccode\u003e7b92346\u003c/code\u003e\u003c/a\u003e chore: linting code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/531e870193a7cb26ab43370a45d8562cb44d8b15\"\u003e\u003ccode\u003e531e870\u003c/code\u003e\u003c/a\u003e chore: fix weird types\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/dfd9dbc54327c19455197566f7161de08ad3180b\"\u003e\u003ccode\u003edfd9dbc\u003c/code\u003e\u003c/a\u003e docs: adding documentation for global config (\u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/148\"\u003e#148\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/petereon/beaupy/compare/v3.10.1...v3.10.2\"\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.2 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 ...\n\n_Description has been truncated_","html_url":"https://github.com/repository-service-tuf/repository-service-tuf-cli/pull/915","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/repository-service-tuf%2Frepository-service-tuf-cli/issues/915","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/915/packages"},{"uuid":"3637510976","node_id":"PR_kwDOIPxgHc60FA43","number":81,"state":"closed","title":"build(deps): bump the python-deps group across 1 directory with 22 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-12-01T13:50:57.000Z","author_association":null,"state_reason":null,"created_at":"2025-11-18T10:59:29.000Z","updated_at":"2025-12-01T13:50:59.000Z","time_to_close":1133488,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python-deps","update_count":22,"packages":[{"name":"redis","old_version":"6.4.0","new_version":"7.0.1","repository_url":"https://github.com/redis/redis-py"},{"name":"dynaconf","old_version":"3.2.11","new_version":"3.2.12","repository_url":"https://github.com/dynaconf/dynaconf"},{"name":"securesystemslib","old_version":"1.3.0","new_version":"1.3.1","repository_url":"https://github.com/secure-systems-lab/securesystemslib"},{"name":"sqlalchemy","old_version":"2.0.43","new_version":"2.0.44","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"psycopg2","old_version":"2.9.10","new_version":"2.9.11","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"alembic","old_version":"1.16.4","new_version":"1.17.2","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"pydantic","old_version":"2.11.7","new_version":"2.12.4","repository_url":"https://github.com/pydantic/pydantic"},{"name":"boto3","old_version":"1.40.16","new_version":"1.40.75","repository_url":"https://github.com/boto/boto3"},{"name":"awswrangler","old_version":"3.12.1","new_version":"3.14.0","repository_url":"https://github.com/aws/aws-sdk-pandas"},{"name":"sigstore","old_version":"3.6.5","new_version":"4.1.0","repository_url":"https://github.com/sigstore/sigstore-python"},{"name":"google-cloud-kms","old_version":"3.5.1","new_version":"3.7.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"tox","old_version":"4.28.4","new_version":"4.32.0","repository_url":"https://github.com/tox-dev/tox"},{"name":"coverage","old_version":"7.10.5","new_version":"7.11.3","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"black","old_version":"25.1.0","new_version":"25.11.0","repository_url":"https://github.com/psf/black"},{"name":"isort","old_version":"6.0.1","new_version":"7.0.0","repository_url":"https://github.com/PyCQA/isort"},{"name":"mypy","old_version":"1.17.1","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"},{"name":"pytest","old_version":"8.4.1","new_version":"9.0.1","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"6.2.1","new_version":"7.0.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"sphinxcontrib-plantuml","old_version":"0.30","new_version":"0.31","repository_url":"https://github.com/sphinx-contrib/plantuml"},{"name":"pre-commit","old_version":"4.3.0","new_version":"4.4.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"bandit","old_version":"1.8.6","new_version":"1.9.1","repository_url":"https://github.com/PyCQA/bandit"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-deps group with 21 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [redis](https://github.com/redis/redis-py) | `6.4.0` | `7.0.1` |\n| [dynaconf](https://github.com/dynaconf/dynaconf) | `3.2.11` | `3.2.12` |\n| [securesystemslib](https://github.com/secure-systems-lab/securesystemslib) | `1.3.0` | `1.3.1` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.43` | `2.0.44` |\n| [psycopg2](https://github.com/psycopg/psycopg2) | `2.9.10` | `2.9.11` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.16.4` | `1.17.2` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.7` | `2.12.4` |\n| [boto3](https://github.com/boto/boto3) | `1.40.16` | `1.40.75` |\n| [awswrangler](https://github.com/aws/aws-sdk-pandas) | `3.12.1` | `3.14.0` |\n| [sigstore](https://github.com/sigstore/sigstore-python) | `3.6.5` | `4.1.0` |\n| [google-cloud-kms](https://github.com/googleapis/google-cloud-python) | `3.5.1` | `3.7.0` |\n| [tox](https://github.com/tox-dev/tox) | `4.28.4` | `4.32.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.10.5` | `7.11.3` |\n| [black](https://github.com/psf/black) | `25.1.0` | `25.11.0` |\n| [isort](https://github.com/PyCQA/isort) | `6.0.1` | `7.0.0` |\n| [mypy](https://github.com/python/mypy) | `1.17.1` | `1.18.2` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.1` | `9.0.1` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `6.2.1` | `7.0.0` |\n| [sphinxcontrib-plantuml](https://github.com/sphinx-contrib/plantuml) | `0.30` | `0.31` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.3.0` | `4.4.0` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.8.6` | `1.9.1` |\n\n\nUpdates `redis` from 6.4.0 to 7.0.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/redis-py/releases\"\u003eredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.0.1\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003cp\u003eThis release adds small fixes related to documentation.\u003c/p\u003e\n\u003ch2\u003e🧰 Maintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd 'multi_database' section to documentation index (313d93f)\u003c/li\u003e\n\u003cli\u003eRevised multi-database client documentation(78df745)\u003c/li\u003e\n\u003cli\u003eAdding info about Multi-database client in README.md (3f7a55e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWe'd like to thank all the contributors who worked on this release!\n\u003ca href=\"https://github.com/dmaier\"\u003e\u003ccode\u003e@​dmaier\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/petyaslavova\"\u003e\u003ccode\u003e@​petyaslavova\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.0.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003cp\u003eOne of the main features introduced in this release is a new type of client \u003ccode\u003eMultiDBClient\u003c/code\u003e. The purpose of this client is a communication with multiple databases that are eventually consistent (Active-Active setup) and handling failures by failover across databases.\nMore information could be found in docs.\u003c/p\u003e\n\u003ch2\u003e🚀 New Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for maintenance push notifications handling during server upgrade or maintenance procedures. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3756\"\u003e#3756\u003c/a\u003e \u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3777\"\u003e#3777\u003c/a\u003e \u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3778\"\u003e#3778\u003c/a\u003e \u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3779\"\u003e#3779\u003c/a\u003e \u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3785\"\u003e#3785\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdding WITHATTRIBS option to vector set's vsim command. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3746\"\u003e#3746\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdding ssl_verify_flags_config argument for ssl connection configuration (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3772\"\u003e#3772\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdding new ExternalAuthProviderError that will be raised when we receive 'problem with LDAP service' response from server. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3808\"\u003e#3808\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧪 Experimental Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMulti-database client implementation (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3784\"\u003e#3784\u003c/a\u003e \u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3811\"\u003e#3811\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🔥 Breaking changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdding abstract method declaration for cache property setter in EvictionPolicyInterface(\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3732\"\u003e#3732\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove unused parse_list_to_dict function from helpers (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3733\"\u003e#3733\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoving synchronous context manager handling from async RedisCluster. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3679\"\u003e#3679\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRedis Search/Aggregate improved type annotations (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3676\"\u003e#3676\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoving the threading.Lock locks and replacing them with RLock objects to avoid deadlocks. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3677\"\u003e#3677\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate ping command docstrings and method return type hint (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3789\"\u003e#3789\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixing several *arg type hints in core.py and json module commands (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3793\"\u003e#3793\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixing errors reported by mypy in search module files - query.py, commands.py and aggregation.py. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3666\"\u003e#3666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdding score_cast_func argument to zrank, zrevrank and zunion - for consistency with the other sorted sets commands (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3795\"\u003e#3795\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanging the timeout typehint in async BlockingConnectionPool from int to float (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3801\"\u003e#3801\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoving the threading.Lock locks and replacing them with RLock objects to avoid deadlocks. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3677\"\u003e#3677\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧰 Maintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 4 to 5 (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3760\"\u003e#3760\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix docstring for ssl_check_hostname (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3761\"\u003e#3761\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTypos in vectorset commands.py (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3719\"\u003e#3719\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixing typos in query.py (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3718\"\u003e#3718\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTypos in cluster.py (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3717\"\u003e#3717\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/613a06f5bee94ee8aad3d841dd8c595ae6cc62d2\"\u003e\u003ccode\u003e613a06f\u003c/code\u003e\u003c/a\u003e Updating redis-py package version to 7.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/3f7a55e5914f82787fde15c56c18b105f001745e\"\u003e\u003ccode\u003e3f7a55e\u003c/code\u003e\u003c/a\u003e Adding info about Multi-database client in README.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/313d93f0b90c69ea5e6c7af8ff9b31ee005f4994\"\u003e\u003ccode\u003e313d93f\u003c/code\u003e\u003c/a\u003e Add 'multi_database' section to documentation index\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/78df74522f76341be965e5c719427be6dcd5bedf\"\u003e\u003ccode\u003e78df745\u003c/code\u003e\u003c/a\u003e Revised multi-database client documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/7a4e8bc42a1cbda6b1e8e2e1dfbe8a94766e07f9\"\u003e\u003ccode\u003e7a4e8bc\u003c/code\u003e\u003c/a\u003e Updating package version to 7.0.0 and supported redis versions in readme.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/64a2721d6b0303e7a723066530b467145ee10841\"\u003e\u003ccode\u003e64a2721\u003c/code\u003e\u003c/a\u003e Refactor healthcheck to use PING instead of ECHO (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3811\"\u003e#3811\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/24a7a1027bd6390e161c1c88be35c8acb242833d\"\u003e\u003ccode\u003e24a7a10\u003c/code\u003e\u003c/a\u003e Fixing SORTABLE, INDEXEMPTY and INDEXMISSING order when using RediSearch fiel...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/32ba6d89d2061a44c0c3f36d249fb9929836fca6\"\u003e\u003ccode\u003e32ba6d8\u003c/code\u003e\u003c/a\u003e DOC-5821 update index/query example for runnable notebook (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3807\"\u003e#3807\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/c1e566f9fbd99912d7073b871eeda76d70f61b63\"\u003e\u003ccode\u003ec1e566f\u003c/code\u003e\u003c/a\u003e Add handling of empty spaces during CLIENT LIST response parsing (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3797\"\u003e#3797\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/295bec67ddbf99c205376483f08a3ddebb72f2b2\"\u003e\u003ccode\u003e295bec6\u003c/code\u003e\u003c/a\u003e Adding new ExternalAuthProviderError that will be raised when we receive 'pro...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/redis/redis-py/compare/v6.4.0...v7.0.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `dynaconf` from 3.2.11 to 3.2.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dynaconf/dynaconf/releases\"\u003edynaconf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.2.12\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eIncremental improvment to access performance by \u003ca href=\"https://github.com/pedro-psb\"\u003e\u003ccode\u003e@​pedro-psb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/pull/1304\"\u003edynaconf/dynaconf#1304\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: get method to return Any type. by \u003ca href=\"https://github.com/rochacbruno\"\u003e\u003ccode\u003e@​rochacbruno\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/pull/1314\"\u003edynaconf/dynaconf#1314\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eperf: add lru caching to \u003ccode\u003efind_the_correct_casing\u003c/code\u003e function by \u003ca href=\"https://github.com/pedro-psb\"\u003e\u003ccode\u003e@​pedro-psb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/pull/1326\"\u003edynaconf/dynaconf#1326\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/dynaconf/dynaconf/compare/3.2.11...3.2.12\"\u003ehttps://github.com/dynaconf/dynaconf/compare/3.2.11...3.2.12\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dynaconf/dynaconf/blob/3.2.12/CHANGELOG.md\"\u003edynaconf's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pedro-psb/dynaconf/releases/tag/3.2.12\"\u003e3.2.12\u003c/a\u003e - 2025-10-10\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eget method to return Any type.. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003eremove unnecessary recursive evaluation call on Settings.get. \u003cem\u003eBy Pedro Brochado\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003eimprove performance of settings access in a loop (part 1). \u003cem\u003eBy Pedro Brochado\u003c/em\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/dynaconf/dynaconf/commit/7606f351ac460b15c56e7a538300de4a501c56e7\"\u003e\u003ccode\u003e7606f35\u003c/code\u003e\u003c/a\u003e Release version 3.2.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/da44e5182940299dd90ca3e2a0e0e3c23cb9ebf7\"\u003e\u003ccode\u003eda44e51\u003c/code\u003e\u003c/a\u003e perf: add lru caching to \u003ccode\u003efind_the_correct_casing\u003c/code\u003e function (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1326\"\u003e#1326\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/b75eda0da141bdc29f707f2cb0c29e06b03a72bb\"\u003e\u003ccode\u003eb75eda0\u003c/code\u003e\u003c/a\u003e fix: get method to return Any type.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/4f3df1a47bcb71feddf7565f603e7994c65ede65\"\u003e\u003ccode\u003e4f3df1a\u003c/code\u003e\u003c/a\u003e misc: add some profile/perf scripts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/420acebf64e77ba475df94dfd7d409207e5e239d\"\u003e\u003ccode\u003e420aceb\u003c/code\u003e\u003c/a\u003e refactor: merge \u003cem\u003esafe\u003c/em\u003e{get,copy} into .get and .copy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/18c0c8422dc9651d57c76d1b098ad6fb3f75c09d\"\u003e\u003ccode\u003e18c0c84\u003c/code\u003e\u003c/a\u003e fix: remove unnecessary recursive evaluation call on Settings.get\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/0fde96f2e0b71309e63800ddac8eceda062155a9\"\u003e\u003ccode\u003e0fde96f\u003c/code\u003e\u003c/a\u003e refactor: rewrite decorator as explicit call\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/52efd9ed78d2187550e03a2ae5008661d5e28df9\"\u003e\u003ccode\u003e52efd9e\u003c/code\u003e\u003c/a\u003e Bump to version 3.2.12-dev0\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/dynaconf/dynaconf/compare/3.2.11...3.2.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `securesystemslib` from 1.3.0 to 1.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/releases\"\u003esecuresystemslib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.3.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/blob/v1.3.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e for details.\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/secure-systems-lab/securesystemslib/blob/main/CHANGELOG.md\"\u003esecuresystemslib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003esecuresystemslib v1.3.1\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAWSSigner: Don't send payload to AWS for signing, send hash only (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1026\"\u003e#1026\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSet Development status classifier to \u0026quot;production/stable\u0026quot; in Python\npackaging (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1030\"\u003e#1030\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternals\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMinor infrastructure changes (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1005\"\u003e#1005\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1013\"\u003e#1013\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/secure-systems-lab/securesystemslib/commit/6f774190b90f0aa9d5d7e077680adbaa29c5cd6c\"\u003e\u003ccode\u003e6f77419\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1030\"\u003e#1030\u003c/a\u003e from jku/release-prep-1.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/b71cc5271a9a7b6898c79c1a12393d90996d5388\"\u003e\u003ccode\u003eb71cc52\u003c/code\u003e\u003c/a\u003e Prepare release 1.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/f6835096a845acf25dc3675105937be2565b9e66\"\u003e\u003ccode\u003ef683509\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1026\"\u003e#1026\u003c/a\u003e from ArkadiuszNitkaSWI/fix-aws-signer\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/97527198c7bf5b75ef9fb8996412df5453995080\"\u003e\u003ccode\u003e9752719\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1027\"\u003e#1027\u003c/a\u003e from secure-systems-lab/dependabot/pip/test-and-lint...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/4226b762bf3333b5947af9cf29ed751afbfd69b9\"\u003e\u003ccode\u003e4226b76\u003c/code\u003e\u003c/a\u003e build(deps): bump the test-and-lint-dependencies group with 4 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/6394e3e467c091a06ee95dad674dec7e991758c8\"\u003e\u003ccode\u003e6394e3e\u003c/code\u003e\u003c/a\u003e Review changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/dee9a831390c9a69c0e66f7c34779e9eea6dcc6d\"\u003e\u003ccode\u003edee9a83\u003c/code\u003e\u003c/a\u003e linter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/07b0fc780d9d1f4c0843ce3e2096e1216814bd06\"\u003e\u003ccode\u003e07b0fc7\u003c/code\u003e\u003c/a\u003e update .gitignore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/e8158a4eb131760714290b9839e3e40f9cd4229c\"\u003e\u003ccode\u003ee8158a4\u003c/code\u003e\u003c/a\u003e Fix AWS signer, allow messages bigger than 4kB\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/e23f855ddecb97d4baddffc068e9591451b9aa72\"\u003e\u003ccode\u003ee23f855\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1023\"\u003e#1023\u003c/a\u003e from secure-systems-lab/dependabot/pip/dependencies-...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/compare/v1.3.0...v1.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlalchemy` from 2.0.43 to 2.0.44\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/releases\"\u003esqlalchemy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.0.44\u003c/h1\u003e\n\u003cp\u003eReleased: October 10, 2025\u003c/p\u003e\n\u003ch2\u003eplatform\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e[platform] [bug]\u003c/strong\u003e Unblocked automatic greenlet installation for Python 3.14 now that\nthere are greenlet wheels on pypi for python 3.14.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eorm\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [usecase]\u003c/strong\u003e The way ORM Annotated Declarative interprets Python \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e type aliases\nin \u003ccode\u003eMapped[]\u003c/code\u003e annotations has been refined to expand the lookup scheme. A\n\u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e type can now be resolved based on either its direct presence in\n\u003ccode\u003e_orm.registry.type_annotation_map\u003c/code\u003e or its immediate resolved\nvalue, as long as a recursive lookup across multiple \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e types is\nnot required for it to resolve. This change reverses part of the\nrestrictions introduced in 2.0.37 as part of \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/11955\"\u003e#11955\u003c/a\u003e, which\ndeprecated (and disallowed in 2.1) the ability to resolve any \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e\ntype that was not explicitly present in\n\u003ccode\u003e_orm.registry.type_annotation_map\u003c/code\u003e. Recursive lookups of\n\u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e types remains deprecated in 2.0 and disallowed in version 2.1,\nas do implicit lookups of \u003ccode\u003eNewType\u003c/code\u003e types without an entry in\n\u003ccode\u003e_orm.registry.type_annotation_map\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eAdditionally, new support has been added for generic \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e aliases that\nrefer to \u003ca href=\"https://peps.python.org/pep-0593\"\u003ePEP 593\u003c/a\u003e \u003ccode\u003eAnnotated\u003c/code\u003e constructs containing\n\u003ccode\u003e_orm.mapped_column()\u003c/code\u003e configurations. See the sections below for\nexamples.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12829\"\u003e#12829\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed a caching issue where \u003ccode\u003e_orm.with_loader_criteria()\u003c/code\u003e would\nincorrectly reuse cached bound parameter values when used with\n\u003ccode\u003e_sql.CompoundSelect\u003c/code\u003e constructs such as \u003ccode\u003e_sql.union()\u003c/code\u003e. The\nissue was caused by the cache key for compound selects not including the\nexecution options that are part of the \u003ccode\u003e_sql.Executable\u003c/code\u003e base class,\nwhich \u003ccode\u003e_orm.with_loader_criteria()\u003c/code\u003e uses to apply its criteria\ndynamically. The fix ensures that compound selects and other executable\nconstructs properly include execution options in their cache key traversal.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12905\"\u003e#12905\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eengine\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e[engine] [bug]\u003c/strong\u003e Implemented initial support for free-threaded Python by adding new tests\nand reworking the test harness to include Python 3.13t and Python 3.14t in\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psycopg2` from 2.9.10 to 2.9.11\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psycopg/psycopg2/blob/master/NEWS\"\u003epsycopg2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eCurrent release\u003c/h2\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.11\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eAvoid a segfault passing more arguments than placeholders if Python is built\nwith assertions enabled (:ticket:\u003ccode\u003e[#1791](https://github.com/psycopg/psycopg2/issues/1791)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eAdd riscv64 platform binary packages (:ticket:\u003ccode\u003e[#1813](https://github.com/psycopg/psycopg2/issues/1813)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e~psycopg2.errorcodes\u003c/code\u003e map and \u003ccode\u003e~psycopg2.errors\u003c/code\u003e classes updated to\nPostgreSQL 18.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.8.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.10\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.13.\u003c/li\u003e\n\u003cli\u003eReceive notifications on commit (:ticket:\u003ccode\u003e[#1728](https://github.com/psycopg/psycopg2/issues/1728)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e~psycopg2.errorcodes\u003c/code\u003e map and \u003ccode\u003e~psycopg2.errors\u003c/code\u003e classes updated to\nPostgreSQL 17.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.7.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.9\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.12.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.6.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.8\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWheel package bundled with PostgreSQL 16 libpq in order to add support for\nrecent features, such as \u003ccode\u003esslcertmode\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.7\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix propagation of exceptions raised during module initialization\n(:ticket:\u003ccode\u003e[#1598](https://github.com/psycopg/psycopg2/issues/1598)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix building when pg_config returns an empty string (:ticket:\u003ccode\u003e[#1599](https://github.com/psycopg/psycopg2/issues/1599)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eWheel package bundled with OpenSSL 1.1.1v.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.6\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/psycopg/psycopg2/commit/fd9ae8cad2bcfc3e7e9410e7b6f07cda8f4f05ec\"\u003e\u003ccode\u003efd9ae8c\u003c/code\u003e\u003c/a\u003e chore: bump to version 2.9.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/d923840546942534f0956d9202f914fd9feac5fd\"\u003e\u003ccode\u003ed923840\u003c/code\u003e\u003c/a\u003e chore: update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/d42dc7169d3cd93517e282e9ef5dc2a2b40650a2\"\u003e\u003ccode\u003ed42dc71\u003c/code\u003e\u003c/a\u003e Merge branch 'fix-1791'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/4fde6560c32f06ad1304404c9f7f86148dcc4be0\"\u003e\u003ccode\u003e4fde656\u003c/code\u003e\u003c/a\u003e fix: avoid failed assert passing more arguments than placeholders\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/8308c19d6af0d904b313997539ed33415990a74e\"\u003e\u003ccode\u003e8308c19\u003c/code\u003e\u003c/a\u003e fix: drop warning about the use of deprecated PyWeakref_GetObject function\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/1a1eabf098a3374409bb2ab4b594777b900f396d\"\u003e\u003ccode\u003e1a1eabf\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/github-script from 7 to 8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/897af8b38beda851d7257dfc525129e37c0ec9e0\"\u003e\u003ccode\u003e897af8b\u003c/code\u003e\u003c/a\u003e build(deps): bump peter-evans/repository-dispatch from 3 to 4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/ceefd305117113ca10e383a626e87ba0796f3638\"\u003e\u003ccode\u003eceefd30\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/checkout from 4 to 5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/4dc585430cabe94cee96c5a9de0265d0f55370f1\"\u003e\u003ccode\u003e4dc5854\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/setup-python from 5 to 6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/1945788dcf6172bb1b9328ebc3587ccf0e6a659c\"\u003e\u003ccode\u003e1945788\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg2/issues/1802\"\u003e#1802\u003c/a\u003e from edgarrmondragon/cp314-wheels\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psycopg/psycopg2/compare/2.9.10...2.9.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `alembic` from 1.16.4 to 1.17.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/alembic/releases\"\u003ealembic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.17.2\u003c/h1\u003e\n\u003cp\u003eReleased: November 14, 2025\u003c/p\u003e\n\u003ch2\u003efeature\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[feature] [operations]\u003c/strong\u003e Added \u003ccode\u003eOperations.implementation_for.replace\u003c/code\u003e parameter to\n\u003ccode\u003eOperations.implementation_for()\u003c/code\u003e, allowing replacement of existing\noperation implementations.  This allows for existing operations such as\n\u003ccode\u003eCreateTableOp\u003c/code\u003e to be extended directly.  Pull request courtesy\njustanothercatgirl.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1750\"\u003e#1750\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [mssql]\u003c/strong\u003e Fixed issue in SQL Server dialect where the DROP that's automatically\nemitted for existing default constraints during an ALTER COLUMN needs to\ntake place before not just the modification of the column's default, but\nalso before the column's type is changed.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1744\"\u003e#1744\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.17.1\u003c/h1\u003e\n\u003cp\u003eReleased: October 28, 2025\u003c/p\u003e\n\u003ch2\u003eusecase\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[usecase] [commands]\u003c/strong\u003e Added \u003ccode\u003ecommand.current.check_heads\u003c/code\u003e parameter to\n\u003ccode\u003ecommand.current()\u003c/code\u003e command, available from the command line via the\n\u003ccode\u003e--check-heads\u003c/code\u003e option to \u003ccode\u003ealembic current\u003c/code\u003e.  This tests if all head\nrevisions are applied to the database and raises \u003ccode\u003eDatabaseNotAtHead\u003c/code\u003e\n(or from the command line, exits with a non-zero exit code) if this is not\nthe case.  The parameter operates equvialently to the cookbook recipe\n\u003ccode\u003ecookbook_check_heads\u003c/code\u003e. Pull request courtesy Stefan Scherfke.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1705\"\u003e#1705\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e[bug] [commands]\u003c/strong\u003e Disallow ':' character in custom revision identifiers. Previously, using a\ncolon in a revision ID (e.g., 'REV:1') would create the revision, however\nrevisions with colons in them are not correctly interpreted by other\ncommands, as it overlaps with the revision range syntax.   Pull request\ncourtesy Kim Wooseok with original implementation by Hrushikesh Patil.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/alembic/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.11.7 to 2.12.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.12.4 2025-11-05\u003c/h2\u003e\n\u003ch2\u003ev2.12.4 (2025-11-05)\u003c/h2\u003e\n\u003cp\u003eThis is the fourth 2.12 patch release, fixing more regressions, and reverting a change in the \u003ccode\u003ebuild()\u003c/code\u003e method\nof the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis patch release also fixes an issue with the serialization of IP address types, when \u003ccode\u003eserialize_as_any\u003c/code\u003e is used. The next patch release\nwill try to address the remaining issues with \u003cem\u003eserialize as any\u003c/em\u003e behavior by introducing a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature, that\nshould be used in most cases in place of \u003cem\u003eserialize as any\u003c/em\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with forward references in parent \u003ccode\u003eTypedDict\u003c/code\u003e classes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12427\"\u003e#12427\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis issue is only relevant on Python 3.14 and greater.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eExclude fields with \u003ccode\u003eexclude_if\u003c/code\u003e from JSON Schema required fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12430\"\u003e#12430\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRevert URL percent-encoding of credentials in the \u003ccode\u003ebuild()\u003c/code\u003e method of the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1833\"\u003epydantic-core#1833\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis was initially considered as a bugfix, but caused regressions and as such was fully reverted. The next release will include\nan opt-in option to percent-encode components of the URL.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd type inference for IP address types by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1868\"\u003epydantic-core#1868\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThe 2.12 changes to the \u003ccode\u003eserialize_as_any\u003c/code\u003e behavior made it so that IP address types could not properly serialize to JSON.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid getting default values from defaultdict by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1853\"\u003epydantic-core#1853\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis fixes a subtle regression in the validation behavior of the \u003ca href=\"https://docs.python.org/3/library/collections.html#collections.defaultdict\"\u003e\u003ccode\u003ecollections.defaultdict\u003c/code\u003e\u003c/a\u003e\ntype.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with field serializers on nested typed dictionaries by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1879\"\u003epydantic-core#1879\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd more \u003ccode\u003epydantic-core\u003c/code\u003e builds for the three-threaded version of Python 3.14 by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1864\"\u003epydantic-core#1864\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.3...v2.12.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.12.3...v2.12.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.12.3 2025-10-17\u003c/h2\u003e\n\u003ch2\u003ev2.12.3 (2025-10-17)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThis is the third 2.13 patch release, fixing issues related to the \u003ccode\u003eFieldInfo\u003c/code\u003e class, and reverting a change to the supported \u003ca href=\"https://docs.pydantic.dev/latest/concepts/validators/#model-validators\"\u003e\u003cem\u003eafter\u003c/em\u003e model validator\u003c/a\u003e function signatures.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRaise a warning when an invalid after model validator function signature is raised by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12414\"\u003e#12414\u003c/a\u003e.\nStarting in 2.12.0, using class methods for \u003cem\u003eafter\u003c/em\u003e model validators raised an error, but the error wasn't raised concistently. We decided to emit a deprecation warning instead.\u003c/li\u003e\n\u003cli\u003eAdd \u003ca href=\"https://docs.pydantic.dev/latest/api/fields/#pydantic.fields.FieldInfo.asdict\"\u003e\u003ccode\u003eFieldInfo.asdict()\u003c/code\u003e\u003c/a\u003e method, improve documentation around \u003ccode\u003eFieldInfo\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12411\"\u003e#12411\u003c/a\u003e.\nThis also adds back support for mutations on \u003ccode\u003eFieldInfo\u003c/code\u003e classes, that are reused as \u003ccode\u003eAnnotated\u003c/code\u003e metadata. \u003cstrong\u003eHowever\u003c/strong\u003e, note that this is still \u003cem\u003enot\u003c/em\u003e a supported pattern. Instead, please refer to the \u003ca href=\"https://docs.pydantic.dev/latest/examples/dynamic_models/\"\u003eadded example\u003c/a\u003e in the documentation.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-12-release#changes\"\u003eblog post\u003c/a\u003e section on changes was also updated to document the changes related to \u003ccode\u003eserialize_as_any\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.2...v2.12.3\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.12.2...v2.12.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.12.2 2025-10-14\u003c/h2\u003e\n\u003ch2\u003ev2.12.2 (2025-10-14)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\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/pydantic/pydantic/blob/v2.12.4/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.12.4 (2025-11-05)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis is the fourth 2.12 patch release, fixing more regressions, and reverting a change in the \u003ccode\u003ebuild()\u003c/code\u003e method\nof the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis patch release also fixes an issue with the serialization of IP address types, when \u003ccode\u003eserialize_as_any\u003c/code\u003e is used. The next patch release\nwill try to address the remaining issues with \u003cem\u003eserialize as any\u003c/em\u003e behavior by introducing a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature, that\nshould be used in most cases in place of \u003cem\u003eserialize as any\u003c/em\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with forward references in parent \u003ccode\u003eTypedDict\u003c/code\u003e classes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12427\"\u003e#12427\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis issue is only relevant on Python 3.14 and greater.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eExclude fields with \u003ccode\u003eexclude_if\u003c/code\u003e from JSON Schema required fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12430\"\u003e#12430\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRevert URL percent-encoding of credentials in the \u003ccode\u003ebuild()\u003c/code\u003e method\nof the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in\n\u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1833\"\u003epydantic-core#1833\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis was initially considered as a bugfix, but caused regressions and as such was fully reverted. The next release will include\nan opt-in option to percent-encode components of the URL.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd type inference for IP address types by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1868\"\u003epydantic-core#1868\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThe 2.12 changes to the \u003ccode\u003eserialize_as_any\u003c/code\u003e behavior made it so that IP address types could not properly serialize to JSON.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid getting default values from defaultdict by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1853\"\u003epydantic-core#1853\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis fixes a subtle regression in the validation behavior of the \u003ca href=\"https://docs.python.org/3/library/collections.html#collections.defaultdict\"\u003e\u003ccode\u003ecollections.defaultdict\u003c/code\u003e\u003c/a\u003e\ntype.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with field serializers on nested typed dictionaries by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1879\"\u003epydantic-core#1879\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd more \u003ccode\u003epydantic-core\u003c/code\u003e builds for the three-threaded version of Python 3.14 by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1864\"\u003epydantic-core#1864\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.12.3 (2025-10-17)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.3\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThis is the third 2.12 patch release, fixing issues related to the \u003ccode\u003eFieldInfo\u003c/code\u003e class, and reverting a change to the supported\n\u003ca href=\"https://docs.pydantic.dev/latest/concepts/validators/#model-validators\"\u003e\u003cem\u003eafter\u003c/em\u003e model validator\u003c/a\u003e function signatures.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRaise a warning when an invalid after model validator function signature is raised by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12414\"\u003e#12414\u003c/a\u003e.\nStarting in 2.12.0, using class methods for \u003cem\u003eafter\u003c/em\u003e model validators raised an error, but the error wasn't raised concistently. We decided\nto emit a deprecation warning instead.\u003c/li\u003e\n\u003cli\u003eAdd \u003ca href=\"https://docs.pydantic.dev/latest/api/fields/#pydantic.fields.FieldInfo.asdict\"\u003e\u003ccode\u003eFieldInfo.asdict()\u003c/code\u003e\u003c/a\u003e method, improve documentation around \u003ccode\u003eFieldInfo\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12411\"\u003e#12411\u003c/a\u003e.\nThis also add back support for mutations on \u003ccode\u003eFieldInfo\u003c/code\u003e classes, that are reused as \u003ccode\u003eAnnotated\u003c/code\u003e metadata. \u003cstrong\u003eHowever\u003c/strong\u003e, note that this is still\n\u003cem\u003enot\u003c/em\u003e a supported pattern. Instead, please refer to the \u003ca href=\"https://docs.pydantic.dev/latest/examples/dynamic_models/\"\u003eadded example\u003c/a\u003e in the documentation.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-12-release#changes\"\u003eblog post\u003c/a\u003e section on changes was also updated to document the changes related to \u003ccode\u003eserialize_as_any\u003c/code\u003e.\u003c/p\u003e\n\u003ch2\u003ev2.12.2 (2025-10-14)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/5c842dfc9c245fb37aa1f5ec5b55c1aed10bd7e6\"\u003e\u003ccode\u003e5c842df\u003c/code\u003e\u003c/a\u003e Prepare release v2.12.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/c678a710e8b8bb2ff4dce6233c6d5c88dc579136\"\u003e\u003ccode\u003ec678a71\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003epydantic-core\u003c/code\u003e to v2.41.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a7cd29254b2611c5768beb86e7ffd2c1c130a19a\"\u003e\u003ccode\u003ea7cd292\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003ecloudpickle\u003c/code\u003e to v3.1.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/21f627801b5eedfa87bed55925f73cf329cc9c2c\"\u003e\u003ccode\u003e21f6278\u003c/code\u003e\u003c/a\u003e Bump actions/setup-node from 5 to 6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/8d6be8fea9662203977b95758d97ec298edcd54a\"\u003e\u003ccode\u003e8d6be8f\u003c/code\u003e\u003c/a\u003e Bump astral-sh/setup-uv from 6 to 7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/17865ea3a1fd389ba697990b762f82a419a48221\"\u003e\u003ccode\u003e17865ea\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4 to 5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/90ad0af6b9340f72dde77997ed18fc180771e69f\"\u003e\u003ccode\u003e90ad0af\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 5 to 6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/18e6672b6fdeaeb75ccbbcb3c7883509b1f56cb3\"\u003e\u003ccode\u003e18e6672\u003c/code\u003e\u003c/a\u003e Drop testing under PyPy 3.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/650215be2d2336a72af481b724b368fed356d7e8\"\u003e\u003ccode\u003e650215b\u003c/code\u003e\u003c/a\u003e Document workaround for \u003ccode\u003eMongoDsn\u003c/code\u003e default port\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/e3267902272d8290ed6d1ae06f43052b2968ef14\"\u003e\u003ccode\u003ee326790\u003c/code\u003e\u003c/a\u003e Fix example of for \u003ccode\u003ebytes_invalid_encoding\u003c/code\u003e validation error\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.11.7...v2.12.4\"\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.16 to 1.40.75\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/76bb63ddcaf878e5fea038518af5f84a1dccfcb1\"\u003e\u003ccode\u003e76bb63d\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.40.75'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/4094ca62c842c51761d442a0eb6063565b5f07ad\"\u003e\u003ccode\u003e4094ca6\u003c/code\u003e\u003c/a\u003e Bumping version to 1.40.75\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/b37bc1c7514e9e1a8f9a4f3a1c650d8b4132f40d\"\u003e\u003ccode\u003eb37bc1c\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/49140e033d31324b28e340329f866af3009f0d06\"\u003e\u003ccode\u003e49140e0\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.40.74'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/f3fe4845588855a9871cf8182597e2ab2e26eca9\"\u003e\u003ccode\u003ef3fe484\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.40.74' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/786aff8131cd2e48dbe522643f06d84353dad2c5\"\u003e\u003ccode\u003e786aff8\u003c/code\u003e\u003c/a\u003e Bumping version to 1.40.74\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/0a66fb2138fec05d0ccbec07aba926c62f692e54\"\u003e\u003ccode\u003e0a66fb2\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/cd8545493fb93990034989cb24c7f151fe7af200\"\u003e\u003ccode\u003ecd85454\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.40.73'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/27d56447889f2c96bf1fda35929c7bf5add1cbad\"\u003e\u003ccode\u003e27d5644\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.40.73' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/5f2866c2057eb1c638c9aed9acf1e487eb7b4a93\"\u003e\u003ccode\u003e5f2866c\u003c/code\u003e\u003c/a\u003e Bumping version to 1.40.73\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.40.16...1.40.75\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `awswrangler` from 3.12.1 to 3.14.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aws/aws-sdk-pandas/releases\"\u003eawswrangler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eAWS SDK for pandas 3.14.0\u003c/h2\u003e\n\u003ch2\u003eNotable Changes ⚠️\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: upgrade pg8000 due to CVE-2025-61385 by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3225\"\u003eaws/aws-sdk-pandas#3225\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures / Enhancements 🚀\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: support redshift \u003ccode\u003eCLEANPATH\u003c/code\u003e by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3211\"\u003eaws/aws-sdk-pandas#3211\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add result reuse configuration to query execution functions by \u003ca href=\"https://github.com/DavidKatz-il\"\u003e\u003ccode\u003e@​DavidKatz-il\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3212\"\u003eaws/aws-sdk-pandas#3212\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBugfixes 🐛\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: Add \u003ccode\u003es3_output\u003c/code\u003e parameter to \u003ccode\u003e_start_query_execution\u003c/code\u003e call in \u0026quot;overwrite\u0026quot; mode by \u003ca href=\"https://github.com/sergeymazin\"\u003e\u003ccode\u003e@​sergeymazin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3205\"\u003eaws/aws-sdk-pandas#3205\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: iceberg overwrite partitions with s3 output by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3220\"\u003eaws/aws-sdk-pandas#3220\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: Correct MemoryFormat.set() Parameter Type Annotation by \u003ca href=\"https://github.com/DaltonWorsnup\"\u003e\u003ccode\u003e@​DaltonWorsnup\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3221\"\u003eaws/aws-sdk-pandas#3221\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: normalize AWS_SESSION_TOKEN=None to empty string for delta-rs compatibility by \u003ca href=\"https://github.com/skoschik\"\u003e\u003ccode\u003e@​skoschik\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3223\"\u003eaws/aws-sdk-pandas#3223\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity / Dependency Updates 🛡️\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the github-actions group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3208\"\u003eaws/aws-sdk-pandas#3208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: update pyarrow constraints by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3210\"\u003eaws/aws-sdk-pandas#3210\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump the production-dependencies group across 1 directory with 4 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3213\"\u003eaws/aws-sdk-pandas#3213\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump actions/setup-node from 5 to 6 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3214\"\u003eaws/aws-sdk-pandas#3214\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eHousekeeping 🧹\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: replace deprecated pr linting action by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3215\"\u003eaws/aws-sdk-pandas#3215\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: Release 3.14.0 by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3227\"\u003eaws/aws-sdk-pandas#3227\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: Update Snyk action by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3228\"\u003eaws/aws-sdk-pandas#3228\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: fix incorrect license field by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3229\"\u003eaws/aws-sdk-pandas#3229\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: Update layers.rst by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3230\"\u003eaws/aws-sdk-pandas#3230\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/sergeymazin\"\u003e\u003ccode\u003e@​sergeymazin\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3205\"\u003eaws/aws-sdk-pandas#3205\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DaltonWorsnup\"\u003e\u003ccode\u003e@​DaltonWorsnup\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3221\"\u003eaws/aws-sdk-pandas#3221\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/skoschik\"\u003e\u003ccode\u003e@​skoschik\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3223\"\u003eaws/aws-sdk-pandas#3223\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/aws/aws-sdk-pandas/compare/3.13.0...3.14.0\"\u003ehttps://github.com/aws/aws-sdk-pandas/compare/3.13.0...3.14.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eAWS SDK for pandas 3.13.0\u003c/h2\u003e\n\u003ch2\u003eNotable Changes ⚠️\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eupdated \u003ccode\u003eaiohhtp==3.12.15\u003c/code\u003eto fix CVE-2025-53643 (LOW) by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3197\"\u003eaws/aws-sdk-pandas#3197\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures / Enhancements 🚀\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: ray 2.49.0 by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3194\"\u003eaws/aws-sdk-pandas#3194\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add support for aurora-mysql and aurora-postgresql engines by \u003ca href=\"https://github.com/senorcinco\"\u003e\u003ccode\u003e@​senorcinco\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3188\"\u003eaws/aws-sdk-pandas#3188\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBugfixes 🐛\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: opensearch session by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3170\"\u003eaws/aws-sdk-pandas#3170\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: typo with Redshift write example by \u003ca href=\"https://github.com/Falydoor\"\u003e\u003ccode\u003e@​Falydoor\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3184\"\u003eaws/aws-sdk-pandas#3184\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: do not remove new columns values by \u003ca href=\"https://github.com/Braalfa\"\u003e\u003ccode\u003e@​Braalfa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3181\"\u003eaws/aws-sdk-pandas#3181\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity / Dependency Updates 🛡️\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the production-dependencies group across 1 directory with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3178\"\u003eaws/aws-sdk-pandas#3178\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump the production-dependencies 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/aws/aws-sdk-pandas/pull/3180\"\u003eaws/aws-sdk-pandas#3180\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/aws/aws-sdk-pandas/commit/20193b48db3a0e57d26a344e646811495e0c4e46\"\u003e\u003ccode\u003e20193b4\u003c/code\u003e\u003c/a\u003e Update layers.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/d1c7910e3b3bb125733c9f0318f4e639e7e13d1f\"\u003e\u003ccode\u003ed1c7910\u003c/code\u003e\u003c/a\u003e pin pyarrow in lambda layer\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/3521ddc6ae4f19ce6faaf43c34d1b3575b267d6b\"\u003e\u003ccode\u003e3521ddc\u003c/code\u003e\u003c/a\u003e chore: Release 3.14.0 (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/issues/3227\"\u003e#3227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/2371f80eead3b17d344a3a39794610e61e082e1f\"\u003e\u003ccode\u003e2371f80\u003c/code\u003e\u003c/a\u003e fix(delta-rs): normalize AWS_SESSION_TOKEN=None to empty string for delta-rs ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/9b843841000fbbe0d0aa91f6b0becc0c459204a2\"\u003e\u003ccode\u003e9b84384\u003c/code\u003e\u003c/a\u003e Correct MemoryFormat.set() Parameter Type Annotation (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/issues/3221\"\u003e#3221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/f5980f2adbd561f73564cfdbfd4e268b2c41fccd\"\u003e\u003ccode\u003ef5980f2\u003c/code\u003e\u003c/a\u003e chore: upgrade pg8000 due to a CVE-2025-61385 (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/issues/3225\"\u003e#3225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/ed4057e0d835585d72a434c284ee7f74fd6e9d33\"\u003e\u003ccode\u003eed4057e\u003c/code\u003e\u003c/a\u003e fix: iceberg overwrite partitions with s3 output (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/issues/3220\"\u003e#3220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/d425c500a2e2a30b3ac537e24bf34b900432215b\"\u003e\u003ccode\u003ed425c50\u003c/code\u003e\u003c/a\u003e [FIX] Add s3_output parameter to _start_query_execution call in \u0026quot;overwrite\u0026quot; m...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/294f35e4dd2c41ff5a1a0bc92c9134533355692a\"\u003e\u003ccode\u003e294f35e\u003c/code\u003e\u003c/a\u003e chore: replace pr linting action (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/issues/3215\"\u003e#3215\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/c81581ca40579735cd0caa6e91f1fa5d2c3b46d7\"\u003e\u003ccode\u003ec81581c\u003c/code\u003e\u003c/a\u003e chore(deps): bump actions/setup-node in the github-actions group (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/issues/3214\"\u003e#3214\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aws/aws-sdk-pandas/compare/3.12.1...3.14.0\"\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.5 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.5...v4.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-cloud-kms` from 3.5.1 to 3.7.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/google-cloud-python/blob/main/packages/google-cloud-documentai/CHANGELOG.md\"\u003egoogle-cloud-kms's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/compare/google-cloud-documentai-v3.6.0...google-cloud-documentai-v3.7.0\"\u003e3.7.0\u003c/a\u003e (2025-10-16)\u003c/h2\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe field \u003ccode\u003etraining_method\u003c/code\u003e in \u003ccode\u003eTrainProcessorVersionRequest\u003c/code\u003e is now marked as optional  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/4dc7381c2121c9e13b24cb3aae59523f8ff31a3a\"\u003e4dc7381c2121c9e13b24cb3aae59523f8ff31a3a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA comment for field \u003ccode\u003elatest_evaluation\u003c/code\u003e in message \u003ccode\u003e.google.cloud.documentai.v1beta3.ProcessorVersion\u003c/code\u003e is changed  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA comment for field \u003ccode\u003etraining_method\u003c/code\u003e in message \u003ccode\u003e.google.cloud.documentai.v1beta3.TrainProcessorVersionRequest\u003c/code\u003e is changed  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA comment for field \u003ccode\u003eprocessor_version_source\u003c/code\u003e in message \u003ccode\u003e.google.cloud.documentai.v1beta3.ImportProcessorVersionRequest\u003c/code\u003e is changed  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA comment for field \u003ccode\u003edeprecation_info\u003c/code\u003e in message \u003ccode\u003e.google.cloud.documentai.v1beta3.ProcessorVersion\u003c/code\u003e is changed  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA comment for field \u003ccode\u003ecreate_time\u003c/code\u003e in message \u003ccode\u003e.google.cloud.documentai.v1beta3.Processor\u003c/code\u003e is changed  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA comment for field \u003ccode\u003edocument_schema\u003c/code\u003e in message \u003ccode\u003e.google.cloud.documentai.v1beta3.ProcessorVersion\u003c/code\u003e is changed  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA comment for field \u003ccode\u003ekms_key_name\u003c/code\u003e in message \u003ccode\u003e.google.cloud.documentai.v1beta3.ProcessorVersion\u003c/code\u003e is changed  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA comment for field \u003ccode\u003ecreate_time\u003c/code\u003e in message \u003ccode\u003e.google.cloud.documentai.v1beta3.ProcessorVersion\u003c/code\u003e is changed  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA comment for field \u003ccode\u003ekms_key_version_name\u003c/code\u003e in message \u003ccode\u003e.google.cloud.documentai.v1beta3.ProcessorVersion\u003c/code\u003e is changed  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded new messages \u003ccode\u003eEntityValidationOutput\u003c/code\u003e and \u003ccode\u003eEntitiesRevision\u003c/code\u003e  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/4dc7381c2121c9e13b24cb3aae59523f8ff31a3a\"\u003e4dc7381c2121c9e13b24cb3aae59523f8ff31a3a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded new fields \u003ccode\u003eentity_validation_output\u003c/code\u003e, \u003ccode\u003eentities_revisions\u003c/code\u003e, and \u003ccode\u003eentities_revision_id\u003c/code\u003e to the \u003ccode\u003eDocument\u003c/code\u003e message  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/4dc7381c2121c9e13b24cb3aae59523f8ff31a3a\"\u003e4dc7381c2121c9e13b24cb3aae59523f8ff31a3a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA new field \u003ccode\u003esignature_value\u003c/code\u003e is added to message \u003ccode\u003e.google.cloud.documentai.v1beta3.Document\u003c/code\u003e  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA new message \u003ccode\u003eEntitiesRevision\u003c/code\u003e is added  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA new field \u003ccode\u003eentities_revisions\u003c/code\u003e is added to message \u003ccode\u003e.google.cloud.documentai.v1beta3.Document\u003c/code\u003e  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA new field \u003ccode\u003eentity_validation_output\u003c/code\u003e is added to message \u003ccode\u003e.google.cloud.documentai.v1beta3.Document\u003c/code\u003e  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA new field \u003ccode\u003emethod\u003c/code\u003e is added to message \u003ccode\u003e.google.cloud.documentai.v1beta3.DocumentSchema\u003c/code\u003e  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA new enum \u003ccode\u003eMethod\u003c/code\u003e is added  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA new field \u003ccode\u003emethod\u003c/code\u003e is added to message \u003ccode\u003e.google.cloud.documentai.v1beta3.Document\u003c/code\u003e  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def...\n\n_Description has been truncated_","html_url":"https://github.com/MVrachev/repository-service-tuf-worker/pull/81","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/MVrachev%2Frepository-service-tuf-worker/issues/81","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/81/packages"},{"uuid":"3558972009","node_id":"PR_kwDOQHjMgc6wArah","number":16,"state":"closed","title":"deps(deps-dev): bump sigstore from 3.6.0 to 4.1.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":["taylorleese"],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-10-27T23:15:52.000Z","author_association":null,"state_reason":null,"created_at":"2025-10-27T23:03:00.000Z","updated_at":"2025-10-27T23:15:55.000Z","time_to_close":772,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(deps-dev)","packages":[{"name":"sigstore","old_version":"3.6.0","new_version":"4.1.0","repository_url":"https://github.com/sigstore/sigstore-python"}],"path":null,"ecosystem":"pip"},"body":"Bumps [sigstore](https://github.com/sigstore/sigstore-python) from 3.6.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/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.0...v4.1.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=sigstore\u0026package-manager=pip\u0026previous-version=3.6.0\u0026new-version=4.1.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/taylorleese/mcp-toolz/pull/16","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/taylorleese%2Fmcp-toolz/issues/16","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/16/packages"},{"uuid":"3551413333","node_id":"PR_kwDOQHjMgc6vnqdY","number":10,"state":"closed","title":"Bump sigstore from 3.5.1 to 3.6.0 in the pip group across 1 directory","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-10-25T00:35:22.000Z","author_association":null,"state_reason":null,"created_at":"2025-10-25T00:34:07.000Z","updated_at":"2025-10-25T00:35:25.000Z","time_to_close":75,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"sigstore","old_version":"3.5.1","new_version":"3.6.0","repository_url":"https://github.com/sigstore/sigstore-python"}],"path":"the pip group across 1 directory","ecosystem":"pip"},"body":"[//]: # (dependabot-start)\n⚠️  **Dependabot is rebasing this PR** ⚠️ \n\nRebasing might not happen immediately, so don't worry if this takes some time.\n\nNote: if you make any changes to this PR yourself, they will take precedence over the rebase.\n\n---\n\n[//]: # (dependabot-end)\n\nBumps the pip group with 1 update in the / directory: [sigstore](https://github.com/sigstore/sigstore-python).\n\nUpdates `sigstore` from 3.5.1 to 3.6.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\u003ev3.6.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAPI: The DSSE \u003ccode\u003eEnvelope\u003c/code\u003e class now performs automatic validation\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1211\"\u003e#1211\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAPI: Added \u003ccode\u003esignature\u003c/code\u003e property to \u003ccode\u003eEnvelope\u003c/code\u003e class for accessing raw\nsignature bytes (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1211\"\u003e#1211\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSigned timestamps embedded in bundles are now automatically verified\nagainst Timestamp Authorities provided within the Trusted Root (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1206\"\u003e#1206\u003c/a\u003e\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1206\"\u003esigstore/sigstore-python#1206\u003c/a\u003e))\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBundles are now generated with signed timestamps when signing if the\nTrusted Root contains one or more Timestamp Authorities\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1216\"\u003e#1216\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for \u0026quot;detached\u0026quot; SCTs has been fully removed, aligning\nsigstore-python with other sigstore clients\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1236\"\u003e#1236\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed a CLI parsing bug introduced in 3.5.1 where a warning about\nverifying legacy bundles was never shown\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1198\"\u003e#1198\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eStrengthened the requirement that an inclusion promise is present\n\u003cem\u003eif\u003c/em\u003e no other source of signed time is present\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1247\"\u003e#1247\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.5.4\u003c/h2\u003e\n\u003cp\u003eThis is the last planned bug fix release in 3.5 series: all users should upgrade to a newer release series, preferably 4.1.\u003c/p\u003e\n\u003cp\u003e(this release was never published to PyPI because of a release process issue \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1591\"\u003e#1591\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDo not fail hard if trust root contains unsupported keys\n(Backport of \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1424\"\u003e#1424\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix bug in rekor key lookup\n(Backport of \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1350\"\u003e#1350\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.5.3\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCorrective release for [3.5.2]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- 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[3.6.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAPI: The DSSE \u003ccode\u003eEnvelope\u003c/code\u003e class now performs automatic validation\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1211\"\u003e#1211\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAPI: Added \u003ccode\u003esignature\u003c/code\u003e property to \u003ccode\u003eEnvelope\u003c/code\u003e class for accessing raw\nsignature bytes (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1211\"\u003e#1211\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSigned timestamps embedded in bundles are now automatically verified\nagainst Timestamp Authorities provided within the Trusted Root (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1206\"\u003e#1206\u003c/a\u003e\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1206\"\u003esigstore/sigstore-python#1206\u003c/a\u003e))\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBundles are now generated with signed timestamps when signing if the\nTrusted Root contains one or more Timestamp Authorities\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1216\"\u003e#1216\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for \u0026quot;detached\u0026quot; SCTs has been fully removed, aligning\nsigstore-python with other sigstore clients\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1236\"\u003e#1236\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed a CLI parsing bug introduced in 3.5.1 where a warning about\nverifying legacy bundles was never shown\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1198\"\u003e#1198\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eStrengthened the requirement that an inclusion promise is present\n\u003cem\u003eif\u003c/em\u003e no other source of signed time is present\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1247\"\u003e#1247\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.5.3]\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCorrective release for [3.5.2]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.5.2]\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePinned \u003ccode\u003ecryptography\u003c/code\u003e dependency strictly to prevent future breakage\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\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/44aa3ebe74cfce9fbc39bb5d771f3c2e5fb5daaf\"\u003e\u003ccode\u003e44aa3eb\u003c/code\u003e\u003c/a\u003e prep 3.6.0 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1248\"\u003e#1248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/300b502ae99ebfaace124f1f4e422a6a669369cf\"\u003e\u003ccode\u003e300b502\u003c/code\u003e\u003c/a\u003e fix: require an inclusion promise when log integration time is used (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1247\"\u003e#1247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/9ee7ac259bcce37f95db13aa7d84a407c8b99a17\"\u003e\u003ccode\u003e9ee7ac2\u003c/code\u003e\u003c/a\u003e build(deps): bump github/codeql-action from 3.27.6 to 3.27.7 in the actions g...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/f4a80b5e66a7a61859bbe2fba39314134adceefc\"\u003e\u003ccode\u003ef4a80b5\u003c/code\u003e\u003c/a\u003e build(deps): bump pypa/gh-action-pypi-publish from 1.12.2 to 1.12.3 in the ac...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/70767a441c39003ad9a9b74d6f25caaddbb0e9ea\"\u003e\u003ccode\u003e70767a4\u003c/code\u003e\u003c/a\u003e build(deps): update ruff requirement from \u0026lt;0.8.2 to \u0026lt;0.8.3 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1242\"\u003e#1242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/1b3498f62370a041d2be37b6e766221f8bfcad34\"\u003e\u003ccode\u003e1b3498f\u003c/code\u003e\u003c/a\u003e build(deps): bump id from 1.4.0 to 1.5.0 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1241\"\u003e#1241\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/7a5e69bdd286c216f441f28a7d4873189074937e\"\u003e\u003ccode\u003e7a5e69b\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/1239\"\u003e#1239\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/3d66e6b3728f13e7327e672c4931e423dd0002e4\"\u003e\u003ccode\u003e3d66e6b\u003c/code\u003e\u003c/a\u003e build(deps): bump github/codeql-action from 3.27.5 to 3.27.6 in the actions g...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/dad57a23b70b214ea995367eb3182f1ba3a25547\"\u003e\u003ccode\u003edad57a2\u003c/code\u003e\u003c/a\u003e fulcio: remove detached SCT support (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1236\"\u003e#1236\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/435a8d21e89715e026e4c00e6d9c1605cbb12581\"\u003e\u003ccode\u003e435a8d2\u003c/code\u003e\u003c/a\u003e conftest: tweak _has_oidc_id to only check our repo (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1237\"\u003e#1237\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sigstore/sigstore-python/compare/v3.5.1...v3.6.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=sigstore\u0026package-manager=pip\u0026previous-version=3.5.1\u0026new-version=3.6.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 \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\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/taylorleese/mcp-toolz/network/alerts).\n\n\u003c/details\u003e","html_url":"https://github.com/taylorleese/mcp-toolz/pull/10","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/taylorleese%2Fmcp-toolz/issues/10","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/10/packages"},{"uuid":"3544110734","node_id":"PR_kwDOHsAm8s6vPECC","number":831,"state":"closed","title":"build(deps): bump the python-deps group across 1 directory with 20 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-11-10T11:33:08.000Z","author_association":null,"state_reason":null,"created_at":"2025-10-23T10:33:50.000Z","updated_at":"2025-11-10T11:33:11.000Z","time_to_close":1558758,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python-deps","update_count":20,"packages":[{"name":"redis","old_version":"6.4.0","new_version":"7.0.0","repository_url":"https://github.com/redis/redis-py"},{"name":"dynaconf","old_version":"3.2.11","new_version":"3.2.12","repository_url":"https://github.com/dynaconf/dynaconf"},{"name":"securesystemslib","old_version":"1.3.0","new_version":"1.3.1","repository_url":"https://github.com/secure-systems-lab/securesystemslib"},{"name":"sqlalchemy","old_version":"2.0.43","new_version":"2.0.44","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"psycopg2","old_version":"2.9.10","new_version":"2.9.11","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"alembic","old_version":"1.16.4","new_version":"1.17.0","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"pydantic","old_version":"2.11.7","new_version":"2.12.3","repository_url":"https://github.com/pydantic/pydantic"},{"name":"boto3","old_version":"1.40.16","new_version":"1.40.57","repository_url":"https://github.com/boto/boto3"},{"name":"awswrangler","old_version":"3.12.1","new_version":"3.13.0","repository_url":"https://github.com/aws/aws-sdk-pandas"},{"name":"sigstore","old_version":"3.6.5","new_version":"4.1.0","repository_url":"https://github.com/sigstore/sigstore-python"},{"name":"google-cloud-kms","old_version":"3.5.1","new_version":"3.7.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"tox","old_version":"4.28.4","new_version":"4.31.0","repository_url":"https://github.com/tox-dev/tox"},{"name":"coverage","old_version":"7.10.5","new_version":"7.11.0","repository_url":"https://github.com/nedbat/coveragepy"},{"name":"black","old_version":"25.1.0","new_version":"25.9.0","repository_url":"https://github.com/psf/black"},{"name":"isort","old_version":"6.0.1","new_version":"7.0.0","repository_url":"https://github.com/PyCQA/isort"},{"name":"mypy","old_version":"1.17.1","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"},{"name":"pytest","old_version":"8.4.1","new_version":"8.4.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"6.2.1","new_version":"7.0.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"sphinxcontrib-plantuml","old_version":"0.30","new_version":"0.31","repository_url":"https://github.com/sphinx-contrib/plantuml"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-deps group with 19 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [redis](https://github.com/redis/redis-py) | `6.4.0` | `7.0.0` |\n| [dynaconf](https://github.com/dynaconf/dynaconf) | `3.2.11` | `3.2.12` |\n| [securesystemslib](https://github.com/secure-systems-lab/securesystemslib) | `1.3.0` | `1.3.1` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.43` | `2.0.44` |\n| [psycopg2](https://github.com/psycopg/psycopg2) | `2.9.10` | `2.9.11` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.16.4` | `1.17.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.7` | `2.12.3` |\n| [boto3](https://github.com/boto/boto3) | `1.40.16` | `1.40.57` |\n| [awswrangler](https://github.com/aws/aws-sdk-pandas) | `3.12.1` | `3.13.0` |\n| [sigstore](https://github.com/sigstore/sigstore-python) | `3.6.5` | `4.1.0` |\n| [google-cloud-kms](https://github.com/googleapis/google-cloud-python) | `3.5.1` | `3.7.0` |\n| [tox](https://github.com/tox-dev/tox) | `4.28.4` | `4.31.0` |\n| [coverage](https://github.com/nedbat/coveragepy) | `7.10.5` | `7.11.0` |\n| [black](https://github.com/psf/black) | `25.1.0` | `25.9.0` |\n| [isort](https://github.com/PyCQA/isort) | `6.0.1` | `7.0.0` |\n| [mypy](https://github.com/python/mypy) | `1.17.1` | `1.18.2` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.1` | `8.4.2` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `6.2.1` | `7.0.0` |\n| [sphinxcontrib-plantuml](https://github.com/sphinx-contrib/plantuml) | `0.30` | `0.31` |\n\n\nUpdates `redis` from 6.4.0 to 7.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/redis-py/releases\"\u003eredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.0.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003cp\u003eOne of the main features introduced in this release is a new type of client \u003ccode\u003eMultiDBClient\u003c/code\u003e. The purpose of this client is a communication with multiple databases that are eventually consistent (Active-Active setup) and handling failures by failover across databases.\nMore information could be found in docs.\u003c/p\u003e\n\u003ch2\u003e🚀 New Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for maintenance push notifications handling during server upgrade or maintenance procedures. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3756\"\u003e#3756\u003c/a\u003e \u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3777\"\u003e#3777\u003c/a\u003e \u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3778\"\u003e#3778\u003c/a\u003e \u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3779\"\u003e#3779\u003c/a\u003e \u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3785\"\u003e#3785\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdding WITHATTRIBS option to vector set's vsim command. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3746\"\u003e#3746\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdding ssl_verify_flags_config argument for ssl connection configuration (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3772\"\u003e#3772\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdding new ExternalAuthProviderError that will be raised when we receive 'problem with LDAP service' response from server. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3808\"\u003e#3808\u003c/a\u003e)\n\u003cstrong\u003eNote\u003c/strong\u003e Not supported with hiredis parser. When hiredis parser is used this server response is mapped to ResponseError\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧪 Experimental Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMulti-database client implementation (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3784\"\u003e#3784\u003c/a\u003e \u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3811\"\u003e#3811\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🔥 Breaking changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdding abstract method declaration for cache property setter in EvictionPolicyInterface(\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3732\"\u003e#3732\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove unused parse_list_to_dict function from helpers (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3733\"\u003e#3733\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoving synchronous context manager handling from async RedisCluster. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3679\"\u003e#3679\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRedis Search/Aggregate improved type annotations (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3676\"\u003e#3676\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoving the threading.Lock locks and replacing them with RLock objects to avoid deadlocks. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3677\"\u003e#3677\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate ping command docstrings and method return type hint (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3789\"\u003e#3789\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixing several *arg type hints in core.py and json module commands (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3793\"\u003e#3793\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixing errors reported by mypy in search module files - query.py, commands.py and aggregation.py. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3666\"\u003e#3666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdding score_cast_func argument to zrank, zrevrank and zunion - for consistency with the other sorted sets commands (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3795\"\u003e#3795\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanging the timeout typehint in async BlockingConnectionPool from int to float (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3801\"\u003e#3801\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoving the threading.Lock locks and replacing them with RLock objects to avoid deadlocks. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3677\"\u003e#3677\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧰 Maintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 4 to 5 (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3760\"\u003e#3760\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix docstring for ssl_check_hostname (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3761\"\u003e#3761\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTypos in vectorset commands.py (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3719\"\u003e#3719\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixing typos in query.py (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3718\"\u003e#3718\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTypos in cluster.py (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3717\"\u003e#3717\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixing typos in core.py (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3720\"\u003e#3720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Redis image versions for GH pipeline actions. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3740\"\u003e#3740\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport the customization of the timeout parameter when using a blocking connection pool with a redis cluster (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3724\"\u003e#3724\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix async clients safety when used as an async context manager (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3512\"\u003e#3512\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: fix zadd command parameter description (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3727\"\u003e#3727\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFault injector boilerplate (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3749\"\u003e#3749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdding e2e scenario tests for maintenance push notifications handling. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3758\"\u003e#3758\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdding more e2e tests related to maintenance notifications. Extracting specific tests that validate notifications are received in new connections (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3770\"\u003e#3770\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRenaming of classes and configuration arguments related to maintenance push notifications handling during server upgrade or maintenance procedures (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3777\"\u003e#3777\u003c/a\u003e \u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3778\"\u003e#3778\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDOC-5743 BITOP examples (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3776\"\u003e#3776\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove stale issue management workflow (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3773\"\u003e#3773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[DOC] Add complex chaining example using pipelines with builder pattern (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3774\"\u003e#3774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix automation scenario maint notification (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3788\"\u003e#3788\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/7a4e8bc42a1cbda6b1e8e2e1dfbe8a94766e07f9\"\u003e\u003ccode\u003e7a4e8bc\u003c/code\u003e\u003c/a\u003e Updating package version to 7.0.0 and supported redis versions in readme.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/64a2721d6b0303e7a723066530b467145ee10841\"\u003e\u003ccode\u003e64a2721\u003c/code\u003e\u003c/a\u003e Refactor healthcheck to use PING instead of ECHO (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3811\"\u003e#3811\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/24a7a1027bd6390e161c1c88be35c8acb242833d\"\u003e\u003ccode\u003e24a7a10\u003c/code\u003e\u003c/a\u003e Fixing SORTABLE, INDEXEMPTY and INDEXMISSING order when using RediSearch fiel...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/32ba6d89d2061a44c0c3f36d249fb9929836fca6\"\u003e\u003ccode\u003e32ba6d8\u003c/code\u003e\u003c/a\u003e DOC-5821 update index/query example for runnable notebook (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3807\"\u003e#3807\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/c1e566f9fbd99912d7073b871eeda76d70f61b63\"\u003e\u003ccode\u003ec1e566f\u003c/code\u003e\u003c/a\u003e Add handling of empty spaces during CLIENT LIST response parsing (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3797\"\u003e#3797\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/295bec67ddbf99c205376483f08a3ddebb72f2b2\"\u003e\u003ccode\u003e295bec6\u003c/code\u003e\u003c/a\u003e Adding new ExternalAuthProviderError that will be raised when we receive 'pro...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/52c700379eee9c4d32244c905cd993ea02cb0d81\"\u003e\u003ccode\u003e52c7003\u003c/code\u003e\u003c/a\u003e Fixing sync BlockingConnectionPool's disconnect method to follow the definiti...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/1ac80f64a21cb442ca9f4880dd34782c9b022e77\"\u003e\u003ccode\u003e1ac80f6\u003c/code\u003e\u003c/a\u003e Changing the timeout typehint in async BlockingConnectionPool from int to flo...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/f9bc0348143184377fd9c9771bee61fdf507803e\"\u003e\u003ccode\u003ef9bc034\u003c/code\u003e\u003c/a\u003e Adding score_cast_func argument to zrank, zrevrank and zunion - for consisten...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/0768fbee450b73cb554565cb01192d7fe17db713\"\u003e\u003ccode\u003e0768fbe\u003c/code\u003e\u003c/a\u003e Update Python version to 3.14 in hiredis CI workflow (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3798\"\u003e#3798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/redis/redis-py/compare/v6.4.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 `dynaconf` from 3.2.11 to 3.2.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dynaconf/dynaconf/releases\"\u003edynaconf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.2.12\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eIncremental improvment to access performance by \u003ca href=\"https://github.com/pedro-psb\"\u003e\u003ccode\u003e@​pedro-psb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/pull/1304\"\u003edynaconf/dynaconf#1304\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: get method to return Any type. by \u003ca href=\"https://github.com/rochacbruno\"\u003e\u003ccode\u003e@​rochacbruno\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/pull/1314\"\u003edynaconf/dynaconf#1314\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eperf: add lru caching to \u003ccode\u003efind_the_correct_casing\u003c/code\u003e function by \u003ca href=\"https://github.com/pedro-psb\"\u003e\u003ccode\u003e@​pedro-psb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/pull/1326\"\u003edynaconf/dynaconf#1326\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/dynaconf/dynaconf/compare/3.2.11...3.2.12\"\u003ehttps://github.com/dynaconf/dynaconf/compare/3.2.11...3.2.12\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dynaconf/dynaconf/blob/3.2.12/CHANGELOG.md\"\u003edynaconf's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pedro-psb/dynaconf/releases/tag/3.2.12\"\u003e3.2.12\u003c/a\u003e - 2025-10-10\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eget method to return Any type.. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003eremove unnecessary recursive evaluation call on Settings.get. \u003cem\u003eBy Pedro Brochado\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003eimprove performance of settings access in a loop (part 1). \u003cem\u003eBy Pedro Brochado\u003c/em\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/dynaconf/dynaconf/commit/7606f351ac460b15c56e7a538300de4a501c56e7\"\u003e\u003ccode\u003e7606f35\u003c/code\u003e\u003c/a\u003e Release version 3.2.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/da44e5182940299dd90ca3e2a0e0e3c23cb9ebf7\"\u003e\u003ccode\u003eda44e51\u003c/code\u003e\u003c/a\u003e perf: add lru caching to \u003ccode\u003efind_the_correct_casing\u003c/code\u003e function (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1326\"\u003e#1326\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/b75eda0da141bdc29f707f2cb0c29e06b03a72bb\"\u003e\u003ccode\u003eb75eda0\u003c/code\u003e\u003c/a\u003e fix: get method to return Any type.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/4f3df1a47bcb71feddf7565f603e7994c65ede65\"\u003e\u003ccode\u003e4f3df1a\u003c/code\u003e\u003c/a\u003e misc: add some profile/perf scripts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/420acebf64e77ba475df94dfd7d409207e5e239d\"\u003e\u003ccode\u003e420aceb\u003c/code\u003e\u003c/a\u003e refactor: merge \u003cem\u003esafe\u003c/em\u003e{get,copy} into .get and .copy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/18c0c8422dc9651d57c76d1b098ad6fb3f75c09d\"\u003e\u003ccode\u003e18c0c84\u003c/code\u003e\u003c/a\u003e fix: remove unnecessary recursive evaluation call on Settings.get\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/0fde96f2e0b71309e63800ddac8eceda062155a9\"\u003e\u003ccode\u003e0fde96f\u003c/code\u003e\u003c/a\u003e refactor: rewrite decorator as explicit call\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/52efd9ed78d2187550e03a2ae5008661d5e28df9\"\u003e\u003ccode\u003e52efd9e\u003c/code\u003e\u003c/a\u003e Bump to version 3.2.12-dev0\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/dynaconf/dynaconf/compare/3.2.11...3.2.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `securesystemslib` from 1.3.0 to 1.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/releases\"\u003esecuresystemslib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.3.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/blob/v1.3.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e for details.\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/secure-systems-lab/securesystemslib/blob/main/CHANGELOG.md\"\u003esecuresystemslib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003esecuresystemslib v1.3.1\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAWSSigner: Don't send payload to AWS for signing, send hash only (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1026\"\u003e#1026\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSet Development status classifier to \u0026quot;production/stable\u0026quot; in Python\npackaging (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1030\"\u003e#1030\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternals\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMinor infrastructure changes (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1005\"\u003e#1005\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1013\"\u003e#1013\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/secure-systems-lab/securesystemslib/commit/6f774190b90f0aa9d5d7e077680adbaa29c5cd6c\"\u003e\u003ccode\u003e6f77419\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1030\"\u003e#1030\u003c/a\u003e from jku/release-prep-1.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/b71cc5271a9a7b6898c79c1a12393d90996d5388\"\u003e\u003ccode\u003eb71cc52\u003c/code\u003e\u003c/a\u003e Prepare release 1.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/f6835096a845acf25dc3675105937be2565b9e66\"\u003e\u003ccode\u003ef683509\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1026\"\u003e#1026\u003c/a\u003e from ArkadiuszNitkaSWI/fix-aws-signer\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/97527198c7bf5b75ef9fb8996412df5453995080\"\u003e\u003ccode\u003e9752719\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1027\"\u003e#1027\u003c/a\u003e from secure-systems-lab/dependabot/pip/test-and-lint...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/4226b762bf3333b5947af9cf29ed751afbfd69b9\"\u003e\u003ccode\u003e4226b76\u003c/code\u003e\u003c/a\u003e build(deps): bump the test-and-lint-dependencies group with 4 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/6394e3e467c091a06ee95dad674dec7e991758c8\"\u003e\u003ccode\u003e6394e3e\u003c/code\u003e\u003c/a\u003e Review changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/dee9a831390c9a69c0e66f7c34779e9eea6dcc6d\"\u003e\u003ccode\u003edee9a83\u003c/code\u003e\u003c/a\u003e linter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/07b0fc780d9d1f4c0843ce3e2096e1216814bd06\"\u003e\u003ccode\u003e07b0fc7\u003c/code\u003e\u003c/a\u003e update .gitignore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/e8158a4eb131760714290b9839e3e40f9cd4229c\"\u003e\u003ccode\u003ee8158a4\u003c/code\u003e\u003c/a\u003e Fix AWS signer, allow messages bigger than 4kB\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/e23f855ddecb97d4baddffc068e9591451b9aa72\"\u003e\u003ccode\u003ee23f855\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1023\"\u003e#1023\u003c/a\u003e from secure-systems-lab/dependabot/pip/dependencies-...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/compare/v1.3.0...v1.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlalchemy` from 2.0.43 to 2.0.44\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/releases\"\u003esqlalchemy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.0.44\u003c/h1\u003e\n\u003cp\u003eReleased: October 10, 2025\u003c/p\u003e\n\u003ch2\u003eplatform\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e[platform] [bug]\u003c/strong\u003e Unblocked automatic greenlet installation for Python 3.14 now that\nthere are greenlet wheels on pypi for python 3.14.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eorm\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [usecase]\u003c/strong\u003e The way ORM Annotated Declarative interprets Python \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e type aliases\nin \u003ccode\u003eMapped[]\u003c/code\u003e annotations has been refined to expand the lookup scheme. A\n\u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e type can now be resolved based on either its direct presence in\n\u003ccode\u003e_orm.registry.type_annotation_map\u003c/code\u003e or its immediate resolved\nvalue, as long as a recursive lookup across multiple \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e types is\nnot required for it to resolve. This change reverses part of the\nrestrictions introduced in 2.0.37 as part of \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/11955\"\u003e#11955\u003c/a\u003e, which\ndeprecated (and disallowed in 2.1) the ability to resolve any \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e\ntype that was not explicitly present in\n\u003ccode\u003e_orm.registry.type_annotation_map\u003c/code\u003e. Recursive lookups of\n\u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e types remains deprecated in 2.0 and disallowed in version 2.1,\nas do implicit lookups of \u003ccode\u003eNewType\u003c/code\u003e types without an entry in\n\u003ccode\u003e_orm.registry.type_annotation_map\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eAdditionally, new support has been added for generic \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e aliases that\nrefer to \u003ca href=\"https://peps.python.org/pep-0593\"\u003ePEP 593\u003c/a\u003e \u003ccode\u003eAnnotated\u003c/code\u003e constructs containing\n\u003ccode\u003e_orm.mapped_column()\u003c/code\u003e configurations. See the sections below for\nexamples.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12829\"\u003e#12829\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed a caching issue where \u003ccode\u003e_orm.with_loader_criteria()\u003c/code\u003e would\nincorrectly reuse cached bound parameter values when used with\n\u003ccode\u003e_sql.CompoundSelect\u003c/code\u003e constructs such as \u003ccode\u003e_sql.union()\u003c/code\u003e. The\nissue was caused by the cache key for compound selects not including the\nexecution options that are part of the \u003ccode\u003e_sql.Executable\u003c/code\u003e base class,\nwhich \u003ccode\u003e_orm.with_loader_criteria()\u003c/code\u003e uses to apply its criteria\ndynamically. The fix ensures that compound selects and other executable\nconstructs properly include execution options in their cache key traversal.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12905\"\u003e#12905\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eengine\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e[engine] [bug]\u003c/strong\u003e Implemented initial support for free-threaded Python by adding new tests\nand reworking the test harness to include Python 3.13t and Python 3.14t in\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psycopg2` from 2.9.10 to 2.9.11\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psycopg/psycopg2/blob/master/NEWS\"\u003epsycopg2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eCurrent release\u003c/h2\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.11\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eAvoid a segfault passing more arguments than placeholders if Python is built\nwith assertions enabled (:ticket:\u003ccode\u003e[#1791](https://github.com/psycopg/psycopg2/issues/1791)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e~psycopg2.errorcodes\u003c/code\u003e map and \u003ccode\u003e~psycopg2.errors\u003c/code\u003e classes updated to\nPostgreSQL 18.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.8.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.10\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.13.\u003c/li\u003e\n\u003cli\u003eReceive notifications on commit (:ticket:\u003ccode\u003e[#1728](https://github.com/psycopg/psycopg2/issues/1728)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e~psycopg2.errorcodes\u003c/code\u003e map and \u003ccode\u003e~psycopg2.errors\u003c/code\u003e classes updated to\nPostgreSQL 17.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.7.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.9\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.12.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.6.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.8\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWheel package bundled with PostgreSQL 16 libpq in order to add support for\nrecent features, such as \u003ccode\u003esslcertmode\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.7\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix propagation of exceptions raised during module initialization\n(:ticket:\u003ccode\u003e[#1598](https://github.com/psycopg/psycopg2/issues/1598)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix building when pg_config returns an empty string (:ticket:\u003ccode\u003e[#1599](https://github.com/psycopg/psycopg2/issues/1599)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eWheel package bundled with OpenSSL 1.1.1v.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.6\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/psycopg/psycopg2/commit/fd9ae8cad2bcfc3e7e9410e7b6f07cda8f4f05ec\"\u003e\u003ccode\u003efd9ae8c\u003c/code\u003e\u003c/a\u003e chore: bump to version 2.9.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/d923840546942534f0956d9202f914fd9feac5fd\"\u003e\u003ccode\u003ed923840\u003c/code\u003e\u003c/a\u003e chore: update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/d42dc7169d3cd93517e282e9ef5dc2a2b40650a2\"\u003e\u003ccode\u003ed42dc71\u003c/code\u003e\u003c/a\u003e Merge branch 'fix-1791'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/4fde6560c32f06ad1304404c9f7f86148dcc4be0\"\u003e\u003ccode\u003e4fde656\u003c/code\u003e\u003c/a\u003e fix: avoid failed assert passing more arguments than placeholders\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/8308c19d6af0d904b313997539ed33415990a74e\"\u003e\u003ccode\u003e8308c19\u003c/code\u003e\u003c/a\u003e fix: drop warning about the use of deprecated PyWeakref_GetObject function\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/1a1eabf098a3374409bb2ab4b594777b900f396d\"\u003e\u003ccode\u003e1a1eabf\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/github-script from 7 to 8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/897af8b38beda851d7257dfc525129e37c0ec9e0\"\u003e\u003ccode\u003e897af8b\u003c/code\u003e\u003c/a\u003e build(deps): bump peter-evans/repository-dispatch from 3 to 4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/ceefd305117113ca10e383a626e87ba0796f3638\"\u003e\u003ccode\u003eceefd30\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/checkout from 4 to 5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/4dc585430cabe94cee96c5a9de0265d0f55370f1\"\u003e\u003ccode\u003e4dc5854\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/setup-python from 5 to 6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/1945788dcf6172bb1b9328ebc3587ccf0e6a659c\"\u003e\u003ccode\u003e1945788\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg2/issues/1802\"\u003e#1802\u003c/a\u003e from edgarrmondragon/cp314-wheels\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psycopg/psycopg2/compare/2.9.10...2.9.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `alembic` from 1.16.4 to 1.17.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/alembic/releases\"\u003ealembic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.17.0\u003c/h1\u003e\n\u003cp\u003eReleased: October 11, 2025\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[change] [tests]\u003c/strong\u003e The top-level test runner has been changed to use \u003ccode\u003enox\u003c/code\u003e, adding a\n\u003ccode\u003enoxfile.py\u003c/code\u003e as well as some included modules.   The \u003ccode\u003etox.ini\u003c/code\u003e file\nremains in place so that \u003ccode\u003etox\u003c/code\u003e runs will continue to function in the near\nterm, however it will be eventually removed and improvements and\nmaintenance going forward will be only towards \u003ccode\u003enoxfile.py\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[change] [general]\u003c/strong\u003e The minimum Python version is now 3.10, as Python 3.9 is EOL.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.16.5\u003c/h1\u003e\n\u003cp\u003eReleased: August 27, 2025\u003c/p\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [mysql]\u003c/strong\u003e Fixed Python-side autogenerate rendering of index expressions in MySQL\ndialect by aligning it with SQLAlchemy's MySQL index expression rules. Pull\nrequest courtesy david-fed.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1492\"\u003e#1492\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [config]\u003c/strong\u003e Fixed issue where new pyproject.toml config would fail to parse the integer\nvalue used for the \u003ccode\u003etruncate_slug_length\u003c/code\u003e parameter.  Pull request\ncourtesy Luís Henrique Allebrandt Schunemann.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1709\"\u003e#1709\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\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/alembic/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.11.7 to 2.12.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.12.3 2025-10-17\u003c/h2\u003e\n\u003ch2\u003ev2.12.3 (2025-10-17)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThis is the third 2.13 patch release, fixing issues related to the \u003ccode\u003eFieldInfo\u003c/code\u003e class, and reverting a change to the supported \u003ca href=\"https://docs.pydantic.dev/latest/concepts/validators/#model-validators\"\u003e\u003cem\u003eafter\u003c/em\u003e model validator\u003c/a\u003e function signatures.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRaise a warning when an invalid after model validator function signature is raised by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12414\"\u003e#12414\u003c/a\u003e.\nStarting in 2.12.0, using class methods for \u003cem\u003eafter\u003c/em\u003e model validators raised an error, but the error wasn't raised concistently. We decided to emit a deprecation warning instead.\u003c/li\u003e\n\u003cli\u003eAdd \u003ca href=\"https://docs.pydantic.dev/latest/api/fields/#pydantic.fields.FieldInfo.asdict\"\u003e\u003ccode\u003eFieldInfo.asdict()\u003c/code\u003e\u003c/a\u003e method, improve documentation around \u003ccode\u003eFieldInfo\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12411\"\u003e#12411\u003c/a\u003e.\nThis also adds back support for mutations on \u003ccode\u003eFieldInfo\u003c/code\u003e classes, that are reused as \u003ccode\u003eAnnotated\u003c/code\u003e metadata. \u003cstrong\u003eHowever\u003c/strong\u003e, note that this is still \u003cem\u003enot\u003c/em\u003e a supported pattern. Instead, please refer to the \u003ca href=\"https://docs.pydantic.dev/latest/examples/dynamic_models/\"\u003eadded example\u003c/a\u003e in the documentation.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-12-release#changes\"\u003eblog post\u003c/a\u003e section on changes was also updated to document the changes related to \u003ccode\u003eserialize_as_any\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.2...v2.12.3\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.12.2...v2.12.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.12.2 2025-10-14\u003c/h2\u003e\n\u003ch2\u003ev2.12.2 (2025-10-14)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eRelease a new \u003ccode\u003epydantic-core\u003c/code\u003e version, as a corrupted CPython 3.10 \u003ccode\u003emanylinux2014_aarch64\u003c/code\u003e wheel got uploaded (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1843\"\u003epydantic-core#1843\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix issue with recursive generic models with a parent model class by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12398\"\u003e#12398\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.1...v2.12.2\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.12.1...v2.12.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.12.1 2025-10-13\u003c/h2\u003e\n\u003ch2\u003ev2.12.1 (2025-10-13)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.1\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThis is the first 2.12 patch release, addressing most (but not all yet) regressions from the initial 2.12.0 release.\u003c/p\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eDo not evaluate annotations when inspecting validators and serializers by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12355\"\u003e#12355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake sure \u003ccode\u003eNone\u003c/code\u003e is converted as \u003ccode\u003eNoneType\u003c/code\u003e in Python 3.14 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12370\"\u003e#12370\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBackport V1 runtime warning when using Python 3.14 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12367\"\u003e#12367\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix error message for invalid validator signatures by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12366\"\u003e#12366\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePopulate field name in \u003ccode\u003eValidationInfo\u003c/code\u003e for validation of default value by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1826\"\u003epydantic-core#1826\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEncode credentials in \u003ccode\u003eMultiHostUrl\u003c/code\u003e builder by \u003ca href=\"https://github.com/willswire\"\u003e\u003ccode\u003e@​willswire\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1829\"\u003epydantic-core#1829\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRespect field serializers when using \u003ccode\u003eserialize_as_any\u003c/code\u003e serialization flag by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1829\"\u003epydantic-core#1829\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix various \u003ccode\u003eRootModel\u003c/code\u003e serialization issues by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1836\"\u003epydantic-core#1836\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Contributors\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/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.12.3 (2025-10-17)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.3\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThis is the third 2.12 patch release, fixing issues related to the \u003ccode\u003eFieldInfo\u003c/code\u003e class, and reverting a change to the supported\n\u003ca href=\"https://docs.pydantic.dev/latest/concepts/validators/#model-validators\"\u003e\u003cem\u003eafter\u003c/em\u003e model validator\u003c/a\u003e function signatures.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRaise a warning when an invalid after model validator function signature is raised by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12414\"\u003e#12414\u003c/a\u003e.\nStarting in 2.12.0, using class methods for \u003cem\u003eafter\u003c/em\u003e model validators raised an error, but the error wasn't raised concistently. We decided\nto emit a deprecation warning instead.\u003c/li\u003e\n\u003cli\u003eAdd \u003ca href=\"https://docs.pydantic.dev/latest/api/fields/#pydantic.fields.FieldInfo.asdict\"\u003e\u003ccode\u003eFieldInfo.asdict()\u003c/code\u003e\u003c/a\u003e method, improve documentation around \u003ccode\u003eFieldInfo\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12411\"\u003e#12411\u003c/a\u003e.\nThis also add back support for mutations on \u003ccode\u003eFieldInfo\u003c/code\u003e classes, that are reused as \u003ccode\u003eAnnotated\u003c/code\u003e metadata. \u003cstrong\u003eHowever\u003c/strong\u003e, note that this is still\n\u003cem\u003enot\u003c/em\u003e a supported pattern. Instead, please refer to the \u003ca href=\"https://docs.pydantic.dev/latest/examples/dynamic_models/\"\u003eadded example\u003c/a\u003e in the documentation.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-12-release#changes\"\u003eblog post\u003c/a\u003e section on changes was also updated to document the changes related to \u003ccode\u003eserialize_as_any\u003c/code\u003e.\u003c/p\u003e\n\u003ch2\u003ev2.12.2 (2025-10-14)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.2\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eRelease a new \u003ccode\u003epydantic-core\u003c/code\u003e version, as a corrupted CPython 3.10 \u003ccode\u003emanylinux2014_aarch64\u003c/code\u003e wheel got uploaded (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1843\"\u003epydantic-core#1843\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix issue with recursive generic models with a parent model class by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12398\"\u003e#12398\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.12.1 (2025-10-13)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.1\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThis is the first 2.12 patch release, addressing most (but not all yet) regressions from the initial 2.12.0 release.\u003c/p\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eDo not evaluate annotations when inspecting validators and serializers by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12355\"\u003e#12355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake sure \u003ccode\u003eNone\u003c/code\u003e is converted as \u003ccode\u003eNoneType\u003c/code\u003e in Python 3.14 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12370\"\u003e#12370\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBackport V1 runtime warning when using Python 3.14 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12367\"\u003e#12367\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix error message for invalid validator signatures by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12366\"\u003e#12366\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePopulate field name in \u003ccode\u003eValidationInfo\u003c/code\u003e for validation of default value by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1826\"\u003epydantic-core#1826\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEncode credentials in \u003ccode\u003eMultiHostUrl\u003c/code\u003e builder by \u003ca href=\"https://github.com/willswire\"\u003e\u003ccode\u003e@​willswire\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1829\"\u003epydantic-core#1829\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRespect field serializers when using \u003ccode\u003eserialize_as_any\u003c/code\u003e serialization flag by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1829\"\u003epydantic-core#1829\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix various \u003ccode\u003eRootModel\u003c/code\u003e serialization issues by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1836\"\u003epydantic-core#1836\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Contributors\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/1a8850d101e67d2744ba8c6286e1172d7cd89d0b\"\u003e\u003ccode\u003e1a8850d\u003c/code\u003e\u003c/a\u003e Prepare release 2.12.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/09dbcf29c73c3fd7fd3ef1edfebe357e807cc9ca\"\u003e\u003ccode\u003e09dbcf2\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003eFieldInfo.asdict()\u003c/code\u003e method, improve documentation around \u003ccode\u003eFieldInfo\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/5da43310ec61a7b9b3017b2b9f388e778398a1bc\"\u003e\u003ccode\u003e5da4331\u003c/code\u003e\u003c/a\u003e Improve documentation about serialize as any behavior\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/9c863245ad3799ab331f33b52e2d7441e9c1191e\"\u003e\u003ccode\u003e9c86324\u003c/code\u003e\u003c/a\u003e Raise a warning when an invalid after model validator function signature is r...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/36a73c6ed53df7f1cad3343bc811e1dd3f52d26f\"\u003e\u003ccode\u003e36a73c6\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003epydantic-extra-types\u003c/code\u003e dependency to version \u003ccode\u003e\u0026gt;=2.10.6\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/1e616a3a6fa0201f840c08143cac883e56a2d9df\"\u003e\u003ccode\u003e1e616a3\u003c/code\u003e\u003c/a\u003e Prepare release v2.12.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/dc302e2d09f0eed14729f69bc61a258f1f35d35c\"\u003e\u003ccode\u003edc302e2\u003c/code\u003e\u003c/a\u003e Fix issue with recursive generic models with a parent model class\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/6876485d0cffeb66c915695574344ae4b03645a7\"\u003e\u003ccode\u003e6876485\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003epydantic-core\u003c/code\u003e to v2.41.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b4076c66773b514d4891f036a4cc562b8ff0ff21\"\u003e\u003ccode\u003eb4076c6\u003c/code\u003e\u003c/a\u003e Prepare release 2.12.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b67f07291167b4005a6eeee05fcad67b43a53f41\"\u003e\u003ccode\u003eb67f072\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003epydantic-core\u003c/code\u003e to v2.41.3\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.11.7...v2.12.3\"\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.16 to 1.40.57\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/43407ff84649f0d16c50fc87b69cb716a1ebc6c7\"\u003e\u003ccode\u003e43407ff\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.40.57'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/cb3d0c727b26c5648777cb50f66503c6daf5036f\"\u003e\u003ccode\u003ecb3d0c7\u003c/code\u003e\u003c/a\u003e Bumping version to 1.40.57\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/11328420285e28e0b3795596824d3f60370d9708\"\u003e\u003ccode\u003e1132842\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/69f915b4cf1961db9395db23e10c7210ad7a6814\"\u003e\u003ccode\u003e69f915b\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.40.56'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/1c2dc637c65e8178f9b3afd61977f45cb153a6ab\"\u003e\u003ccode\u003e1c2dc63\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.40.56' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/94dd6caaa7d4e75192fe3ca131f9fd180a557f8b\"\u003e\u003ccode\u003e94dd6ca\u003c/code\u003e\u003c/a\u003e Bumping version to 1.40.56\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/7f7a418fa31e3e0b2212d9d88ec9292c8f1a7e12\"\u003e\u003ccode\u003e7f7a418\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/eb5f82773991f715b62dc38f6801d76d1035a868\"\u003e\u003ccode\u003eeb5f827\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.40.55'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/849b54b57300b4442f71a74b7e6f8d9230fb63e4\"\u003e\u003ccode\u003e849b54b\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.40.55' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/52a3496b66a6ff66755c4315c55f22b07826e758\"\u003e\u003ccode\u003e52a3496\u003c/code\u003e\u003c/a\u003e Bumping version to 1.40.55\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.40.16...1.40.57\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `awswrangler` from 3.12.1 to 3.13.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aws/aws-sdk-pandas/releases\"\u003eawswrangler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eAWS SDK for pandas 3.13.0\u003c/h2\u003e\n\u003ch2\u003eNotable Changes ⚠️\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eupdated \u003ccode\u003eaiohhtp==3.12.15\u003c/code\u003eto fix CVE-2025-53643 (LOW) by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3197\"\u003eaws/aws-sdk-pandas#3197\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures / Enhancements 🚀\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: ray 2.49.0 by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3194\"\u003eaws/aws-sdk-pandas#3194\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add support for aurora-mysql and aurora-postgresql engines by \u003ca href=\"https://github.com/senorcinco\"\u003e\u003ccode\u003e@​senorcinco\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3188\"\u003eaws/aws-sdk-pandas#3188\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBugfixes 🐛\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: opensearch session by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3170\"\u003eaws/aws-sdk-pandas#3170\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: typo with Redshift write example by \u003ca href=\"https://github.com/Falydoor\"\u003e\u003ccode\u003e@​Falydoor\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3184\"\u003eaws/aws-sdk-pandas#3184\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: do not remove new columns values by \u003ca href=\"https://github.com/Braalfa\"\u003e\u003ccode\u003e@​Braalfa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3181\"\u003eaws/aws-sdk-pandas#3181\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity / Dependency Updates 🛡️\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the production-dependencies group across 1 directory with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3178\"\u003eaws/aws-sdk-pandas#3178\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump the production-dependencies 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/aws/aws-sdk-pandas/pull/3180\"\u003eaws/aws-sdk-pandas#3180\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump actions/checkout from 4 to 5 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3186\"\u003eaws/aws-sdk-pandas#3186\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump the github-actions group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3196\"\u003eaws/aws-sdk-pandas#3196\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update pytest-cov requirement from ~=6.0 to \u0026gt;=6,\u0026lt;8 in the production-dependencies group across 1 directory 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/aws/aws-sdk-pandas/pull/3198\"\u003eaws/aws-sdk-pandas#3198\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eHousekeeping 🧹\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: clean up poetry.lock by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3171\"\u003eaws/aws-sdk-pandas#3171\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/senorcinco\"\u003e\u003ccode\u003e@​senorcinco\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3188\"\u003eaws/aws-sdk-pandas#3188\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Braalfa\"\u003e\u003ccode\u003e@​Braalfa\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3181\"\u003eaws/aws-sdk-pandas#3181\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/aws/aws-sdk-pandas/compare/3.12.1...3.13.0\"\u003ehttps://github.com/aws/aws-sdk-pandas/compare/3.12.1...3.13.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/aws/aws-sdk-pandas/commit/bca1fcd701e3d3a5bc410918d6564d0899846710\"\u003e\u003ccode\u003ebca1fcd\u003c/code\u003e\u003c/a\u003e fix: Readthedocs build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/e936e84d214ecf37d40c5648e014b0f8192f3061\"\u003e\u003ccode\u003ee936e84\u003c/code\u003e\u003c/a\u003e fix: Readthedocs build (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/issues/3200\"\u003e#3200\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/672d943de854871c09d7b158656c28c68756d91b\"\u003e\u003ccode\u003e672d943\u003c/code\u003e\u003c/a\u003e chore: Update layers.rst (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/issues/3199\"\u003e#3199\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/c2fc56f71b75dc3d678521ca3b0bba556982d4e4\"\u003e\u003ccode\u003ec2fc56f\u003c/code\u003e\u003c/a\u003e chore: Update layers.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/2f3849db918a306f6baa81a7ff8fc8cf9708d3c5\"\u003e\u003ccode\u003e2f3849d\u003c/code\u003e\u003c/a\u003e chore(deps): update pytest-cov requirement from ~=6.0 to \u0026gt;=6,\u0026lt;8 in the produc...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/b7d889e4b72f9eeb6297ca63c325e5d753a6f259\"\u003e\u003ccode\u003eb7d889e\u003c/code\u003e\u003c/a\u003e fix: do not remove new columns values (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/issues/3181\"\u003e#3181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/286535f7f2149d6fd7b60276fe52a09e96270f5f\"\u003e\u003ccode\u003e286535f\u003c/code\u003e\u003c/a\u003e chore: Release 3.13.0 (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/issues/3197\"\u003e#3197\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/706d0328b35311b40b22ae78f1cefb4888a510d5\"\u003e\u003ccode\u003e706d032\u003c/code\u003e\u003c/a\u003e chore(deps): bump the github-actions group with 3 updates (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/issues/3196\"\u003e#3196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/e93974109f314544c57109fca28cb789fbf4841a\"\u003e\u003ccode\u003ee939741\u003c/code\u003e\u003c/a\u003e feat: add support for aurora-mysql and aurora-postgresql engines (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/issues/3188\"\u003e#3188\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/f9c921581b511cb422997cd1109c5f43b82ab99d\"\u003e\u003ccode\u003ef9c9215\u003c/code\u003e\u003c/a\u003e feat: ray 2.49.0 (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/issues/3194\"\u003e#3194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aws/aws-sdk-pandas/compare/3.12.1...3.13.0\"\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.5 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.5...v4.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-cloud-kms` from 3.5.1 to 3.7.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/google-cloud-python/blob/main/packages/google-cloud-documentai/CHANGELOG.md\"\u003egoogle-cloud-kms's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/compare/google-cloud-documentai-v3.6.0...google-cloud-documentai-v3.7.0\"\u003e3.7.0\u003c/a\u003e (2025-10-16)\u003c/h2\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe field \u003ccode\u003etraining_method\u003c/code\u003e in \u003ccode\u003eTrainProcessorVersionRequest\u003c/code\u003e is now marked as optional  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/4dc7381c2121c9e13b24cb3aae59523f8ff31a3a\"\u003e4dc7381c2121c9e13b24cb3aae59523f8ff31a3a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA comment for field \u003ccode\u003elatest_evaluation\u003c/code\u003e in message \u003ccode\u003e.google.cloud.documentai.v1beta3.ProcessorVersion\u003c/code\u003e is changed  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA comment for field \u003ccode\u003etraining_method\u003c/code\u003e in message \u003ccode\u003e.google.cloud.documentai.v1beta3.TrainProcessorVersionRequest\u003c/code\u003e is changed  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA comment for field \u003ccode\u003eprocessor_version_source\u003c/code\u003e in message \u003ccode\u003e.google.cloud.documentai.v1beta3.ImportProcessorVersionRequest\u003c/code\u003e is changed  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA comment for field \u003ccode\u003edeprecation_info\u003c/code\u003e in message \u003ccode\u003e.google.cloud.documentai.v1beta3.ProcessorVersion\u003c/code\u003e is changed  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA comment for field \u003ccode\u003ecreate_time\u003c/code\u003e in message \u003ccode\u003e.google.cloud.documentai.v1beta3.Processor\u003c/code\u003e is changed  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA comment for field \u003ccode\u003edocument_schema\u003c/code\u003e in message \u003ccode\u003e.google.cloud.documentai.v1beta3.ProcessorVersion\u003c/code\u003e is changed  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA comment for field \u003ccode\u003ekms_key_name\u003c/code\u003e in message \u003ccode\u003e.google.cloud.documentai.v1beta3.ProcessorVersion\u003c/code\u003e is changed  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA comment for field \u003ccode\u003ecreate_time\u003c/code\u003e in message \u003ccode\u003e.google.cloud.documentai.v1beta3.ProcessorVersion\u003c/code\u003e is changed  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA comment for field \u003ccode\u003ekms_key_version_name\u003c/code\u003e in message \u003ccode\u003e.google.cloud.documentai.v1beta3.ProcessorVersion\u003c/code\u003e is changed  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded new messages \u003ccode\u003eEntityValidationOutput\u003c/code\u003e and \u003ccode\u003eEntitiesRevision\u003c/code\u003e  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/4dc7381c2121c9e13b24cb3aae59523f8ff31a3a\"\u003e4dc7381c2121c9e13b24cb3aae59523f8ff31a3a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded new fields \u003ccode\u003eentity_validation_output\u003c/code\u003e, \u003ccode\u003eentities_revisions\u003c/code\u003e, and \u003ccode\u003eentities_revision_id\u003c/code\u003e to the \u003ccode\u003eDocument\u003c/code\u003e message  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/4dc7381c2121c9e13b24cb3aae59523f8ff31a3a\"\u003e4dc7381c2121c9e13b24cb3aae59523f8ff31a3a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA new field \u003ccode\u003esignature_value\u003c/code\u003e is added to message \u003ccode\u003e.google.cloud.documentai.v1beta3.Document\u003c/code\u003e  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA new message \u003ccode\u003eEntitiesRevision\u003c/code\u003e is added  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA new field \u003ccode\u003eentities_revisions\u003c/code\u003e is added to message \u003ccode\u003e.google.cloud.documentai.v1beta3.Document\u003c/code\u003e  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA new field \u003ccode\u003eentity_validation_output\u003c/code\u003e is added to message \u003ccode\u003e.google.cloud.documentai.v1beta3.Document\u003c/code\u003e  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA new field \u003ccode\u003emethod\u003c/code\u003e is added to message \u003ccode\u003e.google.cloud.documentai.v1beta3.DocumentSchema\u003c/code\u003e  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA new enum \u003ccode\u003eMethod\u003c/code\u003e is added  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA new field \u003ccode\u003emethod\u003c/code\u003e is added to message \u003ccode\u003e.google.cloud.documentai.v1beta3.Document\u003c/code\u003e  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA new message \u003ccode\u003eEntityValidationOutput\u003c/code\u003e is added  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA new field \u003ccode\u003eentities_revision_id\u003c/code\u003e is added to message \u003ccode\u003e.google.cloud.documentai.v1beta3.Document\u003c/code\u003e  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA new field \u003ccode\u003eannotations\u003c/code\u003e is added to message \u003ccode\u003e.google.cloud.documentai.v1beta3.Document\u003c/code\u003e  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecate credentials_file argument  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/compare/google-cloud-documentai-v3.5.0...google-cloud-documentai-v3.6.0\"\u003e3.6.0\u003c/a\u003e (2025-08-29)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded config options for derived fields and signature detection. Some annotation changes changes to mark fields explicitly output only (no changes in semantics just readability) (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/6d0eeb7e4ae05a8ce9b2849eb9caf554b6e449c4\"\u003e6d0eeb7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eA comment for field \u003ccode\u003ecreate_time\u003c/code\u003e in message \u003ccode\u003e.google.cloud.documentai.v1.Processor\u003c/code\u003e  is changed to describe as output only. (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/6d0eeb7e4ae05a8ce9b2849eb9caf554b6e449c4\"\u003e6d0eeb7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA comment for field \u003ccode\u003ecreate_time\u003c/code\u003e in message \u003ccode\u003e.google.cloud.documentai.v1.ProcessorVersion\u003c/code\u003e  is changed to describe as output only. (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/6d0eeb7e4ae05a8ce9b2849eb9caf554b6e449c4\"\u003e6d0eeb7\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/googleapis/google-cloud-python/commit/1b6c82dedecc7f5cff09650ee204641577620751\"\u003e\u003ccode\u003e1b6c82d\u003c/code\u003e\u003c/a\u003e chore: librarian release pull request: 20251016T234720Z (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/14754\"\u003e#14754\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/32b32eff99a3312711e116b75d12aabffa06a869\"\u003e\u003ccode\u003e32b32ef\u003c/code\u003e\u003c/a\u003e chore(librarian): Delete grpc-google-iam-v1/.OwlBot.yaml (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/14747\"\u003e#14747\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/d0ebbba25ce500e39e43635e4d55ca8f3226fa0e\"\u003e\u003ccode\u003ed0ebbba\u003c/code\u003e\u003c/a\u003e chore(librarian): onboard google-cloud-gke-hub (\u003ca href=\"...\n\n_Description has been truncated_","html_url":"https://github.com/repository-service-tuf/repository-service-tuf-worker/pull/831","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/repository-service-tuf%2Frepository-service-tuf-worker/issues/831","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/831/packages"},{"uuid":"3511599006","node_id":"PR_kwDOBIQy0c6ti747","number":1035,"state":"closed","title":"build(deps): bump the dependencies group with 3 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":8,"pull_request":true,"closed_at":"2025-10-27T22:02:04.000Z","author_association":null,"state_reason":null,"created_at":"2025-10-13T22:03:23.000Z","updated_at":"2025-10-28T10:00:41.974Z","time_to_close":1209521,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"dependencies","update_count":3,"packages":[{"name":"sigstore","old_version":"3.6.6","new_version":"4.1.0","repository_url":"https://github.com/sigstore/sigstore-python"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [sigstore](https://github.com/sigstore/sigstore-python), [boto3](https://github.com/boto/boto3) and [botocore](https://github.com/boto/botocore) to permit the latest version.\nUpdates `sigstore` from 3.6.6 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.6...v4.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3` to 1.40.51\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/92007179325850ec45c742098b9294cc98df4e03\"\u003e\u003ccode\u003e9200717\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.40.51'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/1a2cda23a5c30704502c19a1f6f09e386325308a\"\u003e\u003ccode\u003e1a2cda2\u003c/code\u003e\u003c/a\u003e Bumping version to 1.40.51\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/b59d03419e89314689d361a27cc5a23616ba31a3\"\u003e\u003ccode\u003eb59d034\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/045a9af984462fcfc501c6bd5491e0bb35c7d958\"\u003e\u003ccode\u003e045a9af\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action from 3.30.0 to 4.30.8 (\u003ca href=\"https://redirect.github.com/boto/boto3/issues/4638\"\u003e#4638\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/d8b41867dbfac406a2115d87abe1f8caea0365e7\"\u003e\u003ccode\u003ed8b4186\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.40.50'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/f6c0e6606ffb166be3acf79ba7ec143712b26ece\"\u003e\u003ccode\u003ef6c0e66\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.40.50' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/8fc5b245cf38d48dc03a7726be4141911fc09c54\"\u003e\u003ccode\u003e8fc5b24\u003c/code\u003e\u003c/a\u003e Bumping version to 1.40.50\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/f4d009760a05b09435bd1078c41e7c753246172d\"\u003e\u003ccode\u003ef4d0097\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/a5eec708c97fdb2e07179603fc8a42c8c80ad2ca\"\u003e\u003ccode\u003ea5eec70\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.40.49' into develop\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/boto/boto3/compare/1.40.49...1.40.51\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `botocore` to 1.40.51\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/d275003f1618e864ac5b45db5670f4f5c3560953\"\u003e\u003ccode\u003ed275003\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.40.51'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/60c4c5b52657f6b527669b933aace4e4c423f280\"\u003e\u003ccode\u003e60c4c5b\u003c/code\u003e\u003c/a\u003e Bumping version to 1.40.51\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/e55cf7c0ec65aa0eefb247395755e3bd4e3dbaa0\"\u003e\u003ccode\u003ee55cf7c\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/36e45455015f47b18823faab7f19638e85237a35\"\u003e\u003ccode\u003e36e4545\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/boto/botocore/issues/3576\"\u003e#3576\u003c/a\u003e from boto/dependabot/github_actions/github/codeql-ac...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/3dd950f6c25136c249d1b8c2122b896b033ecb35\"\u003e\u003ccode\u003e3dd950f\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action from 3.30.1 to 4.30.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/8d33050a8d49901b780602488aca77a392e32dc6\"\u003e\u003ccode\u003e8d33050\u003c/code\u003e\u003c/a\u003e remove License Classifier Deprecation and use up to date license setup (\u003ca href=\"https://redirect.github.com/boto/botocore/issues/3575\"\u003e#3575\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/c2ea08e8e14200c86716d14153648ea71f747ace\"\u003e\u003ccode\u003ec2ea08e\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.40.50'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/4fe0c4b511ca2076a59768c864a68964832875cf\"\u003e\u003ccode\u003e4fe0c4b\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.40.50' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/ccf712aeba55bff55fdd1cc335f5c0a71da1ca37\"\u003e\u003ccode\u003eccf712a\u003c/code\u003e\u003c/a\u003e Bumping version to 1.40.50\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/9eae5dff043168c807512b9728fc77ca2dec95f5\"\u003e\u003ccode\u003e9eae5df\u003c/code\u003e\u003c/a\u003e Update endpoints model\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/botocore/compare/1.40.49...1.40.51\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eMost Recent Ignore Conditions Applied to This Pull Request\u003c/summary\u003e\n\n| Dependency Name | Ignore Conditions |\n| --- | --- |\n| sigstore | [\u003e= 4.0.dev0, \u003c 4.1] |\n\u003c/details\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/secure-systems-lab/securesystemslib/pull/1035","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/secure-systems-lab%2Fsecuresystemslib/issues/1035","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1035/packages"},{"uuid":"3509784954","node_id":"PR_kwDOIPyH4s6tcwE4","number":57,"state":"closed","title":"build(deps): bump the pipenv group across 1 directory with 32 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-10-31T11:09:16.000Z","author_association":null,"state_reason":null,"created_at":"2025-10-13T12:02:11.000Z","updated_at":"2025-10-31T11:09:19.000Z","time_to_close":1552025,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"pipenv","update_count":32,"packages":[{"name":"rich-click","old_version":"1.8.8","new_version":"1.9.3","repository_url":"https://github.com/ewels/rich-click"},{"name":"securesystemslib","old_version":"1.3.0","new_version":"1.3.1","repository_url":"https://github.com/secure-systems-lab/securesystemslib"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"dynaconf","old_version":"3.2.10","new_version":"3.2.12","repository_url":"https://github.com/dynaconf/dynaconf"},{"name":"isort","old_version":"6.0.1","new_version":"7.0.0","repository_url":"https://github.com/PyCQA/isort"},{"name":"sqlalchemy","old_version":"2.0.40","new_version":"2.0.44","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"psycopg2","old_version":"2.9.10","new_version":"2.9.11","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"beaupy","old_version":"3.10.1","new_version":"3.10.2","repository_url":"https://github.com/petereon/beaupy"},{"name":"sigstore","old_version":"3.6.2","new_version":"4.1.0","repository_url":"https://github.com/sigstore/sigstore-python"},{"name":"boto3","old_version":"1.38.8","new_version":"1.40.50","repository_url":"https://github.com/boto/boto3"},{"name":"google-cloud-kms","old_version":"3.4.1","new_version":"3.6.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"azure-keyvault-keys","old_version":"4.10.0","new_version":"4.11.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"prompt-toolkit","old_version":"3.0.51","new_version":"3.0.52","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"setuptools","old_version":"80.3.1","new_version":"80.9.0","repository_url":"https://github.com/pypa/setuptools"},{"name":"pykcs11","old_version":"1.5.17","new_version":"1.5.18","repository_url":"https://github.com/LudovicRousseau/PyKCS11"},{"name":"exceptiongroup","old_version":"1.2.2","new_version":"1.3.0","repository_url":"https://github.com/agronholm/exceptiongroup"},{"name":"black","old_version":"25.1.0","new_version":"25.9.0","repository_url":"https://github.com/psf/black"},{"name":"flake8","old_version":"7.2.0","new_version":"7.3.0","repository_url":"https://github.com/pycqa/flake8"},{"name":"tox","old_version":"4.25.0","new_version":"4.31.0","repository_url":"https://github.com/tox-dev/tox"},{"name":"pytest","old_version":"8.3.5","new_version":"8.4.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"6.1.1","new_version":"7.0.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pytest-xdist","old_version":"3.6.1","new_version":"3.8.0","repository_url":"https://github.com/pytest-dev/pytest-xdist"},{"name":"mypy","old_version":"1.15.0","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"},{"name":"pip","old_version":"25.1.1","new_version":"25.2","repository_url":"https://github.com/pypa/pip"},{"name":"sphinxcontrib-plantuml","old_version":"0.30","new_version":"0.31","repository_url":"https://github.com/sphinx-contrib/plantuml"},{"name":"build","old_version":"1.2.2.post1","new_version":"1.3.0","repository_url":"https://github.com/pypa/build"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.3.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"bandit","old_version":"1.8.3","new_version":"1.8.6","repository_url":"https://github.com/PyCQA/bandit"},{"name":"types-requests","old_version":"2.32.0.20250328","new_version":"2.32.4.20250913","repository_url":"https://github.com/typeshed-internal/stub_uploader"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pipenv group with 29 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [rich-click](https://github.com/ewels/rich-click) | `1.8.8` | `1.9.3` |\n| [securesystemslib](https://github.com/secure-systems-lab/securesystemslib) | `1.3.0` | `1.3.1` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [dynaconf](https://github.com/dynaconf/dynaconf) | `3.2.10` | `3.2.12` |\n| [isort](https://github.com/PyCQA/isort) | `6.0.1` | `7.0.0` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.40` | `2.0.44` |\n| [psycopg2](https://github.com/psycopg/psycopg2) | `2.9.10` | `2.9.11` |\n| [beaupy](https://github.com/petereon/beaupy) | `3.10.1` | `3.10.2` |\n| [sigstore](https://github.com/sigstore/sigstore-python) | `3.6.2` | `4.1.0` |\n| [boto3](https://github.com/boto/boto3) | `1.38.8` | `1.40.50` |\n| [google-cloud-kms](https://github.com/googleapis/google-cloud-python) | `3.4.1` | `3.6.0` |\n| [azure-keyvault-keys](https://github.com/Azure/azure-sdk-for-python) | `4.10.0` | `4.11.0` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.51` | `3.0.52` |\n| [setuptools](https://github.com/pypa/setuptools) | `80.3.1` | `80.9.0` |\n| [pykcs11](https://github.com/LudovicRousseau/PyKCS11) | `1.5.17` | `1.5.18` |\n| [exceptiongroup](https://github.com/agronholm/exceptiongroup) | `1.2.2` | `1.3.0` |\n| [black](https://github.com/psf/black) | `25.1.0` | `25.9.0` |\n| [flake8](https://github.com/pycqa/flake8) | `7.2.0` | `7.3.0` |\n| [tox](https://github.com/tox-dev/tox) | `4.25.0` | `4.31.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.5` | `8.4.2` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `6.1.1` | `7.0.0` |\n| [pytest-xdist](https://github.com/pytest-dev/pytest-xdist) | `3.6.1` | `3.8.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.18.2` |\n| [pip](https://github.com/pypa/pip) | `25.1.1` | `25.2` |\n| [sphinxcontrib-plantuml](https://github.com/sphinx-contrib/plantuml) | `0.30` | `0.31` |\n| [build](https://github.com/pypa/build) | `1.2.2.post1` | `1.3.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.3.0` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.8.3` | `1.8.6` |\n| [types-requests](https://github.com/typeshed-internal/stub_uploader) | `2.32.0.20250328` | `2.32.4.20250913` |\n\n\nUpdates `rich-click` from 1.8.8 to 1.9.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ewels/rich-click/releases\"\u003erich-click's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.9.3\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed subcommand discovery in help text. Behavior should now be the same as \u003ccode\u003e1.8\u003c/code\u003e. [\u003ca href=\"https://redirect.github.com/ewels/rich-click/pull/304\"\u003e#304\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.3.dev0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed subcommand discovery in help text. Behavior should now be the same as \u003ccode\u003e1.8\u003c/code\u003e. [\u003ca href=\"https://redirect.github.com/ewels/rich-click/pull/304\"\u003e#304\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed legacy Windows rendering\u003c/li\u003e\n\u003cli\u003eFix issue with parent \u003ccode\u003eclick.Group\u003c/code\u003e and child \u003ccode\u003erich_click.RichCommand\u003c/code\u003e error formatter not resolving.\u003c/li\u003e\n\u003cli\u003eAdd headers to tables (by default these are not shown).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.2.dev0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed legacy windows rendering\u003c/li\u003e\n\u003cli\u003eFix issue with parent \u003ccode\u003eclick.Group\u003c/code\u003e and child \u003ccode\u003erich_click.RichCommand\u003c/code\u003e error formatter not resolving.\u003c/li\u003e\n\u003cli\u003eAdd headers to tables (by default these are not shown).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed bug where running the \u003ccode\u003erich-click\u003c/code\u003e CLI on a \u003ccode\u003e@rich_click.argument()\u003c/code\u003e sometimes caused arguments show up in the option panel when it shouldn't.\u003c/li\u003e\n\u003cli\u003eSlightly reduced horizontal padding of the \u003ccode\u003emodern\u003c/code\u003e theme format.\u003c/li\u003e\n\u003cli\u003eFixed Click 8.3 compatibility with rendering defaults in help text.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.0\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\nVersion 1.9.0 deprecates support for a lot of old versions of things:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ePython 3.7 support is removed.\u003c/strong\u003e The minimum supported Python version is 3.8.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eClick 7 support is removed.\u003c/strong\u003e The minimum supported Click version is 8.0.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRich 10 and 11 support is removed.\u003c/strong\u003e The minimum supported Rich version is 12.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\nVersion 1.9.0 introduces a minor breaking change:\nThe \u003ccode\u003eDEFAULT_STRING\u003c/code\u003e, \u003ccode\u003eENVVAR_STRING\u003c/code\u003e, \u003ccode\u003eREQUIRED_STRING\u003c/code\u003e, and \u003ccode\u003eDEPRECATED_STRING\u003c/code\u003e config options are now rendered with \u003ccode\u003eText.from_markup\u003c/code\u003e.\nSo for example, \u003ccode\u003eREQUIRED_STRING = \u0026quot;[required]\u0026quot;\u003c/code\u003e would be rendered as Rich markup.\nYou must now escape the rich markup: \u003ccode\u003eREQUIRED_STRING = \u0026quot;\\\\[required]\u0026quot;\u003c/code\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003eBig changes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eThemes!\u003c/strong\u003e Check them out with \u003ccode\u003erich-click --themes\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTyper support:\u003c/strong\u003e \u003ccode\u003erich-click typer_app --help\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRichPanels\u003c/strong\u003e API introduced. This replaces the \u0026quot;groups\u0026quot; feature going forward (although groups will continue to be supported).\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e@click.option_panel()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e@click.command_panel()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eIDE tab completion support for decorators\u003c/strong\u003e. Now you should no longer need to guess what goes in \u003ccode\u003e@click.option()\u003c/code\u003e or \u003ccode\u003e@click.command(context_settings=...)\u003c/code\u003e etc.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHelp for arguments:\u003c/strong\u003e \u003ccode\u003ehelp=\u003c/code\u003e is now a valid kwarg for \u003ccode\u003e@click.argument()\u003c/code\u003e decorator. See docs for more information.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSmall changes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u0026quot;Deprecated\u0026quot; text properly handled and stylized in all places.\u003c/li\u003e\n\u003cli\u003eCommand aliases: \u003ccode\u003e@cli.command(aliases=[\u0026quot;foo\u0026quot;])\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eImproved \u003ccode\u003erich-click\u003c/code\u003e CLI usability: improved patching and improved script detection+execution.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- 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/ewels/rich-click/blob/main/CHANGELOG.md\"\u003erich-click's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.9.3 (2025-10-09)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed subcommand discovery in help text. Behavior should now be the same as \u003ccode\u003e1.8\u003c/code\u003e. [\u003ca href=\"https://redirect.github.com/ewels/rich-click/pull/304\"\u003e#304\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.9.2 (2025-10-04)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed legacy windows rendering\u003c/li\u003e\n\u003cli\u003eFix issue with parent \u003ccode\u003eclick.Group\u003c/code\u003e and child \u003ccode\u003erich_click.RichCommand\u003c/code\u003e error formatter not resolving.\u003c/li\u003e\n\u003cli\u003eAdd headers to tables (by default these are not shown).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.9.1 (2025-09-20)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed bug where running the \u003ccode\u003erich-click\u003c/code\u003e CLI on a \u003ccode\u003e@rich_click.argument()\u003c/code\u003e sometimes caused arguments show up in the option panel when it shouldn't.\u003c/li\u003e\n\u003cli\u003eSlightly reduced horizontal padding of the \u003ccode\u003emodern\u003c/code\u003e theme format.\u003c/li\u003e\n\u003cli\u003eFixed Click 8.3 compatibility with rendering defaults in help text.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.9.0 (2025-09-16)\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\nVersion 1.9.0 deprecates support for a lot of old versions of things:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ePython 3.7 support is removed.\u003c/strong\u003e The minimum supported Python version is 3.8.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eClick 7 support is removed.\u003c/strong\u003e The minimum supported Click version is 8.0.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRich 10 and 11 support is removed.\u003c/strong\u003e The minimum supported Rich version is 12.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\nVersion 1.9.0 introduces a minor breaking change:\nThe \u003ccode\u003eDEFAULT_STRING\u003c/code\u003e, \u003ccode\u003eENVVAR_STRING\u003c/code\u003e, \u003ccode\u003eREQUIRED_STRING\u003c/code\u003e, and \u003ccode\u003eDEPRECATED_STRING\u003c/code\u003e config options are now rendered with \u003ccode\u003eText.from_markup\u003c/code\u003e.\nSo for example, \u003ccode\u003eREQUIRED_STRING = \u0026quot;[required]\u0026quot;\u003c/code\u003e would be rendered as Rich markup.\nYou must now escape the rich markup: \u003ccode\u003eREQUIRED_STRING = \u0026quot;\\\\[required]\u0026quot;\u003c/code\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003eBig changes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eThemes!\u003c/strong\u003e Check them out with \u003ccode\u003erich-click --themes\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTyper support:\u003c/strong\u003e \u003ccode\u003erich-click typer_app --help\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRichPanels\u003c/strong\u003e API introduced. This replaces the \u0026quot;groups\u0026quot; feature going forward (although groups will continue to be supported).\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e@click.option_panel()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e@click.command_panel()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eIDE tab completion support for decorators\u003c/strong\u003e. Now you should no longer need to guess what goes in \u003ccode\u003e@click.option()\u003c/code\u003e or \u003ccode\u003e@click.command(context_settings=...)\u003c/code\u003e etc.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHelp for arguments:\u003c/strong\u003e \u003ccode\u003ehelp=\u003c/code\u003e is now a valid kwarg for \u003ccode\u003e@click.argument()\u003c/code\u003e decorator. See docs for more information.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSmall changes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u0026quot;Deprecated\u0026quot; text properly handled and stylized in all places.\u003c/li\u003e\n\u003cli\u003eCommand aliases: \u003ccode\u003e@cli.command(aliases=[\u0026quot;foo\u0026quot;])\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eImproved \u003ccode\u003erich-click\u003c/code\u003e CLI usability: improved patching and improved script detection+execution.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003econtext_settings={\u0026quot;help_to_stderr\u0026quot;: True}\u003c/code\u003e support.\u003c/li\u003e\n\u003cli\u003eAdded suite of \u003ccode\u003epadding_*\u003c/code\u003e config options to control padding.\n\u003cul\u003e\n\u003cli\u003eBetter newline handling:\n\u003cul\u003e\n\u003cli\u003eUnordered lists create newlines in help text, e.g. \u003ccode\u003e\u0026quot;\\n- foo\\n- bar\u0026quot;\u003c/code\u003e or \u003ccode\u003e\u0026quot;\\n* foo\\n* bar\u0026quot;\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/0ea0e0a13b199cc1cf28ece1338bf0838772727b\"\u003e\u003ccode\u003e0ea0e0a\u003c/code\u003e\u003c/a\u003e Bump to 1.9.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/78f25499397fbcc9876a331732931d188b760b4a\"\u003e\u003ccode\u003e78f2549\u003c/code\u003e\u003c/a\u003e fix subcommand discovery (\u003ca href=\"https://redirect.github.com/ewels/rich-click/issues/304\"\u003e#304\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/12a50e911c05c6c8c97bfdd48147f999368bc7f5\"\u003e\u003ccode\u003e12a50e9\u003c/code\u003e\u003c/a\u003e Finish testing for 1.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/a2ccfed4946d5a7d677d0b5750617575f9de8c09\"\u003e\u003ccode\u003ea2ccfed\u003c/code\u003e\u003c/a\u003e 1.9.2 (\u003ca href=\"https://redirect.github.com/ewels/rich-click/issues/302\"\u003e#302\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/f041971bbd2ebadcfaed2e66b4e002260bf232eb\"\u003e\u003ccode\u003ef041971\u003c/code\u003e\u003c/a\u003e set date for changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/09b3ece0cf9fefaf98d83b9efd56e27083e6acc5\"\u003e\u003ccode\u003e09b3ece\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ewels/rich-click/issues/296\"\u003e#296\u003c/a\u003e from dwreeves/issue-293\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/164d7c0cb623d1332d43b66dee4fc3b911dd3544\"\u003e\u003ccode\u003e164d7c0\u003c/code\u003e\u003c/a\u003e add 8.3 to tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/c792472a3217d4a371352d1f9567b55287318689\"\u003e\u003ccode\u003ec792472\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ewels/rich-click/issues/295\"\u003e#295\u003c/a\u003e from dwreeves/issue-293\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/2268fc4e197c988f14076a138f797dc564367a47\"\u003e\u003ccode\u003e2268fc4\u003c/code\u003e\u003c/a\u003e fix 8.3 incompatibility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/bb9d72e0104b14629f7101aca01808c07bd5b5b9\"\u003e\u003ccode\u003ebb9d72e\u003c/code\u003e\u003c/a\u003e Generate new screengrabs with rich-codex\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ewels/rich-click/compare/v1.8.8...v1.9.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `securesystemslib` from 1.3.0 to 1.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/releases\"\u003esecuresystemslib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.3.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/blob/v1.3.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e for details.\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/secure-systems-lab/securesystemslib/blob/main/CHANGELOG.md\"\u003esecuresystemslib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003esecuresystemslib v1.3.1\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAWSSigner: Don't send payload to AWS for signing, send hash only (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1026\"\u003e#1026\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSet Development status classifier to \u0026quot;production/stable\u0026quot; in Python\npackaging (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1030\"\u003e#1030\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternals\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMinor infrastructure changes (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1005\"\u003e#1005\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1013\"\u003e#1013\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/secure-systems-lab/securesystemslib/commit/6f774190b90f0aa9d5d7e077680adbaa29c5cd6c\"\u003e\u003ccode\u003e6f77419\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1030\"\u003e#1030\u003c/a\u003e from jku/release-prep-1.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/b71cc5271a9a7b6898c79c1a12393d90996d5388\"\u003e\u003ccode\u003eb71cc52\u003c/code\u003e\u003c/a\u003e Prepare release 1.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/f6835096a845acf25dc3675105937be2565b9e66\"\u003e\u003ccode\u003ef683509\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1026\"\u003e#1026\u003c/a\u003e from ArkadiuszNitkaSWI/fix-aws-signer\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/97527198c7bf5b75ef9fb8996412df5453995080\"\u003e\u003ccode\u003e9752719\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1027\"\u003e#1027\u003c/a\u003e from secure-systems-lab/dependabot/pip/test-and-lint...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/4226b762bf3333b5947af9cf29ed751afbfd69b9\"\u003e\u003ccode\u003e4226b76\u003c/code\u003e\u003c/a\u003e build(deps): bump the test-and-lint-dependencies group with 4 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/6394e3e467c091a06ee95dad674dec7e991758c8\"\u003e\u003ccode\u003e6394e3e\u003c/code\u003e\u003c/a\u003e Review changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/dee9a831390c9a69c0e66f7c34779e9eea6dcc6d\"\u003e\u003ccode\u003edee9a83\u003c/code\u003e\u003c/a\u003e linter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/07b0fc780d9d1f4c0843ce3e2096e1216814bd06\"\u003e\u003ccode\u003e07b0fc7\u003c/code\u003e\u003c/a\u003e update .gitignore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/e8158a4eb131760714290b9839e3e40f9cd4229c\"\u003e\u003ccode\u003ee8158a4\u003c/code\u003e\u003c/a\u003e Fix AWS signer, allow messages bigger than 4kB\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/e23f855ddecb97d4baddffc068e9591451b9aa72\"\u003e\u003ccode\u003ee23f855\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1023\"\u003e#1023\u003c/a\u003e from secure-systems-lab/dependabot/pip/dependencies-...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/compare/v1.3.0...v1.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.1.8 to 8.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.3.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our \u003ca href=\"https://palletsprojects.com/versions\"\u003eVersion Support Policy\u003c/a\u003e on our website.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.0/\"\u003ehttps://pypi.org/project/click/8.3.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/27\"\u003ehttps://github.com/pallets/click/milestone/27\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: \u003ca href=\"https://redirect.github.com/pallets/click/issues/1992\"\u003e#1992\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2514\"\u003e#2514\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2610\"\u003e#2610\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3024\"\u003e#3024\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2164\"\u003e#2164\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for nargs option in combination with flag option \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2995\"\u003e#2995\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3013\"\u003e#3013\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3023\"\u003e#3023\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in CliRunner.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2939\"\u003e#2939\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.2.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.2.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.2.2/\"\u003ehttps://pypi.org/project/click/8.2.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-2-2\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-2-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/25\"\u003ehttps://github.com/pallets/click/milestone/25\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix reconciliation of \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003etype\u003c/code\u003e parameters for\nflag options, as well as parsing and normalization of environment variables.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/2952\"\u003e#2952\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2956\"\u003e#2956\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typing issue in \u003ccode\u003eBadParameter\u003c/code\u003e and \u003ccode\u003eMissingParameter\u003c/code\u003e exceptions for the\nparameter \u003ccode\u003eparam_hint\u003c/code\u003e that did not allow for a sequence of string where the\nunderlying functino \u003ccode\u003e_join_param_hints\u003c/code\u003e allows for it. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2777\"\u003e#2777\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2990\"\u003e#2990\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse the value of \u003ccode\u003eEnum\u003c/code\u003e choices to render their default value in help\nscreen. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2911\"\u003e#2911\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3004\"\u003e#3004\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix completion for the Z shell (\u003ccode\u003ezsh\u003c/code\u003e) for completion items containing\ncolons. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2703\"\u003e#2703\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2846\"\u003e#2846\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't include envvar in error hint when not configured. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2971\"\u003e#2971\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2972\"\u003e#2972\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.rst\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.3.0\u003c/h2\u003e\n\u003cp\u003eReleased 2025-09-17\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: :issue:\u003ccode\u003e1992\u003c/code\u003e :issue:\u003ccode\u003e2514\u003c/code\u003e :issue:\u003ccode\u003e2610\u003c/code\u003e\n:issue:\u003ccode\u003e3024\u003c/code\u003e :pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. :issue:\u003ccode\u003e2164\u003c/code\u003e\n:pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption :issue:\u003ccode\u003e2813\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. :issue:\u003ccode\u003e2995\u003c/code\u003e :pr:\u003ccode\u003e3013\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e. :pr:\u003ccode\u003e3023\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. :issue:\u003ccode\u003e2447\u003c/code\u003e :pr:\u003ccode\u003e3058\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in CliRunner. :issue:\u003ccode\u003e2939\u003c/code\u003e :pr:\u003ccode\u003e2940\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-07-31\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix reconciliation of \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003etype\u003c/code\u003e parameters for\nflag options, as well as parsing and normalization of environment variables.\n:issue:\u003ccode\u003e2952\u003c/code\u003e :pr:\u003ccode\u003e2956\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix typing issue in \u003ccode\u003eBadParameter\u003c/code\u003e and \u003ccode\u003eMissingParameter\u003c/code\u003e exceptions for the\nparameter \u003ccode\u003eparam_hint\u003c/code\u003e that did not allow for a sequence of string where the\nunderlying function \u003ccode\u003e_join_param_hints\u003c/code\u003e allows for it. :issue:\u003ccode\u003e2777\u003c/code\u003e :pr:\u003ccode\u003e2990\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUse the value of \u003ccode\u003eEnum\u003c/code\u003e choices to render their default value in help\nscreen. Refs :issue:\u003ccode\u003e2911\u003c/code\u003e :pr:\u003ccode\u003e3004\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix completion for the Z shell (\u003ccode\u003ezsh\u003c/code\u003e) for completion items containing\ncolons. :issue:\u003ccode\u003e2703\u003c/code\u003e :pr:\u003ccode\u003e2846\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDon't include envvar in error hint when not configured. :issue:\u003ccode\u003e2971\u003c/code\u003e :pr:\u003ccode\u003e2972\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix a rare race in \u003ccode\u003eclick.testing.StreamMixer\u003c/code\u003e's finalization that manifested\nas a \u003ccode\u003eValueError\u003c/code\u003e on close in a multi-threaded test session.\n:issue:\u003ccode\u003e2993\u003c/code\u003e :pr:\u003ccode\u003e2991\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-20\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/00fadb8904387158ce6e9aa1573be770446895c1\"\u003e\u003ccode\u003e00fadb8\u003c/code\u003e\u003c/a\u003e Release version 8.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/2a0e3ba907927ade6951d5732b775f11b54cb766\"\u003e\u003ccode\u003e2a0e3ba\u003c/code\u003e\u003c/a\u003e testing/CliRunner: Fix regression related to EOF introduced in 262bdf0 (\u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e11a1efc3395e998a1521a0dc35672a799e78d30\"\u003e\u003ccode\u003ee11a1ef\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into fix-cli-runner-prompt-eof-handling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/36deba8a95a2585de1a2aa4475b7f054f52830ac\"\u003e\u003ccode\u003e36deba8\u003c/code\u003e\u003c/a\u003e Forward exception information to resources registered in a context (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/f2cae7ae997cd32311cab3dede4c2b89fe05e191\"\u003e\u003ccode\u003ef2cae7a\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Add summary of PR to changelog for 8.3.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/7c7ec36354f49d1a092cb077fa4881ea4d70ba01\"\u003e\u003ccode\u003e7c7ec36\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Split resource exception handling tests in single and nested\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/92129c552da88ac30b578132031efa4b003ecc46\"\u003e\u003ccode\u003e92129c5\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Added exception forwarding to context tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/555fa9bb37770a6845a98be60b0c84876775552e\"\u003e\u003ccode\u003e555fa9b\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Forward exception data to exit stack when calling \u003ccode\u003e__exit__\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/16fe802a3f96c4c8fa3cd382f1a7577fda0c5321\"\u003e\u003ccode\u003e16fe802\u003c/code\u003e\u003c/a\u003e Add more tests on \u003ccode\u003eEnum\u003c/code\u003e rendering (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/d36de6fc67882f23d7a7d61cd4c0e25e0f88b0ac\"\u003e\u003ccode\u003ed36de6f\u003c/code\u003e\u003c/a\u003e Add more tests on Enum rendering their item's names and not values\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.1.8...8.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `rich` from 14.0.0 to 14.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Textualize/rich/releases\"\u003erich's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eThe Easy as Pi release\u003c/h2\u003e\n\u003cp\u003eThis release bumps Python compatibility to the just-released Python 3.14.\u003c/p\u003e\n\u003ch2\u003e[14.2.0] - 2025-10-09\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePython3.14 compatibility \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3861\"\u003eTextualize/rich#3861\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eThe Lively Release\u003c/h2\u003e\n\u003cp\u003eLive objects may now be nested. Previously a progress bar inside another progress context would fail. See the changelog below for this and other changes.\u003c/p\u003e\n\u003ch2\u003e[14.1.0] - 2025-06-25\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved \u003ccode\u003etyping_extensions\u003c/code\u003e from runtime dependencies \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3763\"\u003eTextualize/rich#3763\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLive objects (including Progress) may now be nested \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3768\"\u003eTextualize/rich#3768\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded padding property to Syntax which returns a tuple of four integers \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3782\"\u003eTextualize/rich#3782\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed extraction of recursive exceptions \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3772\"\u003eTextualize/rich#3772\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed padding applied to Syntax \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3782\"\u003eTextualize/rich#3782\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003ePanel\u003c/code\u003e title missing the panel background style \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3569\"\u003eTextualize/rich#3569\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eTTY_INTERACTIVE\u003c/code\u003e environment variable to force interactive mode off or on \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3777\"\u003eTextualize/rich#3777\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/Textualize/rich/blob/master/CHANGELOG.md\"\u003erich's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[14.2.0] - 2025-10-09\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePython3.14 compatibility \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3861\"\u003eTextualize/rich#3861\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[14.1.0] - 2025-06-25\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved \u003ccode\u003etyping_extensions\u003c/code\u003e from runtime dependencies \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3763\"\u003eTextualize/rich#3763\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLive objects (including Progress) may now be nested \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3768\"\u003eTextualize/rich#3768\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded padding property to Syntax which returns a tuple of four integers \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3782\"\u003eTextualize/rich#3782\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed extraction of recursive exceptions \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3772\"\u003eTextualize/rich#3772\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed padding applied to Syntax \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3782\"\u003eTextualize/rich#3782\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003ePanel\u003c/code\u003e title missing the panel background style \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3569\"\u003eTextualize/rich#3569\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eTTY_INTERACTIVE\u003c/code\u003e environment variable to force interactive mode off or on \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3777\"\u003eTextualize/rich#3777\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/Textualize/rich/commit/494f83c923ca54ecc943bf5e60c0004e65fbb54e\"\u003e\u003ccode\u003e494f83c\u003c/code\u003e\u003c/a\u003e changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/d476e85a19ea62966a25f6df0e0a287da52ab35f\"\u003e\u003ccode\u003ed476e85\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3862\"\u003e#3862\u003c/a\u003e from GeroZayas/docs/es-readme-sync-2025-10\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/518daaa39c17bad485c970bf229424784fbdf044\"\u003e\u003ccode\u003e518daaa\u003c/code\u003e\u003c/a\u003e docs(es): sync README.es.md (macOS, 16 colors, Python 3.8+)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/cd5074f87804aac2f6e5c6143e1cac5e3a0bddc5\"\u003e\u003ccode\u003ecd5074f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3861\"\u003e#3861\u003c/a\u003e from Textualize/python314\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/041406ca9b60af8fcc00cd7fc1b2973ab51eb851\"\u003e\u003ccode\u003e041406c\u003c/code\u003e\u003c/a\u003e removed asv\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/655b5210cb1403100a646d167cf027eec760dd9f\"\u003e\u003ccode\u003e655b521\u003c/code\u003e\u003c/a\u003e test fixes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/27c2d2df7523315de4b81577d414db8c1c7312f9\"\u003e\u003ccode\u003e27c2d2d\u003c/code\u003e\u003c/a\u003e bump for Python3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/ea9d4db5d84b4e834979304e3053bf757daae322\"\u003e\u003ccode\u003eea9d4db\u003c/code\u003e\u003c/a\u003e Update feature_request.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/2dca1b70359dac61e1bbfb6f14ebe19a5ab79c3d\"\u003e\u003ccode\u003e2dca1b7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3808\"\u003e#3808\u003c/a\u003e from Textualize/bump1410\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/19b6dddd807b887eaaf313174fff3eb2e22cda25\"\u003e\u003ccode\u003e19b6ddd\u003c/code\u003e\u003c/a\u003e version bump\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Textualize/rich/compare/v14.0.0...v14.2.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 `dynaconf` from 3.2.10 to 3.2.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dynaconf/dynaconf/releases\"\u003edynaconf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.2.12\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eIncremental improvment to access performance by \u003ca href=\"https://github.com/pedro-psb\"\u003e\u003ccode\u003e@​pedro-psb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/pull/1304\"\u003edynaconf/dynaconf#1304\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: get method to return Any type. by \u003ca href=\"https://github.com/rochacbruno\"\u003e\u003ccode\u003e@​rochacbruno\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/pull/1314\"\u003edynaconf/dynaconf#1314\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eperf: add lru caching to \u003ccode\u003efind_the_correct_casing\u003c/code\u003e function by \u003ca href=\"https://github.com/pedro-psb\"\u003e\u003ccode\u003e@​pedro-psb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/pull/1326\"\u003edynaconf/dynaconf#1326\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/dynaconf/dynaconf/compare/3.2.11...3.2.12\"\u003ehttps://github.com/dynaconf/dynaconf/compare/3.2.11...3.2.12\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.2.11\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eRelease version 3.2.11\u003c/p\u003e\n\u003cp\u003eShortlog of commits since last release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBruno Rocha (9): \u003ca href=\"https://github.com/rochacbruno\"\u003e\u003ccode\u003e@​rochacbruno\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003efix(cli): handle empty hooks and boolean environments.\u003c/li\u003e\n\u003cli\u003efix: Better way for CLI to find the Django Settings\u003c/li\u003e\n\u003cli\u003efix: windows CI\u003c/li\u003e\n\u003cli\u003efeat: Run CLI as module with \u003ccode\u003epython -m dynaconf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1290\"\u003e#1290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: use sys.argv instead of click.get_os_args (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1292\"\u003e#1292\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: \u003ccode\u003e-k\u003c/code\u003e must exit code 1 when key do not exist (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1293\"\u003e#1293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: envless load file (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1295\"\u003e#1295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: add correct supported python version to 3.2.x\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFabricio Aguiar (1): \u003ca href=\"https://github.com/fao89\"\u003e\u003ccode\u003e@​fao89\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003efix: make raw variables private (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1287\"\u003e#1287\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePedro Brochado (1): \u003ca href=\"https://github.com/pedro-psb\"\u003e\u003ccode\u003e@​pedro-psb\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003edocs: clarification on redis hash title when using custom envvar prefixes (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMilestone \u003ca href=\"https://github.com/dynaconf/dynaconf/milestone/31?closed=1\"\u003ehttps://github.com/dynaconf/dynaconf/milestone/31?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/dynaconf/dynaconf/compare/3.2.10...3.2.11\"\u003ehttps://github.com/dynaconf/dynaconf/compare/3.2.10...3.2.11\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/dynaconf/dynaconf/blob/3.2.12/CHANGELOG.md\"\u003edynaconf's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pedro-psb/dynaconf/releases/tag/3.2.12\"\u003e3.2.12\u003c/a\u003e - 2025-10-10\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eget method to return Any type.. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003eremove unnecessary recursive evaluation call on Settings.get. \u003cem\u003eBy Pedro Brochado\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003eimprove performance of settings access in a loop (part 1). \u003cem\u003eBy Pedro Brochado\u003c/em\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/releases/tag/3.2.11\"\u003e3.2.11\u003c/a\u003e - 2025-05-06\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd correct supported python version to 3.2.x. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e-k\u003c/code\u003e must exit code 1 when key do not exist (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1293\"\u003e#1293\u003c/a\u003e). \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003euse sys.argv instead of click.get_os_args (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1292\"\u003e#1292\u003c/a\u003e). \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003ewindows CI. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003emake raw variables private (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1287\"\u003e#1287\u003c/a\u003e). \u003cem\u003eBy Fabricio Aguiar\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003eBetter way for CLI to find the Django Settings. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003ehandle empty hooks and boolean environments.. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eenvless load file (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1295\"\u003e#1295\u003c/a\u003e). \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003eRun CLI as module with \u003ccode\u003epython -m dynaconf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1290\"\u003e#1290\u003c/a\u003e). \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eclarification on redis hash title when using custom envvar prefixes (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1273\"\u003e#1273\u003c/a\u003e). \u003cem\u003eBy Pedro Brochado\u003c/em\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/dynaconf/dynaconf/commit/7606f351ac460b15c56e7a538300de4a501c56e7\"\u003e\u003ccode\u003e7606f35\u003c/code\u003e\u003c/a\u003e Release version 3.2.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/da44e5182940299dd90ca3e2a0e0e3c23cb9ebf7\"\u003e\u003ccode\u003eda44e51\u003c/code\u003e\u003c/a\u003e perf: add lru caching to \u003ccode\u003efind_the_correct_casing\u003c/code\u003e function (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1326\"\u003e#1326\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/b75eda0da141bdc29f707f2cb0c29e06b03a72bb\"\u003e\u003ccode\u003eb75eda0\u003c/code\u003e\u003c/a\u003e fix: get method to return Any type.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/4f3df1a47bcb71feddf7565f603e7994c65ede65\"\u003e\u003ccode\u003e4f3df1a\u003c/code\u003e\u003c/a\u003e misc: add some profile/perf scripts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/420acebf64e77ba475df94dfd7d409207e5e239d\"\u003e\u003ccode\u003e420aceb\u003c/code\u003e\u003c/a\u003e refactor: merge \u003cem\u003esafe\u003c/em\u003e{get,copy} into .get and .copy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/18c0c8422dc9651d57c76d1b098ad6fb3f75c09d\"\u003e\u003ccode\u003e18c0c84\u003c/code\u003e\u003c/a\u003e fix: remove unnecessary recursive evaluation call on Settings.get\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/0fde96f2e0b71309e63800ddac8eceda062155a9\"\u003e\u003ccode\u003e0fde96f\u003c/code\u003e\u003c/a\u003e refactor: rewrite decorator as explicit call\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/52efd9ed78d2187550e03a2ae5008661d5e28df9\"\u003e\u003ccode\u003e52efd9e\u003c/code\u003e\u003c/a\u003e Bump to version 3.2.12-dev0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/c61da8fd191196c1341bd3d8a8dd895e9cf671ae\"\u003e\u003ccode\u003ec61da8f\u003c/code\u003e\u003c/a\u003e Release version 3.2.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/f8189fb6c130ff4709450e7daebcf1c174aea248\"\u003e\u003ccode\u003ef8189fb\u003c/code\u003e\u003c/a\u003e fix: add correct supported python version to 3.2.x\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/dynaconf/dynaconf/compare/3.2.10...3.2.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `isort` from 6.0.1 to 7.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/isort/releases\"\u003eisort's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.0.0\u003c/h2\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003ch2\u003e:boom: Breaking Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9 (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2430\"\u003e#2430\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:rocket: Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eShow absolute paths in skipped file messages (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2416\"\u003e#2416\u003c/a\u003e) \u003ca href=\"https://github.com/pranlawate\"\u003e\u003ccode\u003e@​pranlawate\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:beetle: Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSome fixes for Python 3.14 (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2433\"\u003e#2433\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTest on \u003ccode\u003e3.14\u003c/code\u003e and fix any bugs (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2425\"\u003e#2425\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CHANGELOG.md + Fix Formatting and Grammar (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2419\"\u003e#2419\u003c/a\u003e) \u003ca href=\"https://github.com/lukbrew25\"\u003e\u003ccode\u003e@​lukbrew25\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix output of hanging indent for long lines with noqa (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2407\"\u003e#2407\u003c/a\u003e) \u003ca href=\"https://github.com/matan1008\"\u003e\u003ccode\u003e@​matan1008\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:construction_worker: Continuous Integration\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFormat with \u003ccode\u003eruff\u003c/code\u003e instead of \u003ccode\u003eblack\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2432\"\u003e#2432\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTarget 3.10 for \u003ccode\u003eruff\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2431\"\u003e#2431\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate development dependencies to latest version (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2426\"\u003e#2426\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: update pre-commit examples to version 6.1.0 (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2413\"\u003e#2413\u003c/a\u003e) \u003ca href=\"https://github.com/pranlawate\"\u003e\u003ccode\u003e@​pranlawate\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall cleanup for developer environment (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2418\"\u003e#2418\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:package: Dependencies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/setup-python from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2411\"\u003e#2411\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e6.1.0\u003c/h2\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate docs discussions channel (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2410\"\u003e#2410\u003c/a\u003e) \u003ca href=\"https://github.com/staticdev\"\u003e\u003ccode\u003e@​staticdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd python 3.14 classifier and badge (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2409\"\u003e#2409\u003c/a\u003e) \u003ca href=\"https://github.com/staticdev\"\u003e\u003ccode\u003e@​staticdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop use of non-standard pkg_resources API (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2405\"\u003e#2405\u003c/a\u003e) \u003ca href=\"https://github.com/dvarrazzo\"\u003e\u003ccode\u003e@​dvarrazzo\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse working isort version in pre-commit example (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2402\"\u003e#2402\u003c/a\u003e) \u003ca href=\"https://github.com/iainelder\"\u003e\u003ccode\u003e@​iainelder\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix typo in _get_files_from_dir_cached test (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2392\"\u003e#2392\u003c/a\u003e) \u003ca href=\"https://github.com/tiltingpenguin\"\u003e\u003ccode\u003e@​tiltingpenguin\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eResolve bandit warnings (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2379\"\u003e#2379\u003c/a\u003e) \u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd tox for cross-platform, parallel test suite execution (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2378\"\u003e#2378\u003c/a\u003e) \u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Project URLs to PyPI Side Panel (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2387\"\u003e#2387\u003c/a\u003e) \u003ca href=\"https://github.com/guillermodotn\"\u003e\u003ccode\u003e@​guillermodotn\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typos (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2376\"\u003e#2376\u003c/a\u003e) \u003ca href=\"https://github.com/co63oc\"\u003e\u003ccode\u003e@​co63oc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:construction_worker: Continuous Integration\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd make bash scripts portable (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2377\"\u003e#2377\u003c/a\u003e) \u003ca href=\"https://github.com/staticdev\"\u003e\u003ccode\u003e@​staticdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:package: Dependencies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 4 to 5 in the github-actions group (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2406\"\u003e#2406\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/isort/blob/main/CHANGELOG.md\"\u003eisort's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003cp\u003eNOTE: isort follows the \u003ca href=\"https://semver.org/\"\u003esemver\u003c/a\u003e versioning standard.\nFind out more about isort's release policy \u003ca href=\"https://pycqa.github.io/isort/docs/major_releases/release_policy\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003e6.1.0 October 1 2025\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd python 3.14 classifier and badge (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2409\"\u003e#2409\u003c/a\u003e) \u003ca href=\"https://github.com/staticdev\"\u003e\u003ccode\u003e@​staticdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop use of non-standard pkg_resources API (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2405\"\u003e#2405\u003c/a\u003e) \u003ca href=\"https://github.com/dvarrazzo\"\u003e\u003ccode\u003e@​dvarrazzo\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/PyCQA/isort/commit/0a09c783808cfe77bb3269250f663ff733d23302\"\u003e\u003ccode\u003e0a09c78\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2433\"\u003e#2433\u003c/a\u003e from DanielNoord/python-314\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/0fee794a05b5d0c471ac80bc8943f9843ca29644\"\u003e\u003ccode\u003e0fee794\u003c/code\u003e\u003c/a\u003e Add 3.14 to \u003ccode\u003estdlibds\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/332a1ad0b68bf3a3acac055b0ec3666408b3b425\"\u003e\u003ccode\u003e332a1ad\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003ezstandard\u003c/code\u003e for 3.14 compat\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/f756e5653afcf6d79ec4d0240b1868cbebd8fafd\"\u003e\u003ccode\u003ef756e56\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2432\"\u003e#2432\u003c/a\u003e from DanielNoord/ruff-it-up\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/52f5134889d345ff35afdcb86501c8221b804c70\"\u003e\u003ccode\u003e52f5134\u003c/code\u003e\u003c/a\u003e Format with \u003ccode\u003eruff\u003c/code\u003e instead of \u003ccode\u003eblack\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/012aa69fcadb3c89ff92a3d96aa449be7ae6746f\"\u003e\u003ccode\u003e012aa69\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2431\"\u003e#2431\u003c/a\u003e from DanielNoord/ruff-it-up\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/89773dbb371192541092657972a74e9ce0bbbc74\"\u003e\u003ccode\u003e89773db\u003c/code\u003e\u003c/a\u003e Target 3.10 with \u003ccode\u003eruff\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/933e382f98a0c77b4c6e33c4e3ef12bd57192884\"\u003e\u003ccode\u003e933e382\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2430\"\u003e#2430\u003c/a\u003e from DanielNoord/drop-39\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/8b6e00cbe643a216da57fed4baa282d0a4a1b829\"\u003e\u003ccode\u003e8b6e00c\u003c/code\u003e\u003c/a\u003e Remove support for Python 3.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/b5f9f296ad873734e8caa3a731f27360648d9b37\"\u003e\u003ccode\u003eb5f9f29\u003c/code\u003e\u003c/a\u003e Bump profile plugin to 3.10+ and re-lock\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PyCQA/isort/compare/6.0.1...7.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlalchemy` from 2.0.40 to 2.0.44\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/releases\"\u003esqlalchemy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.0.44\u003c/h1\u003e\n\u003cp\u003eReleased: October 10, 2025\u003c/p\u003e\n\u003ch2\u003eplatform\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e[platform] [bug]\u003c/strong\u003e Unblocked automatic greenlet installation for Python 3.14 now that\nthere are greenlet wheels on pypi for python 3.14.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eorm\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [usecase]\u003c/strong\u003e The way ORM Annotated Declarative interprets Python \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e type aliases\nin \u003ccode\u003eMapped[]\u003c/code\u003e annotations has been refined to expand the lookup scheme. A\n\u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e type can now be resolved based on either its direct presence in\n\u003ccode\u003e_orm.registry.type_annotation_map\u003c/code\u003e or its immediate resolved\nvalue, as long as a recursive lookup across multiple \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e types is\nnot required for it to resolve. This change reverses part of the\nrestrictions introduced in 2.0.37 as part of \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/11955\"\u003e#11955\u003c/a\u003e, which\ndeprecated (and disallowed in 2.1) the ability to resolve any \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e\ntype that was not explicitly present in\n\u003ccode\u003e_orm.registry.type_annotation_map\u003c/code\u003e. Recursive lookups of\n\u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e types remains deprecated in 2.0 and disallowed in version 2.1,\nas do implicit lookups of \u003ccode\u003eNewType\u003c/code\u003e types without an entry in\n\u003ccode\u003e_orm.registry.type_annotation_map\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eAdditionally, new support has been added for generic \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e aliases that\nrefer to \u003ca href=\"https://peps.python.org/pep-0593\"\u003ePEP 593\u003c/a\u003e \u003ccode\u003eAnnotated\u003c/code\u003e constructs containing\n\u003ccode\u003e_orm.mapped_column()\u003c/code\u003e configurations. See the sections below for\nexamples.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12829\"\u003e#12829\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed a caching issue where \u003ccode\u003e_orm.with_loader_criteria()\u003c/code\u003e would\nincorrectly reuse cached bound parameter values when used with\n\u003ccode\u003e_sql.CompoundSelect\u003c/code\u003e constructs such as \u003ccode\u003e_sql.union()\u003c/code\u003e. The\nissue was caused by the cache key for compound selects not including the\nexecution options that are part of the \u003ccode\u003e_sql.Executable\u003c/code\u003e base class,\nwhich \u003ccode\u003e_orm.with_loader_criteria()\u003c/code\u003e uses to apply its criteria\ndynamically. The fix ensures that compound selects and other executable\nconstructs properly include execution options in their cache key traversal.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12905\"\u003e#12905\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eengine\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e[engine] [bug]\u003c/strong\u003e Implemented initial support for free-threaded Python by adding new tests\nand reworking the test harness to include Python 3.13t and Python 3.14t in\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psycopg2` from 2.9.10 to 2.9.11\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psycopg/psycopg2/blob/master/NEWS\"\u003epsycopg2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eCurrent release\u003c/h2\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.11\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eAvoid a segfault passing more arguments than placeholders if Python is built\nwith assertions enabled (:ticket:\u003ccode\u003e[#1791](https://github.com/psycopg/psycopg2/issues/1791)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e~psycopg2.errorcodes\u003c/code\u003e map and \u003ccode\u003e~psycopg2.errors\u003c/code\u003e classes updated to\nPostgreSQL 18.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.8.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.10\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.13.\u003c/li\u003e\n\u003cli\u003eReceive notifications on commit (:ticket:\u003ccode\u003e[#1728](https://github.com/psycopg/psycopg2/issues/1728)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e~psycopg2.errorcodes\u003c/code\u003e map and \u003ccode\u003e~psycopg2.errors\u003c/code\u003e classes updated to\nPostgreSQL 17.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.7.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.9\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.12.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.6.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.8\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWheel package bundled with PostgreSQL 16 libpq in order to add support for\nrecent features, such as \u003ccode\u003esslcertmode\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.7\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix propagation of exceptions raised during module initialization\n(:ticket:\u003ccode\u003e[#1598](https://github.com/psycopg/psycopg2/issues/1598)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix building when pg_config returns an empty string (:ticket:\u003ccode\u003e[#1599](https://github.com/psycopg/psycopg2/issues/1599)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eWheel package bundled with OpenSSL 1.1.1v.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.6\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/psycopg/psycopg2/commit/fd9ae8cad2bcfc3e7e9410e7b6f07cda8f4f05ec\"\u003e\u003ccode\u003efd9ae8c\u003c/code\u003e\u003c/a\u003e chore: bump to version 2.9.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/d923840546942534f0956d9202f914fd9feac5fd\"\u003e\u003ccode\u003ed923840\u003c/code\u003e\u003c/a\u003e chore: update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/d42dc7169d3cd93517e282e9ef5dc2a2b40650a2\"\u003e\u003ccode\u003ed42dc71\u003c/code\u003e\u003c/a\u003e Merge branch 'fix-1791'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/4fde6560c32f06ad1304404c9f7f86148dcc4be0\"\u003e\u003ccode\u003e4fde656\u003c/code\u003e\u003c/a\u003e fix: avoid failed assert passing more arguments than placeholders\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/8308c19d6af0d904b313997539ed33415990a74e\"\u003e\u003ccode\u003e8308c19\u003c/code\u003e\u003c/a\u003e fix: drop warning about the use of deprecated PyWeakref_GetObject function\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/1a1eabf098a3374409bb2ab4b594777b900f396d\"\u003e\u003ccode\u003e1a1eabf\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/github-script from 7 to 8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/897af8b38beda851d7257dfc525129e37c0ec9e0\"\u003e\u003ccode\u003e897af8b\u003c/code\u003e\u003c/a\u003e build(deps): bump peter-evans/repository-dispatch from 3 to 4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/ceefd305117113ca10e383a626e87ba0796f3638\"\u003e\u003ccode\u003eceefd30\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/checkout from 4 to 5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/4dc585430cabe94cee96c5a9de0265d0f55370f1\"\u003e\u003ccode\u003e4dc5854\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/setup-python from 5 to 6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/1945788dcf6172bb1b9328ebc3587ccf0e6a659c\"\u003e\u003ccode\u003e1945788\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg2/issues/1802\"\u003e#1802\u003c/a\u003e from edgarrmondragon/cp314-wheels\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psycopg/psycopg2/compare/2.9.10...2.9.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `beaupy` 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/petereon/beaupy/releases\"\u003ebeaupy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.10.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): update dependency flake8 to v7.1.1 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/129\"\u003epetereon/beaupy#129\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency isort to v5.13.2 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/130\"\u003epetereon/beaupy#130\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency mypy to v1.14.1 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/131\"\u003epetereon/beaupy#131\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: adding documentation for global config by \u003ca href=\"https://github.com/petereon\"\u003e\u003ccode\u003e@​petereon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/148\"\u003epetereon/beaupy#148\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency pytest to v8.4.2 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/147\"\u003epetereon/beaupy#147\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency black to v25 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/144\"\u003epetereon/beaupy#144\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency pydoc-markdown to v4.8.2 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/132\"\u003epetereon/beaupy#132\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/petereon/beaupy/compare/v3.10.1...v3.10.2\"\u003ehttps://github.com/petereon/beaupy/compare/v3.10.1...v3.10.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/a2dc15764508c0451ed4dc386f3b0761fe7a9ce2\"\u003e\u003ccode\u003ea2dc157\u003c/code\u003e\u003c/a\u003e chore: bump version from 3.10.1 to 3.10.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/7599e5a43be6893c81612314f410ffa602a15f57\"\u003e\u003ccode\u003e7599e5a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/132\"\u003e#132\u003c/a\u003e from petereon/renovate/pydoc-markdown-4.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/6b2bb33d4fef6f2a607e1f42c873bd92ffc2b0d5\"\u003e\u003ccode\u003e6b2bb33\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency pydoc-markdown to v4.8.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/d2b0cbc3bb6b191816fdef9319a150e9b305ae7f\"\u003e\u003ccode\u003ed2b0cbc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/144\"\u003e#144\u003c/a\u003e from petereon/renovate/black-25.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/926fb4e8773f587417e7a3f453af1641364888e5\"\u003e\u003ccode\u003e926fb4e\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency black to v25\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/df126efc542641c8f7385f8087a19a95ee1615b7\"\u003e\u003ccode\u003edf126ef\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/147\"\u003e#147\u003c/a\u003e from petereon/renovate/pytest-8.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/0eb77250022a166836a4594a489d9c178591234b\"\u003e\u003ccode\u003e0eb7725\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency pytest to v8.4.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/7b9234631ce3510e433fbb59d4c0e829d70fd569\"\u003e\u003ccode\u003e7b92346\u003c/code\u003e\u003c/a\u003e chore: linting code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/531e870193a7cb26ab43370a45d8562cb44d8b15\"\u003e\u003ccode\u003e531e870\u003c/code\u003e\u003c/a\u003e chore: fix weird types\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/dfd9dbc54327c19455197566f7161de08ad3180b\"\u003e\u003ccode\u003edfd9dbc\u003c/code\u003e\u003c/a\u003e docs: adding documentation for global config (\u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/148\"\u003e#148\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/petereon/beaupy/compare/v3.10.1...v3.10.2\"\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.2 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 suppo...\n\n_Description has been truncated_","html_url":"https://github.com/MVrachev/repository-service-tuf-cli/pull/57","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/MVrachev%2Frepository-service-tuf-cli/issues/57","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/57/packages"},{"uuid":"3509687694","node_id":"PR_kwDOHGh5u86tcags","number":911,"state":"closed","title":"build(deps): bump the pipenv group across 1 directory with 32 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-10-31T10:43:52.000Z","author_association":null,"state_reason":null,"created_at":"2025-10-13T11:34:46.000Z","updated_at":"2025-10-31T10:43:54.000Z","time_to_close":1552146,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"pipenv","update_count":32,"packages":[{"name":"rich-click","old_version":"1.8.8","new_version":"1.9.3","repository_url":"https://github.com/ewels/rich-click"},{"name":"securesystemslib","old_version":"1.3.0","new_version":"1.3.1","repository_url":"https://github.com/secure-systems-lab/securesystemslib"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"dynaconf","old_version":"3.2.10","new_version":"3.2.12","repository_url":"https://github.com/dynaconf/dynaconf"},{"name":"isort","old_version":"6.0.1","new_version":"7.0.0","repository_url":"https://github.com/PyCQA/isort"},{"name":"sqlalchemy","old_version":"2.0.40","new_version":"2.0.44","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"psycopg2","old_version":"2.9.10","new_version":"2.9.11","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"beaupy","old_version":"3.10.1","new_version":"3.10.2","repository_url":"https://github.com/petereon/beaupy"},{"name":"sigstore","old_version":"3.6.2","new_version":"4.1.0","repository_url":"https://github.com/sigstore/sigstore-python"},{"name":"boto3","old_version":"1.38.8","new_version":"1.40.50","repository_url":"https://github.com/boto/boto3"},{"name":"google-cloud-kms","old_version":"3.4.1","new_version":"3.6.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"azure-keyvault-keys","old_version":"4.10.0","new_version":"4.11.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"prompt-toolkit","old_version":"3.0.51","new_version":"3.0.52","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"setuptools","old_version":"80.3.1","new_version":"80.9.0","repository_url":"https://github.com/pypa/setuptools"},{"name":"pykcs11","old_version":"1.5.17","new_version":"1.5.18","repository_url":"https://github.com/LudovicRousseau/PyKCS11"},{"name":"exceptiongroup","old_version":"1.2.2","new_version":"1.3.0","repository_url":"https://github.com/agronholm/exceptiongroup"},{"name":"black","old_version":"25.1.0","new_version":"25.9.0","repository_url":"https://github.com/psf/black"},{"name":"flake8","old_version":"7.2.0","new_version":"7.3.0","repository_url":"https://github.com/pycqa/flake8"},{"name":"tox","old_version":"4.25.0","new_version":"4.31.0","repository_url":"https://github.com/tox-dev/tox"},{"name":"pytest","old_version":"8.3.5","new_version":"8.4.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"6.1.1","new_version":"7.0.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pytest-xdist","old_version":"3.6.1","new_version":"3.8.0","repository_url":"https://github.com/pytest-dev/pytest-xdist"},{"name":"mypy","old_version":"1.15.0","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"},{"name":"pip","old_version":"25.1.1","new_version":"25.2","repository_url":"https://github.com/pypa/pip"},{"name":"sphinxcontrib-plantuml","old_version":"0.30","new_version":"0.31","repository_url":"https://github.com/sphinx-contrib/plantuml"},{"name":"build","old_version":"1.2.2.post1","new_version":"1.3.0","repository_url":"https://github.com/pypa/build"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.3.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"bandit","old_version":"1.8.3","new_version":"1.8.6","repository_url":"https://github.com/PyCQA/bandit"},{"name":"types-requests","old_version":"2.32.0.20250328","new_version":"2.32.4.20250913","repository_url":"https://github.com/typeshed-internal/stub_uploader"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pipenv group with 29 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [rich-click](https://github.com/ewels/rich-click) | `1.8.8` | `1.9.3` |\n| [securesystemslib](https://github.com/secure-systems-lab/securesystemslib) | `1.3.0` | `1.3.1` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [dynaconf](https://github.com/dynaconf/dynaconf) | `3.2.10` | `3.2.12` |\n| [isort](https://github.com/PyCQA/isort) | `6.0.1` | `7.0.0` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.40` | `2.0.44` |\n| [psycopg2](https://github.com/psycopg/psycopg2) | `2.9.10` | `2.9.11` |\n| [beaupy](https://github.com/petereon/beaupy) | `3.10.1` | `3.10.2` |\n| [sigstore](https://github.com/sigstore/sigstore-python) | `3.6.2` | `4.1.0` |\n| [boto3](https://github.com/boto/boto3) | `1.38.8` | `1.40.50` |\n| [google-cloud-kms](https://github.com/googleapis/google-cloud-python) | `3.4.1` | `3.6.0` |\n| [azure-keyvault-keys](https://github.com/Azure/azure-sdk-for-python) | `4.10.0` | `4.11.0` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.51` | `3.0.52` |\n| [setuptools](https://github.com/pypa/setuptools) | `80.3.1` | `80.9.0` |\n| [pykcs11](https://github.com/LudovicRousseau/PyKCS11) | `1.5.17` | `1.5.18` |\n| [exceptiongroup](https://github.com/agronholm/exceptiongroup) | `1.2.2` | `1.3.0` |\n| [black](https://github.com/psf/black) | `25.1.0` | `25.9.0` |\n| [flake8](https://github.com/pycqa/flake8) | `7.2.0` | `7.3.0` |\n| [tox](https://github.com/tox-dev/tox) | `4.25.0` | `4.31.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.5` | `8.4.2` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `6.1.1` | `7.0.0` |\n| [pytest-xdist](https://github.com/pytest-dev/pytest-xdist) | `3.6.1` | `3.8.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.18.2` |\n| [pip](https://github.com/pypa/pip) | `25.1.1` | `25.2` |\n| [sphinxcontrib-plantuml](https://github.com/sphinx-contrib/plantuml) | `0.30` | `0.31` |\n| [build](https://github.com/pypa/build) | `1.2.2.post1` | `1.3.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.3.0` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.8.3` | `1.8.6` |\n| [types-requests](https://github.com/typeshed-internal/stub_uploader) | `2.32.0.20250328` | `2.32.4.20250913` |\n\n\nUpdates `rich-click` from 1.8.8 to 1.9.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ewels/rich-click/releases\"\u003erich-click's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.9.3\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed subcommand discovery in help text. Behavior should now be the same as \u003ccode\u003e1.8\u003c/code\u003e. [\u003ca href=\"https://redirect.github.com/ewels/rich-click/pull/304\"\u003e#304\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.3.dev0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed subcommand discovery in help text. Behavior should now be the same as \u003ccode\u003e1.8\u003c/code\u003e. [\u003ca href=\"https://redirect.github.com/ewels/rich-click/pull/304\"\u003e#304\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed legacy Windows rendering\u003c/li\u003e\n\u003cli\u003eFix issue with parent \u003ccode\u003eclick.Group\u003c/code\u003e and child \u003ccode\u003erich_click.RichCommand\u003c/code\u003e error formatter not resolving.\u003c/li\u003e\n\u003cli\u003eAdd headers to tables (by default these are not shown).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.2.dev0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed legacy windows rendering\u003c/li\u003e\n\u003cli\u003eFix issue with parent \u003ccode\u003eclick.Group\u003c/code\u003e and child \u003ccode\u003erich_click.RichCommand\u003c/code\u003e error formatter not resolving.\u003c/li\u003e\n\u003cli\u003eAdd headers to tables (by default these are not shown).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed bug where running the \u003ccode\u003erich-click\u003c/code\u003e CLI on a \u003ccode\u003e@rich_click.argument()\u003c/code\u003e sometimes caused arguments show up in the option panel when it shouldn't.\u003c/li\u003e\n\u003cli\u003eSlightly reduced horizontal padding of the \u003ccode\u003emodern\u003c/code\u003e theme format.\u003c/li\u003e\n\u003cli\u003eFixed Click 8.3 compatibility with rendering defaults in help text.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.0\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\nVersion 1.9.0 deprecates support for a lot of old versions of things:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ePython 3.7 support is removed.\u003c/strong\u003e The minimum supported Python version is 3.8.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eClick 7 support is removed.\u003c/strong\u003e The minimum supported Click version is 8.0.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRich 10 and 11 support is removed.\u003c/strong\u003e The minimum supported Rich version is 12.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\nVersion 1.9.0 introduces a minor breaking change:\nThe \u003ccode\u003eDEFAULT_STRING\u003c/code\u003e, \u003ccode\u003eENVVAR_STRING\u003c/code\u003e, \u003ccode\u003eREQUIRED_STRING\u003c/code\u003e, and \u003ccode\u003eDEPRECATED_STRING\u003c/code\u003e config options are now rendered with \u003ccode\u003eText.from_markup\u003c/code\u003e.\nSo for example, \u003ccode\u003eREQUIRED_STRING = \u0026quot;[required]\u0026quot;\u003c/code\u003e would be rendered as Rich markup.\nYou must now escape the rich markup: \u003ccode\u003eREQUIRED_STRING = \u0026quot;\\\\[required]\u0026quot;\u003c/code\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003eBig changes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eThemes!\u003c/strong\u003e Check them out with \u003ccode\u003erich-click --themes\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTyper support:\u003c/strong\u003e \u003ccode\u003erich-click typer_app --help\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRichPanels\u003c/strong\u003e API introduced. This replaces the \u0026quot;groups\u0026quot; feature going forward (although groups will continue to be supported).\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e@click.option_panel()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e@click.command_panel()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eIDE tab completion support for decorators\u003c/strong\u003e. Now you should no longer need to guess what goes in \u003ccode\u003e@click.option()\u003c/code\u003e or \u003ccode\u003e@click.command(context_settings=...)\u003c/code\u003e etc.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHelp for arguments:\u003c/strong\u003e \u003ccode\u003ehelp=\u003c/code\u003e is now a valid kwarg for \u003ccode\u003e@click.argument()\u003c/code\u003e decorator. See docs for more information.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSmall changes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u0026quot;Deprecated\u0026quot; text properly handled and stylized in all places.\u003c/li\u003e\n\u003cli\u003eCommand aliases: \u003ccode\u003e@cli.command(aliases=[\u0026quot;foo\u0026quot;])\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eImproved \u003ccode\u003erich-click\u003c/code\u003e CLI usability: improved patching and improved script detection+execution.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- 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/ewels/rich-click/blob/main/CHANGELOG.md\"\u003erich-click's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.9.3 (2025-10-09)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed subcommand discovery in help text. Behavior should now be the same as \u003ccode\u003e1.8\u003c/code\u003e. [\u003ca href=\"https://redirect.github.com/ewels/rich-click/pull/304\"\u003e#304\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.9.2 (2025-10-04)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed legacy windows rendering\u003c/li\u003e\n\u003cli\u003eFix issue with parent \u003ccode\u003eclick.Group\u003c/code\u003e and child \u003ccode\u003erich_click.RichCommand\u003c/code\u003e error formatter not resolving.\u003c/li\u003e\n\u003cli\u003eAdd headers to tables (by default these are not shown).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.9.1 (2025-09-20)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed bug where running the \u003ccode\u003erich-click\u003c/code\u003e CLI on a \u003ccode\u003e@rich_click.argument()\u003c/code\u003e sometimes caused arguments show up in the option panel when it shouldn't.\u003c/li\u003e\n\u003cli\u003eSlightly reduced horizontal padding of the \u003ccode\u003emodern\u003c/code\u003e theme format.\u003c/li\u003e\n\u003cli\u003eFixed Click 8.3 compatibility with rendering defaults in help text.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.9.0 (2025-09-16)\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\nVersion 1.9.0 deprecates support for a lot of old versions of things:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ePython 3.7 support is removed.\u003c/strong\u003e The minimum supported Python version is 3.8.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eClick 7 support is removed.\u003c/strong\u003e The minimum supported Click version is 8.0.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRich 10 and 11 support is removed.\u003c/strong\u003e The minimum supported Rich version is 12.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\nVersion 1.9.0 introduces a minor breaking change:\nThe \u003ccode\u003eDEFAULT_STRING\u003c/code\u003e, \u003ccode\u003eENVVAR_STRING\u003c/code\u003e, \u003ccode\u003eREQUIRED_STRING\u003c/code\u003e, and \u003ccode\u003eDEPRECATED_STRING\u003c/code\u003e config options are now rendered with \u003ccode\u003eText.from_markup\u003c/code\u003e.\nSo for example, \u003ccode\u003eREQUIRED_STRING = \u0026quot;[required]\u0026quot;\u003c/code\u003e would be rendered as Rich markup.\nYou must now escape the rich markup: \u003ccode\u003eREQUIRED_STRING = \u0026quot;\\\\[required]\u0026quot;\u003c/code\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003eBig changes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eThemes!\u003c/strong\u003e Check them out with \u003ccode\u003erich-click --themes\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTyper support:\u003c/strong\u003e \u003ccode\u003erich-click typer_app --help\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRichPanels\u003c/strong\u003e API introduced. This replaces the \u0026quot;groups\u0026quot; feature going forward (although groups will continue to be supported).\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e@click.option_panel()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e@click.command_panel()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eIDE tab completion support for decorators\u003c/strong\u003e. Now you should no longer need to guess what goes in \u003ccode\u003e@click.option()\u003c/code\u003e or \u003ccode\u003e@click.command(context_settings=...)\u003c/code\u003e etc.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHelp for arguments:\u003c/strong\u003e \u003ccode\u003ehelp=\u003c/code\u003e is now a valid kwarg for \u003ccode\u003e@click.argument()\u003c/code\u003e decorator. See docs for more information.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSmall changes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u0026quot;Deprecated\u0026quot; text properly handled and stylized in all places.\u003c/li\u003e\n\u003cli\u003eCommand aliases: \u003ccode\u003e@cli.command(aliases=[\u0026quot;foo\u0026quot;])\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eImproved \u003ccode\u003erich-click\u003c/code\u003e CLI usability: improved patching and improved script detection+execution.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003econtext_settings={\u0026quot;help_to_stderr\u0026quot;: True}\u003c/code\u003e support.\u003c/li\u003e\n\u003cli\u003eAdded suite of \u003ccode\u003epadding_*\u003c/code\u003e config options to control padding.\n\u003cul\u003e\n\u003cli\u003eBetter newline handling:\n\u003cul\u003e\n\u003cli\u003eUnordered lists create newlines in help text, e.g. \u003ccode\u003e\u0026quot;\\n- foo\\n- bar\u0026quot;\u003c/code\u003e or \u003ccode\u003e\u0026quot;\\n* foo\\n* bar\u0026quot;\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/0ea0e0a13b199cc1cf28ece1338bf0838772727b\"\u003e\u003ccode\u003e0ea0e0a\u003c/code\u003e\u003c/a\u003e Bump to 1.9.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/78f25499397fbcc9876a331732931d188b760b4a\"\u003e\u003ccode\u003e78f2549\u003c/code\u003e\u003c/a\u003e fix subcommand discovery (\u003ca href=\"https://redirect.github.com/ewels/rich-click/issues/304\"\u003e#304\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/12a50e911c05c6c8c97bfdd48147f999368bc7f5\"\u003e\u003ccode\u003e12a50e9\u003c/code\u003e\u003c/a\u003e Finish testing for 1.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/a2ccfed4946d5a7d677d0b5750617575f9de8c09\"\u003e\u003ccode\u003ea2ccfed\u003c/code\u003e\u003c/a\u003e 1.9.2 (\u003ca href=\"https://redirect.github.com/ewels/rich-click/issues/302\"\u003e#302\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/f041971bbd2ebadcfaed2e66b4e002260bf232eb\"\u003e\u003ccode\u003ef041971\u003c/code\u003e\u003c/a\u003e set date for changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/09b3ece0cf9fefaf98d83b9efd56e27083e6acc5\"\u003e\u003ccode\u003e09b3ece\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ewels/rich-click/issues/296\"\u003e#296\u003c/a\u003e from dwreeves/issue-293\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/164d7c0cb623d1332d43b66dee4fc3b911dd3544\"\u003e\u003ccode\u003e164d7c0\u003c/code\u003e\u003c/a\u003e add 8.3 to tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/c792472a3217d4a371352d1f9567b55287318689\"\u003e\u003ccode\u003ec792472\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ewels/rich-click/issues/295\"\u003e#295\u003c/a\u003e from dwreeves/issue-293\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/2268fc4e197c988f14076a138f797dc564367a47\"\u003e\u003ccode\u003e2268fc4\u003c/code\u003e\u003c/a\u003e fix 8.3 incompatibility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/bb9d72e0104b14629f7101aca01808c07bd5b5b9\"\u003e\u003ccode\u003ebb9d72e\u003c/code\u003e\u003c/a\u003e Generate new screengrabs with rich-codex\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ewels/rich-click/compare/v1.8.8...v1.9.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `securesystemslib` from 1.3.0 to 1.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/releases\"\u003esecuresystemslib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.3.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/blob/v1.3.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e for details.\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/secure-systems-lab/securesystemslib/blob/main/CHANGELOG.md\"\u003esecuresystemslib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003esecuresystemslib v1.3.1\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAWSSigner: Don't send payload to AWS for signing, send hash only (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1026\"\u003e#1026\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSet Development status classifier to \u0026quot;production/stable\u0026quot; in Python\npackaging (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1030\"\u003e#1030\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternals\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMinor infrastructure changes (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1005\"\u003e#1005\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1013\"\u003e#1013\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/secure-systems-lab/securesystemslib/commit/6f774190b90f0aa9d5d7e077680adbaa29c5cd6c\"\u003e\u003ccode\u003e6f77419\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1030\"\u003e#1030\u003c/a\u003e from jku/release-prep-1.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/b71cc5271a9a7b6898c79c1a12393d90996d5388\"\u003e\u003ccode\u003eb71cc52\u003c/code\u003e\u003c/a\u003e Prepare release 1.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/f6835096a845acf25dc3675105937be2565b9e66\"\u003e\u003ccode\u003ef683509\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1026\"\u003e#1026\u003c/a\u003e from ArkadiuszNitkaSWI/fix-aws-signer\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/97527198c7bf5b75ef9fb8996412df5453995080\"\u003e\u003ccode\u003e9752719\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1027\"\u003e#1027\u003c/a\u003e from secure-systems-lab/dependabot/pip/test-and-lint...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/4226b762bf3333b5947af9cf29ed751afbfd69b9\"\u003e\u003ccode\u003e4226b76\u003c/code\u003e\u003c/a\u003e build(deps): bump the test-and-lint-dependencies group with 4 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/6394e3e467c091a06ee95dad674dec7e991758c8\"\u003e\u003ccode\u003e6394e3e\u003c/code\u003e\u003c/a\u003e Review changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/dee9a831390c9a69c0e66f7c34779e9eea6dcc6d\"\u003e\u003ccode\u003edee9a83\u003c/code\u003e\u003c/a\u003e linter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/07b0fc780d9d1f4c0843ce3e2096e1216814bd06\"\u003e\u003ccode\u003e07b0fc7\u003c/code\u003e\u003c/a\u003e update .gitignore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/e8158a4eb131760714290b9839e3e40f9cd4229c\"\u003e\u003ccode\u003ee8158a4\u003c/code\u003e\u003c/a\u003e Fix AWS signer, allow messages bigger than 4kB\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/e23f855ddecb97d4baddffc068e9591451b9aa72\"\u003e\u003ccode\u003ee23f855\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1023\"\u003e#1023\u003c/a\u003e from secure-systems-lab/dependabot/pip/dependencies-...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/compare/v1.3.0...v1.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.1.8 to 8.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.3.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our \u003ca href=\"https://palletsprojects.com/versions\"\u003eVersion Support Policy\u003c/a\u003e on our website.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.0/\"\u003ehttps://pypi.org/project/click/8.3.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/27\"\u003ehttps://github.com/pallets/click/milestone/27\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: \u003ca href=\"https://redirect.github.com/pallets/click/issues/1992\"\u003e#1992\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2514\"\u003e#2514\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2610\"\u003e#2610\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3024\"\u003e#3024\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2164\"\u003e#2164\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for nargs option in combination with flag option \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2995\"\u003e#2995\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3013\"\u003e#3013\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3023\"\u003e#3023\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in CliRunner.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2939\"\u003e#2939\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.2.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.2.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.2.2/\"\u003ehttps://pypi.org/project/click/8.2.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-2-2\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-2-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/25\"\u003ehttps://github.com/pallets/click/milestone/25\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix reconciliation of \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003etype\u003c/code\u003e parameters for\nflag options, as well as parsing and normalization of environment variables.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/2952\"\u003e#2952\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2956\"\u003e#2956\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typing issue in \u003ccode\u003eBadParameter\u003c/code\u003e and \u003ccode\u003eMissingParameter\u003c/code\u003e exceptions for the\nparameter \u003ccode\u003eparam_hint\u003c/code\u003e that did not allow for a sequence of string where the\nunderlying functino \u003ccode\u003e_join_param_hints\u003c/code\u003e allows for it. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2777\"\u003e#2777\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2990\"\u003e#2990\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse the value of \u003ccode\u003eEnum\u003c/code\u003e choices to render their default value in help\nscreen. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2911\"\u003e#2911\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3004\"\u003e#3004\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix completion for the Z shell (\u003ccode\u003ezsh\u003c/code\u003e) for completion items containing\ncolons. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2703\"\u003e#2703\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2846\"\u003e#2846\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't include envvar in error hint when not configured. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2971\"\u003e#2971\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2972\"\u003e#2972\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.rst\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.3.0\u003c/h2\u003e\n\u003cp\u003eReleased 2025-09-17\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: :issue:\u003ccode\u003e1992\u003c/code\u003e :issue:\u003ccode\u003e2514\u003c/code\u003e :issue:\u003ccode\u003e2610\u003c/code\u003e\n:issue:\u003ccode\u003e3024\u003c/code\u003e :pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. :issue:\u003ccode\u003e2164\u003c/code\u003e\n:pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption :issue:\u003ccode\u003e2813\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. :issue:\u003ccode\u003e2995\u003c/code\u003e :pr:\u003ccode\u003e3013\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e. :pr:\u003ccode\u003e3023\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. :issue:\u003ccode\u003e2447\u003c/code\u003e :pr:\u003ccode\u003e3058\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in CliRunner. :issue:\u003ccode\u003e2939\u003c/code\u003e :pr:\u003ccode\u003e2940\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-07-31\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix reconciliation of \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003etype\u003c/code\u003e parameters for\nflag options, as well as parsing and normalization of environment variables.\n:issue:\u003ccode\u003e2952\u003c/code\u003e :pr:\u003ccode\u003e2956\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix typing issue in \u003ccode\u003eBadParameter\u003c/code\u003e and \u003ccode\u003eMissingParameter\u003c/code\u003e exceptions for the\nparameter \u003ccode\u003eparam_hint\u003c/code\u003e that did not allow for a sequence of string where the\nunderlying function \u003ccode\u003e_join_param_hints\u003c/code\u003e allows for it. :issue:\u003ccode\u003e2777\u003c/code\u003e :pr:\u003ccode\u003e2990\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUse the value of \u003ccode\u003eEnum\u003c/code\u003e choices to render their default value in help\nscreen. Refs :issue:\u003ccode\u003e2911\u003c/code\u003e :pr:\u003ccode\u003e3004\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix completion for the Z shell (\u003ccode\u003ezsh\u003c/code\u003e) for completion items containing\ncolons. :issue:\u003ccode\u003e2703\u003c/code\u003e :pr:\u003ccode\u003e2846\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDon't include envvar in error hint when not configured. :issue:\u003ccode\u003e2971\u003c/code\u003e :pr:\u003ccode\u003e2972\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix a rare race in \u003ccode\u003eclick.testing.StreamMixer\u003c/code\u003e's finalization that manifested\nas a \u003ccode\u003eValueError\u003c/code\u003e on close in a multi-threaded test session.\n:issue:\u003ccode\u003e2993\u003c/code\u003e :pr:\u003ccode\u003e2991\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-20\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/00fadb8904387158ce6e9aa1573be770446895c1\"\u003e\u003ccode\u003e00fadb8\u003c/code\u003e\u003c/a\u003e Release version 8.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/2a0e3ba907927ade6951d5732b775f11b54cb766\"\u003e\u003ccode\u003e2a0e3ba\u003c/code\u003e\u003c/a\u003e testing/CliRunner: Fix regression related to EOF introduced in 262bdf0 (\u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e11a1efc3395e998a1521a0dc35672a799e78d30\"\u003e\u003ccode\u003ee11a1ef\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into fix-cli-runner-prompt-eof-handling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/36deba8a95a2585de1a2aa4475b7f054f52830ac\"\u003e\u003ccode\u003e36deba8\u003c/code\u003e\u003c/a\u003e Forward exception information to resources registered in a context (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/f2cae7ae997cd32311cab3dede4c2b89fe05e191\"\u003e\u003ccode\u003ef2cae7a\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Add summary of PR to changelog for 8.3.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/7c7ec36354f49d1a092cb077fa4881ea4d70ba01\"\u003e\u003ccode\u003e7c7ec36\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Split resource exception handling tests in single and nested\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/92129c552da88ac30b578132031efa4b003ecc46\"\u003e\u003ccode\u003e92129c5\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Added exception forwarding to context tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/555fa9bb37770a6845a98be60b0c84876775552e\"\u003e\u003ccode\u003e555fa9b\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Forward exception data to exit stack when calling \u003ccode\u003e__exit__\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/16fe802a3f96c4c8fa3cd382f1a7577fda0c5321\"\u003e\u003ccode\u003e16fe802\u003c/code\u003e\u003c/a\u003e Add more tests on \u003ccode\u003eEnum\u003c/code\u003e rendering (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/d36de6fc67882f23d7a7d61cd4c0e25e0f88b0ac\"\u003e\u003ccode\u003ed36de6f\u003c/code\u003e\u003c/a\u003e Add more tests on Enum rendering their item's names and not values\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.1.8...8.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `rich` from 14.0.0 to 14.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Textualize/rich/releases\"\u003erich's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eThe Easy as Pi release\u003c/h2\u003e\n\u003cp\u003eThis release bumps Python compatibility to the just-released Python 3.14.\u003c/p\u003e\n\u003ch2\u003e[14.2.0] - 2025-10-09\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePython3.14 compatibility \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3861\"\u003eTextualize/rich#3861\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eThe Lively Release\u003c/h2\u003e\n\u003cp\u003eLive objects may now be nested. Previously a progress bar inside another progress context would fail. See the changelog below for this and other changes.\u003c/p\u003e\n\u003ch2\u003e[14.1.0] - 2025-06-25\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved \u003ccode\u003etyping_extensions\u003c/code\u003e from runtime dependencies \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3763\"\u003eTextualize/rich#3763\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLive objects (including Progress) may now be nested \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3768\"\u003eTextualize/rich#3768\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded padding property to Syntax which returns a tuple of four integers \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3782\"\u003eTextualize/rich#3782\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed extraction of recursive exceptions \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3772\"\u003eTextualize/rich#3772\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed padding applied to Syntax \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3782\"\u003eTextualize/rich#3782\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003ePanel\u003c/code\u003e title missing the panel background style \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3569\"\u003eTextualize/rich#3569\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eTTY_INTERACTIVE\u003c/code\u003e environment variable to force interactive mode off or on \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3777\"\u003eTextualize/rich#3777\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/Textualize/rich/blob/master/CHANGELOG.md\"\u003erich's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[14.2.0] - 2025-10-09\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePython3.14 compatibility \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3861\"\u003eTextualize/rich#3861\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[14.1.0] - 2025-06-25\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved \u003ccode\u003etyping_extensions\u003c/code\u003e from runtime dependencies \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3763\"\u003eTextualize/rich#3763\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLive objects (including Progress) may now be nested \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3768\"\u003eTextualize/rich#3768\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded padding property to Syntax which returns a tuple of four integers \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3782\"\u003eTextualize/rich#3782\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed extraction of recursive exceptions \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3772\"\u003eTextualize/rich#3772\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed padding applied to Syntax \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3782\"\u003eTextualize/rich#3782\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003ePanel\u003c/code\u003e title missing the panel background style \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3569\"\u003eTextualize/rich#3569\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eTTY_INTERACTIVE\u003c/code\u003e environment variable to force interactive mode off or on \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3777\"\u003eTextualize/rich#3777\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/Textualize/rich/commit/494f83c923ca54ecc943bf5e60c0004e65fbb54e\"\u003e\u003ccode\u003e494f83c\u003c/code\u003e\u003c/a\u003e changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/d476e85a19ea62966a25f6df0e0a287da52ab35f\"\u003e\u003ccode\u003ed476e85\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3862\"\u003e#3862\u003c/a\u003e from GeroZayas/docs/es-readme-sync-2025-10\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/518daaa39c17bad485c970bf229424784fbdf044\"\u003e\u003ccode\u003e518daaa\u003c/code\u003e\u003c/a\u003e docs(es): sync README.es.md (macOS, 16 colors, Python 3.8+)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/cd5074f87804aac2f6e5c6143e1cac5e3a0bddc5\"\u003e\u003ccode\u003ecd5074f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3861\"\u003e#3861\u003c/a\u003e from Textualize/python314\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/041406ca9b60af8fcc00cd7fc1b2973ab51eb851\"\u003e\u003ccode\u003e041406c\u003c/code\u003e\u003c/a\u003e removed asv\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/655b5210cb1403100a646d167cf027eec760dd9f\"\u003e\u003ccode\u003e655b521\u003c/code\u003e\u003c/a\u003e test fixes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/27c2d2df7523315de4b81577d414db8c1c7312f9\"\u003e\u003ccode\u003e27c2d2d\u003c/code\u003e\u003c/a\u003e bump for Python3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/ea9d4db5d84b4e834979304e3053bf757daae322\"\u003e\u003ccode\u003eea9d4db\u003c/code\u003e\u003c/a\u003e Update feature_request.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/2dca1b70359dac61e1bbfb6f14ebe19a5ab79c3d\"\u003e\u003ccode\u003e2dca1b7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3808\"\u003e#3808\u003c/a\u003e from Textualize/bump1410\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/19b6dddd807b887eaaf313174fff3eb2e22cda25\"\u003e\u003ccode\u003e19b6ddd\u003c/code\u003e\u003c/a\u003e version bump\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Textualize/rich/compare/v14.0.0...v14.2.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 `dynaconf` from 3.2.10 to 3.2.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dynaconf/dynaconf/releases\"\u003edynaconf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.2.12\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eIncremental improvment to access performance by \u003ca href=\"https://github.com/pedro-psb\"\u003e\u003ccode\u003e@​pedro-psb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/pull/1304\"\u003edynaconf/dynaconf#1304\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: get method to return Any type. by \u003ca href=\"https://github.com/rochacbruno\"\u003e\u003ccode\u003e@​rochacbruno\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/pull/1314\"\u003edynaconf/dynaconf#1314\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eperf: add lru caching to \u003ccode\u003efind_the_correct_casing\u003c/code\u003e function by \u003ca href=\"https://github.com/pedro-psb\"\u003e\u003ccode\u003e@​pedro-psb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/pull/1326\"\u003edynaconf/dynaconf#1326\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/dynaconf/dynaconf/compare/3.2.11...3.2.12\"\u003ehttps://github.com/dynaconf/dynaconf/compare/3.2.11...3.2.12\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.2.11\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eRelease version 3.2.11\u003c/p\u003e\n\u003cp\u003eShortlog of commits since last release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBruno Rocha (9): \u003ca href=\"https://github.com/rochacbruno\"\u003e\u003ccode\u003e@​rochacbruno\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003efix(cli): handle empty hooks and boolean environments.\u003c/li\u003e\n\u003cli\u003efix: Better way for CLI to find the Django Settings\u003c/li\u003e\n\u003cli\u003efix: windows CI\u003c/li\u003e\n\u003cli\u003efeat: Run CLI as module with \u003ccode\u003epython -m dynaconf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1290\"\u003e#1290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: use sys.argv instead of click.get_os_args (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1292\"\u003e#1292\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: \u003ccode\u003e-k\u003c/code\u003e must exit code 1 when key do not exist (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1293\"\u003e#1293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: envless load file (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1295\"\u003e#1295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: add correct supported python version to 3.2.x\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFabricio Aguiar (1): \u003ca href=\"https://github.com/fao89\"\u003e\u003ccode\u003e@​fao89\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003efix: make raw variables private (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1287\"\u003e#1287\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePedro Brochado (1): \u003ca href=\"https://github.com/pedro-psb\"\u003e\u003ccode\u003e@​pedro-psb\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003edocs: clarification on redis hash title when using custom envvar prefixes (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMilestone \u003ca href=\"https://github.com/dynaconf/dynaconf/milestone/31?closed=1\"\u003ehttps://github.com/dynaconf/dynaconf/milestone/31?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/dynaconf/dynaconf/compare/3.2.10...3.2.11\"\u003ehttps://github.com/dynaconf/dynaconf/compare/3.2.10...3.2.11\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/dynaconf/dynaconf/blob/3.2.12/CHANGELOG.md\"\u003edynaconf's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pedro-psb/dynaconf/releases/tag/3.2.12\"\u003e3.2.12\u003c/a\u003e - 2025-10-10\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eget method to return Any type.. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003eremove unnecessary recursive evaluation call on Settings.get. \u003cem\u003eBy Pedro Brochado\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003eimprove performance of settings access in a loop (part 1). \u003cem\u003eBy Pedro Brochado\u003c/em\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/releases/tag/3.2.11\"\u003e3.2.11\u003c/a\u003e - 2025-05-06\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd correct supported python version to 3.2.x. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e-k\u003c/code\u003e must exit code 1 when key do not exist (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1293\"\u003e#1293\u003c/a\u003e). \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003euse sys.argv instead of click.get_os_args (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1292\"\u003e#1292\u003c/a\u003e). \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003ewindows CI. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003emake raw variables private (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1287\"\u003e#1287\u003c/a\u003e). \u003cem\u003eBy Fabricio Aguiar\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003eBetter way for CLI to find the Django Settings. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003ehandle empty hooks and boolean environments.. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eenvless load file (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1295\"\u003e#1295\u003c/a\u003e). \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003eRun CLI as module with \u003ccode\u003epython -m dynaconf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1290\"\u003e#1290\u003c/a\u003e). \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eclarification on redis hash title when using custom envvar prefixes (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1273\"\u003e#1273\u003c/a\u003e). \u003cem\u003eBy Pedro Brochado\u003c/em\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/dynaconf/dynaconf/commit/7606f351ac460b15c56e7a538300de4a501c56e7\"\u003e\u003ccode\u003e7606f35\u003c/code\u003e\u003c/a\u003e Release version 3.2.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/da44e5182940299dd90ca3e2a0e0e3c23cb9ebf7\"\u003e\u003ccode\u003eda44e51\u003c/code\u003e\u003c/a\u003e perf: add lru caching to \u003ccode\u003efind_the_correct_casing\u003c/code\u003e function (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1326\"\u003e#1326\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/b75eda0da141bdc29f707f2cb0c29e06b03a72bb\"\u003e\u003ccode\u003eb75eda0\u003c/code\u003e\u003c/a\u003e fix: get method to return Any type.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/4f3df1a47bcb71feddf7565f603e7994c65ede65\"\u003e\u003ccode\u003e4f3df1a\u003c/code\u003e\u003c/a\u003e misc: add some profile/perf scripts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/420acebf64e77ba475df94dfd7d409207e5e239d\"\u003e\u003ccode\u003e420aceb\u003c/code\u003e\u003c/a\u003e refactor: merge \u003cem\u003esafe\u003c/em\u003e{get,copy} into .get and .copy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/18c0c8422dc9651d57c76d1b098ad6fb3f75c09d\"\u003e\u003ccode\u003e18c0c84\u003c/code\u003e\u003c/a\u003e fix: remove unnecessary recursive evaluation call on Settings.get\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/0fde96f2e0b71309e63800ddac8eceda062155a9\"\u003e\u003ccode\u003e0fde96f\u003c/code\u003e\u003c/a\u003e refactor: rewrite decorator as explicit call\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/52efd9ed78d2187550e03a2ae5008661d5e28df9\"\u003e\u003ccode\u003e52efd9e\u003c/code\u003e\u003c/a\u003e Bump to version 3.2.12-dev0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/c61da8fd191196c1341bd3d8a8dd895e9cf671ae\"\u003e\u003ccode\u003ec61da8f\u003c/code\u003e\u003c/a\u003e Release version 3.2.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/f8189fb6c130ff4709450e7daebcf1c174aea248\"\u003e\u003ccode\u003ef8189fb\u003c/code\u003e\u003c/a\u003e fix: add correct supported python version to 3.2.x\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/dynaconf/dynaconf/compare/3.2.10...3.2.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `isort` from 6.0.1 to 7.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/isort/releases\"\u003eisort's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.0.0\u003c/h2\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003ch2\u003e:boom: Breaking Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9 (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2430\"\u003e#2430\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:rocket: Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eShow absolute paths in skipped file messages (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2416\"\u003e#2416\u003c/a\u003e) \u003ca href=\"https://github.com/pranlawate\"\u003e\u003ccode\u003e@​pranlawate\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:beetle: Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSome fixes for Python 3.14 (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2433\"\u003e#2433\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTest on \u003ccode\u003e3.14\u003c/code\u003e and fix any bugs (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2425\"\u003e#2425\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CHANGELOG.md + Fix Formatting and Grammar (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2419\"\u003e#2419\u003c/a\u003e) \u003ca href=\"https://github.com/lukbrew25\"\u003e\u003ccode\u003e@​lukbrew25\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix output of hanging indent for long lines with noqa (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2407\"\u003e#2407\u003c/a\u003e) \u003ca href=\"https://github.com/matan1008\"\u003e\u003ccode\u003e@​matan1008\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:construction_worker: Continuous Integration\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFormat with \u003ccode\u003eruff\u003c/code\u003e instead of \u003ccode\u003eblack\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2432\"\u003e#2432\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTarget 3.10 for \u003ccode\u003eruff\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2431\"\u003e#2431\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate development dependencies to latest version (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2426\"\u003e#2426\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: update pre-commit examples to version 6.1.0 (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2413\"\u003e#2413\u003c/a\u003e) \u003ca href=\"https://github.com/pranlawate\"\u003e\u003ccode\u003e@​pranlawate\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall cleanup for developer environment (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2418\"\u003e#2418\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:package: Dependencies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/setup-python from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2411\"\u003e#2411\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e6.1.0\u003c/h2\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate docs discussions channel (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2410\"\u003e#2410\u003c/a\u003e) \u003ca href=\"https://github.com/staticdev\"\u003e\u003ccode\u003e@​staticdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd python 3.14 classifier and badge (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2409\"\u003e#2409\u003c/a\u003e) \u003ca href=\"https://github.com/staticdev\"\u003e\u003ccode\u003e@​staticdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop use of non-standard pkg_resources API (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2405\"\u003e#2405\u003c/a\u003e) \u003ca href=\"https://github.com/dvarrazzo\"\u003e\u003ccode\u003e@​dvarrazzo\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse working isort version in pre-commit example (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2402\"\u003e#2402\u003c/a\u003e) \u003ca href=\"https://github.com/iainelder\"\u003e\u003ccode\u003e@​iainelder\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix typo in _get_files_from_dir_cached test (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2392\"\u003e#2392\u003c/a\u003e) \u003ca href=\"https://github.com/tiltingpenguin\"\u003e\u003ccode\u003e@​tiltingpenguin\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eResolve bandit warnings (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2379\"\u003e#2379\u003c/a\u003e) \u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd tox for cross-platform, parallel test suite execution (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2378\"\u003e#2378\u003c/a\u003e) \u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Project URLs to PyPI Side Panel (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2387\"\u003e#2387\u003c/a\u003e) \u003ca href=\"https://github.com/guillermodotn\"\u003e\u003ccode\u003e@​guillermodotn\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typos (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2376\"\u003e#2376\u003c/a\u003e) \u003ca href=\"https://github.com/co63oc\"\u003e\u003ccode\u003e@​co63oc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:construction_worker: Continuous Integration\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd make bash scripts portable (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2377\"\u003e#2377\u003c/a\u003e) \u003ca href=\"https://github.com/staticdev\"\u003e\u003ccode\u003e@​staticdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:package: Dependencies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 4 to 5 in the github-actions group (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2406\"\u003e#2406\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/isort/blob/main/CHANGELOG.md\"\u003eisort's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003cp\u003eNOTE: isort follows the \u003ca href=\"https://semver.org/\"\u003esemver\u003c/a\u003e versioning standard.\nFind out more about isort's release policy \u003ca href=\"https://pycqa.github.io/isort/docs/major_releases/release_policy\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003e6.1.0 October 1 2025\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd python 3.14 classifier and badge (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2409\"\u003e#2409\u003c/a\u003e) \u003ca href=\"https://github.com/staticdev\"\u003e\u003ccode\u003e@​staticdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop use of non-standard pkg_resources API (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2405\"\u003e#2405\u003c/a\u003e) \u003ca href=\"https://github.com/dvarrazzo\"\u003e\u003ccode\u003e@​dvarrazzo\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/PyCQA/isort/commit/0a09c783808cfe77bb3269250f663ff733d23302\"\u003e\u003ccode\u003e0a09c78\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2433\"\u003e#2433\u003c/a\u003e from DanielNoord/python-314\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/0fee794a05b5d0c471ac80bc8943f9843ca29644\"\u003e\u003ccode\u003e0fee794\u003c/code\u003e\u003c/a\u003e Add 3.14 to \u003ccode\u003estdlibds\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/332a1ad0b68bf3a3acac055b0ec3666408b3b425\"\u003e\u003ccode\u003e332a1ad\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003ezstandard\u003c/code\u003e for 3.14 compat\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/f756e5653afcf6d79ec4d0240b1868cbebd8fafd\"\u003e\u003ccode\u003ef756e56\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2432\"\u003e#2432\u003c/a\u003e from DanielNoord/ruff-it-up\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/52f5134889d345ff35afdcb86501c8221b804c70\"\u003e\u003ccode\u003e52f5134\u003c/code\u003e\u003c/a\u003e Format with \u003ccode\u003eruff\u003c/code\u003e instead of \u003ccode\u003eblack\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/012aa69fcadb3c89ff92a3d96aa449be7ae6746f\"\u003e\u003ccode\u003e012aa69\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2431\"\u003e#2431\u003c/a\u003e from DanielNoord/ruff-it-up\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/89773dbb371192541092657972a74e9ce0bbbc74\"\u003e\u003ccode\u003e89773db\u003c/code\u003e\u003c/a\u003e Target 3.10 with \u003ccode\u003eruff\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/933e382f98a0c77b4c6e33c4e3ef12bd57192884\"\u003e\u003ccode\u003e933e382\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2430\"\u003e#2430\u003c/a\u003e from DanielNoord/drop-39\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/8b6e00cbe643a216da57fed4baa282d0a4a1b829\"\u003e\u003ccode\u003e8b6e00c\u003c/code\u003e\u003c/a\u003e Remove support for Python 3.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/b5f9f296ad873734e8caa3a731f27360648d9b37\"\u003e\u003ccode\u003eb5f9f29\u003c/code\u003e\u003c/a\u003e Bump profile plugin to 3.10+ and re-lock\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PyCQA/isort/compare/6.0.1...7.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlalchemy` from 2.0.40 to 2.0.44\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/releases\"\u003esqlalchemy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.0.44\u003c/h1\u003e\n\u003cp\u003eReleased: October 10, 2025\u003c/p\u003e\n\u003ch2\u003eplatform\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e[platform] [bug]\u003c/strong\u003e Unblocked automatic greenlet installation for Python 3.14 now that\nthere are greenlet wheels on pypi for python 3.14.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eorm\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [usecase]\u003c/strong\u003e The way ORM Annotated Declarative interprets Python \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e type aliases\nin \u003ccode\u003eMapped[]\u003c/code\u003e annotations has been refined to expand the lookup scheme. A\n\u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e type can now be resolved based on either its direct presence in\n\u003ccode\u003e_orm.registry.type_annotation_map\u003c/code\u003e or its immediate resolved\nvalue, as long as a recursive lookup across multiple \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e types is\nnot required for it to resolve. This change reverses part of the\nrestrictions introduced in 2.0.37 as part of \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/11955\"\u003e#11955\u003c/a\u003e, which\ndeprecated (and disallowed in 2.1) the ability to resolve any \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e\ntype that was not explicitly present in\n\u003ccode\u003e_orm.registry.type_annotation_map\u003c/code\u003e. Recursive lookups of\n\u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e types remains deprecated in 2.0 and disallowed in version 2.1,\nas do implicit lookups of \u003ccode\u003eNewType\u003c/code\u003e types without an entry in\n\u003ccode\u003e_orm.registry.type_annotation_map\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eAdditionally, new support has been added for generic \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e aliases that\nrefer to \u003ca href=\"https://peps.python.org/pep-0593\"\u003ePEP 593\u003c/a\u003e \u003ccode\u003eAnnotated\u003c/code\u003e constructs containing\n\u003ccode\u003e_orm.mapped_column()\u003c/code\u003e configurations. See the sections below for\nexamples.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12829\"\u003e#12829\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed a caching issue where \u003ccode\u003e_orm.with_loader_criteria()\u003c/code\u003e would\nincorrectly reuse cached bound parameter values when used with\n\u003ccode\u003e_sql.CompoundSelect\u003c/code\u003e constructs such as \u003ccode\u003e_sql.union()\u003c/code\u003e. The\nissue was caused by the cache key for compound selects not including the\nexecution options that are part of the \u003ccode\u003e_sql.Executable\u003c/code\u003e base class,\nwhich \u003ccode\u003e_orm.with_loader_criteria()\u003c/code\u003e uses to apply its criteria\ndynamically. The fix ensures that compound selects and other executable\nconstructs properly include execution options in their cache key traversal.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12905\"\u003e#12905\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eengine\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e[engine] [bug]\u003c/strong\u003e Implemented initial support for free-threaded Python by adding new tests\nand reworking the test harness to include Python 3.13t and Python 3.14t in\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psycopg2` from 2.9.10 to 2.9.11\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psycopg/psycopg2/blob/master/NEWS\"\u003epsycopg2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eCurrent release\u003c/h2\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.11\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eAvoid a segfault passing more arguments than placeholders if Python is built\nwith assertions enabled (:ticket:\u003ccode\u003e[#1791](https://github.com/psycopg/psycopg2/issues/1791)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e~psycopg2.errorcodes\u003c/code\u003e map and \u003ccode\u003e~psycopg2.errors\u003c/code\u003e classes updated to\nPostgreSQL 18.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.8.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.10\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.13.\u003c/li\u003e\n\u003cli\u003eReceive notifications on commit (:ticket:\u003ccode\u003e[#1728](https://github.com/psycopg/psycopg2/issues/1728)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e~psycopg2.errorcodes\u003c/code\u003e map and \u003ccode\u003e~psycopg2.errors\u003c/code\u003e classes updated to\nPostgreSQL 17.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.7.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.9\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.12.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.6.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.8\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWheel package bundled with PostgreSQL 16 libpq in order to add support for\nrecent features, such as \u003ccode\u003esslcertmode\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.7\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix propagation of exceptions raised during module initialization\n(:ticket:\u003ccode\u003e[#1598](https://github.com/psycopg/psycopg2/issues/1598)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix building when pg_config returns an empty string (:ticket:\u003ccode\u003e[#1599](https://github.com/psycopg/psycopg2/issues/1599)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eWheel package bundled with OpenSSL 1.1.1v.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.6\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/psycopg/psycopg2/commit/fd9ae8cad2bcfc3e7e9410e7b6f07cda8f4f05ec\"\u003e\u003ccode\u003efd9ae8c\u003c/code\u003e\u003c/a\u003e chore: bump to version 2.9.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/d923840546942534f0956d9202f914fd9feac5fd\"\u003e\u003ccode\u003ed923840\u003c/code\u003e\u003c/a\u003e chore: update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/d42dc7169d3cd93517e282e9ef5dc2a2b40650a2\"\u003e\u003ccode\u003ed42dc71\u003c/code\u003e\u003c/a\u003e Merge branch 'fix-1791'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/4fde6560c32f06ad1304404c9f7f86148dcc4be0\"\u003e\u003ccode\u003e4fde656\u003c/code\u003e\u003c/a\u003e fix: avoid failed assert passing more arguments than placeholders\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/8308c19d6af0d904b313997539ed33415990a74e\"\u003e\u003ccode\u003e8308c19\u003c/code\u003e\u003c/a\u003e fix: drop warning about the use of deprecated PyWeakref_GetObject function\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/1a1eabf098a3374409bb2ab4b594777b900f396d\"\u003e\u003ccode\u003e1a1eabf\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/github-script from 7 to 8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/897af8b38beda851d7257dfc525129e37c0ec9e0\"\u003e\u003ccode\u003e897af8b\u003c/code\u003e\u003c/a\u003e build(deps): bump peter-evans/repository-dispatch from 3 to 4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/ceefd305117113ca10e383a626e87ba0796f3638\"\u003e\u003ccode\u003eceefd30\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/checkout from 4 to 5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/4dc585430cabe94cee96c5a9de0265d0f55370f1\"\u003e\u003ccode\u003e4dc5854\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/setup-python from 5 to 6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/1945788dcf6172bb1b9328ebc3587ccf0e6a659c\"\u003e\u003ccode\u003e1945788\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg2/issues/1802\"\u003e#1802\u003c/a\u003e from edgarrmondragon/cp314-wheels\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psycopg/psycopg2/compare/2.9.10...2.9.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `beaupy` 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/petereon/beaupy/releases\"\u003ebeaupy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.10.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): update dependency flake8 to v7.1.1 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/129\"\u003epetereon/beaupy#129\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency isort to v5.13.2 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/130\"\u003epetereon/beaupy#130\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency mypy to v1.14.1 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/131\"\u003epetereon/beaupy#131\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: adding documentation for global config by \u003ca href=\"https://github.com/petereon\"\u003e\u003ccode\u003e@​petereon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/148\"\u003epetereon/beaupy#148\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency pytest to v8.4.2 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/147\"\u003epetereon/beaupy#147\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency black to v25 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/144\"\u003epetereon/beaupy#144\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency pydoc-markdown to v4.8.2 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/132\"\u003epetereon/beaupy#132\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/petereon/beaupy/compare/v3.10.1...v3.10.2\"\u003ehttps://github.com/petereon/beaupy/compare/v3.10.1...v3.10.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/a2dc15764508c0451ed4dc386f3b0761fe7a9ce2\"\u003e\u003ccode\u003ea2dc157\u003c/code\u003e\u003c/a\u003e chore: bump version from 3.10.1 to 3.10.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/7599e5a43be6893c81612314f410ffa602a15f57\"\u003e\u003ccode\u003e7599e5a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/132\"\u003e#132\u003c/a\u003e from petereon/renovate/pydoc-markdown-4.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/6b2bb33d4fef6f2a607e1f42c873bd92ffc2b0d5\"\u003e\u003ccode\u003e6b2bb33\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency pydoc-markdown to v4.8.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/d2b0cbc3bb6b191816fdef9319a150e9b305ae7f\"\u003e\u003ccode\u003ed2b0cbc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/144\"\u003e#144\u003c/a\u003e from petereon/renovate/black-25.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/926fb4e8773f587417e7a3f453af1641364888e5\"\u003e\u003ccode\u003e926fb4e\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency black to v25\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/df126efc542641c8f7385f8087a19a95ee1615b7\"\u003e\u003ccode\u003edf126ef\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/147\"\u003e#147\u003c/a\u003e from petereon/renovate/pytest-8.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/0eb77250022a166836a4594a489d9c178591234b\"\u003e\u003ccode\u003e0eb7725\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency pytest to v8.4.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/7b9234631ce3510e433fbb59d4c0e829d70fd569\"\u003e\u003ccode\u003e7b92346\u003c/code\u003e\u003c/a\u003e chore: linting code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/531e870193a7cb26ab43370a45d8562cb44d8b15\"\u003e\u003ccode\u003e531e870\u003c/code\u003e\u003c/a\u003e chore: fix weird types\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/dfd9dbc54327c19455197566f7161de08ad3180b\"\u003e\u003ccode\u003edfd9dbc\u003c/code\u003e\u003c/a\u003e docs: adding documentation for global config (\u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/148\"\u003e#148\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/petereon/beaupy/compare/v3.10.1...v3.10.2\"\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.2 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 suppo...\n\n_Description has been truncated_","html_url":"https://github.com/repository-service-tuf/repository-service-tuf-cli/pull/911","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/repository-service-tuf%2Frepository-service-tuf-cli/issues/911","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/911/packages"},{"uuid":"3508558707","node_id":"PR_kwDOPjXchc6tYkjy","number":12,"state":"closed","title":"Bump the dependencies group across 1 directory with 36 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-11-03T05:34:16.000Z","author_association":null,"state_reason":null,"created_at":"2025-10-13T05:51:21.000Z","updated_at":"2025-11-03T05:34:18.000Z","time_to_close":1813375,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"dependencies","update_count":36,"packages":[{"name":"cryptography","old_version":"43.0.3","new_version":"46.0.2","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.11.0","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":"2025.10.5","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.3","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), [pydantic](https://github.com/pydantic/pydantic), [pydantic-core](https://github.com/pydantic/pydantic-core), [pygments](https://github.com/pygments/pygments), [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), [urllib3](https://github.com/urllib3/urllib3), [uvicorn](https://github.com/Kludex/uvicorn), [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.2\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.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* Removed the deprecated ``CAST5``, ``SEED``, ``IDEA``, and ``Blowfish``\n  classes from the cipher module. These are still available in\n  :doc:`/hazmat/decrepit/index`.\n* In X.509, when performing a PSS signature with a SHA-3 hash, it is now\n  encoded with the official NIST SHA3 OID.\n\u003cp\u003e.. _v45-0-7:\u003c/p\u003e\n\u003cp\u003e45.0.7 - 2025-09-01\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a function to support an upcoming \u003ccode\u003epyOpenSSL\u003c/code\u003e release.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v45-0-6:\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/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\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e076d08ee42da5daa432d1d145b8bee2dc0d5b44\"\u003e\u003ccode\u003ee076d08\u003c/code\u003e\u003c/a\u003e Attempt to fix commit message for bump downstreams (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13440\"\u003e#13440\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.2\"\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.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.11.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for cancellation reasons (the \u003ccode\u003ereason\u003c/code\u003e parameter to \u003ccode\u003eCancelScope.cancel()\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/975\"\u003e#975\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped the minimum version of Trio to v0.31.0\u003c/li\u003e\n\u003cli\u003eAdded the ability to enter the event loop from foreign (non-worker) threads by passing the return value of \u003ccode\u003eanyio.lowlevel.current_token()\u003c/code\u003e to \u003ccode\u003eanyio.from_thread.run()\u003c/code\u003e and \u003ccode\u003eanyio.from_thread.run_sync()\u003c/code\u003e as the \u003ccode\u003etoken\u003c/code\u003e keyword argument (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/256\"\u003e#256\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded pytest option (\u003ccode\u003eanyio_mode = \u0026quot;auto\u0026quot;\u003c/code\u003e) to make the pytest plugin automatically handle all async tests (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/971\"\u003e#971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the \u003ccode\u003eanyio.Condition.wait_for()\u003c/code\u003e method for feature parity with asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged the default type argument of \u003ccode\u003eanyio.abc.TaskStatus\u003c/code\u003e from \u003ccode\u003eAny\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/964\"\u003e#964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed TCP listener behavior to guarantee the same ephemeral port is used for all socket listeners when \u003ccode\u003elocal_port=0\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/857\"\u003e#857\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed inconsistency between Trio and asyncio where a TCP stream that previously raised a \u003ccode\u003eBrokenResourceError\u003c/code\u003e on \u003ccode\u003esend()\u003c/code\u003e would still raise \u003ccode\u003eBrokenResourceError\u003c/code\u003e after the stream was closed on asyncio, but \u003ccode\u003eClosedResourceError\u003c/code\u003e on Trio. They now both raise a \u003ccode\u003eClosedResourceError\u003c/code\u003e in this scenario. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/671\"\u003e#671\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.10.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded the \u003ccode\u003efeed_data()\u003c/code\u003e method to the \u003ccode\u003eBufferedByteReceiveStream\u003c/code\u003e class, allowing users to inject data directly into the buffer\u003c/li\u003e\n\u003cli\u003eAdded various class methods to wrap existing sockets as listeners or socket streams:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eSocketListener.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded a hierarchy of connectable stream classes for transparently connecting to various remote or local endpoints for exchanging bytes or objects\u003c/li\u003e\n\u003cli\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and \u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context managers, particularly cancel scopes or task groups (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/905\"\u003e#905\u003c/a\u003e; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the ability to specify the thread name in \u003ccode\u003estart_blocking_portal()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/818\"\u003e#818\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eanyio.notify_closing\u003c/code\u003e to allow waking \u003ccode\u003eanyio.wait_readable\u003c/code\u003e and \u003ccode\u003eanyio.wait_writable\u003c/code\u003e before closing a socket. Among other things, this prevents an OSError on the \u003ccode\u003eProactorEventLoop\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/896\"\u003e#896\u003c/a\u003e; PR by \u003ca href=\"https://github.com/graingert\"\u003e\u003ccode\u003e@​graingert\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIncorporated several documentation improvements from the EuroPython 2025 sprint (special thanks to the sprinters: Emmanuel Okedele, Jan Murre, Euxenia Miruna Goia and Christoffer Fjord)\u003c/li\u003e\n\u003cli\u003eAdded a documentation page explaining why one might want to use AnyIO's APIs instead of asyncio's\u003c/li\u003e\n\u003cli\u003eUpdated the \u003ccode\u003eto_interpreters\u003c/code\u003e module to use the public \u003ccode\u003econcurrent.interpreters\u003c/code\u003e API on Python 3.14 or later\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path.copy()\u003c/code\u003e and \u003ccode\u003eanyio.Path.copy_into()\u003c/code\u003e failing on Python 3.14.0a7\u003c/li\u003e\n\u003cli\u003eFixed return annotation of \u003ccode\u003e__aexit__\u003c/code\u003e on async context managers. CMs which can suppress exceptions should return \u003ccode\u003ebool\u003c/code\u003e, or \u003ccode\u003eNone\u003c/code\u003e otherwise. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/913\"\u003e#913\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Enegg\"\u003e\u003ccode\u003e@​Enegg\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed rollover boundary check in \u003ccode\u003eSpooledTemporaryFile\u003c/code\u003e so that rollover only occurs when the buffer size exceeds \u003ccode\u003emax_size\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/915\"\u003e#915\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMigrated testing and documentation dependencies from extras to dependency groups\u003c/li\u003e\n\u003cli\u003eFixed compatibility of \u003ccode\u003eanyio.to_interpreter\u003c/code\u003e with Python 3.14.0b2 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/926\"\u003e#926\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hroncok\"\u003e\u003ccode\u003e@​hroncok\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSyntaxWarning\u003c/code\u003e on Python 3.14 about \u003ccode\u003ereturn\u003c/code\u003e in \u003ccode\u003efinally\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/816\"\u003e#816\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed RunVar name conflicts. RunVar instances with the same name should not share storage (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/880\"\u003e#880\u003c/a\u003e; PR by \u003ca href=\"https://github.com/vimfu\"\u003e\u003ccode\u003e@​vimfu\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRenamed the \u003ccode\u003eBrokenWorkerIntepreter\u003c/code\u003e exception to \u003ccode\u003eBrokenWorkerInterpreter\u003c/code\u003e. The old name is available as a deprecated alias. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/938\"\u003e#938\u003c/a\u003e; PR by \u003ca href=\"https://github.com/ayussh-verma\"\u003e\u003ccode\u003e@​ayussh-verma\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed an edge case in \u003ccode\u003eCapacityLimiter\u003c/code\u003e on asyncio where a task, waiting to acquire a limiter gets cancelled and is subsequently granted a token from the limiter, but before the cancellation is delivered, and then fails to notify the next waiting task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/947\"\u003e#947\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/blob/master/docs/versionhistory.rst\"\u003eanyio's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion history\u003c/h1\u003e\n\u003cp\u003eThis library adheres to \u003ccode\u003eSemantic Versioning 2.0 \u0026lt;http://semver.org/\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eUNRELEASED\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSet \u003ccode\u003eNone\u003c/code\u003e as the default type argument for \u003ccode\u003eanyio.abc.TaskStatus\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003euvloop=True\u003c/code\u003e on Windows via the winloop_ implementation\n(\u003ccode\u003e[#960](https://github.com/agronholm/anyio/issues/960) \u0026lt;https://github.com/agronholm/anyio/pull/960\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _winloop: \u003ca href=\"https://github.com/Vizonex/Winloop\"\u003ehttps://github.com/Vizonex/Winloop\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e4.11.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for cancellation reasons (the \u003ccode\u003ereason\u003c/code\u003e parameter to\n\u003ccode\u003eCancelScope.cancel()\u003c/code\u003e)\n(\u003ccode\u003e[#975](https://github.com/agronholm/anyio/issues/975) \u0026lt;https://github.com/agronholm/anyio/pull/975\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eBumped the minimum version of Trio to v0.31.0\u003c/li\u003e\n\u003cli\u003eAdded the ability to enter the event loop from foreign (non-worker) threads by\npassing the return value of \u003ccode\u003eanyio.lowlevel.current_token()\u003c/code\u003e to\n\u003ccode\u003eanyio.from_thread.run()\u003c/code\u003e and \u003ccode\u003eanyio.from_thread.run_sync()\u003c/code\u003e as the \u003ccode\u003etoken\u003c/code\u003e\nkeyword argument (\u003ccode\u003e[#256](https://github.com/agronholm/anyio/issues/256) \u0026lt;https://github.com/agronholm/anyio/issues/256\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded pytest option (\u003ccode\u003eanyio_mode = \u0026quot;auto\u0026quot;\u003c/code\u003e) to make the pytest plugin automatically\nhandle all async tests\n(\u003ccode\u003e[#971](https://github.com/agronholm/anyio/issues/971) \u0026lt;https://github.com/agronholm/anyio/pull/971\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded the \u003ccode\u003eanyio.Condition.wait_for()\u003c/code\u003e method for feature parity with asyncio\n(\u003ccode\u003e[#974](https://github.com/agronholm/anyio/issues/974) \u0026lt;https://github.com/agronholm/anyio/pull/974\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eChanged the default type argument of \u003ccode\u003eanyio.abc.TaskStatus\u003c/code\u003e from \u003ccode\u003eAny\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e\n(\u003ccode\u003e[#964](https://github.com/agronholm/anyio/issues/964) \u0026lt;https://github.com/agronholm/anyio/pull/964\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eFixed TCP listener behavior to guarantee the same ephemeral port is used for all\nsocket listeners when \u003ccode\u003elocal_port=0\u003c/code\u003e\n(\u003ccode\u003e[#857](https://github.com/agronholm/anyio/issues/857) \u0026lt;https://github.com/agronholm/anyio/issues/857\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed inconsistency between Trio and asyncio where a TCP stream that previously\nraised a \u003ccode\u003eBrokenResourceError\u003c/code\u003e on \u003ccode\u003esend()\u003c/code\u003e would still raise\n\u003ccode\u003eBrokenResourceError\u003c/code\u003e after the stream was closed on asyncio, but\n\u003ccode\u003eClosedResourceError\u003c/code\u003e on Trio. They now both raise a \u003ccode\u003eClosedResourceError\u003c/code\u003e in this\nscenario. (\u003ccode\u003e[#671](https://github.com/agronholm/anyio/issues/671) \u0026lt;https://github.com/agronholm/anyio/issues/671\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e4.10.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003efeed_data()\u003c/code\u003e method to the \u003ccode\u003eBufferedByteReceiveStream\u003c/code\u003e class, allowing\nusers to inject data directly into the buffer\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded various class methods to wrap existing sockets as listeners or socket streams:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eSocketListener.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/08737af202f6610cdb8ba53fecaefd9c03269637\"\u003e\u003ccode\u003e08737af\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/8bb9fe04a1c0a4b6615c843d4a88bba38a386059\"\u003e\u003ccode\u003e8bb9fe0\u003c/code\u003e\u003c/a\u003e Fixed the inconsistent exception on sending to a closed TCP stream (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/963709358a05ced66986e928b593b4bd82422981\"\u003e\u003ccode\u003e9637093\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/981\"\u003e#981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/f1bc6ee95a75007681ef9cb4eec0369838b390e9\"\u003e\u003ccode\u003ef1bc6ee\u003c/code\u003e\u003c/a\u003e Fixed changelog entry formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0b58964a26c68ca427b711bbe8536f61ed900133\"\u003e\u003ccode\u003e0b58964\u003c/code\u003e\u003c/a\u003e Mentioned the sub-interpreter support in the README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/1ed112c65628d3cce312e7b6875b9f914d174a71\"\u003e\u003ccode\u003e1ed112c\u003c/code\u003e\u003c/a\u003e Ensure same port is used for IPv4/IPv6 when creating TCP listener with local_...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/aceeee09868642311a96626924f2f09c088a26c0\"\u003e\u003ccode\u003eaceeee0\u003c/code\u003e\u003c/a\u003e Re-enabled coverage reporting on macOS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6b890dc869f54b6237caff52a74e86382c076ad2\"\u003e\u003ccode\u003e6b890dc\u003c/code\u003e\u003c/a\u003e Reworded a changelog entry and added PR links to others\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/944257d2d59e8057dd00cd5cc96d8f73028031dd\"\u003e\u003ccode\u003e944257d\u003c/code\u003e\u003c/a\u003e Updated pre-commit modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/087975f44599471a84bea2077731143a346c276a\"\u003e\u003ccode\u003e087975f\u003c/code\u003e\u003c/a\u003e Fixed a documentation style (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/976\"\u003e#976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `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 2025.10.5\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/fb14ac49a976b1695d84b1ac1307276a20b3aac9\"\u003e\u003ccode\u003efb14ac4\u003c/code\u003e\u003c/a\u003e 2025.10.05 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/371\"\u003e#371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/2c7c7ee6b76a118191b685a4cc028d4241f22eb7\"\u003e\u003ccode\u003e2c7c7ee\u003c/code\u003e\u003c/a\u003e Add Python 3.14 classifier in setup.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/1a5cb7b3771bba256755f88b3dcf3ac13f064622\"\u003e\u003ccode\u003e1a5cb7b\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.6.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/dea59605ef2b266c2e0e67938e8c8535a04b1211\"\u003e\u003ccode\u003edea5960\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/83566b7c993eef772facdaff59c7bba105675329\"\u003e\u003ccode\u003e83566b7\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.2 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ca2e121bdb304fd01f802d3b1ee6a65684f569f2\"\u003e\u003ccode\u003eca2e121\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.3.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a97d9ad8f87c382378dddc0b0b33b9770932404e\"\u003e\u003ccode\u003ea97d9ad\u003c/code\u003e\u003c/a\u003e 2025.08.03 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddd90c6d726f174c1e5820379dac0f2a8fc723a1\"\u003e\u003ccode\u003eddd90c6\u003c/code\u003e\u003c/a\u003e 2025.07.14 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d905221c916d51077f5c8071a0f7aa2df2a37c52\"\u003e\u003ccode\u003ed905221\u003c/code\u003e\u003c/a\u003e 2025.07.09 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/e767d5938eddddf804216cec93a55c85129c5f2d\"\u003e\u003ccode\u003ee767d59\u003c/code\u003e\u003c/a\u003e 2025.06.15 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/357\"\u003e#357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.01.31...2025.10.05\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.1 to 3.4.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.9\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summa...\n\n_Description has been truncated_","html_url":"https://github.com/openreview-bot7/securesystemslib/pull/12","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/openreview-bot7%2Fsecuresystemslib/issues/12","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/12/packages"},{"uuid":"2893509065","node_id":"PR_kwDOHGh5u86sd3HJ","number":910,"state":"open","title":"build(deps): bump the pipenv group across 1 directory with 31 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":0,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-10-07T10:42:01.000Z","updated_at":"2025-10-07T10:42:02.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"pipenv","update_count":31,"packages":[{"name":"rich-click","old_version":"1.8.8","new_version":"1.9.2","repository_url":"https://github.com/ewels/rich-click"},{"name":"securesystemslib","old_version":"1.3.0","new_version":"1.3.1","repository_url":"https://github.com/secure-systems-lab/securesystemslib"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"dynaconf","old_version":"3.2.10","new_version":"3.2.11","repository_url":"https://github.com/dynaconf/dynaconf"},{"name":"isort","old_version":"6.0.1","new_version":"6.1.0","repository_url":"https://github.com/PyCQA/isort"},{"name":"sqlalchemy","old_version":"2.0.40","new_version":"2.0.43","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"beaupy","old_version":"3.10.1","new_version":"3.10.2","repository_url":"https://github.com/petereon/beaupy"},{"name":"sigstore","old_version":"3.6.2","new_version":"4.0.0","repository_url":"https://github.com/sigstore/sigstore-python"},{"name":"boto3","old_version":"1.38.8","new_version":"1.40.46","repository_url":"https://github.com/boto/boto3"},{"name":"google-cloud-kms","old_version":"3.4.1","new_version":"3.6.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"azure-keyvault-keys","old_version":"4.10.0","new_version":"4.11.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"prompt-toolkit","old_version":"3.0.51","new_version":"3.0.52","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"setuptools","old_version":"80.3.1","new_version":"80.9.0","repository_url":"https://github.com/pypa/setuptools"},{"name":"pykcs11","old_version":"1.5.17","new_version":"1.5.18","repository_url":"https://github.com/LudovicRousseau/PyKCS11"},{"name":"exceptiongroup","old_version":"1.2.2","new_version":"1.3.0","repository_url":"https://github.com/agronholm/exceptiongroup"},{"name":"black","old_version":"25.1.0","new_version":"25.9.0","repository_url":"https://github.com/psf/black"},{"name":"flake8","old_version":"7.2.0","new_version":"7.3.0","repository_url":"https://github.com/pycqa/flake8"},{"name":"tox","old_version":"4.25.0","new_version":"4.30.3","repository_url":"https://github.com/tox-dev/tox"},{"name":"pytest","old_version":"8.3.5","new_version":"8.4.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"6.1.1","new_version":"7.0.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pytest-xdist","old_version":"3.6.1","new_version":"3.8.0","repository_url":"https://github.com/pytest-dev/pytest-xdist"},{"name":"mypy","old_version":"1.15.0","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"},{"name":"pip","old_version":"25.1.1","new_version":"25.2","repository_url":"https://github.com/pypa/pip"},{"name":"sphinxcontrib-plantuml","old_version":"0.30","new_version":"0.31","repository_url":"https://github.com/sphinx-contrib/plantuml"},{"name":"build","old_version":"1.2.2.post1","new_version":"1.3.0","repository_url":"https://github.com/pypa/build"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.3.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"bandit","old_version":"1.8.3","new_version":"1.8.6","repository_url":"https://github.com/PyCQA/bandit"},{"name":"types-requests","old_version":"2.32.0.20250328","new_version":"2.32.4.20250913","repository_url":"https://github.com/typeshed-internal/stub_uploader"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pipenv group with 28 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [rich-click](https://github.com/ewels/rich-click) | `1.8.8` | `1.9.2` |\n| [securesystemslib](https://github.com/secure-systems-lab/securesystemslib) | `1.3.0` | `1.3.1` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [dynaconf](https://github.com/dynaconf/dynaconf) | `3.2.10` | `3.2.11` |\n| [isort](https://github.com/PyCQA/isort) | `6.0.1` | `6.1.0` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.40` | `2.0.43` |\n| [beaupy](https://github.com/petereon/beaupy) | `3.10.1` | `3.10.2` |\n| [sigstore](https://github.com/sigstore/sigstore-python) | `3.6.2` | `4.0.0` |\n| [boto3](https://github.com/boto/boto3) | `1.38.8` | `1.40.46` |\n| [google-cloud-kms](https://github.com/googleapis/google-cloud-python) | `3.4.1` | `3.6.0` |\n| [azure-keyvault-keys](https://github.com/Azure/azure-sdk-for-python) | `4.10.0` | `4.11.0` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.51` | `3.0.52` |\n| [setuptools](https://github.com/pypa/setuptools) | `80.3.1` | `80.9.0` |\n| [pykcs11](https://github.com/LudovicRousseau/PyKCS11) | `1.5.17` | `1.5.18` |\n| [exceptiongroup](https://github.com/agronholm/exceptiongroup) | `1.2.2` | `1.3.0` |\n| [black](https://github.com/psf/black) | `25.1.0` | `25.9.0` |\n| [flake8](https://github.com/pycqa/flake8) | `7.2.0` | `7.3.0` |\n| [tox](https://github.com/tox-dev/tox) | `4.25.0` | `4.30.3` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.5` | `8.4.2` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `6.1.1` | `7.0.0` |\n| [pytest-xdist](https://github.com/pytest-dev/pytest-xdist) | `3.6.1` | `3.8.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.18.2` |\n| [pip](https://github.com/pypa/pip) | `25.1.1` | `25.2` |\n| [sphinxcontrib-plantuml](https://github.com/sphinx-contrib/plantuml) | `0.30` | `0.31` |\n| [build](https://github.com/pypa/build) | `1.2.2.post1` | `1.3.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.3.0` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.8.3` | `1.8.6` |\n| [types-requests](https://github.com/typeshed-internal/stub_uploader) | `2.32.0.20250328` | `2.32.4.20250913` |\n\n\nUpdates `rich-click` from 1.8.8 to 1.9.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ewels/rich-click/releases\"\u003erich-click's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.9.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed legacy Windows rendering\u003c/li\u003e\n\u003cli\u003eFix issue with parent \u003ccode\u003eclick.Group\u003c/code\u003e and child \u003ccode\u003erich_click.RichCommand\u003c/code\u003e error formatter not resolving.\u003c/li\u003e\n\u003cli\u003eAdd headers to tables (by default these are not shown).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.2.dev0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed legacy windows rendering\u003c/li\u003e\n\u003cli\u003eFix issue with parent \u003ccode\u003eclick.Group\u003c/code\u003e and child \u003ccode\u003erich_click.RichCommand\u003c/code\u003e error formatter not resolving.\u003c/li\u003e\n\u003cli\u003eAdd headers to tables (by default these are not shown).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed bug where running the \u003ccode\u003erich-click\u003c/code\u003e CLI on a \u003ccode\u003e@rich_click.argument()\u003c/code\u003e sometimes caused arguments show up in the option panel when it shouldn't.\u003c/li\u003e\n\u003cli\u003eSlightly reduced horizontal padding of the \u003ccode\u003emodern\u003c/code\u003e theme format.\u003c/li\u003e\n\u003cli\u003eFixed Click 8.3 compatibility with rendering defaults in help text.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.0\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\nVersion 1.9.0 deprecates support for a lot of old versions of things:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ePython 3.7 support is removed.\u003c/strong\u003e The minimum supported Python version is 3.8.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eClick 7 support is removed.\u003c/strong\u003e The minimum supported Click version is 8.0.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRich 10 and 11 support is removed.\u003c/strong\u003e The minimum supported Rich version is 12.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\nVersion 1.9.0 introduces a minor breaking change:\nThe \u003ccode\u003eDEFAULT_STRING\u003c/code\u003e, \u003ccode\u003eENVVAR_STRING\u003c/code\u003e, \u003ccode\u003eREQUIRED_STRING\u003c/code\u003e, and \u003ccode\u003eDEPRECATED_STRING\u003c/code\u003e config options are now rendered with \u003ccode\u003eText.from_markup\u003c/code\u003e.\nSo for example, \u003ccode\u003eREQUIRED_STRING = \u0026quot;[required]\u0026quot;\u003c/code\u003e would be rendered as Rich markup.\nYou must now escape the rich markup: \u003ccode\u003eREQUIRED_STRING = \u0026quot;\\\\[required]\u0026quot;\u003c/code\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003eBig changes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eThemes!\u003c/strong\u003e Check them out with \u003ccode\u003erich-click --themes\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTyper support:\u003c/strong\u003e \u003ccode\u003erich-click typer_app --help\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRichPanels\u003c/strong\u003e API introduced. This replaces the \u0026quot;groups\u0026quot; feature going forward (although groups will continue to be supported).\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e@click.option_panel()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e@click.command_panel()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eIDE tab completion support for decorators\u003c/strong\u003e. Now you should no longer need to guess what goes in \u003ccode\u003e@click.option()\u003c/code\u003e or \u003ccode\u003e@click.command(context_settings=...)\u003c/code\u003e etc.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHelp for arguments:\u003c/strong\u003e \u003ccode\u003ehelp=\u003c/code\u003e is now a valid kwarg for \u003ccode\u003e@click.argument()\u003c/code\u003e decorator. See docs for more information.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSmall changes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u0026quot;Deprecated\u0026quot; text properly handled and stylized in all places.\u003c/li\u003e\n\u003cli\u003eCommand aliases: \u003ccode\u003e@cli.command(aliases=[\u0026quot;foo\u0026quot;])\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eImproved \u003ccode\u003erich-click\u003c/code\u003e CLI usability: improved patching and improved script detection+execution.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003econtext_settings={\u0026quot;help_to_stderr\u0026quot;: True}\u003c/code\u003e support.\u003c/li\u003e\n\u003cli\u003eAdded suite of \u003ccode\u003epadding_*\u003c/code\u003e config options to control padding.\n\u003cul\u003e\n\u003cli\u003eBetter newline handling:\n\u003cul\u003e\n\u003cli\u003eUnordered lists create newlines in help text, e.g. \u003ccode\u003e\u0026quot;\\n- foo\\n- bar\u0026quot;\u003c/code\u003e or \u003ccode\u003e\u0026quot;\\n* foo\\n* bar\u0026quot;\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eNewline control in help text with \u003ccode\u003etext_paragraph_linebreaks\u003c/code\u003e config option.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded a few \u003ccode\u003etext_*\u003c/code\u003e config options, including notably \u003ccode\u003etext_kwargs\u003c/code\u003e which can control code styles in Markdown.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- 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/ewels/rich-click/blob/main/CHANGELOG.md\"\u003erich-click's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.9.2 (2025-10-04)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed legacy windows rendering\u003c/li\u003e\n\u003cli\u003eFix issue with parent \u003ccode\u003eclick.Group\u003c/code\u003e and child \u003ccode\u003erich_click.RichCommand\u003c/code\u003e error formatter not resolving.\u003c/li\u003e\n\u003cli\u003eAdd headers to tables (by default these are not shown).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.9.1 (2025-09-20)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed bug where running the \u003ccode\u003erich-click\u003c/code\u003e CLI on a \u003ccode\u003e@rich_click.argument()\u003c/code\u003e sometimes caused arguments show up in the option panel when it shouldn't.\u003c/li\u003e\n\u003cli\u003eSlightly reduced horizontal padding of the \u003ccode\u003emodern\u003c/code\u003e theme format.\u003c/li\u003e\n\u003cli\u003eFixed Click 8.3 compatibility with rendering defaults in help text.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.9.0 (2025-09-16)\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\nVersion 1.9.0 deprecates support for a lot of old versions of things:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ePython 3.7 support is removed.\u003c/strong\u003e The minimum supported Python version is 3.8.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eClick 7 support is removed.\u003c/strong\u003e The minimum supported Click version is 8.0.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRich 10 and 11 support is removed.\u003c/strong\u003e The minimum supported Rich version is 12.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\nVersion 1.9.0 introduces a minor breaking change:\nThe \u003ccode\u003eDEFAULT_STRING\u003c/code\u003e, \u003ccode\u003eENVVAR_STRING\u003c/code\u003e, \u003ccode\u003eREQUIRED_STRING\u003c/code\u003e, and \u003ccode\u003eDEPRECATED_STRING\u003c/code\u003e config options are now rendered with \u003ccode\u003eText.from_markup\u003c/code\u003e.\nSo for example, \u003ccode\u003eREQUIRED_STRING = \u0026quot;[required]\u0026quot;\u003c/code\u003e would be rendered as Rich markup.\nYou must now escape the rich markup: \u003ccode\u003eREQUIRED_STRING = \u0026quot;\\\\[required]\u0026quot;\u003c/code\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003eBig changes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eThemes!\u003c/strong\u003e Check them out with \u003ccode\u003erich-click --themes\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTyper support:\u003c/strong\u003e \u003ccode\u003erich-click typer_app --help\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRichPanels\u003c/strong\u003e API introduced. This replaces the \u0026quot;groups\u0026quot; feature going forward (although groups will continue to be supported).\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e@click.option_panel()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e@click.command_panel()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eIDE tab completion support for decorators\u003c/strong\u003e. Now you should no longer need to guess what goes in \u003ccode\u003e@click.option()\u003c/code\u003e or \u003ccode\u003e@click.command(context_settings=...)\u003c/code\u003e etc.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHelp for arguments:\u003c/strong\u003e \u003ccode\u003ehelp=\u003c/code\u003e is now a valid kwarg for \u003ccode\u003e@click.argument()\u003c/code\u003e decorator. See docs for more information.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSmall changes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u0026quot;Deprecated\u0026quot; text properly handled and stylized in all places.\u003c/li\u003e\n\u003cli\u003eCommand aliases: \u003ccode\u003e@cli.command(aliases=[\u0026quot;foo\u0026quot;])\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eImproved \u003ccode\u003erich-click\u003c/code\u003e CLI usability: improved patching and improved script detection+execution.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003econtext_settings={\u0026quot;help_to_stderr\u0026quot;: True}\u003c/code\u003e support.\u003c/li\u003e\n\u003cli\u003eAdded suite of \u003ccode\u003epadding_*\u003c/code\u003e config options to control padding.\n\u003cul\u003e\n\u003cli\u003eBetter newline handling:\n\u003cul\u003e\n\u003cli\u003eUnordered lists create newlines in help text, e.g. \u003ccode\u003e\u0026quot;\\n- foo\\n- bar\u0026quot;\u003c/code\u003e or \u003ccode\u003e\u0026quot;\\n* foo\\n* bar\u0026quot;\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eNewline control in help text with \u003ccode\u003etext_paragraph_linebreaks\u003c/code\u003e config option.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded a few \u003ccode\u003etext_*\u003c/code\u003e config options, including notably \u003ccode\u003etext_kwargs\u003c/code\u003e which can control code styles in Markdown.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBackend (mostly invisible) changes:\u003c/strong\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/12a50e911c05c6c8c97bfdd48147f999368bc7f5\"\u003e\u003ccode\u003e12a50e9\u003c/code\u003e\u003c/a\u003e Finish testing for 1.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/a2ccfed4946d5a7d677d0b5750617575f9de8c09\"\u003e\u003ccode\u003ea2ccfed\u003c/code\u003e\u003c/a\u003e 1.9.2 (\u003ca href=\"https://redirect.github.com/ewels/rich-click/issues/302\"\u003e#302\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/f041971bbd2ebadcfaed2e66b4e002260bf232eb\"\u003e\u003ccode\u003ef041971\u003c/code\u003e\u003c/a\u003e set date for changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/09b3ece0cf9fefaf98d83b9efd56e27083e6acc5\"\u003e\u003ccode\u003e09b3ece\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ewels/rich-click/issues/296\"\u003e#296\u003c/a\u003e from dwreeves/issue-293\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/164d7c0cb623d1332d43b66dee4fc3b911dd3544\"\u003e\u003ccode\u003e164d7c0\u003c/code\u003e\u003c/a\u003e add 8.3 to tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/c792472a3217d4a371352d1f9567b55287318689\"\u003e\u003ccode\u003ec792472\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ewels/rich-click/issues/295\"\u003e#295\u003c/a\u003e from dwreeves/issue-293\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/2268fc4e197c988f14076a138f797dc564367a47\"\u003e\u003ccode\u003e2268fc4\u003c/code\u003e\u003c/a\u003e fix 8.3 incompatibility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/bb9d72e0104b14629f7101aca01808c07bd5b5b9\"\u003e\u003ccode\u003ebb9d72e\u003c/code\u003e\u003c/a\u003e Generate new screengrabs with rich-codex\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/ff6722289f441cb7c511a2103410b1188a957cbe\"\u003e\u003ccode\u003eff67222\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ewels/rich-click/issues/291\"\u003e#291\u003c/a\u003e from dwreeves/19-extremely-minor-bugfix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/96d7dc02db171b52cec1ac73464a51856fbaecc0\"\u003e\u003ccode\u003e96d7dc0\u003c/code\u003e\u003c/a\u003e update test case\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ewels/rich-click/compare/v1.8.8...v1.9.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `securesystemslib` from 1.3.0 to 1.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/releases\"\u003esecuresystemslib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.3.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/blob/v1.3.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e for details.\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/secure-systems-lab/securesystemslib/blob/main/CHANGELOG.md\"\u003esecuresystemslib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003esecuresystemslib v1.3.1\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAWSSigner: Don't send payload to AWS for signing, send hash only (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1026\"\u003e#1026\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSet Development status classifier to \u0026quot;production/stable\u0026quot; in Python\npackaging (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1030\"\u003e#1030\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternals\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMinor infrastructure changes (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1005\"\u003e#1005\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1013\"\u003e#1013\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/secure-systems-lab/securesystemslib/commit/6f774190b90f0aa9d5d7e077680adbaa29c5cd6c\"\u003e\u003ccode\u003e6f77419\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1030\"\u003e#1030\u003c/a\u003e from jku/release-prep-1.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/b71cc5271a9a7b6898c79c1a12393d90996d5388\"\u003e\u003ccode\u003eb71cc52\u003c/code\u003e\u003c/a\u003e Prepare release 1.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/f6835096a845acf25dc3675105937be2565b9e66\"\u003e\u003ccode\u003ef683509\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1026\"\u003e#1026\u003c/a\u003e from ArkadiuszNitkaSWI/fix-aws-signer\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/97527198c7bf5b75ef9fb8996412df5453995080\"\u003e\u003ccode\u003e9752719\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1027\"\u003e#1027\u003c/a\u003e from secure-systems-lab/dependabot/pip/test-and-lint...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/4226b762bf3333b5947af9cf29ed751afbfd69b9\"\u003e\u003ccode\u003e4226b76\u003c/code\u003e\u003c/a\u003e build(deps): bump the test-and-lint-dependencies group with 4 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/6394e3e467c091a06ee95dad674dec7e991758c8\"\u003e\u003ccode\u003e6394e3e\u003c/code\u003e\u003c/a\u003e Review changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/dee9a831390c9a69c0e66f7c34779e9eea6dcc6d\"\u003e\u003ccode\u003edee9a83\u003c/code\u003e\u003c/a\u003e linter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/07b0fc780d9d1f4c0843ce3e2096e1216814bd06\"\u003e\u003ccode\u003e07b0fc7\u003c/code\u003e\u003c/a\u003e update .gitignore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/e8158a4eb131760714290b9839e3e40f9cd4229c\"\u003e\u003ccode\u003ee8158a4\u003c/code\u003e\u003c/a\u003e Fix AWS signer, allow messages bigger than 4kB\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/e23f855ddecb97d4baddffc068e9591451b9aa72\"\u003e\u003ccode\u003ee23f855\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1023\"\u003e#1023\u003c/a\u003e from secure-systems-lab/dependabot/pip/dependencies-...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/compare/v1.3.0...v1.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.1.8 to 8.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.3.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our \u003ca href=\"https://palletsprojects.com/versions\"\u003eVersion Support Policy\u003c/a\u003e on our website.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.0/\"\u003ehttps://pypi.org/project/click/8.3.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/27\"\u003ehttps://github.com/pallets/click/milestone/27\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: \u003ca href=\"https://redirect.github.com/pallets/click/issues/1992\"\u003e#1992\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2514\"\u003e#2514\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2610\"\u003e#2610\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3024\"\u003e#3024\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2164\"\u003e#2164\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for nargs option in combination with flag option \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2995\"\u003e#2995\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3013\"\u003e#3013\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3023\"\u003e#3023\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in CliRunner.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2939\"\u003e#2939\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.2.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.2.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.2.2/\"\u003ehttps://pypi.org/project/click/8.2.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-2-2\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-2-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/25\"\u003ehttps://github.com/pallets/click/milestone/25\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix reconciliation of \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003etype\u003c/code\u003e parameters for\nflag options, as well as parsing and normalization of environment variables.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/2952\"\u003e#2952\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2956\"\u003e#2956\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typing issue in \u003ccode\u003eBadParameter\u003c/code\u003e and \u003ccode\u003eMissingParameter\u003c/code\u003e exceptions for the\nparameter \u003ccode\u003eparam_hint\u003c/code\u003e that did not allow for a sequence of string where the\nunderlying functino \u003ccode\u003e_join_param_hints\u003c/code\u003e allows for it. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2777\"\u003e#2777\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2990\"\u003e#2990\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse the value of \u003ccode\u003eEnum\u003c/code\u003e choices to render their default value in help\nscreen. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2911\"\u003e#2911\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3004\"\u003e#3004\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix completion for the Z shell (\u003ccode\u003ezsh\u003c/code\u003e) for completion items containing\ncolons. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2703\"\u003e#2703\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2846\"\u003e#2846\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't include envvar in error hint when not configured. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2971\"\u003e#2971\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2972\"\u003e#2972\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.rst\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.3.0\u003c/h2\u003e\n\u003cp\u003eReleased 2025-09-17\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: :issue:\u003ccode\u003e1992\u003c/code\u003e :issue:\u003ccode\u003e2514\u003c/code\u003e :issue:\u003ccode\u003e2610\u003c/code\u003e\n:issue:\u003ccode\u003e3024\u003c/code\u003e :pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. :issue:\u003ccode\u003e2164\u003c/code\u003e\n:pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption :issue:\u003ccode\u003e2813\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. :issue:\u003ccode\u003e2995\u003c/code\u003e :pr:\u003ccode\u003e3013\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e. :pr:\u003ccode\u003e3023\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. :issue:\u003ccode\u003e2447\u003c/code\u003e :pr:\u003ccode\u003e3058\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in CliRunner. :issue:\u003ccode\u003e2939\u003c/code\u003e :pr:\u003ccode\u003e2940\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-07-31\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix reconciliation of \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003etype\u003c/code\u003e parameters for\nflag options, as well as parsing and normalization of environment variables.\n:issue:\u003ccode\u003e2952\u003c/code\u003e :pr:\u003ccode\u003e2956\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix typing issue in \u003ccode\u003eBadParameter\u003c/code\u003e and \u003ccode\u003eMissingParameter\u003c/code\u003e exceptions for the\nparameter \u003ccode\u003eparam_hint\u003c/code\u003e that did not allow for a sequence of string where the\nunderlying function \u003ccode\u003e_join_param_hints\u003c/code\u003e allows for it. :issue:\u003ccode\u003e2777\u003c/code\u003e :pr:\u003ccode\u003e2990\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUse the value of \u003ccode\u003eEnum\u003c/code\u003e choices to render their default value in help\nscreen. Refs :issue:\u003ccode\u003e2911\u003c/code\u003e :pr:\u003ccode\u003e3004\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix completion for the Z shell (\u003ccode\u003ezsh\u003c/code\u003e) for completion items containing\ncolons. :issue:\u003ccode\u003e2703\u003c/code\u003e :pr:\u003ccode\u003e2846\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDon't include envvar in error hint when not configured. :issue:\u003ccode\u003e2971\u003c/code\u003e :pr:\u003ccode\u003e2972\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix a rare race in \u003ccode\u003eclick.testing.StreamMixer\u003c/code\u003e's finalization that manifested\nas a \u003ccode\u003eValueError\u003c/code\u003e on close in a multi-threaded test session.\n:issue:\u003ccode\u003e2993\u003c/code\u003e :pr:\u003ccode\u003e2991\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-20\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/00fadb8904387158ce6e9aa1573be770446895c1\"\u003e\u003ccode\u003e00fadb8\u003c/code\u003e\u003c/a\u003e Release version 8.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/2a0e3ba907927ade6951d5732b775f11b54cb766\"\u003e\u003ccode\u003e2a0e3ba\u003c/code\u003e\u003c/a\u003e testing/CliRunner: Fix regression related to EOF introduced in 262bdf0 (\u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e11a1efc3395e998a1521a0dc35672a799e78d30\"\u003e\u003ccode\u003ee11a1ef\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into fix-cli-runner-prompt-eof-handling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/36deba8a95a2585de1a2aa4475b7f054f52830ac\"\u003e\u003ccode\u003e36deba8\u003c/code\u003e\u003c/a\u003e Forward exception information to resources registered in a context (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/f2cae7ae997cd32311cab3dede4c2b89fe05e191\"\u003e\u003ccode\u003ef2cae7a\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Add summary of PR to changelog for 8.3.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/7c7ec36354f49d1a092cb077fa4881ea4d70ba01\"\u003e\u003ccode\u003e7c7ec36\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Split resource exception handling tests in single and nested\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/92129c552da88ac30b578132031efa4b003ecc46\"\u003e\u003ccode\u003e92129c5\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Added exception forwarding to context tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/555fa9bb37770a6845a98be60b0c84876775552e\"\u003e\u003ccode\u003e555fa9b\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Forward exception data to exit stack when calling \u003ccode\u003e__exit__\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/16fe802a3f96c4c8fa3cd382f1a7577fda0c5321\"\u003e\u003ccode\u003e16fe802\u003c/code\u003e\u003c/a\u003e Add more tests on \u003ccode\u003eEnum\u003c/code\u003e rendering (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/d36de6fc67882f23d7a7d61cd4c0e25e0f88b0ac\"\u003e\u003ccode\u003ed36de6f\u003c/code\u003e\u003c/a\u003e Add more tests on Enum rendering their item's names and not values\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.1.8...8.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `rich` from 14.0.0 to 14.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Textualize/rich/releases\"\u003erich's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eThe Lively Release\u003c/h2\u003e\n\u003cp\u003eLive objects may now be nested. Previously a progress bar inside another progress context would fail. See the changelog below for this and other changes.\u003c/p\u003e\n\u003ch2\u003e[14.1.0] - 2025-06-25\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved \u003ccode\u003etyping_extensions\u003c/code\u003e from runtime dependencies \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3763\"\u003eTextualize/rich#3763\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLive objects (including Progress) may now be nested \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3768\"\u003eTextualize/rich#3768\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded padding property to Syntax which returns a tuple of four integers \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3782\"\u003eTextualize/rich#3782\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed extraction of recursive exceptions \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3772\"\u003eTextualize/rich#3772\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed padding applied to Syntax \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3782\"\u003eTextualize/rich#3782\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003ePanel\u003c/code\u003e title missing the panel background style \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3569\"\u003eTextualize/rich#3569\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eTTY_INTERACTIVE\u003c/code\u003e environment variable to force interactive mode off or on \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3777\"\u003eTextualize/rich#3777\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/Textualize/rich/blob/master/CHANGELOG.md\"\u003erich's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[14.1.0] - 2025-06-25\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved \u003ccode\u003etyping_extensions\u003c/code\u003e from runtime dependencies \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3763\"\u003eTextualize/rich#3763\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLive objects (including Progress) may now be nested \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3768\"\u003eTextualize/rich#3768\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded padding property to Syntax which returns a tuple of four integers \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3782\"\u003eTextualize/rich#3782\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed extraction of recursive exceptions \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3772\"\u003eTextualize/rich#3772\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed padding applied to Syntax \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3782\"\u003eTextualize/rich#3782\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003ePanel\u003c/code\u003e title missing the panel background style \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3569\"\u003eTextualize/rich#3569\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eTTY_INTERACTIVE\u003c/code\u003e environment variable to force interactive mode off or on \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3777\"\u003eTextualize/rich#3777\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/Textualize/rich/commit/2dca1b70359dac61e1bbfb6f14ebe19a5ab79c3d\"\u003e\u003ccode\u003e2dca1b7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3808\"\u003e#3808\u003c/a\u003e from Textualize/bump1410\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/19b6dddd807b887eaaf313174fff3eb2e22cda25\"\u003e\u003ccode\u003e19b6ddd\u003c/code\u003e\u003c/a\u003e version bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/a75a9a9838814cffb68cefe3522fc47c8ddce768\"\u003e\u003ccode\u003ea75a9a9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3807\"\u003e#3807\u003c/a\u003e from Textualize/optimize-options\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/9a08a2d3a983591e2d0d46e4f63558dd8df9e47d\"\u003e\u003ccode\u003e9a08a2d\u003c/code\u003e\u003c/a\u003e optimize size\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/9c9b011187bba772dca57653c9114005b489f005\"\u003e\u003ccode\u003e9c9b011\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3680\"\u003e#3680\u003c/a\u003e from Textualize/willmcgugan-patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/56855a6b81befafa6e978cffed4c1fb389a20df0\"\u003e\u003ccode\u003e56855a6\u003c/code\u003e\u003c/a\u003e Update bug_report.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/fa9ce3ce70c22ea2bb83dbd1f867fe90d1b3f0c5\"\u003e\u003ccode\u003efa9ce3c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3692\"\u003e#3692\u003c/a\u003e from smacke/null-tb-offset-fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/e0c7e96b303e6f3e48818380527129fb21f453f3\"\u003e\u003ccode\u003ee0c7e96\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3783\"\u003e#3783\u003c/a\u003e from Textualize/live-typing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/81b12554b3b15374aa48dae3f6507202bd8fab3e\"\u003e\u003ccode\u003e81b1255\u003c/code\u003e\u003c/a\u003e Self typing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/21b3800894f6a81d3f68a0e34796be67e3ccd39f\"\u003e\u003ccode\u003e21b3800\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3718\"\u003e#3718\u003c/a\u003e from TomJGooding/fix-panel-fix-title-missing-panel-b...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Textualize/rich/compare/v14.0.0...v14.1.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 `dynaconf` from 3.2.10 to 3.2.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dynaconf/dynaconf/releases\"\u003edynaconf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.2.11\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eRelease version 3.2.11\u003c/p\u003e\n\u003cp\u003eShortlog of commits since last release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBruno Rocha (9): \u003ca href=\"https://github.com/rochacbruno\"\u003e\u003ccode\u003e@​rochacbruno\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003efix(cli): handle empty hooks and boolean environments.\u003c/li\u003e\n\u003cli\u003efix: Better way for CLI to find the Django Settings\u003c/li\u003e\n\u003cli\u003efix: windows CI\u003c/li\u003e\n\u003cli\u003efeat: Run CLI as module with \u003ccode\u003epython -m dynaconf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1290\"\u003e#1290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: use sys.argv instead of click.get_os_args (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1292\"\u003e#1292\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: \u003ccode\u003e-k\u003c/code\u003e must exit code 1 when key do not exist (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1293\"\u003e#1293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: envless load file (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1295\"\u003e#1295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: add correct supported python version to 3.2.x\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFabricio Aguiar (1): \u003ca href=\"https://github.com/fao89\"\u003e\u003ccode\u003e@​fao89\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003efix: make raw variables private (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1287\"\u003e#1287\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePedro Brochado (1): \u003ca href=\"https://github.com/pedro-psb\"\u003e\u003ccode\u003e@​pedro-psb\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003edocs: clarification on redis hash title when using custom envvar prefixes (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMilestone \u003ca href=\"https://github.com/dynaconf/dynaconf/milestone/31?closed=1\"\u003ehttps://github.com/dynaconf/dynaconf/milestone/31?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/dynaconf/dynaconf/compare/3.2.10...3.2.11\"\u003ehttps://github.com/dynaconf/dynaconf/compare/3.2.10...3.2.11\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/dynaconf/dynaconf/blob/3.2.11/CHANGELOG.md\"\u003edynaconf's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/releases/tag/3.2.11\"\u003e3.2.11\u003c/a\u003e - 2025-05-06\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd correct supported python version to 3.2.x. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e-k\u003c/code\u003e must exit code 1 when key do not exist (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1293\"\u003e#1293\u003c/a\u003e). \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003euse sys.argv instead of click.get_os_args (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1292\"\u003e#1292\u003c/a\u003e). \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003ewindows CI. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003emake raw variables private (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1287\"\u003e#1287\u003c/a\u003e). \u003cem\u003eBy Fabricio Aguiar\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003eBetter way for CLI to find the Django Settings. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003ehandle empty hooks and boolean environments.. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eenvless load file (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1295\"\u003e#1295\u003c/a\u003e). \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003eRun CLI as module with \u003ccode\u003epython -m dynaconf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1290\"\u003e#1290\u003c/a\u003e). \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eclarification on redis hash title when using custom envvar prefixes (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1273\"\u003e#1273\u003c/a\u003e). \u003cem\u003eBy Pedro Brochado\u003c/em\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/dynaconf/dynaconf/commit/c61da8fd191196c1341bd3d8a8dd895e9cf671ae\"\u003e\u003ccode\u003ec61da8f\u003c/code\u003e\u003c/a\u003e Release version 3.2.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/f8189fb6c130ff4709450e7daebcf1c174aea248\"\u003e\u003ccode\u003ef8189fb\u003c/code\u003e\u003c/a\u003e fix: add correct supported python version to 3.2.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/aeb31b256b436485211466214ba4f5f01a8a8305\"\u003e\u003ccode\u003eaeb31b2\u003c/code\u003e\u003c/a\u003e feat: envless load file (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1295\"\u003e#1295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/4893f4744d2c590069890756ae935059fbc08e2c\"\u003e\u003ccode\u003e4893f47\u003c/code\u003e\u003c/a\u003e fix: \u003ccode\u003e-k\u003c/code\u003e must exit code 1 when key do not exist (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1293\"\u003e#1293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/d55368bb13646b8b7976e641e2df6d4ff2bd7374\"\u003e\u003ccode\u003ed55368b\u003c/code\u003e\u003c/a\u003e fix: use sys.argv instead of click.get_os_args (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1292\"\u003e#1292\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/9a7af916a78c79f23f166b2e1ca077047f1c8cda\"\u003e\u003ccode\u003e9a7af91\u003c/code\u003e\u003c/a\u003e feat: Run CLI as module with \u003ccode\u003epython -m dynaconf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1290\"\u003e#1290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/f772e9fa940d7fd539e1a3d75d3e1902874b8e94\"\u003e\u003ccode\u003ef772e9f\u003c/code\u003e\u003c/a\u003e fix: windows CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/a2460bd65d94ac21a3f5f6d4a0f2ff37982e608f\"\u003e\u003ccode\u003ea2460bd\u003c/code\u003e\u003c/a\u003e fix: make raw variables private (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1287\"\u003e#1287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/da6456e98b78a1bba4c5f0cd8f4cced749ce5861\"\u003e\u003ccode\u003eda6456e\u003c/code\u003e\u003c/a\u003e docs: clarification on redis hash title when using custom envvar prefixes (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1\"\u003e#1\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/e5af61425d279bbbe18a3f83e95dcd0c75f04bd5\"\u003e\u003ccode\u003ee5af614\u003c/code\u003e\u003c/a\u003e fix: Better way for CLI to find the Django Settings\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/dynaconf/dynaconf/compare/3.2.10...3.2.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `isort` from 6.0.1 to 6.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/isort/releases\"\u003eisort's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.1.0\u003c/h2\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate docs discussions channel (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2410\"\u003e#2410\u003c/a\u003e) \u003ca href=\"https://github.com/staticdev\"\u003e\u003ccode\u003e@​staticdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd python 3.14 classifier and badge (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2409\"\u003e#2409\u003c/a\u003e) \u003ca href=\"https://github.com/staticdev\"\u003e\u003ccode\u003e@​staticdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop use of non-standard pkg_resources API (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2405\"\u003e#2405\u003c/a\u003e) \u003ca href=\"https://github.com/dvarrazzo\"\u003e\u003ccode\u003e@​dvarrazzo\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse working isort version in pre-commit example (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2402\"\u003e#2402\u003c/a\u003e) \u003ca href=\"https://github.com/iainelder\"\u003e\u003ccode\u003e@​iainelder\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix typo in _get_files_from_dir_cached test (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2392\"\u003e#2392\u003c/a\u003e) \u003ca href=\"https://github.com/tiltingpenguin\"\u003e\u003ccode\u003e@​tiltingpenguin\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eResolve bandit warnings (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2379\"\u003e#2379\u003c/a\u003e) \u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd tox for cross-platform, parallel test suite execution (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2378\"\u003e#2378\u003c/a\u003e) \u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Project URLs to PyPI Side Panel (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2387\"\u003e#2387\u003c/a\u003e) \u003ca href=\"https://github.com/guillermodotn\"\u003e\u003ccode\u003e@​guillermodotn\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typos (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2376\"\u003e#2376\u003c/a\u003e) \u003ca href=\"https://github.com/co63oc\"\u003e\u003ccode\u003e@​co63oc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:construction_worker: Continuous Integration\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd make bash scripts portable (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2377\"\u003e#2377\u003c/a\u003e) \u003ca href=\"https://github.com/staticdev\"\u003e\u003ccode\u003e@​staticdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:package: Dependencies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 4 to 5 in the github-actions group (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2406\"\u003e#2406\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump astral-sh/setup-uv from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2395\"\u003e#2395\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\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/PyCQA/isort/blob/main/CHANGELOG.md\"\u003eisort's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e6.1.0 October 1 2025\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd python 3.14 classifier and badge (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2409\"\u003e#2409\u003c/a\u003e) \u003ca href=\"https://github.com/staticdev\"\u003e\u003ccode\u003e@​staticdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop use of non-standard pkg_resources API (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2405\"\u003e#2405\u003c/a\u003e) \u003ca href=\"https://github.com/dvarrazzo\"\u003e\u003ccode\u003e@​dvarrazzo\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/PyCQA/isort/commit/ec0efaee4acfce198521e43caa3029b06cedd64a\"\u003e\u003ccode\u003eec0efae\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2410\"\u003e#2410\u003c/a\u003e from PyCQA/docs/discussion\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/8af675ffcbb25dc5b5c2ff52863afc2923a818e2\"\u003e\u003ccode\u003e8af675f\u003c/code\u003e\u003c/a\u003e Update docs discussions channel\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/a03dae897f7e4a2b2eeb01d094b2c112b10ff0b7\"\u003e\u003ccode\u003ea03dae8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2409\"\u003e#2409\u003c/a\u003e from PyCQA/build/py314-classifier\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/2232a26fd15d43ad0fca0e662d311ca4cf0d161e\"\u003e\u003ccode\u003e2232a26\u003c/code\u003e\u003c/a\u003e Add python 3.14 classifier and badge\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/ec48dd7c823bcebf6da93db5eb4921a7808e6bb3\"\u003e\u003ccode\u003eec48dd7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2405\"\u003e#2405\u003c/a\u003e from dvarrazzo/fix/drop-pkg-resources\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/be46cd476d1a61996a6a4469177edf0869df531e\"\u003e\u003ccode\u003ebe46cd4\u003c/code\u003e\u003c/a\u003e refactor: make importlib metadata package import lazy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/18ecd0c3bf0bc7d6eb9bb5b9a72297f172a57663\"\u003e\u003ccode\u003e18ecd0c\u003c/code\u003e\u003c/a\u003e chore: drop branch guarding unsupported Python versions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/1d42e564d9bd1e026e8d635880336dd0528c2c29\"\u003e\u003ccode\u003e1d42e56\u003c/code\u003e\u003c/a\u003e fix: drop use of non-standard pkg_resources API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/0c8fc82fdf1b60065d447f3f7307f01c51d44b01\"\u003e\u003ccode\u003e0c8fc82\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2406\"\u003e#2406\u003c/a\u003e from PyCQA/dependabot/github_actions/github-actions-...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/3478763347707341e3ce729008acc9cf73a0ff35\"\u003e\u003ccode\u003e3478763\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 in the github-actions group\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PyCQA/isort/compare/6.0.1...6.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlalchemy` from 2.0.40 to 2.0.43\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/releases\"\u003esqlalchemy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.0.43\u003c/h1\u003e\n\u003cp\u003eReleased: August 11, 2025\u003c/p\u003e\n\u003ch2\u003eorm\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed issue where using the \u003ccode\u003epost_update\u003c/code\u003e feature would apply incorrect\n\u0026quot;pre-fetched\u0026quot; values to the ORM objects after a multi-row UPDATE process\ncompleted.  These \u0026quot;pre-fetched\u0026quot; values would come from any column that had\nan \u003ccode\u003eColumn.onupdate\u003c/code\u003e callable or a version id generator used by\n\u003ccode\u003eorm.Mapper.version_id_generator\u003c/code\u003e; for a version id generator\nthat delivered random identifiers like timestamps or UUIDs, this incorrect\ndata would lead to a DELETE statement against those same rows to fail in\nthe next step.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12748\"\u003e#12748\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003e_orm.mapped_column.use_existing_column\u003c/code\u003e\nparameter in \u003ccode\u003e_orm.mapped_column()\u003c/code\u003e would not work when the\n\u003ccode\u003e_orm.mapped_column()\u003c/code\u003e is used inside of an \u003ccode\u003eAnnotated\u003c/code\u003e type alias in\npolymorphic inheritance scenarios. The parameter is now properly recognized\nand processed during declarative mapping configuration.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12787\"\u003e#12787\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Improved the implementation of the \u003ccode\u003e_orm.selectin_polymorphic()\u003c/code\u003e\ninheritance loader strategy to properly render the IN expressions using\nchunks of 500 records each, in the same manner as that of the\n\u003ccode\u003e_orm.selectinload()\u003c/code\u003e relationship loader strategy.  Previously, the IN\nexpression would be arbitrarily large, leading to failures on databases\nthat have limits on the size of IN expressions including Oracle Database.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12790\"\u003e#12790\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eengine\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[engine] [usecase]\u003c/strong\u003e Added new parameter \u003ccode\u003ecreate_engine.skip_autocommit_rollback\u003c/code\u003e\nwhich provides for a per-dialect feature of preventing the DBAPI\n\u003ccode\u003e.rollback()\u003c/code\u003e from being called under any circumstances, if the\nconnection is detected as being in \u0026quot;autocommit\u0026quot; mode.   This improves upon\na critical performance issue identified in MySQL dialects where the network\noverhead of the \u003ccode\u003e.rollback()\u003c/code\u003e call remains prohibitive even if autocommit\nmode is set.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12784\"\u003e#12784\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epostgresql\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\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `beaupy` 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/petereon/beaupy/releases\"\u003ebeaupy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.10.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): update dependency flake8 to v7.1.1 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/129\"\u003epetereon/beaupy#129\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency isort to v5.13.2 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/130\"\u003epetereon/beaupy#130\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency mypy to v1.14.1 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/131\"\u003epetereon/beaupy#131\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: adding documentation for global config by \u003ca href=\"https://github.com/petereon\"\u003e\u003ccode\u003e@​petereon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/148\"\u003epetereon/beaupy#148\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency pytest to v8.4.2 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/147\"\u003epetereon/beaupy#147\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency black to v25 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/144\"\u003epetereon/beaupy#144\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency pydoc-markdown to v4.8.2 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/132\"\u003epetereon/beaupy#132\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/petereon/beaupy/compare/v3.10.1...v3.10.2\"\u003ehttps://github.com/petereon/beaupy/compare/v3.10.1...v3.10.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/a2dc15764508c0451ed4dc386f3b0761fe7a9ce2\"\u003e\u003ccode\u003ea2dc157\u003c/code\u003e\u003c/a\u003e chore: bump version from 3.10.1 to 3.10.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/7599e5a43be6893c81612314f410ffa602a15f57\"\u003e\u003ccode\u003e7599e5a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/132\"\u003e#132\u003c/a\u003e from petereon/renovate/pydoc-markdown-4.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/6b2bb33d4fef6f2a607e1f42c873bd92ffc2b0d5\"\u003e\u003ccode\u003e6b2bb33\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency pydoc-markdown to v4.8.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/d2b0cbc3bb6b191816fdef9319a150e9b305ae7f\"\u003e\u003ccode\u003ed2b0cbc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/144\"\u003e#144\u003c/a\u003e from petereon/renovate/black-25.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/926fb4e8773f587417e7a3f453af1641364888e5\"\u003e\u003ccode\u003e926fb4e\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency black to v25\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/df126efc542641c8f7385f8087a19a95ee1615b7\"\u003e\u003ccode\u003edf126ef\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/147\"\u003e#147\u003c/a\u003e from petereon/renovate/pytest-8.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/0eb77250022a166836a4594a489d9c178591234b\"\u003e\u003ccode\u003e0eb7725\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency pytest to v8.4.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/7b9234631ce3510e433fbb59d4c0e829d70fd569\"\u003e\u003ccode\u003e7b92346\u003c/code\u003e\u003c/a\u003e chore: linting code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/531e870193a7cb26ab43370a45d8562cb44d8b15\"\u003e\u003ccode\u003e531e870\u003c/code\u003e\u003c/a\u003e chore: fix weird types\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/dfd9dbc54327c19455197566f7161de08ad3180b\"\u003e\u003ccode\u003edfd9dbc\u003c/code\u003e\u003c/a\u003e docs: adding documentation for global config (\u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/148\"\u003e#148\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/petereon/beaupy/compare/v3.10.1...v3.10.2\"\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.2 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/sigstore/sigstore-python/releases\"\u003esigstore's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003cli\u003etrust: Update embedded TUF root\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1515\"\u003e#1515\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etrust (API): TrustConfig now provides the \u003ccode\u003eproduction()\u003c/code\u003eand \u003ccode\u003estaging()\u003c/code\u003e helpers. Similar methods were removed from\nSigningConfig, TrustedRoot, SigningContext and Issuer. Use TrustConfig everywhere in code base.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1363\"\u003e#1363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etrust (API): support SigningConfig v0.2, remove support for v0.1. The new format now fully defines the\nsigstore instance the client uses. \u003ccode\u003eSigningConfig\u003c/code\u003e class now has methods to return actual clients\n(like RekorClient) instead of just URLs for that sigstore instance. The \u003ccode\u003e--trust-config\u003c/code\u003e cli option now\nexpects the trust config to contain a v0.2 SigningConfig.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1358\"\u003e#1358\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1407\"\u003e#1407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etrust: Support ed25519 keys in trusted root\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1377\"\u003e#1377\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003erekor: resolve circular import of LogEntry\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1458\"\u003e#1458\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erekor: Fix checkpoint signature lookup when there are multiple signatures\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1514\"\u003e#1514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erekor: Fix entry handling so inclusion promise is optional\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1382\"\u003e#1382\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.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\u003cli\u003etrust: Update embedded TUF root\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1515\"\u003e#1515\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etrust (API): TrustConfig now provides the \u003ccode\u003eproduction()\u003c/code\u003eand \u003ccode\u003estaging()\u003c/code\u003e helpers. Similar methods were removed from\nSigningConfig, TrustedRoot, SigningContext and Issuer. Use TrustConfig everywhere in code base.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1363\"\u003e#1363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etrust (API): support SigningConfig v0.2, remove support for v0.1. The new format now fully defines the\nsigstore instance the client uses. \u003ccode\u003eSigningConfig\u003c/code\u003e class now has methods to return actual clients\n(like RekorClient) instead of just URLs for that sigstore instance. The \u003ccode\u003e--trust-config\u003c/code\u003e cli option now\nexpects the trust config to contain a v0.2 SigningConfig.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1358\"\u003e#1358\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1407\"\u003e#1407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etrust: Support ed25519 keys in trusted root\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1377\"\u003e#1377\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003erekor: resolve circular import of LogEntry\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1458\"\u003e#1458\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erekor: Fix checkpoint signature lookup when there are multiple signatures\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1514\"\u003e#1514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erekor: Fix entry handling so inclusion promise is optional\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1382\"\u003e#1382\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/sigstore/sigstore-python/commit/7a9551fe2efd45eb12cb873cfb8857427e33eb5a\"\u003e\u003ccode\u003e7a9551f\u003c/code\u003e\u003c/a\u003e Prepare 4.0.0 release (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1541\"\u003e#1541\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/83feb3d934570174cb7b56bdbfa10d214b3f66f5\"\u003e\u003ccode\u003e83feb3d\u003c/code\u003e\u003c/a\u003e build(deps): bump pyopenssl from 25.2.0 to 25.3.0 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1543\"\u003e#1543\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/3b5632f642a86272faf6121b8ba4d180bbdd99d3\"\u003e\u003ccode\u003e3b5632f\u003c/code\u003e\u003c/a\u003e build(deps): bump cryptography from 45.0.7 to 46.0.1 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1544\"\u003e#1544\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/365af7bcb3668cc0aa4dd3b07b1f3234beffa1ed\"\u003e\u003ccode\u003e365af7b\u003c/code\u003e\u003c/a\u003e build(deps): bump pyopenssl from 25.1.0 to 25.2.0 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1542\"\u003e#1542\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/5fac47707fe60329b2860fe85bf73d2ebffdb5c6\"\u003e\u003ccode\u003e5fac477\u003c/code\u003e\u003c/a\u003e build(deps): update ruff requirement from \u0026lt;0.12.13 to \u0026lt;0.13.1 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1539\"\u003e#1539\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/2265c11592522514bc7989abebd1d09ecc4ba5b7\"\u003e\u003ccode\u003e2265c11\u003c/code\u003e\u003c/a\u003e build(deps): bump github/codeql-action in the actions group (\u003ca h...\n\n_Description has been truncated_","html_url":"https://github.com/repository-service-tuf/repository-service-tuf-cli/pull/910","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/repository-service-tuf%2Frepository-service-tuf-cli/issues/910","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/910/packages"},{"uuid":"2893507894","node_id":"PR_kwDOINe-us6sd202","number":108,"state":"open","title":"build(deps): bump the pipenv group across 1 directory with 31 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":0,"pull_request":true,"closed_at":null,"author_association":"NONE","state_reason":null,"created_at":"2025-10-07T10:41:41.000Z","updated_at":"2025-10-07T10:41:42.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"pipenv","update_count":31,"packages":[{"name":"rich-click","old_version":"1.8.8","new_version":"1.9.2","repository_url":"https://github.com/ewels/rich-click"},{"name":"securesystemslib","old_version":"1.3.0","new_version":"1.3.1","repository_url":"https://github.com/secure-systems-lab/securesystemslib"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"dynaconf","old_version":"3.2.10","new_version":"3.2.11","repository_url":"https://github.com/dynaconf/dynaconf"},{"name":"isort","old_version":"6.0.1","new_version":"6.1.0","repository_url":"https://github.com/PyCQA/isort"},{"name":"sqlalchemy","old_version":"2.0.40","new_version":"2.0.43","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"beaupy","old_version":"3.10.1","new_version":"3.10.2","repository_url":"https://github.com/petereon/beaupy"},{"name":"sigstore","old_version":"3.6.2","new_version":"4.0.0","repository_url":"https://github.com/sigstore/sigstore-python"},{"name":"boto3","old_version":"1.38.5","new_version":"1.40.46","repository_url":"https://github.com/boto/boto3"},{"name":"google-cloud-kms","old_version":"3.4.1","new_version":"3.6.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"azure-keyvault-keys","old_version":"4.10.0","new_version":"4.11.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"prompt-toolkit","old_version":"3.0.51","new_version":"3.0.52","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"setuptools","old_version":"80.0.1","new_version":"80.9.0","repository_url":"https://github.com/pypa/setuptools"},{"name":"pykcs11","old_version":"1.5.17","new_version":"1.5.18","repository_url":"https://github.com/LudovicRousseau/PyKCS11"},{"name":"exceptiongroup","old_version":"1.2.2","new_version":"1.3.0","repository_url":"https://github.com/agronholm/exceptiongroup"},{"name":"black","old_version":"25.1.0","new_version":"25.9.0","repository_url":"https://github.com/psf/black"},{"name":"flake8","old_version":"7.2.0","new_version":"7.3.0","repository_url":"https://github.com/pycqa/flake8"},{"name":"tox","old_version":"4.25.0","new_version":"4.30.3","repository_url":"https://github.com/tox-dev/tox"},{"name":"pytest","old_version":"8.3.5","new_version":"8.4.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"6.1.1","new_version":"7.0.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pytest-xdist","old_version":"3.6.1","new_version":"3.8.0","repository_url":"https://github.com/pytest-dev/pytest-xdist"},{"name":"mypy","old_version":"1.15.0","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"},{"name":"pip","old_version":"25.1","new_version":"25.2","repository_url":"https://github.com/pypa/pip"},{"name":"sphinxcontrib-plantuml","old_version":"0.30","new_version":"0.31","repository_url":"https://github.com/sphinx-contrib/plantuml"},{"name":"build","old_version":"1.2.2.post1","new_version":"1.3.0","repository_url":"https://github.com/pypa/build"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.3.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"bandit","old_version":"1.8.3","new_version":"1.8.6","repository_url":"https://github.com/PyCQA/bandit"},{"name":"types-requests","old_version":"2.32.0.20250328","new_version":"2.32.4.20250913","repository_url":"https://github.com/typeshed-internal/stub_uploader"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pipenv group with 28 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [rich-click](https://github.com/ewels/rich-click) | `1.8.8` | `1.9.2` |\n| [securesystemslib](https://github.com/secure-systems-lab/securesystemslib) | `1.3.0` | `1.3.1` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [dynaconf](https://github.com/dynaconf/dynaconf) | `3.2.10` | `3.2.11` |\n| [isort](https://github.com/PyCQA/isort) | `6.0.1` | `6.1.0` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.40` | `2.0.43` |\n| [beaupy](https://github.com/petereon/beaupy) | `3.10.1` | `3.10.2` |\n| [sigstore](https://github.com/sigstore/sigstore-python) | `3.6.2` | `4.0.0` |\n| [boto3](https://github.com/boto/boto3) | `1.38.5` | `1.40.46` |\n| [google-cloud-kms](https://github.com/googleapis/google-cloud-python) | `3.4.1` | `3.6.0` |\n| [azure-keyvault-keys](https://github.com/Azure/azure-sdk-for-python) | `4.10.0` | `4.11.0` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.51` | `3.0.52` |\n| [setuptools](https://github.com/pypa/setuptools) | `80.0.1` | `80.9.0` |\n| [pykcs11](https://github.com/LudovicRousseau/PyKCS11) | `1.5.17` | `1.5.18` |\n| [exceptiongroup](https://github.com/agronholm/exceptiongroup) | `1.2.2` | `1.3.0` |\n| [black](https://github.com/psf/black) | `25.1.0` | `25.9.0` |\n| [flake8](https://github.com/pycqa/flake8) | `7.2.0` | `7.3.0` |\n| [tox](https://github.com/tox-dev/tox) | `4.25.0` | `4.30.3` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.5` | `8.4.2` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `6.1.1` | `7.0.0` |\n| [pytest-xdist](https://github.com/pytest-dev/pytest-xdist) | `3.6.1` | `3.8.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.18.2` |\n| [pip](https://github.com/pypa/pip) | `25.1` | `25.2` |\n| [sphinxcontrib-plantuml](https://github.com/sphinx-contrib/plantuml) | `0.30` | `0.31` |\n| [build](https://github.com/pypa/build) | `1.2.2.post1` | `1.3.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.3.0` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.8.3` | `1.8.6` |\n| [types-requests](https://github.com/typeshed-internal/stub_uploader) | `2.32.0.20250328` | `2.32.4.20250913` |\n\n\nUpdates `rich-click` from 1.8.8 to 1.9.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ewels/rich-click/releases\"\u003erich-click's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.9.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed legacy Windows rendering\u003c/li\u003e\n\u003cli\u003eFix issue with parent \u003ccode\u003eclick.Group\u003c/code\u003e and child \u003ccode\u003erich_click.RichCommand\u003c/code\u003e error formatter not resolving.\u003c/li\u003e\n\u003cli\u003eAdd headers to tables (by default these are not shown).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.2.dev0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed legacy windows rendering\u003c/li\u003e\n\u003cli\u003eFix issue with parent \u003ccode\u003eclick.Group\u003c/code\u003e and child \u003ccode\u003erich_click.RichCommand\u003c/code\u003e error formatter not resolving.\u003c/li\u003e\n\u003cli\u003eAdd headers to tables (by default these are not shown).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed bug where running the \u003ccode\u003erich-click\u003c/code\u003e CLI on a \u003ccode\u003e@rich_click.argument()\u003c/code\u003e sometimes caused arguments show up in the option panel when it shouldn't.\u003c/li\u003e\n\u003cli\u003eSlightly reduced horizontal padding of the \u003ccode\u003emodern\u003c/code\u003e theme format.\u003c/li\u003e\n\u003cli\u003eFixed Click 8.3 compatibility with rendering defaults in help text.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.0\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\nVersion 1.9.0 deprecates support for a lot of old versions of things:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ePython 3.7 support is removed.\u003c/strong\u003e The minimum supported Python version is 3.8.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eClick 7 support is removed.\u003c/strong\u003e The minimum supported Click version is 8.0.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRich 10 and 11 support is removed.\u003c/strong\u003e The minimum supported Rich version is 12.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\nVersion 1.9.0 introduces a minor breaking change:\nThe \u003ccode\u003eDEFAULT_STRING\u003c/code\u003e, \u003ccode\u003eENVVAR_STRING\u003c/code\u003e, \u003ccode\u003eREQUIRED_STRING\u003c/code\u003e, and \u003ccode\u003eDEPRECATED_STRING\u003c/code\u003e config options are now rendered with \u003ccode\u003eText.from_markup\u003c/code\u003e.\nSo for example, \u003ccode\u003eREQUIRED_STRING = \u0026quot;[required]\u0026quot;\u003c/code\u003e would be rendered as Rich markup.\nYou must now escape the rich markup: \u003ccode\u003eREQUIRED_STRING = \u0026quot;\\\\[required]\u0026quot;\u003c/code\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003eBig changes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eThemes!\u003c/strong\u003e Check them out with \u003ccode\u003erich-click --themes\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTyper support:\u003c/strong\u003e \u003ccode\u003erich-click typer_app --help\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRichPanels\u003c/strong\u003e API introduced. This replaces the \u0026quot;groups\u0026quot; feature going forward (although groups will continue to be supported).\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e@click.option_panel()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e@click.command_panel()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eIDE tab completion support for decorators\u003c/strong\u003e. Now you should no longer need to guess what goes in \u003ccode\u003e@click.option()\u003c/code\u003e or \u003ccode\u003e@click.command(context_settings=...)\u003c/code\u003e etc.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHelp for arguments:\u003c/strong\u003e \u003ccode\u003ehelp=\u003c/code\u003e is now a valid kwarg for \u003ccode\u003e@click.argument()\u003c/code\u003e decorator. See docs for more information.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSmall changes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u0026quot;Deprecated\u0026quot; text properly handled and stylized in all places.\u003c/li\u003e\n\u003cli\u003eCommand aliases: \u003ccode\u003e@cli.command(aliases=[\u0026quot;foo\u0026quot;])\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eImproved \u003ccode\u003erich-click\u003c/code\u003e CLI usability: improved patching and improved script detection+execution.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003econtext_settings={\u0026quot;help_to_stderr\u0026quot;: True}\u003c/code\u003e support.\u003c/li\u003e\n\u003cli\u003eAdded suite of \u003ccode\u003epadding_*\u003c/code\u003e config options to control padding.\n\u003cul\u003e\n\u003cli\u003eBetter newline handling:\n\u003cul\u003e\n\u003cli\u003eUnordered lists create newlines in help text, e.g. \u003ccode\u003e\u0026quot;\\n- foo\\n- bar\u0026quot;\u003c/code\u003e or \u003ccode\u003e\u0026quot;\\n* foo\\n* bar\u0026quot;\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eNewline control in help text with \u003ccode\u003etext_paragraph_linebreaks\u003c/code\u003e config option.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded a few \u003ccode\u003etext_*\u003c/code\u003e config options, including notably \u003ccode\u003etext_kwargs\u003c/code\u003e which can control code styles in Markdown.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- 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/ewels/rich-click/blob/main/CHANGELOG.md\"\u003erich-click's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.9.2 (2025-10-04)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed legacy windows rendering\u003c/li\u003e\n\u003cli\u003eFix issue with parent \u003ccode\u003eclick.Group\u003c/code\u003e and child \u003ccode\u003erich_click.RichCommand\u003c/code\u003e error formatter not resolving.\u003c/li\u003e\n\u003cli\u003eAdd headers to tables (by default these are not shown).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.9.1 (2025-09-20)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed bug where running the \u003ccode\u003erich-click\u003c/code\u003e CLI on a \u003ccode\u003e@rich_click.argument()\u003c/code\u003e sometimes caused arguments show up in the option panel when it shouldn't.\u003c/li\u003e\n\u003cli\u003eSlightly reduced horizontal padding of the \u003ccode\u003emodern\u003c/code\u003e theme format.\u003c/li\u003e\n\u003cli\u003eFixed Click 8.3 compatibility with rendering defaults in help text.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.9.0 (2025-09-16)\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\nVersion 1.9.0 deprecates support for a lot of old versions of things:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ePython 3.7 support is removed.\u003c/strong\u003e The minimum supported Python version is 3.8.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eClick 7 support is removed.\u003c/strong\u003e The minimum supported Click version is 8.0.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRich 10 and 11 support is removed.\u003c/strong\u003e The minimum supported Rich version is 12.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\nVersion 1.9.0 introduces a minor breaking change:\nThe \u003ccode\u003eDEFAULT_STRING\u003c/code\u003e, \u003ccode\u003eENVVAR_STRING\u003c/code\u003e, \u003ccode\u003eREQUIRED_STRING\u003c/code\u003e, and \u003ccode\u003eDEPRECATED_STRING\u003c/code\u003e config options are now rendered with \u003ccode\u003eText.from_markup\u003c/code\u003e.\nSo for example, \u003ccode\u003eREQUIRED_STRING = \u0026quot;[required]\u0026quot;\u003c/code\u003e would be rendered as Rich markup.\nYou must now escape the rich markup: \u003ccode\u003eREQUIRED_STRING = \u0026quot;\\\\[required]\u0026quot;\u003c/code\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003eBig changes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eThemes!\u003c/strong\u003e Check them out with \u003ccode\u003erich-click --themes\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTyper support:\u003c/strong\u003e \u003ccode\u003erich-click typer_app --help\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRichPanels\u003c/strong\u003e API introduced. This replaces the \u0026quot;groups\u0026quot; feature going forward (although groups will continue to be supported).\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e@click.option_panel()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e@click.command_panel()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eIDE tab completion support for decorators\u003c/strong\u003e. Now you should no longer need to guess what goes in \u003ccode\u003e@click.option()\u003c/code\u003e or \u003ccode\u003e@click.command(context_settings=...)\u003c/code\u003e etc.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHelp for arguments:\u003c/strong\u003e \u003ccode\u003ehelp=\u003c/code\u003e is now a valid kwarg for \u003ccode\u003e@click.argument()\u003c/code\u003e decorator. See docs for more information.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSmall changes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u0026quot;Deprecated\u0026quot; text properly handled and stylized in all places.\u003c/li\u003e\n\u003cli\u003eCommand aliases: \u003ccode\u003e@cli.command(aliases=[\u0026quot;foo\u0026quot;])\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eImproved \u003ccode\u003erich-click\u003c/code\u003e CLI usability: improved patching and improved script detection+execution.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003econtext_settings={\u0026quot;help_to_stderr\u0026quot;: True}\u003c/code\u003e support.\u003c/li\u003e\n\u003cli\u003eAdded suite of \u003ccode\u003epadding_*\u003c/code\u003e config options to control padding.\n\u003cul\u003e\n\u003cli\u003eBetter newline handling:\n\u003cul\u003e\n\u003cli\u003eUnordered lists create newlines in help text, e.g. \u003ccode\u003e\u0026quot;\\n- foo\\n- bar\u0026quot;\u003c/code\u003e or \u003ccode\u003e\u0026quot;\\n* foo\\n* bar\u0026quot;\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eNewline control in help text with \u003ccode\u003etext_paragraph_linebreaks\u003c/code\u003e config option.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded a few \u003ccode\u003etext_*\u003c/code\u003e config options, including notably \u003ccode\u003etext_kwargs\u003c/code\u003e which can control code styles in Markdown.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBackend (mostly invisible) changes:\u003c/strong\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/12a50e911c05c6c8c97bfdd48147f999368bc7f5\"\u003e\u003ccode\u003e12a50e9\u003c/code\u003e\u003c/a\u003e Finish testing for 1.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/a2ccfed4946d5a7d677d0b5750617575f9de8c09\"\u003e\u003ccode\u003ea2ccfed\u003c/code\u003e\u003c/a\u003e 1.9.2 (\u003ca href=\"https://redirect.github.com/ewels/rich-click/issues/302\"\u003e#302\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/f041971bbd2ebadcfaed2e66b4e002260bf232eb\"\u003e\u003ccode\u003ef041971\u003c/code\u003e\u003c/a\u003e set date for changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/09b3ece0cf9fefaf98d83b9efd56e27083e6acc5\"\u003e\u003ccode\u003e09b3ece\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ewels/rich-click/issues/296\"\u003e#296\u003c/a\u003e from dwreeves/issue-293\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/164d7c0cb623d1332d43b66dee4fc3b911dd3544\"\u003e\u003ccode\u003e164d7c0\u003c/code\u003e\u003c/a\u003e add 8.3 to tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/c792472a3217d4a371352d1f9567b55287318689\"\u003e\u003ccode\u003ec792472\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ewels/rich-click/issues/295\"\u003e#295\u003c/a\u003e from dwreeves/issue-293\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/2268fc4e197c988f14076a138f797dc564367a47\"\u003e\u003ccode\u003e2268fc4\u003c/code\u003e\u003c/a\u003e fix 8.3 incompatibility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/bb9d72e0104b14629f7101aca01808c07bd5b5b9\"\u003e\u003ccode\u003ebb9d72e\u003c/code\u003e\u003c/a\u003e Generate new screengrabs with rich-codex\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/ff6722289f441cb7c511a2103410b1188a957cbe\"\u003e\u003ccode\u003eff67222\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ewels/rich-click/issues/291\"\u003e#291\u003c/a\u003e from dwreeves/19-extremely-minor-bugfix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/96d7dc02db171b52cec1ac73464a51856fbaecc0\"\u003e\u003ccode\u003e96d7dc0\u003c/code\u003e\u003c/a\u003e update test case\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ewels/rich-click/compare/v1.8.8...v1.9.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `securesystemslib` from 1.3.0 to 1.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/releases\"\u003esecuresystemslib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.3.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/blob/v1.3.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e for details.\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/secure-systems-lab/securesystemslib/blob/main/CHANGELOG.md\"\u003esecuresystemslib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003esecuresystemslib v1.3.1\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAWSSigner: Don't send payload to AWS for signing, send hash only (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1026\"\u003e#1026\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSet Development status classifier to \u0026quot;production/stable\u0026quot; in Python\npackaging (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1030\"\u003e#1030\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternals\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMinor infrastructure changes (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1005\"\u003e#1005\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1013\"\u003e#1013\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/secure-systems-lab/securesystemslib/commit/6f774190b90f0aa9d5d7e077680adbaa29c5cd6c\"\u003e\u003ccode\u003e6f77419\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1030\"\u003e#1030\u003c/a\u003e from jku/release-prep-1.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/b71cc5271a9a7b6898c79c1a12393d90996d5388\"\u003e\u003ccode\u003eb71cc52\u003c/code\u003e\u003c/a\u003e Prepare release 1.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/f6835096a845acf25dc3675105937be2565b9e66\"\u003e\u003ccode\u003ef683509\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1026\"\u003e#1026\u003c/a\u003e from ArkadiuszNitkaSWI/fix-aws-signer\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/97527198c7bf5b75ef9fb8996412df5453995080\"\u003e\u003ccode\u003e9752719\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1027\"\u003e#1027\u003c/a\u003e from secure-systems-lab/dependabot/pip/test-and-lint...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/4226b762bf3333b5947af9cf29ed751afbfd69b9\"\u003e\u003ccode\u003e4226b76\u003c/code\u003e\u003c/a\u003e build(deps): bump the test-and-lint-dependencies group with 4 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/6394e3e467c091a06ee95dad674dec7e991758c8\"\u003e\u003ccode\u003e6394e3e\u003c/code\u003e\u003c/a\u003e Review changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/dee9a831390c9a69c0e66f7c34779e9eea6dcc6d\"\u003e\u003ccode\u003edee9a83\u003c/code\u003e\u003c/a\u003e linter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/07b0fc780d9d1f4c0843ce3e2096e1216814bd06\"\u003e\u003ccode\u003e07b0fc7\u003c/code\u003e\u003c/a\u003e update .gitignore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/e8158a4eb131760714290b9839e3e40f9cd4229c\"\u003e\u003ccode\u003ee8158a4\u003c/code\u003e\u003c/a\u003e Fix AWS signer, allow messages bigger than 4kB\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/e23f855ddecb97d4baddffc068e9591451b9aa72\"\u003e\u003ccode\u003ee23f855\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1023\"\u003e#1023\u003c/a\u003e from secure-systems-lab/dependabot/pip/dependencies-...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/compare/v1.3.0...v1.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.1.8 to 8.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.3.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our \u003ca href=\"https://palletsprojects.com/versions\"\u003eVersion Support Policy\u003c/a\u003e on our website.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.0/\"\u003ehttps://pypi.org/project/click/8.3.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/27\"\u003ehttps://github.com/pallets/click/milestone/27\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: \u003ca href=\"https://redirect.github.com/pallets/click/issues/1992\"\u003e#1992\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2514\"\u003e#2514\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2610\"\u003e#2610\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3024\"\u003e#3024\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2164\"\u003e#2164\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for nargs option in combination with flag option \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2995\"\u003e#2995\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3013\"\u003e#3013\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3023\"\u003e#3023\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in CliRunner.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2939\"\u003e#2939\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.2.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.2.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.2.2/\"\u003ehttps://pypi.org/project/click/8.2.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-2-2\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-2-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/25\"\u003ehttps://github.com/pallets/click/milestone/25\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix reconciliation of \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003etype\u003c/code\u003e parameters for\nflag options, as well as parsing and normalization of environment variables.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/2952\"\u003e#2952\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2956\"\u003e#2956\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typing issue in \u003ccode\u003eBadParameter\u003c/code\u003e and \u003ccode\u003eMissingParameter\u003c/code\u003e exceptions for the\nparameter \u003ccode\u003eparam_hint\u003c/code\u003e that did not allow for a sequence of string where the\nunderlying functino \u003ccode\u003e_join_param_hints\u003c/code\u003e allows for it. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2777\"\u003e#2777\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2990\"\u003e#2990\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse the value of \u003ccode\u003eEnum\u003c/code\u003e choices to render their default value in help\nscreen. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2911\"\u003e#2911\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3004\"\u003e#3004\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix completion for the Z shell (\u003ccode\u003ezsh\u003c/code\u003e) for completion items containing\ncolons. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2703\"\u003e#2703\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2846\"\u003e#2846\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't include envvar in error hint when not configured. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2971\"\u003e#2971\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2972\"\u003e#2972\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.rst\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.3.0\u003c/h2\u003e\n\u003cp\u003eReleased 2025-09-17\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: :issue:\u003ccode\u003e1992\u003c/code\u003e :issue:\u003ccode\u003e2514\u003c/code\u003e :issue:\u003ccode\u003e2610\u003c/code\u003e\n:issue:\u003ccode\u003e3024\u003c/code\u003e :pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. :issue:\u003ccode\u003e2164\u003c/code\u003e\n:pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption :issue:\u003ccode\u003e2813\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. :issue:\u003ccode\u003e2995\u003c/code\u003e :pr:\u003ccode\u003e3013\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e. :pr:\u003ccode\u003e3023\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. :issue:\u003ccode\u003e2447\u003c/code\u003e :pr:\u003ccode\u003e3058\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in CliRunner. :issue:\u003ccode\u003e2939\u003c/code\u003e :pr:\u003ccode\u003e2940\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-07-31\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix reconciliation of \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003etype\u003c/code\u003e parameters for\nflag options, as well as parsing and normalization of environment variables.\n:issue:\u003ccode\u003e2952\u003c/code\u003e :pr:\u003ccode\u003e2956\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix typing issue in \u003ccode\u003eBadParameter\u003c/code\u003e and \u003ccode\u003eMissingParameter\u003c/code\u003e exceptions for the\nparameter \u003ccode\u003eparam_hint\u003c/code\u003e that did not allow for a sequence of string where the\nunderlying function \u003ccode\u003e_join_param_hints\u003c/code\u003e allows for it. :issue:\u003ccode\u003e2777\u003c/code\u003e :pr:\u003ccode\u003e2990\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUse the value of \u003ccode\u003eEnum\u003c/code\u003e choices to render their default value in help\nscreen. Refs :issue:\u003ccode\u003e2911\u003c/code\u003e :pr:\u003ccode\u003e3004\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix completion for the Z shell (\u003ccode\u003ezsh\u003c/code\u003e) for completion items containing\ncolons. :issue:\u003ccode\u003e2703\u003c/code\u003e :pr:\u003ccode\u003e2846\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDon't include envvar in error hint when not configured. :issue:\u003ccode\u003e2971\u003c/code\u003e :pr:\u003ccode\u003e2972\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix a rare race in \u003ccode\u003eclick.testing.StreamMixer\u003c/code\u003e's finalization that manifested\nas a \u003ccode\u003eValueError\u003c/code\u003e on close in a multi-threaded test session.\n:issue:\u003ccode\u003e2993\u003c/code\u003e :pr:\u003ccode\u003e2991\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-20\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/00fadb8904387158ce6e9aa1573be770446895c1\"\u003e\u003ccode\u003e00fadb8\u003c/code\u003e\u003c/a\u003e Release version 8.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/2a0e3ba907927ade6951d5732b775f11b54cb766\"\u003e\u003ccode\u003e2a0e3ba\u003c/code\u003e\u003c/a\u003e testing/CliRunner: Fix regression related to EOF introduced in 262bdf0 (\u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e11a1efc3395e998a1521a0dc35672a799e78d30\"\u003e\u003ccode\u003ee11a1ef\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into fix-cli-runner-prompt-eof-handling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/36deba8a95a2585de1a2aa4475b7f054f52830ac\"\u003e\u003ccode\u003e36deba8\u003c/code\u003e\u003c/a\u003e Forward exception information to resources registered in a context (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/f2cae7ae997cd32311cab3dede4c2b89fe05e191\"\u003e\u003ccode\u003ef2cae7a\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Add summary of PR to changelog for 8.3.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/7c7ec36354f49d1a092cb077fa4881ea4d70ba01\"\u003e\u003ccode\u003e7c7ec36\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Split resource exception handling tests in single and nested\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/92129c552da88ac30b578132031efa4b003ecc46\"\u003e\u003ccode\u003e92129c5\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Added exception forwarding to context tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/555fa9bb37770a6845a98be60b0c84876775552e\"\u003e\u003ccode\u003e555fa9b\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Forward exception data to exit stack when calling \u003ccode\u003e__exit__\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/16fe802a3f96c4c8fa3cd382f1a7577fda0c5321\"\u003e\u003ccode\u003e16fe802\u003c/code\u003e\u003c/a\u003e Add more tests on \u003ccode\u003eEnum\u003c/code\u003e rendering (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/d36de6fc67882f23d7a7d61cd4c0e25e0f88b0ac\"\u003e\u003ccode\u003ed36de6f\u003c/code\u003e\u003c/a\u003e Add more tests on Enum rendering their item's names and not values\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.1.8...8.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `rich` from 14.0.0 to 14.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Textualize/rich/releases\"\u003erich's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eThe Lively Release\u003c/h2\u003e\n\u003cp\u003eLive objects may now be nested. Previously a progress bar inside another progress context would fail. See the changelog below for this and other changes.\u003c/p\u003e\n\u003ch2\u003e[14.1.0] - 2025-06-25\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved \u003ccode\u003etyping_extensions\u003c/code\u003e from runtime dependencies \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3763\"\u003eTextualize/rich#3763\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLive objects (including Progress) may now be nested \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3768\"\u003eTextualize/rich#3768\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded padding property to Syntax which returns a tuple of four integers \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3782\"\u003eTextualize/rich#3782\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed extraction of recursive exceptions \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3772\"\u003eTextualize/rich#3772\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed padding applied to Syntax \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3782\"\u003eTextualize/rich#3782\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003ePanel\u003c/code\u003e title missing the panel background style \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3569\"\u003eTextualize/rich#3569\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eTTY_INTERACTIVE\u003c/code\u003e environment variable to force interactive mode off or on \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3777\"\u003eTextualize/rich#3777\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/Textualize/rich/blob/master/CHANGELOG.md\"\u003erich's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[14.1.0] - 2025-06-25\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved \u003ccode\u003etyping_extensions\u003c/code\u003e from runtime dependencies \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3763\"\u003eTextualize/rich#3763\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLive objects (including Progress) may now be nested \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3768\"\u003eTextualize/rich#3768\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded padding property to Syntax which returns a tuple of four integers \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3782\"\u003eTextualize/rich#3782\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed extraction of recursive exceptions \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3772\"\u003eTextualize/rich#3772\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed padding applied to Syntax \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3782\"\u003eTextualize/rich#3782\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003ePanel\u003c/code\u003e title missing the panel background style \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3569\"\u003eTextualize/rich#3569\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eTTY_INTERACTIVE\u003c/code\u003e environment variable to force interactive mode off or on \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3777\"\u003eTextualize/rich#3777\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/Textualize/rich/commit/2dca1b70359dac61e1bbfb6f14ebe19a5ab79c3d\"\u003e\u003ccode\u003e2dca1b7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3808\"\u003e#3808\u003c/a\u003e from Textualize/bump1410\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/19b6dddd807b887eaaf313174fff3eb2e22cda25\"\u003e\u003ccode\u003e19b6ddd\u003c/code\u003e\u003c/a\u003e version bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/a75a9a9838814cffb68cefe3522fc47c8ddce768\"\u003e\u003ccode\u003ea75a9a9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3807\"\u003e#3807\u003c/a\u003e from Textualize/optimize-options\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/9a08a2d3a983591e2d0d46e4f63558dd8df9e47d\"\u003e\u003ccode\u003e9a08a2d\u003c/code\u003e\u003c/a\u003e optimize size\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/9c9b011187bba772dca57653c9114005b489f005\"\u003e\u003ccode\u003e9c9b011\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3680\"\u003e#3680\u003c/a\u003e from Textualize/willmcgugan-patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/56855a6b81befafa6e978cffed4c1fb389a20df0\"\u003e\u003ccode\u003e56855a6\u003c/code\u003e\u003c/a\u003e Update bug_report.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/fa9ce3ce70c22ea2bb83dbd1f867fe90d1b3f0c5\"\u003e\u003ccode\u003efa9ce3c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3692\"\u003e#3692\u003c/a\u003e from smacke/null-tb-offset-fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/e0c7e96b303e6f3e48818380527129fb21f453f3\"\u003e\u003ccode\u003ee0c7e96\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3783\"\u003e#3783\u003c/a\u003e from Textualize/live-typing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/81b12554b3b15374aa48dae3f6507202bd8fab3e\"\u003e\u003ccode\u003e81b1255\u003c/code\u003e\u003c/a\u003e Self typing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/21b3800894f6a81d3f68a0e34796be67e3ccd39f\"\u003e\u003ccode\u003e21b3800\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3718\"\u003e#3718\u003c/a\u003e from TomJGooding/fix-panel-fix-title-missing-panel-b...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Textualize/rich/compare/v14.0.0...v14.1.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 `dynaconf` from 3.2.10 to 3.2.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dynaconf/dynaconf/releases\"\u003edynaconf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.2.11\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eRelease version 3.2.11\u003c/p\u003e\n\u003cp\u003eShortlog of commits since last release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBruno Rocha (9): \u003ca href=\"https://github.com/rochacbruno\"\u003e\u003ccode\u003e@​rochacbruno\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003efix(cli): handle empty hooks and boolean environments.\u003c/li\u003e\n\u003cli\u003efix: Better way for CLI to find the Django Settings\u003c/li\u003e\n\u003cli\u003efix: windows CI\u003c/li\u003e\n\u003cli\u003efeat: Run CLI as module with \u003ccode\u003epython -m dynaconf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1290\"\u003e#1290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: use sys.argv instead of click.get_os_args (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1292\"\u003e#1292\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: \u003ccode\u003e-k\u003c/code\u003e must exit code 1 when key do not exist (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1293\"\u003e#1293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: envless load file (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1295\"\u003e#1295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: add correct supported python version to 3.2.x\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFabricio Aguiar (1): \u003ca href=\"https://github.com/fao89\"\u003e\u003ccode\u003e@​fao89\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003efix: make raw variables private (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1287\"\u003e#1287\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePedro Brochado (1): \u003ca href=\"https://github.com/pedro-psb\"\u003e\u003ccode\u003e@​pedro-psb\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003edocs: clarification on redis hash title when using custom envvar prefixes (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMilestone \u003ca href=\"https://github.com/dynaconf/dynaconf/milestone/31?closed=1\"\u003ehttps://github.com/dynaconf/dynaconf/milestone/31?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/dynaconf/dynaconf/compare/3.2.10...3.2.11\"\u003ehttps://github.com/dynaconf/dynaconf/compare/3.2.10...3.2.11\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/dynaconf/dynaconf/blob/3.2.11/CHANGELOG.md\"\u003edynaconf's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/releases/tag/3.2.11\"\u003e3.2.11\u003c/a\u003e - 2025-05-06\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd correct supported python version to 3.2.x. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e-k\u003c/code\u003e must exit code 1 when key do not exist (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1293\"\u003e#1293\u003c/a\u003e). \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003euse sys.argv instead of click.get_os_args (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1292\"\u003e#1292\u003c/a\u003e). \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003ewindows CI. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003emake raw variables private (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1287\"\u003e#1287\u003c/a\u003e). \u003cem\u003eBy Fabricio Aguiar\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003eBetter way for CLI to find the Django Settings. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003ehandle empty hooks and boolean environments.. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eenvless load file (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1295\"\u003e#1295\u003c/a\u003e). \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003eRun CLI as module with \u003ccode\u003epython -m dynaconf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1290\"\u003e#1290\u003c/a\u003e). \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eclarification on redis hash title when using custom envvar prefixes (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1273\"\u003e#1273\u003c/a\u003e). \u003cem\u003eBy Pedro Brochado\u003c/em\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/dynaconf/dynaconf/commit/c61da8fd191196c1341bd3d8a8dd895e9cf671ae\"\u003e\u003ccode\u003ec61da8f\u003c/code\u003e\u003c/a\u003e Release version 3.2.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/f8189fb6c130ff4709450e7daebcf1c174aea248\"\u003e\u003ccode\u003ef8189fb\u003c/code\u003e\u003c/a\u003e fix: add correct supported python version to 3.2.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/aeb31b256b436485211466214ba4f5f01a8a8305\"\u003e\u003ccode\u003eaeb31b2\u003c/code\u003e\u003c/a\u003e feat: envless load file (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1295\"\u003e#1295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/4893f4744d2c590069890756ae935059fbc08e2c\"\u003e\u003ccode\u003e4893f47\u003c/code\u003e\u003c/a\u003e fix: \u003ccode\u003e-k\u003c/code\u003e must exit code 1 when key do not exist (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1293\"\u003e#1293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/d55368bb13646b8b7976e641e2df6d4ff2bd7374\"\u003e\u003ccode\u003ed55368b\u003c/code\u003e\u003c/a\u003e fix: use sys.argv instead of click.get_os_args (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1292\"\u003e#1292\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/9a7af916a78c79f23f166b2e1ca077047f1c8cda\"\u003e\u003ccode\u003e9a7af91\u003c/code\u003e\u003c/a\u003e feat: Run CLI as module with \u003ccode\u003epython -m dynaconf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1290\"\u003e#1290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/f772e9fa940d7fd539e1a3d75d3e1902874b8e94\"\u003e\u003ccode\u003ef772e9f\u003c/code\u003e\u003c/a\u003e fix: windows CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/a2460bd65d94ac21a3f5f6d4a0f2ff37982e608f\"\u003e\u003ccode\u003ea2460bd\u003c/code\u003e\u003c/a\u003e fix: make raw variables private (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1287\"\u003e#1287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/da6456e98b78a1bba4c5f0cd8f4cced749ce5861\"\u003e\u003ccode\u003eda6456e\u003c/code\u003e\u003c/a\u003e docs: clarification on redis hash title when using custom envvar prefixes (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1\"\u003e#1\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/e5af61425d279bbbe18a3f83e95dcd0c75f04bd5\"\u003e\u003ccode\u003ee5af614\u003c/code\u003e\u003c/a\u003e fix: Better way for CLI to find the Django Settings\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/dynaconf/dynaconf/compare/3.2.10...3.2.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `isort` from 6.0.1 to 6.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/isort/releases\"\u003eisort's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.1.0\u003c/h2\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate docs discussions channel (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2410\"\u003e#2410\u003c/a\u003e) \u003ca href=\"https://github.com/staticdev\"\u003e\u003ccode\u003e@​staticdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd python 3.14 classifier and badge (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2409\"\u003e#2409\u003c/a\u003e) \u003ca href=\"https://github.com/staticdev\"\u003e\u003ccode\u003e@​staticdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop use of non-standard pkg_resources API (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2405\"\u003e#2405\u003c/a\u003e) \u003ca href=\"https://github.com/dvarrazzo\"\u003e\u003ccode\u003e@​dvarrazzo\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse working isort version in pre-commit example (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2402\"\u003e#2402\u003c/a\u003e) \u003ca href=\"https://github.com/iainelder\"\u003e\u003ccode\u003e@​iainelder\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix typo in _get_files_from_dir_cached test (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2392\"\u003e#2392\u003c/a\u003e) \u003ca href=\"https://github.com/tiltingpenguin\"\u003e\u003ccode\u003e@​tiltingpenguin\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eResolve bandit warnings (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2379\"\u003e#2379\u003c/a\u003e) \u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd tox for cross-platform, parallel test suite execution (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2378\"\u003e#2378\u003c/a\u003e) \u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Project URLs to PyPI Side Panel (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2387\"\u003e#2387\u003c/a\u003e) \u003ca href=\"https://github.com/guillermodotn\"\u003e\u003ccode\u003e@​guillermodotn\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typos (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2376\"\u003e#2376\u003c/a\u003e) \u003ca href=\"https://github.com/co63oc\"\u003e\u003ccode\u003e@​co63oc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:construction_worker: Continuous Integration\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd make bash scripts portable (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2377\"\u003e#2377\u003c/a\u003e) \u003ca href=\"https://github.com/staticdev\"\u003e\u003ccode\u003e@​staticdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:package: Dependencies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 4 to 5 in the github-actions group (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2406\"\u003e#2406\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump astral-sh/setup-uv from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2395\"\u003e#2395\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\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/PyCQA/isort/blob/main/CHANGELOG.md\"\u003eisort's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e6.1.0 October 1 2025\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd python 3.14 classifier and badge (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2409\"\u003e#2409\u003c/a\u003e) \u003ca href=\"https://github.com/staticdev\"\u003e\u003ccode\u003e@​staticdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop use of non-standard pkg_resources API (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2405\"\u003e#2405\u003c/a\u003e) \u003ca href=\"https://github.com/dvarrazzo\"\u003e\u003ccode\u003e@​dvarrazzo\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/PyCQA/isort/commit/ec0efaee4acfce198521e43caa3029b06cedd64a\"\u003e\u003ccode\u003eec0efae\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2410\"\u003e#2410\u003c/a\u003e from PyCQA/docs/discussion\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/8af675ffcbb25dc5b5c2ff52863afc2923a818e2\"\u003e\u003ccode\u003e8af675f\u003c/code\u003e\u003c/a\u003e Update docs discussions channel\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/a03dae897f7e4a2b2eeb01d094b2c112b10ff0b7\"\u003e\u003ccode\u003ea03dae8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2409\"\u003e#2409\u003c/a\u003e from PyCQA/build/py314-classifier\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/2232a26fd15d43ad0fca0e662d311ca4cf0d161e\"\u003e\u003ccode\u003e2232a26\u003c/code\u003e\u003c/a\u003e Add python 3.14 classifier and badge\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/ec48dd7c823bcebf6da93db5eb4921a7808e6bb3\"\u003e\u003ccode\u003eec48dd7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2405\"\u003e#2405\u003c/a\u003e from dvarrazzo/fix/drop-pkg-resources\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/be46cd476d1a61996a6a4469177edf0869df531e\"\u003e\u003ccode\u003ebe46cd4\u003c/code\u003e\u003c/a\u003e refactor: make importlib metadata package import lazy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/18ecd0c3bf0bc7d6eb9bb5b9a72297f172a57663\"\u003e\u003ccode\u003e18ecd0c\u003c/code\u003e\u003c/a\u003e chore: drop branch guarding unsupported Python versions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/1d42e564d9bd1e026e8d635880336dd0528c2c29\"\u003e\u003ccode\u003e1d42e56\u003c/code\u003e\u003c/a\u003e fix: drop use of non-standard pkg_resources API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/0c8fc82fdf1b60065d447f3f7307f01c51d44b01\"\u003e\u003ccode\u003e0c8fc82\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2406\"\u003e#2406\u003c/a\u003e from PyCQA/dependabot/github_actions/github-actions-...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/3478763347707341e3ce729008acc9cf73a0ff35\"\u003e\u003ccode\u003e3478763\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 in the github-actions group\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PyCQA/isort/compare/6.0.1...6.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlalchemy` from 2.0.40 to 2.0.43\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/releases\"\u003esqlalchemy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.0.43\u003c/h1\u003e\n\u003cp\u003eReleased: August 11, 2025\u003c/p\u003e\n\u003ch2\u003eorm\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed issue where using the \u003ccode\u003epost_update\u003c/code\u003e feature would apply incorrect\n\u0026quot;pre-fetched\u0026quot; values to the ORM objects after a multi-row UPDATE process\ncompleted.  These \u0026quot;pre-fetched\u0026quot; values would come from any column that had\nan \u003ccode\u003eColumn.onupdate\u003c/code\u003e callable or a version id generator used by\n\u003ccode\u003eorm.Mapper.version_id_generator\u003c/code\u003e; for a version id generator\nthat delivered random identifiers like timestamps or UUIDs, this incorrect\ndata would lead to a DELETE statement against those same rows to fail in\nthe next step.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12748\"\u003e#12748\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003e_orm.mapped_column.use_existing_column\u003c/code\u003e\nparameter in \u003ccode\u003e_orm.mapped_column()\u003c/code\u003e would not work when the\n\u003ccode\u003e_orm.mapped_column()\u003c/code\u003e is used inside of an \u003ccode\u003eAnnotated\u003c/code\u003e type alias in\npolymorphic inheritance scenarios. The parameter is now properly recognized\nand processed during declarative mapping configuration.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12787\"\u003e#12787\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Improved the implementation of the \u003ccode\u003e_orm.selectin_polymorphic()\u003c/code\u003e\ninheritance loader strategy to properly render the IN expressions using\nchunks of 500 records each, in the same manner as that of the\n\u003ccode\u003e_orm.selectinload()\u003c/code\u003e relationship loader strategy.  Previously, the IN\nexpression would be arbitrarily large, leading to failures on databases\nthat have limits on the size of IN expressions including Oracle Database.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12790\"\u003e#12790\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eengine\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[engine] [usecase]\u003c/strong\u003e Added new parameter \u003ccode\u003ecreate_engine.skip_autocommit_rollback\u003c/code\u003e\nwhich provides for a per-dialect feature of preventing the DBAPI\n\u003ccode\u003e.rollback()\u003c/code\u003e from being called under any circumstances, if the\nconnection is detected as being in \u0026quot;autocommit\u0026quot; mode.   This improves upon\na critical performance issue identified in MySQL dialects where the network\noverhead of the \u003ccode\u003e.rollback()\u003c/code\u003e call remains prohibitive even if autocommit\nmode is set.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12784\"\u003e#12784\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epostgresql\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\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `beaupy` 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/petereon/beaupy/releases\"\u003ebeaupy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.10.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): update dependency flake8 to v7.1.1 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/129\"\u003epetereon/beaupy#129\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency isort to v5.13.2 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/130\"\u003epetereon/beaupy#130\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency mypy to v1.14.1 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/131\"\u003epetereon/beaupy#131\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: adding documentation for global config by \u003ca href=\"https://github.com/petereon\"\u003e\u003ccode\u003e@​petereon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/148\"\u003epetereon/beaupy#148\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency pytest to v8.4.2 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/147\"\u003epetereon/beaupy#147\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency black to v25 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/144\"\u003epetereon/beaupy#144\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency pydoc-markdown to v4.8.2 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/132\"\u003epetereon/beaupy#132\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/petereon/beaupy/compare/v3.10.1...v3.10.2\"\u003ehttps://github.com/petereon/beaupy/compare/v3.10.1...v3.10.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/a2dc15764508c0451ed4dc386f3b0761fe7a9ce2\"\u003e\u003ccode\u003ea2dc157\u003c/code\u003e\u003c/a\u003e chore: bump version from 3.10.1 to 3.10.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/7599e5a43be6893c81612314f410ffa602a15f57\"\u003e\u003ccode\u003e7599e5a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/132\"\u003e#132\u003c/a\u003e from petereon/renovate/pydoc-markdown-4.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/6b2bb33d4fef6f2a607e1f42c873bd92ffc2b0d5\"\u003e\u003ccode\u003e6b2bb33\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency pydoc-markdown to v4.8.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/d2b0cbc3bb6b191816fdef9319a150e9b305ae7f\"\u003e\u003ccode\u003ed2b0cbc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/144\"\u003e#144\u003c/a\u003e from petereon/renovate/black-25.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/926fb4e8773f587417e7a3f453af1641364888e5\"\u003e\u003ccode\u003e926fb4e\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency black to v25\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/df126efc542641c8f7385f8087a19a95ee1615b7\"\u003e\u003ccode\u003edf126ef\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/147\"\u003e#147\u003c/a\u003e from petereon/renovate/pytest-8.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/0eb77250022a166836a4594a489d9c178591234b\"\u003e\u003ccode\u003e0eb7725\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency pytest to v8.4.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/7b9234631ce3510e433fbb59d4c0e829d70fd569\"\u003e\u003ccode\u003e7b92346\u003c/code\u003e\u003c/a\u003e chore: linting code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/531e870193a7cb26ab43370a45d8562cb44d8b15\"\u003e\u003ccode\u003e531e870\u003c/code\u003e\u003c/a\u003e chore: fix weird types\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/dfd9dbc54327c19455197566f7161de08ad3180b\"\u003e\u003ccode\u003edfd9dbc\u003c/code\u003e\u003c/a\u003e docs: adding documentation for global config (\u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/148\"\u003e#148\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/petereon/beaupy/compare/v3.10.1...v3.10.2\"\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.2 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/sigstore/sigstore-python/releases\"\u003esigstore's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003cli\u003etrust: Update embedded TUF root\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1515\"\u003e#1515\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etrust (API): TrustConfig now provides the \u003ccode\u003eproduction()\u003c/code\u003eand \u003ccode\u003estaging()\u003c/code\u003e helpers. Similar methods were removed from\nSigningConfig, TrustedRoot, SigningContext and Issuer. Use TrustConfig everywhere in code base.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1363\"\u003e#1363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etrust (API): support SigningConfig v0.2, remove support for v0.1. The new format now fully defines the\nsigstore instance the client uses. \u003ccode\u003eSigningConfig\u003c/code\u003e class now has methods to return actual clients\n(like RekorClient) instead of just URLs for that sigstore instance. The \u003ccode\u003e--trust-config\u003c/code\u003e cli option now\nexpects the trust config to contain a v0.2 SigningConfig.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1358\"\u003e#1358\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1407\"\u003e#1407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etrust: Support ed25519 keys in trusted root\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1377\"\u003e#1377\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003erekor: resolve circular import of LogEntry\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1458\"\u003e#1458\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erekor: Fix checkpoint signature lookup when there are multiple signatures\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1514\"\u003e#1514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erekor: Fix entry handling so inclusion promise is optional\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1382\"\u003e#1382\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.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\u003cli\u003etrust: Update embedded TUF root\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1515\"\u003e#1515\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etrust (API): TrustConfig now provides the \u003ccode\u003eproduction()\u003c/code\u003eand \u003ccode\u003estaging()\u003c/code\u003e helpers. Similar methods were removed from\nSigningConfig, TrustedRoot, SigningContext and Issuer. Use TrustConfig everywhere in code base.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1363\"\u003e#1363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etrust (API): support SigningConfig v0.2, remove support for v0.1. The new format now fully defines the\nsigstore instance the client uses. \u003ccode\u003eSigningConfig\u003c/code\u003e class now has methods to return actual clients\n(like RekorClient) instead of just URLs for that sigstore instance. The \u003ccode\u003e--trust-config\u003c/code\u003e cli option now\nexpects the trust config to contain a v0.2 SigningConfig.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1358\"\u003e#1358\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1407\"\u003e#1407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etrust: Support ed25519 keys in trusted root\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1377\"\u003e#1377\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003erekor: resolve circular import of LogEntry\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1458\"\u003e#1458\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erekor: Fix checkpoint signature lookup when there are multiple signatures\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1514\"\u003e#1514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erekor: Fix entry handling so inclusion promise is optional\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1382\"\u003e#1382\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/sigstore/sigstore-python/commit/7a9551fe2efd45eb12cb873cfb8857427e33eb5a\"\u003e\u003ccode\u003e7a9551f\u003c/code\u003e\u003c/a\u003e Prepare 4.0.0 release (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1541\"\u003e#1541\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/83feb3d934570174cb7b56bdbfa10d214b3f66f5\"\u003e\u003ccode\u003e83feb3d\u003c/code\u003e\u003c/a\u003e build(deps): bump pyopenssl from 25.2.0 to 25.3.0 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1543\"\u003e#1543\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/3b5632f642a86272faf6121b8ba4d180bbdd99d3\"\u003e\u003ccode\u003e3b5632f\u003c/code\u003e\u003c/a\u003e build(deps): bump cryptography from 45.0.7 to 46.0.1 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1544\"\u003e#1544\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/365af7bcb3668cc0aa4dd3b07b1f3234beffa1ed\"\u003e\u003ccode\u003e365af7b\u003c/code\u003e\u003c/a\u003e build(deps): bump pyopenssl from 25.1.0 to 25.2.0 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1542\"\u003e#1542\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/5fac47707fe60329b2860fe85bf73d2ebffdb5c6\"\u003e\u003ccode\u003e5fac477\u003c/code\u003e\u003c/a\u003e build(deps): update ruff requirement from \u0026lt;0.12.13 to \u0026lt;0.13.1 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1539\"\u003e#1539\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/2265c11592522514bc7989abebd1d09ecc4ba5b7\"\u003e\u003ccode\u003e2265c11\u003c/code\u003e\u003c/a\u003e build(deps): bump github/codeql-action in the actions group (\u003ca hre...\n\n_Description has been truncated_","html_url":"https://github.com/kairoaraujo/repository-service-tuf-cli/pull/108","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/kairoaraujo%2Frepository-service-tuf-cli/issues/108","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/108/packages"}],"issue_packages":[{"old_version":"\u003c4,\u003e=3.0","new_version":"\u003e=3.0,\u003c5","update_type":null,"path":"/python","pr_created_at":"2026-04-27T03:32:00.000Z","version_change":"\u003c4,\u003e=3.0 → \u003e=3.0,\u003c5","issue":{"uuid":"4332904418","node_id":"PR_kwDOSJWqA87V0GnP","number":25,"state":"open","title":"chore(deps-dev): update sigstore requirement from \u003c4,\u003e=3.0 to \u003e=3.0,\u003c5 in /python","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-04-27T03:32:00.000Z","updated_at":"2026-05-02T23:00:12.821Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev): update","packages":[{"name":"sigstore","old_version":"\u003c4,\u003e=3.0","new_version":"\u003e=3.0,\u003c5","repository_url":"https://github.com/sigstore/sigstore-python"}],"path":"/python","ecosystem":"pip"},"body":"Updates the requirements on [sigstore](https://github.com/sigstore/sigstore-python) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sigstore/sigstore-python/releases\"\u003esigstore's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.2.0\u003c/h2\u003e\n\u003cp\u003eThis release fixes a minor security issue in OIDC authentication and a compatibility issue with Fulcio Signed Certificate Timestamps. All users are recommended to upgrade.\u003c/p\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd state validation to OIDC flow to prevent Cross-site request forgery\nduring OIDC authorization\n(\u003ca href=\"https://github.com/sigstore/sigstore-python/security/advisories/GHSA-hm8f-75xx-w2vr\"\u003eGHSA-hm8f-75xx-w2vr\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003everification now ensures that artifact digest documented in bundle and the real digest match\n(this is a bundle consistency check: bundle signature was always verified over real digest)\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1652\"\u003e#1652\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix issue with Signed Certificate Timestamp parsing where extensions\nwere not allowed by sigstore-python\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1657\"\u003e1657\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1659\"\u003e1659\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate supported public key algorithms\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1604\"\u003e#1604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etrust: Update embedded TUF root\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1589\"\u003e#1589\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved support for Python 3.9 as it is end-of-life\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1645\"\u003e#1645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoved unused nonce in Oauth flow\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1649\"\u003e#1649\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/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.2.0]\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd state validation to OIDC flow to prevent Cross-site request forgery\nduring OIDC authorization\n(\u003ca href=\"https://github.com/sigstore/sigstore-python/security/advisories/GHSA-hm8f-75xx-w2vr\"\u003eGHSA-hm8f-75xx-w2vr\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003everification now ensures that artifact digest documented in bundle and the real digest match\n(this is a bundle consistency check: bundle signature was always verified over real digest)\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1652\"\u003e#1652\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix issue with Signed Certificate Timestamp parsing where extensions\nwere not allowed by sigstore-python\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1657\"\u003e1657\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1659\"\u003e1659\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate supported public key algorithms\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1604\"\u003e#1604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etrust: Update embedded TUF root\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1589\"\u003e#1589\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved support for Python 3.9 as it is end-of-life\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1645\"\u003e#1645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoved unused nonce in Oauth flow\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1649\"\u003e#1649\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\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\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/94818e43224db2aed78f3cf066a561cf95982051\"\u003e\u003ccode\u003e94818e4\u003c/code\u003e\u003c/a\u003e Release 4.2 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1670\"\u003e#1670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/5e77497fe8f0b202bdd118949074ec2f20da69aa\"\u003e\u003ccode\u003e5e77497\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/ae9caa77cb3d7ba0d593a88e3d17ee41722f765f\"\u003e\u003ccode\u003eae9caa7\u003c/code\u003e\u003c/a\u003e build(deps-dev): update ruff requirement from \u0026lt;0.14.14 to \u0026lt;0.14.15 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1668\"\u003e#1668\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/b1e5095f07dc75122462309ad283882a10a617b9\"\u003e\u003ccode\u003eb1e5095\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/1669\"\u003e#1669\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/f5feace956ac11b4eae78090857bd0d7580855c2\"\u003e\u003ccode\u003ef5feace\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/1666\"\u003e#1666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/802f96b1d86ed620bb27adf00c924bbc04833d69\"\u003e\u003ccode\u003e802f96b\u003c/code\u003e\u003c/a\u003e build(deps): bump sigstore/sigstore-conformance from 0.0.24 to 0.0.25 in the ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/4ba9ca3d808b06b483e6ac241fe24f31f773202d\"\u003e\u003ccode\u003e4ba9ca3\u003c/code\u003e\u003c/a\u003e build(deps): bump pyasn1 from 0.6.1 to 0.6.2 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1662\"\u003e#1662\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/409fadb7fd1c6fb3465b2c0045a942c64c980a8a\"\u003e\u003ccode\u003e409fadb\u003c/code\u003e\u003c/a\u003e build(deps-dev): update ruff requirement from \u0026lt;0.14.13 to \u0026lt;0.14.14 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1663\"\u003e#1663\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/b1ef51c78b34dbd772ec2a2d8d07ad6a6b4d853d\"\u003e\u003ccode\u003eb1ef51c\u003c/code\u003e\u003c/a\u003e build(deps-dev): update ruff requirement from \u0026lt;0.14.12 to \u0026lt;0.14.13 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1658\"\u003e#1658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/e6cc009700fa2c36f742a04e4552123e4854238f\"\u003e\u003ccode\u003ee6cc009\u003c/code\u003e\u003c/a\u003e Include SCT extension in signature data (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1659\"\u003e#1659\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sigstore/sigstore-python/compare/v3.0.0...v4.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore 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/manav8498/Shadow/pull/25","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/manav8498%2FShadow/issues/25","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/25/packages"}},{"old_version":"3.6.1","new_version":"4.1.0","update_type":"major","path":null,"pr_created_at":"2026-02-09T05:57:37.000Z","version_change":"3.6.1 → 4.1.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":"3.6.6","new_version":"4.2.0","update_type":"major","path":"the pip group","pr_created_at":"2026-02-09T02:34:25.000Z","version_change":"3.6.6 → 4.2.0","issue":{"uuid":"3914148277","node_id":"PR_kwDORLxCwM7CXeMg","number":1,"state":"open","title":"Bump sigstore from 3.6.6 to 4.2.0 in the pip group","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-09T02:34:25.000Z","updated_at":"2026-02-09T02:34:26.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"sigstore","old_version":"3.6.6","new_version":"4.2.0","repository_url":"https://github.com/sigstore/sigstore-python"}],"path":"the pip group","ecosystem":"pip"},"body":"Bumps the pip group with 1 update: [sigstore](https://github.com/sigstore/sigstore-python).\n\nUpdates `sigstore` from 3.6.6 to 4.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sigstore/sigstore-python/releases\"\u003esigstore's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.2.0\u003c/h2\u003e\n\u003cp\u003eThis release fixes a minor security issue in OIDC authentication and a compatibility issue with Fulcio Signed Certificate Timestamps. All users are recommended to upgrade.\u003c/p\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd state validation to OIDC flow to prevent Cross-site request forgery\nduring OIDC authorization\n(\u003ca href=\"https://github.com/sigstore/sigstore-python/security/advisories/GHSA-hm8f-75xx-w2vr\"\u003eGHSA-hm8f-75xx-w2vr\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003everification now ensures that artifact digest documented in bundle and the real digest match\n(this is a bundle consistency check: bundle signature was always verified over real digest)\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1652\"\u003e#1652\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix issue with Signed Certificate Timestamp parsing where extensions\nwere not allowed by sigstore-python\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1657\"\u003e1657\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1659\"\u003e1659\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate supported public key algorithms\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1604\"\u003e#1604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etrust: Update embedded TUF root\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1589\"\u003e#1589\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved support for Python 3.9 as it is end-of-life\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1645\"\u003e#1645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoved unused nonce in Oauth flow\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1649\"\u003e#1649\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\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\u003c!-- 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.2.0]\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd state validation to OIDC flow to prevent Cross-site request forgery\nduring OIDC authorization\n(\u003ca href=\"https://github.com/sigstore/sigstore-python/security/advisories/GHSA-hm8f-75xx-w2vr\"\u003eGHSA-hm8f-75xx-w2vr\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003everification now ensures that artifact digest documented in bundle and the real digest match\n(this is a bundle consistency check: bundle signature was always verified over real digest)\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1652\"\u003e#1652\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix issue with Signed Certificate Timestamp parsing where extensions\nwere not allowed by sigstore-python\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1657\"\u003e1657\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1659\"\u003e1659\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate supported public key algorithms\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1604\"\u003e#1604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etrust: Update embedded TUF root\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1589\"\u003e#1589\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved support for Python 3.9 as it is end-of-life\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1645\"\u003e#1645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoved unused nonce in Oauth flow\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1649\"\u003e#1649\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\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\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/94818e43224db2aed78f3cf066a561cf95982051\"\u003e\u003ccode\u003e94818e4\u003c/code\u003e\u003c/a\u003e Release 4.2 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1670\"\u003e#1670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/5e77497fe8f0b202bdd118949074ec2f20da69aa\"\u003e\u003ccode\u003e5e77497\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/ae9caa77cb3d7ba0d593a88e3d17ee41722f765f\"\u003e\u003ccode\u003eae9caa7\u003c/code\u003e\u003c/a\u003e build(deps-dev): update ruff requirement from \u0026lt;0.14.14 to \u0026lt;0.14.15 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1668\"\u003e#1668\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/b1e5095f07dc75122462309ad283882a10a617b9\"\u003e\u003ccode\u003eb1e5095\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/1669\"\u003e#1669\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/f5feace956ac11b4eae78090857bd0d7580855c2\"\u003e\u003ccode\u003ef5feace\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/1666\"\u003e#1666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/802f96b1d86ed620bb27adf00c924bbc04833d69\"\u003e\u003ccode\u003e802f96b\u003c/code\u003e\u003c/a\u003e build(deps): bump sigstore/sigstore-conformance from 0.0.24 to 0.0.25 in the ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/4ba9ca3d808b06b483e6ac241fe24f31f773202d\"\u003e\u003ccode\u003e4ba9ca3\u003c/code\u003e\u003c/a\u003e build(deps): bump pyasn1 from 0.6.1 to 0.6.2 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1662\"\u003e#1662\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/409fadb7fd1c6fb3465b2c0045a942c64c980a8a\"\u003e\u003ccode\u003e409fadb\u003c/code\u003e\u003c/a\u003e build(deps-dev): update ruff requirement from \u0026lt;0.14.13 to \u0026lt;0.14.14 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1663\"\u003e#1663\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/b1ef51c78b34dbd772ec2a2d8d07ad6a6b4d853d\"\u003e\u003ccode\u003eb1ef51c\u003c/code\u003e\u003c/a\u003e build(deps-dev): update ruff requirement from \u0026lt;0.14.12 to \u0026lt;0.14.13 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1658\"\u003e#1658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/e6cc009700fa2c36f742a04e4552123e4854238f\"\u003e\u003ccode\u003ee6cc009\u003c/code\u003e\u003c/a\u003e Include SCT extension in signature data (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1659\"\u003e#1659\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sigstore/sigstore-python/compare/v3.6.6...v4.2.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=sigstore\u0026package-manager=pip\u0026previous-version=3.6.6\u0026new-version=4.2.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 \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/srsoftwaredev015/release-tools_python/pull/1","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/srsoftwaredev015%2Frelease-tools_python/issues/1","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1/packages"}},{"old_version":"3.6.1","new_version":"4.1.0","update_type":"major","path":null,"pr_created_at":"2026-02-02T05:59:23.000Z","version_change":"3.6.1 → 4.1.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":"4.1.0","new_version":"4.2.0","update_type":"minor","path":"/requirements","pr_created_at":"2026-01-26T22:56:04.000Z","version_change":"4.1.0 → 4.2.0","issue":{"uuid":"3858024745","node_id":"PR_kwDOGj4sTc6_eOMg","number":2198,"state":"closed","title":"chore(deps): bump sigstore from 4.1.0 to 4.2.0 in /requirements","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-01-28T00:21:29.000Z","author_association":null,"state_reason":null,"created_at":"2026-01-26T22:56:04.000Z","updated_at":"2026-01-28T00:21:30.000Z","time_to_close":91525,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"sigstore","old_version":"4.1.0","new_version":"4.2.0","repository_url":"https://github.com/sigstore/sigstore-python"}],"path":"/requirements","ecosystem":"pip"},"body":"Bumps [sigstore](https://github.com/sigstore/sigstore-python) from 4.1.0 to 4.2.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sigstore/sigstore-python/releases\"\u003esigstore's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.2.0\u003c/h2\u003e\n\u003cp\u003eThis release fixes a minor security issue in OIDC authentication and a compatibility issue with Fulcio Signed Certificate Timestamps. All users are recommended to upgrade.\u003c/p\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd state validation to OIDC flow to prevent Cross-site request forgery\nduring OIDC authorization\n(\u003ca href=\"https://github.com/sigstore/sigstore-python/security/advisories/GHSA-hm8f-75xx-w2vr\"\u003eGHSA-hm8f-75xx-w2vr\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003everification now ensures that artifact digest documented in bundle and the real digest match\n(this is a bundle consistency check: bundle signature was always verified over real digest)\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1652\"\u003e#1652\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix issue with Signed Certificate Timestamp parsing where extensions\nwere not allowed by sigstore-python\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1657\"\u003e1657\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1659\"\u003e1659\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate supported public key algorithms\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1604\"\u003e#1604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etrust: Update embedded TUF root\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1589\"\u003e#1589\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved support for Python 3.9 as it is end-of-life\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1645\"\u003e#1645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoved unused nonce in Oauth flow\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1649\"\u003e#1649\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/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.2.0]\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd state validation to OIDC flow to prevent Cross-site request forgery\nduring OIDC authorization\n(\u003ca href=\"https://github.com/sigstore/sigstore-python/security/advisories/GHSA-hm8f-75xx-w2vr\"\u003eGHSA-hm8f-75xx-w2vr\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003everification now ensures that artifact digest documented in bundle and the real digest match\n(this is a bundle consistency check: bundle signature was always verified over real digest)\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1652\"\u003e#1652\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix issue with Signed Certificate Timestamp parsing where extensions\nwere not allowed by sigstore-python\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1657\"\u003e1657\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1659\"\u003e1659\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate supported public key algorithms\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1604\"\u003e#1604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etrust: Update embedded TUF root\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1589\"\u003e#1589\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved support for Python 3.9 as it is end-of-life\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1645\"\u003e#1645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoved unused nonce in Oauth flow\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1649\"\u003e#1649\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/sigstore/sigstore-python/commit/94818e43224db2aed78f3cf066a561cf95982051\"\u003e\u003ccode\u003e94818e4\u003c/code\u003e\u003c/a\u003e Release 4.2 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1670\"\u003e#1670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/5e77497fe8f0b202bdd118949074ec2f20da69aa\"\u003e\u003ccode\u003e5e77497\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/ae9caa77cb3d7ba0d593a88e3d17ee41722f765f\"\u003e\u003ccode\u003eae9caa7\u003c/code\u003e\u003c/a\u003e build(deps-dev): update ruff requirement from \u0026lt;0.14.14 to \u0026lt;0.14.15 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1668\"\u003e#1668\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/b1e5095f07dc75122462309ad283882a10a617b9\"\u003e\u003ccode\u003eb1e5095\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/1669\"\u003e#1669\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/f5feace956ac11b4eae78090857bd0d7580855c2\"\u003e\u003ccode\u003ef5feace\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/1666\"\u003e#1666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/802f96b1d86ed620bb27adf00c924bbc04833d69\"\u003e\u003ccode\u003e802f96b\u003c/code\u003e\u003c/a\u003e build(deps): bump sigstore/sigstore-conformance from 0.0.24 to 0.0.25 in the ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/4ba9ca3d808b06b483e6ac241fe24f31f773202d\"\u003e\u003ccode\u003e4ba9ca3\u003c/code\u003e\u003c/a\u003e build(deps): bump pyasn1 from 0.6.1 to 0.6.2 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1662\"\u003e#1662\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/409fadb7fd1c6fb3465b2c0045a942c64c980a8a\"\u003e\u003ccode\u003e409fadb\u003c/code\u003e\u003c/a\u003e build(deps-dev): update ruff requirement from \u0026lt;0.14.13 to \u0026lt;0.14.14 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1663\"\u003e#1663\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/b1ef51c78b34dbd772ec2a2d8d07ad6a6b4d853d\"\u003e\u003ccode\u003eb1ef51c\u003c/code\u003e\u003c/a\u003e build(deps-dev): update ruff requirement from \u0026lt;0.14.12 to \u0026lt;0.14.13 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1658\"\u003e#1658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/e6cc009700fa2c36f742a04e4552123e4854238f\"\u003e\u003ccode\u003ee6cc009\u003c/code\u003e\u003c/a\u003e Include SCT extension in signature data (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1659\"\u003e#1659\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sigstore/sigstore-python/compare/v4.1.0...v4.2.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=sigstore\u0026package-manager=pip\u0026previous-version=4.1.0\u0026new-version=4.2.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)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/mikeyhodl/warehouse/network/alerts).\n\n\u003c/details\u003e","html_url":"https://github.com/mikeyhodl/warehouse/pull/2198","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikeyhodl%2Fwarehouse/issues/2198","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2198/packages"}},{"old_version":"3.6.5","new_version":"4.2.0","update_type":"major","path":null,"pr_created_at":"2026-01-26T21:36:43.000Z","version_change":"3.6.5 → 4.2.0","issue":{"uuid":"3857769585","node_id":"PR_kwDOBAUWrs6_dWxs","number":338,"state":"open","title":"Bump sigstore from 3.6.5 to 4.2.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":["ezio-melotti"],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-26T21:36:43.000Z","updated_at":"2026-01-26T22:07:40.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"sigstore","old_version":"3.6.5","new_version":"4.2.0","repository_url":"https://github.com/sigstore/sigstore-python"}],"path":null,"ecosystem":"pip"},"body":"Bumps [sigstore](https://github.com/sigstore/sigstore-python) from 3.6.5 to 4.2.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sigstore/sigstore-python/releases\"\u003esigstore's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.2.0\u003c/h2\u003e\n\u003cp\u003eThis release fixes a minor security issue in OIDC authentication and a compatibility issue with Fulcio Signed Certificate Timestamps. All users are recommended to upgrade.\u003c/p\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd state validation to OIDC flow to prevent Cross-site request forgery\nduring OIDC authorization\n(\u003ca href=\"https://github.com/sigstore/sigstore-python/security/advisories/GHSA-hm8f-75xx-w2vr\"\u003eGHSA-hm8f-75xx-w2vr\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003everification now ensures that artifact digest documented in bundle and the real digest match\n(this is a bundle consistency check: bundle signature was always verified over real digest)\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1652\"\u003e#1652\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix issue with Signed Certificate Timestamp parsing where extensions\nwere not allowed by sigstore-python\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1657\"\u003e1657\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1659\"\u003e1659\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate supported public key algorithms\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1604\"\u003e#1604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etrust: Update embedded TUF root\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1589\"\u003e#1589\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved support for Python 3.9 as it is end-of-life\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1645\"\u003e#1645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoved unused nonce in Oauth flow\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1649\"\u003e#1649\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\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\u003c!-- 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.2.0]\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd state validation to OIDC flow to prevent Cross-site request forgery\nduring OIDC authorization\n(\u003ca href=\"https://github.com/sigstore/sigstore-python/security/advisories/GHSA-hm8f-75xx-w2vr\"\u003eGHSA-hm8f-75xx-w2vr\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003everification now ensures that artifact digest documented in bundle and the real digest match\n(this is a bundle consistency check: bundle signature was always verified over real digest)\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1652\"\u003e#1652\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix issue with Signed Certificate Timestamp parsing where extensions\nwere not allowed by sigstore-python\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1657\"\u003e1657\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1659\"\u003e1659\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate supported public key algorithms\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1604\"\u003e#1604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etrust: Update embedded TUF root\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1589\"\u003e#1589\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved support for Python 3.9 as it is end-of-life\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1645\"\u003e#1645\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoved unused nonce in Oauth flow\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1649\"\u003e#1649\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\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\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/94818e43224db2aed78f3cf066a561cf95982051\"\u003e\u003ccode\u003e94818e4\u003c/code\u003e\u003c/a\u003e Release 4.2 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1670\"\u003e#1670\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/5e77497fe8f0b202bdd118949074ec2f20da69aa\"\u003e\u003ccode\u003e5e77497\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/ae9caa77cb3d7ba0d593a88e3d17ee41722f765f\"\u003e\u003ccode\u003eae9caa7\u003c/code\u003e\u003c/a\u003e build(deps-dev): update ruff requirement from \u0026lt;0.14.14 to \u0026lt;0.14.15 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1668\"\u003e#1668\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/b1e5095f07dc75122462309ad283882a10a617b9\"\u003e\u003ccode\u003eb1e5095\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/1669\"\u003e#1669\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/f5feace956ac11b4eae78090857bd0d7580855c2\"\u003e\u003ccode\u003ef5feace\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/1666\"\u003e#1666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/802f96b1d86ed620bb27adf00c924bbc04833d69\"\u003e\u003ccode\u003e802f96b\u003c/code\u003e\u003c/a\u003e build(deps): bump sigstore/sigstore-conformance from 0.0.24 to 0.0.25 in the ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/4ba9ca3d808b06b483e6ac241fe24f31f773202d\"\u003e\u003ccode\u003e4ba9ca3\u003c/code\u003e\u003c/a\u003e build(deps): bump pyasn1 from 0.6.1 to 0.6.2 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1662\"\u003e#1662\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/409fadb7fd1c6fb3465b2c0045a942c64c980a8a\"\u003e\u003ccode\u003e409fadb\u003c/code\u003e\u003c/a\u003e build(deps-dev): update ruff requirement from \u0026lt;0.14.13 to \u0026lt;0.14.14 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1663\"\u003e#1663\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/b1ef51c78b34dbd772ec2a2d8d07ad6a6b4d853d\"\u003e\u003ccode\u003eb1ef51c\u003c/code\u003e\u003c/a\u003e build(deps-dev): update ruff requirement from \u0026lt;0.14.12 to \u0026lt;0.14.13 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1658\"\u003e#1658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/e6cc009700fa2c36f742a04e4552123e4854238f\"\u003e\u003ccode\u003ee6cc009\u003c/code\u003e\u003c/a\u003e Include SCT extension in signature data (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1659\"\u003e#1659\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sigstore/sigstore-python/compare/v3.6.5...v4.2.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=sigstore\u0026package-manager=pip\u0026previous-version=3.6.5\u0026new-version=4.2.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)\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/python/release-tools/network/alerts).\n\n\u003c/details\u003e","html_url":"https://github.com/python/release-tools/pull/338","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/python%2Frelease-tools/issues/338","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/338/packages"}},{"old_version":"3.6.5","new_version":"4.1.0","update_type":"major","path":null,"pr_created_at":"2026-01-13T11:07:19.000Z","version_change":"3.6.5 → 4.1.0","issue":{"uuid":"3808350731","node_id":"PR_kwDOIPxgHc6853KS","number":85,"state":"closed","title":"build(deps): bump the python-deps group across 1 directory with 24 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-01-15T10:41:32.000Z","author_association":null,"state_reason":null,"created_at":"2026-01-13T11:07:19.000Z","updated_at":"2026-01-15T10:41:34.000Z","time_to_close":171253,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python-deps","update_count":24,"packages":[{"name":"redis","old_version":"6.4.0","new_version":"7.1.0","repository_url":"https://github.com/redis/redis-py"},{"name":"dynaconf","old_version":"3.2.11","new_version":"3.2.12","repository_url":"https://github.com/dynaconf/dynaconf"},{"name":"securesystemslib","old_version":"1.3.0","new_version":"1.3.1","repository_url":"https://github.com/secure-systems-lab/securesystemslib"},{"name":"sqlalchemy","old_version":"2.0.43","new_version":"2.0.45","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"psycopg2","old_version":"2.9.10","new_version":"2.9.11","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"alembic","old_version":"1.16.4","new_version":"1.18.0","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"pydantic","old_version":"2.11.7","new_version":"2.12.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"celery","old_version":"5.5.3","new_version":"5.6.2","repository_url":"https://github.com/celery/celery"},{"name":"boto3","old_version":"1.40.16","new_version":"1.42.26","repository_url":"https://github.com/boto/boto3"},{"name":"awswrangler","old_version":"3.12.1","new_version":"3.14.0","repository_url":"https://github.com/aws/aws-sdk-pandas"},{"name":"sigstore","old_version":"3.6.5","new_version":"4.1.0","repository_url":"https://github.com/sigstore/sigstore-python"},{"name":"google-cloud-kms","old_version":"3.5.1","new_version":"3.7.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"tox","old_version":"4.28.4","new_version":"4.34.1","repository_url":"https://github.com/tox-dev/tox"},{"name":"coverage","old_version":"7.10.5","new_version":"7.13.1","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"black","old_version":"25.1.0","new_version":"25.12.0","repository_url":"https://github.com/psf/black"},{"name":"isort","old_version":"6.0.1","new_version":"7.0.0","repository_url":"https://github.com/PyCQA/isort"},{"name":"mypy","old_version":"1.17.1","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"pytest","old_version":"8.4.1","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"6.2.1","new_version":"7.0.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"sphinx-rtd-theme","old_version":"3.0.2","new_version":"3.1.0","repository_url":"https://github.com/readthedocs/sphinx_rtd_theme"},{"name":"sphinxcontrib-plantuml","old_version":"0.30","new_version":"0.31","repository_url":"https://github.com/sphinx-contrib/plantuml"},{"name":"pre-commit","old_version":"4.3.0","new_version":"4.5.1","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"bandit","old_version":"1.8.6","new_version":"1.9.2","repository_url":"https://github.com/PyCQA/bandit"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-deps group with 23 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [redis](https://github.com/redis/redis-py) | `6.4.0` | `7.1.0` |\n| [dynaconf](https://github.com/dynaconf/dynaconf) | `3.2.11` | `3.2.12` |\n| [securesystemslib](https://github.com/secure-systems-lab/securesystemslib) | `1.3.0` | `1.3.1` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.43` | `2.0.45` |\n| [psycopg2](https://github.com/psycopg/psycopg2) | `2.9.10` | `2.9.11` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.16.4` | `1.18.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.7` | `2.12.5` |\n| [celery](https://github.com/celery/celery) | `5.5.3` | `5.6.2` |\n| [boto3](https://github.com/boto/boto3) | `1.40.16` | `1.42.26` |\n| [awswrangler](https://github.com/aws/aws-sdk-pandas) | `3.12.1` | `3.14.0` |\n| [sigstore](https://github.com/sigstore/sigstore-python) | `3.6.5` | `4.1.0` |\n| [google-cloud-kms](https://github.com/googleapis/google-cloud-python) | `3.5.1` | `3.7.0` |\n| [tox](https://github.com/tox-dev/tox) | `4.28.4` | `4.34.1` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.10.5` | `7.13.1` |\n| [black](https://github.com/psf/black) | `25.1.0` | `25.12.0` |\n| [isort](https://github.com/PyCQA/isort) | `6.0.1` | `7.0.0` |\n| [mypy](https://github.com/python/mypy) | `1.17.1` | `1.19.1` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.1` | `9.0.2` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `6.2.1` | `7.0.0` |\n| [sphinx-rtd-theme](https://github.com/readthedocs/sphinx_rtd_theme) | `3.0.2` | `3.1.0` |\n| [sphinxcontrib-plantuml](https://github.com/sphinx-contrib/plantuml) | `0.30` | `0.31` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.3.0` | `4.5.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.8.6` | `1.9.2` |\n\n\nUpdates `redis` from 6.4.0 to 7.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/redis-py/releases\"\u003eredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003ch2\u003e🚀 New Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdding MSETEX command support. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3823\"\u003e#3823\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdding CLAIM option to XREADGROUP command + unit tests (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3825\"\u003e#3825\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eApply routing and response aggregation policies in OSS Cluster mode (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3834\"\u003e#3834\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧪 Experimental Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdding support for CAS/CAD commands. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3837\"\u003e#3837\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdding support for HYBRID search. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3813\"\u003e#3813\u003c/a\u003e \u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3843\"\u003e#3843\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🔥 Breaking changes (in experimental features)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eReplace default health check and failure detector with custom (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3822\"\u003e#3822\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd **options to parse functions for sentinel (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3831\"\u003e#3831\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eGenerating unique command cache key (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3765\"\u003e#3765\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧰 Maintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdding Redis 8.4 RC1 image to test matrix. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3820\"\u003e#3820\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove Python 3.9 support. Add Python 3.14 support. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3814\"\u003e#3814\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSync readme with 7.0.1 and update lib version to latest stable released version - 7.0.1 (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3821\"\u003e#3821\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump rojopolis/spellcheck-github-actions from 0.52.0 to 0.53.0 (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3827\"\u003e#3827\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact from 4 to 5 (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3828\"\u003e#3828\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump github/codeql-action from 3 to 4 (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3829\"\u003e#3829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixing flaky tests (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3833\"\u003e#3833\u003c/a\u003e \u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3838\"\u003e#3838\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate 8.4 RC image tag to 8.4-RC1-pre.2 for pipeline test matrix (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3832\"\u003e#3832\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing f-string when returning an error. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3841\"\u003e#3841\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdding latest 8.4 image to test matrix. Updating the Hybrid VSIM query format to be in sync with spec after srv issue was fixed. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3843\"\u003e#3843\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eExpand cluster READ_COMMANDS with additional read-only commands and reorganize the list of commands by category (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3845\"\u003e#3845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Type Hints for List Command Parameters from str to KeyT (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3848\"\u003e#3848\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanging log level to be debug for failed maintenance notification enablement when enabled='auto' (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3851\"\u003e#3851\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded custom event handler section (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3853\"\u003e#3853\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanging current version to 8.4 as it is already GA (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3854\"\u003e#3854\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWe'd like to thank all the contributors who worked on this release!\n\u003ca href=\"https://github.com/ShubhamKaudewar\"\u003e\u003ccode\u003e@​ShubhamKaudewar\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/matthewwiese\"\u003e\u003ccode\u003e@​matthewwiese\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/peperon\"\u003e\u003ccode\u003e@​peperon\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/vladvildanov\"\u003e\u003ccode\u003e@​vladvildanov\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/petyaslavova\"\u003e\u003ccode\u003e@​petyaslavova\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.0.1\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003cp\u003eThis release adds small fixes related to documentation.\u003c/p\u003e\n\u003ch2\u003e🧰 Maintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd 'multi_database' section to documentation index (313d93f)\u003c/li\u003e\n\u003cli\u003eRevised multi-database client documentation(78df745)\u003c/li\u003e\n\u003cli\u003eAdding info about Multi-database client in README.md (3f7a55e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/f7c1755d732a677e0eb05e74e46520115c087153\"\u003e\u003ccode\u003ef7c1755\u003c/code\u003e\u003c/a\u003e Changing current version to 8.4 as it is already GA (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3854\"\u003e#3854\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/2235cc76d59a009d546e773d959261503ec3568e\"\u003e\u003ccode\u003e2235cc7\u003c/code\u003e\u003c/a\u003e Added custom event handler section (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3853\"\u003e#3853\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/8cc50a5bc9cb972354e17fd9cd8b8542a6f1e4f5\"\u003e\u003ccode\u003e8cc50a5\u003c/code\u003e\u003c/a\u003e Changing log level to be debug for failed maintenance notification enablement...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/d1769a2e2b66c7cd0067358db10db1cc26b2967a\"\u003e\u003ccode\u003ed1769a2\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3612\"\u003e#3612\u003c/a\u003e Generating unique command cache key (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3765\"\u003e#3765\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/b49dce1ff0f38c38a5fb89b3f332e84eae8186cb\"\u003e\u003ccode\u003eb49dce1\u003c/code\u003e\u003c/a\u003e Update Type Hints for List Command Parameters from str to KeyT (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3848\"\u003e#3848\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/46ff0426550d65e51c7686fa0e12e8954d5d1bcd\"\u003e\u003ccode\u003e46ff042\u003c/code\u003e\u003c/a\u003e Expand cluster READ_COMMANDS with additional read-only commands and reorganiz...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/dc476754600e480dd29a16a2290db5a442114b33\"\u003e\u003ccode\u003edc47675\u003c/code\u003e\u003c/a\u003e Updating lib version to 7.1.0 and added note in README that Python 3.9 suppor...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/f026c1e66be68dc18d89e60bd54c5032bd927680\"\u003e\u003ccode\u003ef026c1e\u003c/code\u003e\u003c/a\u003e Adding latest 8.4 image to test matrix. Updating the Hybrid VSIM query format...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/a5ab18fb76522cb1341c81e0032d29df87c85013\"\u003e\u003ccode\u003ea5ab18f\u003c/code\u003e\u003c/a\u003e Adding support for HYBRID search. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3813\"\u003e#3813\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/e6fb50506967dbdd6e8c334190c32651ebea1506\"\u003e\u003ccode\u003ee6fb505\u003c/code\u003e\u003c/a\u003e Adding support for CAS/CAD commands. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3837\"\u003e#3837\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/redis/redis-py/compare/v6.4.0...v7.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `dynaconf` from 3.2.11 to 3.2.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dynaconf/dynaconf/releases\"\u003edynaconf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.2.12\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eIncremental improvment to access performance by \u003ca href=\"https://github.com/pedro-psb\"\u003e\u003ccode\u003e@​pedro-psb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/pull/1304\"\u003edynaconf/dynaconf#1304\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: get method to return Any type. by \u003ca href=\"https://github.com/rochacbruno\"\u003e\u003ccode\u003e@​rochacbruno\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/pull/1314\"\u003edynaconf/dynaconf#1314\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eperf: add lru caching to \u003ccode\u003efind_the_correct_casing\u003c/code\u003e function by \u003ca href=\"https://github.com/pedro-psb\"\u003e\u003ccode\u003e@​pedro-psb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/pull/1326\"\u003edynaconf/dynaconf#1326\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/dynaconf/dynaconf/compare/3.2.11...3.2.12\"\u003ehttps://github.com/dynaconf/dynaconf/compare/3.2.11...3.2.12\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dynaconf/dynaconf/blob/3.2.12/CHANGELOG.md\"\u003edynaconf's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pedro-psb/dynaconf/releases/tag/3.2.12\"\u003e3.2.12\u003c/a\u003e - 2025-10-10\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eget method to return Any type.. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003eremove unnecessary recursive evaluation call on Settings.get. \u003cem\u003eBy Pedro Brochado\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003eimprove performance of settings access in a loop (part 1). \u003cem\u003eBy Pedro Brochado\u003c/em\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/dynaconf/dynaconf/commit/7606f351ac460b15c56e7a538300de4a501c56e7\"\u003e\u003ccode\u003e7606f35\u003c/code\u003e\u003c/a\u003e Release version 3.2.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/da44e5182940299dd90ca3e2a0e0e3c23cb9ebf7\"\u003e\u003ccode\u003eda44e51\u003c/code\u003e\u003c/a\u003e perf: add lru caching to \u003ccode\u003efind_the_correct_casing\u003c/code\u003e function (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1326\"\u003e#1326\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/b75eda0da141bdc29f707f2cb0c29e06b03a72bb\"\u003e\u003ccode\u003eb75eda0\u003c/code\u003e\u003c/a\u003e fix: get method to return Any type.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/4f3df1a47bcb71feddf7565f603e7994c65ede65\"\u003e\u003ccode\u003e4f3df1a\u003c/code\u003e\u003c/a\u003e misc: add some profile/perf scripts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/420acebf64e77ba475df94dfd7d409207e5e239d\"\u003e\u003ccode\u003e420aceb\u003c/code\u003e\u003c/a\u003e refactor: merge \u003cem\u003esafe\u003c/em\u003e{get,copy} into .get and .copy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/18c0c8422dc9651d57c76d1b098ad6fb3f75c09d\"\u003e\u003ccode\u003e18c0c84\u003c/code\u003e\u003c/a\u003e fix: remove unnecessary recursive evaluation call on Settings.get\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/0fde96f2e0b71309e63800ddac8eceda062155a9\"\u003e\u003ccode\u003e0fde96f\u003c/code\u003e\u003c/a\u003e refactor: rewrite decorator as explicit call\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/52efd9ed78d2187550e03a2ae5008661d5e28df9\"\u003e\u003ccode\u003e52efd9e\u003c/code\u003e\u003c/a\u003e Bump to version 3.2.12-dev0\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/dynaconf/dynaconf/compare/3.2.11...3.2.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `securesystemslib` from 1.3.0 to 1.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/releases\"\u003esecuresystemslib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.3.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/blob/v1.3.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e for details.\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/secure-systems-lab/securesystemslib/blob/main/CHANGELOG.md\"\u003esecuresystemslib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003esecuresystemslib v1.3.1\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAWSSigner: Don't send payload to AWS for signing, send hash only (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1026\"\u003e#1026\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSet Development status classifier to \u0026quot;production/stable\u0026quot; in Python\npackaging (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1030\"\u003e#1030\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternals\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMinor infrastructure changes (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1005\"\u003e#1005\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1013\"\u003e#1013\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/secure-systems-lab/securesystemslib/commit/6f774190b90f0aa9d5d7e077680adbaa29c5cd6c\"\u003e\u003ccode\u003e6f77419\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1030\"\u003e#1030\u003c/a\u003e from jku/release-prep-1.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/b71cc5271a9a7b6898c79c1a12393d90996d5388\"\u003e\u003ccode\u003eb71cc52\u003c/code\u003e\u003c/a\u003e Prepare release 1.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/f6835096a845acf25dc3675105937be2565b9e66\"\u003e\u003ccode\u003ef683509\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1026\"\u003e#1026\u003c/a\u003e from ArkadiuszNitkaSWI/fix-aws-signer\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/97527198c7bf5b75ef9fb8996412df5453995080\"\u003e\u003ccode\u003e9752719\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1027\"\u003e#1027\u003c/a\u003e from secure-systems-lab/dependabot/pip/test-and-lint...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/4226b762bf3333b5947af9cf29ed751afbfd69b9\"\u003e\u003ccode\u003e4226b76\u003c/code\u003e\u003c/a\u003e build(deps): bump the test-and-lint-dependencies group with 4 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/6394e3e467c091a06ee95dad674dec7e991758c8\"\u003e\u003ccode\u003e6394e3e\u003c/code\u003e\u003c/a\u003e Review changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/dee9a831390c9a69c0e66f7c34779e9eea6dcc6d\"\u003e\u003ccode\u003edee9a83\u003c/code\u003e\u003c/a\u003e linter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/07b0fc780d9d1f4c0843ce3e2096e1216814bd06\"\u003e\u003ccode\u003e07b0fc7\u003c/code\u003e\u003c/a\u003e update .gitignore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/e8158a4eb131760714290b9839e3e40f9cd4229c\"\u003e\u003ccode\u003ee8158a4\u003c/code\u003e\u003c/a\u003e Fix AWS signer, allow messages bigger than 4kB\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/e23f855ddecb97d4baddffc068e9591451b9aa72\"\u003e\u003ccode\u003ee23f855\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1023\"\u003e#1023\u003c/a\u003e from secure-systems-lab/dependabot/pip/dependencies-...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/compare/v1.3.0...v1.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlalchemy` from 2.0.43 to 2.0.45\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/releases\"\u003esqlalchemy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.0.45\u003c/h1\u003e\n\u003cp\u003eReleased: December 9, 2025\u003c/p\u003e\n\u003ch2\u003eorm\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed issue where calling \u003ccode\u003eMapper.add_property()\u003c/code\u003e within mapper event\nhooks such as \u003ccode\u003eMapperEvents.instrument_class()\u003c/code\u003e,\n\u003ccode\u003eMapperEvents.after_mapper_constructed()\u003c/code\u003e, or\n\u003ccode\u003eMapperEvents.before_mapper_configured()\u003c/code\u003e would raise an\n\u003ccode\u003eAttributeError\u003c/code\u003e because the mapper's internal property collections were\nnot yet initialized. The \u003ccode\u003eMapper.add_property()\u003c/code\u003e method now handles\nearly-stage property additions correctly, allowing properties including\ncolumn properties, deferred columns, and relationships to be added during\nmapper initialization events.  Pull request courtesy G Allajmi.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12858\"\u003e#12858\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed issue in Python 3.14 where dataclass transformation would fail when\na mapped class using \u003ccode\u003eMappedAsDataclass\u003c/code\u003e included a\n\u003ccode\u003erelationship()\u003c/code\u003e referencing a class that was not available at\nruntime (e.g., within a \u003ccode\u003eTYPE_CHECKING\u003c/code\u003e block). This occurred when using\nPython 3.14's \u003ca href=\"https://peps.python.org/pep-0649\"\u003ePEP 649\u003c/a\u003e deferred annotations feature, which is the\ndefault behavior without a \u003ccode\u003efrom __future__ import annotations\u003c/code\u003e\ndirective.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12952\"\u003e#12952\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eexamples\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e[examples] [bug]\u003c/strong\u003e Fixed the \u0026quot;short_selects\u0026quot; performance example where the cache was being\nused in all the examples, making it impossible to compare performance with\nand without the cache.   Less important comparisons like \u0026quot;lambdas\u0026quot; and\n\u0026quot;baked queries\u0026quot; have been removed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003esql\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[sql] [bug]\u003c/strong\u003e Some improvements to the \u003ccode\u003e_sql.ClauseElement.params()\u003c/code\u003e method to\nreplace bound parameters in a query were made, however the ultimate issue\nin \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12915\"\u003e#12915\u003c/a\u003e involving ORM \u003ccode\u003e_orm.aliased()\u003c/code\u003e cannot be fixed fully\nuntil 2.1, where the method is being rewritten to work without relying on\nCore cloned traversal.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12915\"\u003e#12915\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[sql] [bug]\u003c/strong\u003e Fixed issue where using the \u003ccode\u003eColumnOperators.in_()\u003c/code\u003e operator with a\nnested \u003ccode\u003eCompoundSelect\u003c/code\u003e statement (e.g. an \u003ccode\u003eINTERSECT\u003c/code\u003e of\n\u003ccode\u003eUNION\u003c/code\u003e queries) would raise a \u003ccode\u003eNotImplementedError\u003c/code\u003e when the\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psycopg2` from 2.9.10 to 2.9.11\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psycopg/psycopg2/blob/master/NEWS\"\u003epsycopg2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eCurrent release\u003c/h2\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.11\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eAvoid a segfault passing more arguments than placeholders if Python is built\nwith assertions enabled (:ticket:\u003ccode\u003e[#1791](https://github.com/psycopg/psycopg2/issues/1791)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eAdd riscv64 platform binary packages (:ticket:\u003ccode\u003e[#1813](https://github.com/psycopg/psycopg2/issues/1813)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e~psycopg2.errorcodes\u003c/code\u003e map and \u003ccode\u003e~psycopg2.errors\u003c/code\u003e classes updated to\nPostgreSQL 18.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.8.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.10\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.13.\u003c/li\u003e\n\u003cli\u003eReceive notifications on commit (:ticket:\u003ccode\u003e[#1728](https://github.com/psycopg/psycopg2/issues/1728)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e~psycopg2.errorcodes\u003c/code\u003e map and \u003ccode\u003e~psycopg2.errors\u003c/code\u003e classes updated to\nPostgreSQL 17.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.7.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.9\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.12.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.6.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.8\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWheel package bundled with PostgreSQL 16 libpq in order to add support for\nrecent features, such as \u003ccode\u003esslcertmode\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.7\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix propagation of exceptions raised during module initialization\n(:ticket:\u003ccode\u003e[#1598](https://github.com/psycopg/psycopg2/issues/1598)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix building when pg_config returns an empty string (:ticket:\u003ccode\u003e[#1599](https://github.com/psycopg/psycopg2/issues/1599)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eWheel package bundled with OpenSSL 1.1.1v.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.6\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/psycopg/psycopg2/commit/fd9ae8cad2bcfc3e7e9410e7b6f07cda8f4f05ec\"\u003e\u003ccode\u003efd9ae8c\u003c/code\u003e\u003c/a\u003e chore: bump to version 2.9.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/d923840546942534f0956d9202f914fd9feac5fd\"\u003e\u003ccode\u003ed923840\u003c/code\u003e\u003c/a\u003e chore: update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/d42dc7169d3cd93517e282e9ef5dc2a2b40650a2\"\u003e\u003ccode\u003ed42dc71\u003c/code\u003e\u003c/a\u003e Merge branch 'fix-1791'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/4fde6560c32f06ad1304404c9f7f86148dcc4be0\"\u003e\u003ccode\u003e4fde656\u003c/code\u003e\u003c/a\u003e fix: avoid failed assert passing more arguments than placeholders\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/8308c19d6af0d904b313997539ed33415990a74e\"\u003e\u003ccode\u003e8308c19\u003c/code\u003e\u003c/a\u003e fix: drop warning about the use of deprecated PyWeakref_GetObject function\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/1a1eabf098a3374409bb2ab4b594777b900f396d\"\u003e\u003ccode\u003e1a1eabf\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/github-script from 7 to 8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/897af8b38beda851d7257dfc525129e37c0ec9e0\"\u003e\u003ccode\u003e897af8b\u003c/code\u003e\u003c/a\u003e build(deps): bump peter-evans/repository-dispatch from 3 to 4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/ceefd305117113ca10e383a626e87ba0796f3638\"\u003e\u003ccode\u003eceefd30\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/checkout from 4 to 5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/4dc585430cabe94cee96c5a9de0265d0f55370f1\"\u003e\u003ccode\u003e4dc5854\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/setup-python from 5 to 6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/1945788dcf6172bb1b9328ebc3587ccf0e6a659c\"\u003e\u003ccode\u003e1945788\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg2/issues/1802\"\u003e#1802\u003c/a\u003e from edgarrmondragon/cp314-wheels\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psycopg/psycopg2/compare/2.9.10...2.9.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `alembic` from 1.16.4 to 1.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/alembic/releases\"\u003ealembic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.18.0\u003c/h1\u003e\n\u003cp\u003eReleased: January 9, 2026\u003c/p\u003e\n\u003ch2\u003efeature\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[feature] [operations]\u003c/strong\u003e When alembic is run in \u0026quot;verbose\u0026quot; mode, alembic now logs a message to\nindicate from which file is used to load the configuration.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1737\"\u003e#1737\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[feature] [autogenerate]\u003c/strong\u003e Autogenerate reflection sweeps now use the \u0026quot;bulk\u0026quot; inspector methods\nintroduced in SQLAlchemy 2.0, which for selected dialects including\nPostgreSQL and Oracle use batched queries to reflect whole collections of\ntables using O(1) queries rather than O(N).\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1771\"\u003e#1771\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[feature] [autogenerate]\u003c/strong\u003e Release 1.18.0 introduces a plugin system that allows for automatic\nloading of third-party extensions as well as configurable autogenerate\ncompare functionality on a per-environment basis.\u003c/p\u003e\n\u003cp\u003eThe \u003ccode\u003ePlugin\u003c/code\u003e class provides a common interface for extensions that\nregister handlers among Alembic's existing extension points such as\n\u003ccode\u003eOperations.register_operation()\u003c/code\u003e and\n\u003ccode\u003eOperations.implementation_for()\u003c/code\u003e. A new interface for registering\nautogenerate comparison handlers,\n\u003ccode\u003ePlugin.add_autogenerate_comparator()\u003c/code\u003e, provides for autogenerate\ncompare functionality that may be custom-configured on a per-environment\nbasis using the new\n\u003ccode\u003eEnvironmentContext.configure.autogenerate_plugins\u003c/code\u003e parameter.\u003c/p\u003e\n\u003cp\u003eThe change does not impact well known Alembic add-ons such as\n\u003ccode\u003ealembic-utils\u003c/code\u003e, which continue to work as before; however, such add-ons\nhave the option to provide plugin entrypoints going forward.\u003c/p\u003e\n\u003cp\u003eAs part of this change, Alembic's autogenerate compare functionality is\nreorganized into a series of internal plugins under the\n\u003ccode\u003ealembic.autogenerate\u003c/code\u003e namespace, which may be individually or\ncollectively identified for inclusion and/or exclusion within the\n\u003ccode\u003eEnvironmentContext.configure()\u003c/code\u003e call using a new parameter\n\u003ccode\u003eEnvironmentContext.configure.autogenerate_plugins\u003c/code\u003e. This\nparameter is also where third party comparison plugins may also be\nindicated.\u003c/p\u003e\n\u003cp\u003eSee \u003ccode\u003ealembic.plugins.toplevel\u003c/code\u003e for complete documentation on\nthe new \u003ccode\u003ePlugin\u003c/code\u003e class as well as autogenerate-specific usage\ninstructions.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/alembic/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.11.7 to 2.12.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.12.5 2025-11-26\u003c/h2\u003e\n\u003ch2\u003ev2.12.5 (2025-11-26)\u003c/h2\u003e\n\u003cp\u003eThis is the fifth 2.12 patch release, addressing an issue with the \u003ccode\u003eMISSING\u003c/code\u003e sentinel and providing several documentation improvements.\u003c/p\u003e\n\u003cp\u003eThe next 2.13 minor release will be published in a couple weeks, and will include a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature addressing\nthe remaining unexpected changes to the \u003cem\u003eserialize as any\u003c/em\u003e behavior.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix pickle error when using \u003ccode\u003emodel_construct()\u003c/code\u003e on a model with \u003ccode\u003eMISSING\u003c/code\u003e as a default value by \u003ca href=\"https://github.com/ornariece\"\u003e\u003ccode\u003e@​ornariece\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12522\"\u003e#12522\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSeveral updates to the documentation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.4...v2.12.5\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.12.4...v2.12.5\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.12.4 2025-11-05\u003c/h2\u003e\n\u003ch2\u003ev2.12.4 (2025-11-05)\u003c/h2\u003e\n\u003cp\u003eThis is the fourth 2.12 patch release, fixing more regressions, and reverting a change in the \u003ccode\u003ebuild()\u003c/code\u003e method\nof the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis patch release also fixes an issue with the serialization of IP address types, when \u003ccode\u003eserialize_as_any\u003c/code\u003e is used. The next patch release\nwill try to address the remaining issues with \u003cem\u003eserialize as any\u003c/em\u003e behavior by introducing a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature, that\nshould be used in most cases in place of \u003cem\u003eserialize as any\u003c/em\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with forward references in parent \u003ccode\u003eTypedDict\u003c/code\u003e classes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12427\"\u003e#12427\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis issue is only relevant on Python 3.14 and greater.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eExclude fields with \u003ccode\u003eexclude_if\u003c/code\u003e from JSON Schema required fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12430\"\u003e#12430\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRevert URL percent-encoding of credentials in the \u003ccode\u003ebuild()\u003c/code\u003e method of the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1833\"\u003epydantic-core#1833\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis was initially considered as a bugfix, but caused regressions and as such was fully reverted. The next release will include\nan opt-in option to percent-encode components of the URL.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd type inference for IP address types by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1868\"\u003epydantic-core#1868\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThe 2.12 changes to the \u003ccode\u003eserialize_as_any\u003c/code\u003e behavior made it so that IP address types could not properly serialize to JSON.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid getting default values from defaultdict by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1853\"\u003epydantic-core#1853\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis fixes a subtle regression in the validation behavior of the \u003ca href=\"https://docs.python.org/3/library/collections.html#collections.defaultdict\"\u003e\u003ccode\u003ecollections.defaultdict\u003c/code\u003e\u003c/a\u003e\ntype.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with field serializers on nested typed dictionaries by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1879\"\u003epydantic-core#1879\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd more \u003ccode\u003epydantic-core\u003c/code\u003e builds for the three-threaded version of Python 3.14 by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1864\"\u003epydantic-core#1864\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.3...v2.12.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.12.3...v2.12.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.12.3 2025-10-17\u003c/h2\u003e\n\u003ch2\u003ev2.12.3 (2025-10-17)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThis is the third 2.13 patch release, fixing issues related to the \u003ccode\u003eFieldInfo\u003c/code\u003e class, and reverting a change to the supported \u003ca href=\"https://docs.pydantic.dev/latest/concepts/validators/#model-validators\"\u003e\u003cem\u003eafter\u003c/em\u003e model validator\u003c/a\u003e function signatures.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.12.5 (2025-11-26)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.5\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis is the fifth 2.12 patch release, addressing an issue with the \u003ccode\u003eMISSING\u003c/code\u003e sentinel and providing several documentation improvements.\u003c/p\u003e\n\u003cp\u003eThe next 2.13 minor release will be published in a couple weeks, and will include a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature addressing\nthe remaining unexpected changes to the \u003cem\u003eserialize as any\u003c/em\u003e behavior.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix pickle error when using \u003ccode\u003emodel_construct()\u003c/code\u003e on a model with \u003ccode\u003eMISSING\u003c/code\u003e as a default value by \u003ca href=\"https://github.com/ornariece\"\u003e\u003ccode\u003e@​ornariece\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12522\"\u003e#12522\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSeveral updates to the documentation by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.12.4 (2025-11-05)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis is the fourth 2.12 patch release, fixing more regressions, and reverting a change in the \u003ccode\u003ebuild()\u003c/code\u003e method\nof the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis patch release also fixes an issue with the serialization of IP address types, when \u003ccode\u003eserialize_as_any\u003c/code\u003e is used. The next patch release\nwill try to address the remaining issues with \u003cem\u003eserialize as any\u003c/em\u003e behavior by introducing a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature, that\nshould be used in most cases in place of \u003cem\u003eserialize as any\u003c/em\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with forward references in parent \u003ccode\u003eTypedDict\u003c/code\u003e classes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12427\"\u003e#12427\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis issue is only relevant on Python 3.14 and greater.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eExclude fields with \u003ccode\u003eexclude_if\u003c/code\u003e from JSON Schema required fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12430\"\u003e#12430\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRevert URL percent-encoding of credentials in the \u003ccode\u003ebuild()\u003c/code\u003e method\nof the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in\n\u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1833\"\u003epydantic-core#1833\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis was initially considered as a bugfix, but caused regressions and as such was fully reverted. The next release will include\nan opt-in option to percent-encode components of the URL.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd type inference for IP address types by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1868\"\u003epydantic-core#1868\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThe 2.12 changes to the \u003ccode\u003eserialize_as_any\u003c/code\u003e behavior made it so that IP address types could not properly serialize to JSON.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid getting default values from defaultdict by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1853\"\u003epydantic-core#1853\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis fixes a subtle regression in the validation behavior of the \u003ca href=\"https://docs.python.org/3/library/collections.html#collections.defaultdict\"\u003e\u003ccode\u003ecollections.defaultdict\u003c/code\u003e\u003c/a\u003e\ntype.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with field serializers on nested typed dictionaries by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1879\"\u003epydantic-core#1879\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd more \u003ccode\u003epydantic-core\u003c/code\u003e builds for the three-threaded version of Python 3.14 by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1864\"\u003epydantic-core#1864\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.12.3 (2025-10-17)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.3\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/bd2d0dd0137dfa1a8fdff2529b9dfb1547980150\"\u003e\u003ccode\u003ebd2d0dd\u003c/code\u003e\u003c/a\u003e Prepare release v2.12.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7d0302ec7ec2cf115de3450a615522875bdd8b56\"\u003e\u003ccode\u003e7d0302e\u003c/code\u003e\u003c/a\u003e Document security implications when using \u003ccode\u003ecreate_model()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/e9ef980def726b6f59b6c495ddc9dc259a0228db\"\u003e\u003ccode\u003ee9ef980\u003c/code\u003e\u003c/a\u003e Fix typo in Standard Library Types documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/f2c20c00c265a31a13c48f9bae923a87c829952e\"\u003e\u003ccode\u003ef2c20c0\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003epydantic-docs\u003c/code\u003e dev dependency, make use of versioning blocks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a76c1aa26f2d64a3fd080ac515d80832689197e8\"\u003e\u003ccode\u003ea76c1aa\u003c/code\u003e\u003c/a\u003e Update documentation about JSON Schema\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/8cbc72ca489891e574fba45238ee8bd4f8e719a2\"\u003e\u003ccode\u003e8cbc72c\u003c/code\u003e\u003c/a\u003e Add documentation about custom \u003ccode\u003e__init__()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/99eba599069da137b3f708ffa74627f2b456ba73\"\u003e\u003ccode\u003e99eba59\u003c/code\u003e\u003c/a\u003e Add additional test for \u003ccode\u003eFieldInfo.get_default()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/c71076988e507ea93844c77c3bf0bbb85a5716af\"\u003e\u003ccode\u003ec710769\u003c/code\u003e\u003c/a\u003e Special case \u003ccode\u003eMISSING\u003c/code\u003e sentinel in \u003ccode\u003esmart_deepcopy()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/20a9d771c210fd77d52366ac923258c4c199727f\"\u003e\u003ccode\u003e20a9d77\u003c/code\u003e\u003c/a\u003e Do not delete mock validator/serializer in \u003ccode\u003erebuild_dataclass()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/c86515a3a8f2120148fab2eaedd3bc45925779d0\"\u003e\u003ccode\u003ec86515a\u003c/code\u003e\u003c/a\u003e Update parts of the model and \u003ccode\u003erevalidate_instances\u003c/code\u003e documentation\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.11.7...v2.12.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `celery` 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's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.6.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix recursive WorkController instantiation in DjangoWorkerFixup + AttributeError when pool_cls is a string by \u003ca href=\"https://github.com/bruunotrindade\"\u003e\u003ccode\u003e@​bruunotrindade\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10045\"\u003ecelery/celery#10045\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBugfix: Revoked tasks now immediately update backend status to REVOKED by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9869\"\u003ecelery/celery#9869\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for release: v5.6.2 by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10049\"\u003ecelery/celery#10049\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bruunotrindade\"\u003e\u003ccode\u003e@​bruunotrindade\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10045\"\u003ecelery/celery#10045\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/celery/celery/compare/v5.6.1...v5.6.2\"\u003ehttps://github.com/celery/celery/compare/v5.6.1...v5.6.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev5.6.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix Redis Sentinel ACL authentication support by \u003ca href=\"https://github.com/anthonykuzmich7\"\u003e\u003ccode\u003e@​anthonykuzmich7\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10013\"\u003ecelery/celery#10013\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix: Broker heartbeats not sent during graceful shutdown by \u003ca href=\"https://github.com/weetster\"\u003e\u003ccode\u003e@​weetster\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9986\"\u003ecelery/celery#9986\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs \u003ca href=\"https://redirect.github.com/celery/celery/issues/5410\"\u003e#5410\u003c/a\u003e -- Document confirm_publish broker transport option by \u003ca href=\"https://github.com/JaeHyuckSa\"\u003e\u003ccode\u003e@​JaeHyuckSa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10016\"\u003ecelery/celery#10016\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eclose DB pools only in prefork mode by \u003ca href=\"https://github.com/petrprikryl\"\u003e\u003ccode\u003e@​petrprikryl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10020\"\u003ecelery/celery#10020\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix: Avoid unnecessary Django database connection creation during cleanup by \u003ca href=\"https://github.com/snopoke\"\u003e\u003ccode\u003e@​snopoke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10015\"\u003ecelery/celery#10015\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ereliable prefork detection by \u003ca href=\"https://github.com/petrprikryl\"\u003e\u003ccode\u003e@​petrprikryl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10023\"\u003ecelery/celery#10023\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebetter coverage by \u003ca href=\"https://github.com/petrprikryl\"\u003e\u003ccode\u003e@​petrprikryl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10029\"\u003ecelery/celery#10029\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocs: clarify \u003ccode\u003eresult_extended\u003c/code\u003e vs periodic task metadata and show \u003ccode\u003eheaders[\u0026quot;periodic_task_name\u0026quot;]\u003c/code\u003e example by \u003ca href=\"https://github.com/SpaceShaman\"\u003e\u003ccode\u003e@​SpaceShaman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10030\"\u003ecelery/celery#10030\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop importing pytest_subtests by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10032\"\u003ecelery/celery#10032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOnly use exceptiongroup backport for Python \u0026lt; 3.11 by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10033\"\u003ecelery/celery#10033\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for release: v5.6.1 by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10037\"\u003ecelery/celery#10037\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthonykuzmich7\"\u003e\u003ccode\u003e@​anthonykuzmich7\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10013\"\u003ecelery/celery#10013\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/weetster\"\u003e\u003ccode\u003e@​weetster\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/9986\"\u003ecelery/celery#9986\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JaeHyuckSa\"\u003e\u003ccode\u003e@​JaeHyuckSa\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10016\"\u003ecelery/celery#10016\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/snopoke\"\u003e\u003ccode\u003e@​snopoke\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10015\"\u003ecelery/celery#10015\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SpaceShaman\"\u003e\u003ccode\u003e@​SpaceShaman\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10030\"\u003ecelery/celery#10030\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/celery/celery/compare/v5.6.0...v5.6.1\"\u003ehttps://github.com/celery/celery/compare/v5.6.0...v5.6.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev5.6.0\u003c/h2\u003e\n\u003cp\u003eCelery v5.6.0 is now available.\u003c/p\u003e\n\u003ch2\u003eKey Highlights\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://docs.celeryq.dev/en/stable/history/whatsnew-5.6.html\"\u003eWhat's new in Celery 5.6\u003c/a\u003e for a complete overview or read the main highlights below.\u003c/p\u003e\n\u003ch3\u003ePython 3.9 Minimum Version\u003c/h3\u003e\n\u003cp\u003eCelery 5.6.0 drops support for Python 3.8 (EOL). The minimum required Python version is now 3.9. Users still on Python 3.8 must upgrade their Python version before upgrading to Celery 5.6.0.\u003c/p\u003e\n\u003cp\u003eAdditionally, this release includes initial support for Python 3.14.\u003c/p\u003e\n\u003ch3\u003eSQS: Reverted to \u003ccode\u003epycurl\u003c/code\u003e from \u003ccode\u003eurllib3\u003c/code\u003e\u003c/h3\u003e\n\u003cp\u003eThe switch from \u003ccode\u003epycurl\u003c/code\u003e to \u003ccode\u003eurllib3\u003c/code\u003e for the SQS transport (introduced in Celery 5.5.0 via Kombu) has been reverted due to critical issues affecting SQS users.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/celery/celery/blob/main/Changelog.rst\"\u003ecelery's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e5.6.2\u003c/h1\u003e\n\u003cp\u003e:release-date: 2026-01-04\n:release-by: Tomer Nosrati\u003c/p\u003e\n\u003cp\u003eWhat's Changed\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n- Fix recursive WorkController instantiation in DjangoWorkerFixup + AttributeError when pool_cls is a string ([#10045](https://github.com/celery/celery/issues/10045))\n- Bugfix: Revoked tasks now immediately update backend status to REVOKED ([#9869](https://github.com/celery/celery/issues/9869))\n- Prepare for release: v5.6.2 ([#10049](https://github.com/celery/celery/issues/10049))\n\u003cp\u003e.. _version-5.6.1:\u003c/p\u003e\n\u003ch1\u003e5.6.1\u003c/h1\u003e\n\u003cp\u003e:release-date: 2025-12-29\n:release-by: Tomer Nosrati\u003c/p\u003e\n\u003cp\u003eWhat's Changed\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix Redis Sentinel ACL authentication support (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10013\"\u003e#10013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix: Broker heartbeats not sent during graceful shutdown (\u003ca href=\"https://redirect.github.com/celery/celery/issues/9986\"\u003e#9986\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs \u003ca href=\"https://redirect.github.com/celery/celery/issues/5410\"\u003e#5410\u003c/a\u003e -- Document confirm_publish broker transport option (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10016\"\u003e#10016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eclose DB pools only in prefork mode (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10020\"\u003e#10020\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix: Avoid unnecessary Django database connection creation during cleanup (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10015\"\u003e#10015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereliable prefork detection (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10023\"\u003e#10023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ebetter coverage (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10029\"\u003e#10029\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocs: clarify \u003ccode\u003eresult_extended\u003c/code\u003e vs periodic task metadata and show \u003ccode\u003eheaders[\u0026quot;periodic_task_name\u0026quot;]\u003c/code\u003e example (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10030\"\u003e#10030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStop importing pytest_subtests (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10032\"\u003e#10032\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOnly use exceptiongroup backport for Python \u0026lt; 3.11 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10033\"\u003e#10033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrepare for release: v5.6.1 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10037\"\u003e#10037\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _version-5.6.0:\u003c/p\u003e\n\u003ch1\u003e5.6.0\u003c/h1\u003e\n\u003cp\u003e:release-date: 2025-11-30\n:release-by: Tomer Nosrati\u003c/p\u003e\n\u003cp\u003eCelery v5.6.0 is now available.\u003c/p\u003e\n\u003cp\u003eKey Highlights\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nSee :ref:`whatsnew-5.6` for a complete overview or read the main highlights below.\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/6a43c846f183ef0cbade24f4b9a8f7a6ea113b44\"\u003e\u003ccode\u003e6a43c84\u003c/code\u003e\u003c/a\u003e Prepare for release: v5.6.2 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10049\"\u003e#10049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/333a82f746734151c5cbe848916085455b0a3748\"\u003e\u003ccode\u003e333a82f\u003c/code\u003e\u003c/a\u003e Bugfix: Revoked tasks now immediately update backend status to REVOKED (\u003ca href=\"https://redirect.github.com/celery/celery/issues/9869\"\u003e#9869\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/9d6ab110d947270c4edf0b42454266d2954e653d\"\u003e\u003ccode\u003e9d6ab11\u003c/code\u003e\u003c/a\u003e Fix recursive WorkController instantiation in DjangoWorkerFixup + AttributeEr...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/21dbc73f81d2fae058de49e665afaa1cd92da5c0\"\u003e\u003ccode\u003e21dbc73\u003c/code\u003e\u003c/a\u003e Prepare for release: v5.6.1 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10037\"\u003e#10037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/ba20bed7723c684d12ddd62d6a7c0c0d901b3351\"\u003e\u003ccode\u003eba20bed\u003c/code\u003e\u003c/a\u003e Only use exceptiongroup backport for Python \u0026lt; 3.11 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10033\"\u003e#10033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/21675299bc2d10c648448ec5221136e07c1eec1a\"\u003e\u003ccode\u003e2167529\u003c/code\u003e\u003c/a\u003e Stop importing pytest_subtests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/0527296acb1f1790788301d4395ba6d5ce2a9704\"\u003e\u003ccode\u003e0527296\u003c/code\u003e\u003c/a\u003e Bump google-cloud-firestore from 2.21.0 to 2.22.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/5f8659bdba4561796d66e938a1e2c71d4489562f\"\u003e\u003ccode\u003e5f8659b\u003c/code\u003e\u003c/a\u003e Clarify 'result_extended' setting usage in tasks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/f19db7008682c782d85e69b5ce736970491752ea\"\u003e\u003ccode\u003ef19db70\u003c/code\u003e\u003c/a\u003e Bump mypy from 1.19.0 to 1.19.1 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10028\"\u003e#10028\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/6da72bde60553a1c350eef1e17d834d004ed099d\"\u003e\u003ccode\u003e6da72bd\u003c/code\u003e\u003c/a\u003e better coverage (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10029\"\u003e#10029\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/celery/celery/compare/v5.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 `boto3` from 1.40.16 to 1.42.26\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/5ffffe1fb42fe0f283a537738f4567eed3c560c9\"\u003e\u003ccode\u003e5ffffe1\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.26'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/ab8545a9a3b1791833f1b898c07da0b0b7041ea8\"\u003e\u003ccode\u003eab8545a\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.26\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/47198117acb1ccf87bf9289508517bc0a075f870\"\u003e\u003ccode\u003e4719811\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/93978170acb80cf7b6ff85c3a9b657e2022bb9fb\"\u003e\u003ccode\u003e9397817\u003c/code\u003e\u003c/a\u003e Add note on logical operators (\u003ca href=\"https://redirect.github.com/boto/boto3/issues/4141\"\u003e#4141\u003c/a\u003e)\u003c/li\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/f4381e378a62008168a4947355d8fb73700f6e8c\"\u003e\u003ccode\u003ef4381e3\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.25' into develop\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\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.40.16...1.42.26\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `awswrangler` from 3.12.1 to 3.14.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aws/aws-sdk-pandas/releases\"\u003eawswrangler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eAWS SDK for pandas 3.14.0\u003c/h2\u003e\n\u003ch2\u003eNotable Changes ⚠️\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: upgrade pg8000 due to CVE-2025-61385 by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3225\"\u003eaws/aws-sdk-pandas#3225\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures / Enhancements 🚀\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: support redshift \u003ccode\u003eCLEANPATH\u003c/code\u003e by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3211\"\u003eaws/aws-sdk-pandas#3211\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add result reuse configuration to query execution functions by \u003ca href=\"https://github.com/DavidKatz-il\"\u003e\u003ccode\u003e@​DavidKatz-il\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3212\"\u003eaws/aws-sdk-pandas#3212\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBugfixes 🐛\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: Add \u003ccode\u003es3_output\u003c/code\u003e parameter to \u003ccode\u003e_start_query_execution\u003c/code\u003e call in \u0026quot;overwrite\u0026quot; mode by \u003ca href=\"https://github.com/sergeymazin\"\u003e\u003ccode\u003e@​sergeymazin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3205\"\u003eaws/aws-sdk-pandas#3205\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: iceberg overwrite partitions with s3 output by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3220\"\u003eaws/aws-sdk-pandas#3220\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: Correct MemoryFormat.set() Parameter Type Annotation by \u003ca href=\"https://github.com/DaltonWorsnup\"\u003e\u003ccode\u003e@​DaltonWorsnup\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3221\"\u003eaws/aws-sdk-pandas#3221\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: normalize AWS_SESSION_TOKEN=None to empty string for delta-rs compatibility by \u003ca href=\"https://github.com/skoschik\"\u003e\u003ccode\u003e@​skoschik\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3223\"\u003eaws/aws-sdk-pandas#3223\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity / Dependency Updates 🛡️\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the github-actions group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3208\"\u003eaws/aws-sdk-pandas#3208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: update pyarrow constraints by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3210\"\u003eaws/aws-sdk-pandas#3210\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump the production-dependencies group across 1 directory with 4 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3213\"\u003eaws/aws-sdk-pandas#3213\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump actions/setup-node from 5 to 6 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3214\"\u003eaws/aws-sdk-pandas#3214\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eHousekeeping 🧹\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: replace deprecated pr linting action by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3215\"\u003eaws/aws-sdk-pandas#3215\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: Release 3.14.0 by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3227\"\u003eaws/aws-sdk-pandas#3227\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: Update Snyk action by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3228\"\u003eaws/aws-sdk-pandas#3228\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: fix incorrect license field by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3229\"\u003eaws/aws-sdk-pandas#3229\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: Update layers.rst by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3230\"\u003eaws/aws-sdk-pandas#3230\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/sergeymazin\"\u003e\u003ccode\u003e@​sergeymazin\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3205\"\u003eaws/aws-sdk-pandas#3205\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DaltonWorsnup\"\u003e\u003ccode\u003e@​DaltonWorsnup\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3221\"\u003eaws/aws-sdk-pandas#3221\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/skoschik\"\u003e\u003ccode\u003e@​skoschik\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3223\"\u003eaws/aws-sdk-pandas#3223\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/aws/aws-sdk-pandas/compare/3.13.0...3.14.0\"\u003ehttps://github.com/aws/aws-sdk-pandas/compare/3.13.0...3.14.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eAWS SDK for pandas 3.13.0\u003c/h2\u003e\n\u003ch2\u003eNotable Changes ⚠️\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eupdated \u003ccode\u003eaiohhtp==3.12.15\u003c/code\u003eto fix CVE-2025-53643 (LOW) by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3197\"\u003eaws/aws-sdk-pandas#3197\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures / Enhancements 🚀\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: ray 2.49.0 by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3194\"\u003eaws/aws-sdk-pandas#3194\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add support for aurora-mysql and aurora-postgresql engines by \u003ca href=\"https://github.com/senorcinco\"\u003e\u003ccode\u003e@​senorcinco\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3188\"\u003eaws/aws-sdk-pandas#3188\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBugfixes 🐛\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: opensearch session by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3170\"\u003eaws/aws-sdk-pandas#3170\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: typo with Redshift write example by \u003ca href=\"https://github.com/Falydoor\"\u003e\u003ccode\u003e@​Falydoor\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3184\"\u003eaws/aws-sdk-pandas#3184\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: do not remove new columns values by \u003ca href=\"https://github.com/Braalfa\"\u003e\u003ccode\u003e@​Braalfa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3181\"\u003eaws/aws-sdk-pandas#3181\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity / Dependency Updates 🛡️\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the production-dependencies group across 1 directory with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3178\"\u003eaws/aws-sdk-pandas#3178\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump the production-dependencies 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/aws/aws-sdk-pandas/pull/3180\"\u003eaws/aws-sdk-pandas#3180\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/aws/aws-sdk-pandas/commit/20193b48db3a0e57d26a344e646811495e0c4e46\"\u003e\u003ccode\u003e20193b4\u003c/code\u003e\u003c/a\u003e Update layers.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/d1c7910e3b3bb125733c9f0318f4e639e7e13d1f\"\u003e\u003ccode\u003ed1c7910\u003c/code\u003e\u003c/a\u003e pin pyarrow in lambda layer\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/3521ddc6ae4f19ce6faaf43c34d1b3575b267d6b\"\u003e\u003ccode\u003e3521ddc\u003c/code\u003e\u003c/a\u003e chore: Release 3.14.0 (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/issues/3227\"\u003e#3227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/2371f80eead3b17d344a3a39794610e61e082e1f\"\u003e\u003ccode\u003e2371f80\u003c/code\u003e\u003c/a\u003e fix(delta-rs): normalize AWS_SESSION_TOKEN=None to empty string for delta-rs ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/9b843841000fbbe0d0aa91f6b0becc0c459204a2\"\u003e\u003ccode\u003e9b84384\u003c/code\u003e\u003c/a\u003e Correct MemoryFormat.set() Parameter Type Annotation (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/issues/3221\"\u003e#3221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/f5980f2adbd561f73564cfdbfd4e268b2c41fccd\"\u003e\u003ccode\u003ef5980f2\u003c/code\u003e\u003c/a\u003e chore: upgrade pg8000 due to a CVE-2025-61385 (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/issues/3225\"\u003e#3225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/ed4057e0d835585d72a434c284ee7f74fd6e9d33\"\u003e\u003ccode\u003eed4057e\u003c/code\u003e\u003c/a\u003e fix: iceberg overwrite partitions with s3 output (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/issues/3220\"\u003e#3220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/d425c500a2e2a30b3ac537e24bf34b900432215b\"\u003e\u003ccode\u003ed425c50\u003c/code\u003e\u003c/a\u003e [FIX] Add s3_output parameter to _start_query_execution call in \u0026quot;overwrite\u0026quot; m...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/294f35e4dd2c41ff5a1a0bc92c9134533355692a\"\u003e\u003ccode\u003e294f35e\u003c/code\u003e\u003c/a\u003e chore: replace pr linting action (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/issues/3215\"\u003e#3215\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/c81581ca40579735cd0caa6e91f1fa5d2c3b46d7\"\u003e\u003ccode\u003ec81581c\u003c/code\u003e\u003c/a\u003e chore(deps): bump actions/setup-node in the github-actions group (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/issues/3214\"\u003e#3214\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aws/aws-sdk-pandas/compare/3.12.1...3.14.0\"\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.5 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 provide...\n\n_Description has been truncated_","html_url":"https://github.com/MVrachev/repository-service-tuf-worker/pull/85","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/MVrachev%2Frepository-service-tuf-worker/issues/85","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/85/packages"}},{"old_version":"3.6.5","new_version":"4.1.0","update_type":"major","path":null,"pr_created_at":"2026-01-07T09:35:09.000Z","version_change":"3.6.5 → 4.1.0","issue":{"uuid":"3788014432","node_id":"PR_kwDOBAUWrs673oKi","number":331,"state":"closed","title":"Bump the pip group across 1 directory with 3 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":["ezio-melotti"],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-01-07T12:19:50.000Z","author_association":null,"state_reason":null,"created_at":"2026-01-07T09:35:09.000Z","updated_at":"2026-01-07T12:19:57.000Z","time_to_close":9881,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"pip","update_count":3,"packages":[{"name":"sigstore","old_version":"3.6.5","new_version":"4.1.0","repository_url":"https://github.com/sigstore/sigstore-python"},{"name":"mypy","old_version":"1.19.0","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"pyfakefs","old_version":"5.10.2","new_version":"6.0.0","repository_url":"https://github.com/pytest-dev/pyfakefs"},{"name":"pytest","old_version":"8.4.2","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip group with 4 updates in the / directory: [sigstore](https://github.com/sigstore/sigstore-python), [mypy](https://github.com/python/mypy), [pyfakefs](https://github.com/pytest-dev/pyfakefs) and [pytest](https://github.com/pytest-dev/pytest).\n\nUpdates `sigstore` from 3.6.5 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.5...v4.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.19.0 to 1.19.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003eMypy 1.19.1\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix noncommutative joins with bounded TypeVars (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20345\"\u003e20345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRespect output format for cached runs by serializing raw errors in cache metas (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20372\"\u003e20372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003etypes.NoneType\u003c/code\u003e in match cases (A5rocks, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20383\"\u003e20383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix mypyc generator regression with empty tuple (BobTheBuidler, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20371\"\u003e20371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash involving Unpack-ed TypeVarTuple (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20323\"\u003e20323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on star import of redefinition (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20333\"\u003e20333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on typevar with forward ref used in other module (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20334\"\u003e20334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFail with an explicit error on PyPy (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20389\"\u003e20389\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAcknowledgements\u003c/h3\u003e\n\u003cp\u003eThanks to all mypy contributors who contributed to this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eA5rocks\u003c/li\u003e\n\u003cli\u003eBobTheBuidler\u003c/li\u003e\n\u003cli\u003ebzoracler\u003c/li\u003e\n\u003cli\u003eChainfire\u003c/li\u003e\n\u003cli\u003eChristoph Tyralla\u003c/li\u003e\n\u003cli\u003eDavid Foster\u003c/li\u003e\n\u003cli\u003eFrank Dana\u003c/li\u003e\n\u003cli\u003eGuo Ci\u003c/li\u003e\n\u003cli\u003eiap\u003c/li\u003e\n\u003cli\u003eIvan Levkivskyi\u003c/li\u003e\n\u003cli\u003eJames Hilton-Balfe\u003c/li\u003e\n\u003cli\u003ejhance\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eJukka Lehtosalo\u003c/li\u003e\n\u003cli\u003eKarelKenens\u003c/li\u003e\n\u003cli\u003eKevin Kannammalil\u003c/li\u003e\n\u003cli\u003eMarc Mueller\u003c/li\u003e\n\u003cli\u003eMichael Carlstrom\u003c/li\u003e\n\u003cli\u003eMichael J. Sullivan\u003c/li\u003e\n\u003cli\u003ePiotr Sawicki\u003c/li\u003e\n\u003cli\u003eRandolf Scholz\u003c/li\u003e\n\u003cli\u003eShantanu\u003c/li\u003e\n\u003cli\u003eSigve Sebastian Farstad\u003c/li\u003e\n\u003cli\u003esobolevn\u003c/li\u003e\n\u003cli\u003eStanislav Terliakov\u003c/li\u003e\n\u003cli\u003eStephen Morton\u003c/li\u003e\n\u003cli\u003eTheodore Ando\u003c/li\u003e\n\u003cli\u003eThiago J. Barbalho\u003c/li\u003e\n\u003cli\u003ewyattscarpenter\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eI’d also like to thank my employer, Dropbox, for supporting mypy development.\u003c/p\u003e\n\u003ch2\u003eMypy 1.18\u003c/h2\u003e\n\u003cp\u003eWe’ve just uploaded mypy 1.18.1 to the Python Package Index (\u003ca href=\"https://pypi.org/project/mypy/\"\u003ePyPI\u003c/a\u003e).\nMypy is a static type checker for Python. This release includes new features, performance\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/412c19a6bde31e7afa7f41afdf8356664689ae80\"\u003e\u003ccode\u003e412c19a\u003c/code\u003e\u003c/a\u003e Bump version to 1.19.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/20aea0a6ca0710f5427239bdd2fd8e8bf1caf634\"\u003e\u003ccode\u003e20aea0a\u003c/code\u003e\u003c/a\u003e Update changelog for 1.19.1 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20414\"\u003e#20414\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/2b23b507524bf1bd7513eea6f2a16fb91e072cb6\"\u003e\u003ccode\u003e2b23b50\u003c/code\u003e\u003c/a\u003e Serialize raw errors in cache metas (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20372\"\u003e#20372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/f60f90fb8872bf722e32aefd548daaf6d8560e05\"\u003e\u003ccode\u003ef60f90f\u003c/code\u003e\u003c/a\u003e Fail on PyPy in main instead of setup.py (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20389\"\u003e#20389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/58d485b4ea4776e0b9d4045b306cb0818ecc2aa6\"\u003e\u003ccode\u003e58d485b\u003c/code\u003e\u003c/a\u003e Fail with an explicit error on PyPy (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20384\"\u003e#20384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/a4b31a26788b70c4a2a19adbafa2bbda43dc2e8b\"\u003e\u003ccode\u003ea4b31a2\u003c/code\u003e\u003c/a\u003e Allow \u003ccode\u003etypes.NoneType\u003c/code\u003e in match cases (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20383\"\u003e#20383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/8a6eff478416cd3ed3931a6ed77ce61c88ab69e9\"\u003e\u003ccode\u003e8a6eff4\u003c/code\u003e\u003c/a\u003e [mypyc] fix generator regression with empty tuple (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20371\"\u003e#20371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/70eceea682c041c0d8e8462dffef9c7bb252e014\"\u003e\u003ccode\u003e70eceea\u003c/code\u003e\u003c/a\u003e Fix noncommutative joins with bounded TypeVars (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20345\"\u003e#20345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/3890fc49bf7cc02db04b1e63eb2540aaacdeecc0\"\u003e\u003ccode\u003e3890fc4\u003c/code\u003e\u003c/a\u003e Fix crash involving Unpack-ed TypeVarTuple (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20323\"\u003e#20323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c93d917a86993e06dcc88e508f28f4f5199ce1c8\"\u003e\u003ccode\u003ec93d917\u003c/code\u003e\u003c/a\u003e Fix crash on star import of redefinition (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20333\"\u003e#20333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.19.0...v1.19.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyfakefs` from 5.10.2 to 6.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pyfakefs/releases\"\u003epyfakefs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epyfakefs release version 6.0.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eremoves some deprecated functionality\u003c/li\u003e\n\u003cli\u003eremoves support for Python \u0026lt; 3.10\u003c/li\u003e\n\u003cli\u003esee the \u003ca href=\"https://github.com/pytest-dev/pyfakefs/blob/version-6.0/CHANGES.md#version-600-2025-12-21\"\u003erelease notes\u003c/a\u003e for a list of changes\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pyfakefs/blob/main/CHANGES.md\"\u003epyfakefs's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://pypi.python.org/pypi/pyfakefs/6.0.0\"\u003eVersion 6.0.0\u003c/a\u003e (2025-12-21)\u003c/h2\u003e\n\u003cp\u003eRemoves some deprecated functionality, removes support for Python \u0026lt; 3.10.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eremoved support for Python versions \u0026lt; 3.10; patch releases based on \u003ccode\u003epyfakefs\u003c/code\u003e 5.10\nsupporting older versions may be made on demand\u003c/li\u003e\n\u003cli\u003eremoved support for patching legacy modules \u003ccode\u003escandir\u003c/code\u003e and \u003ccode\u003epathlib2\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003echanged the default for \u003ccode\u003eFakeFilesystem.shuffle_listdir_results\u003c/code\u003e to \u003ccode\u003eTrue\u003c/code\u003e to reflect\nthe real filesystem behavior\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanges\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadded some support for Python 3.15a3\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efixes a problem with \u003ccode\u003ePath\u003c/code\u003e type hints using the pipe symbol in wrapped functions\ninside an \u003ccode\u003efs\u003c/code\u003e dependent fixture (see \u003ca href=\"https://redirect.github.com/pytest-dev/pyfakefs/issues/1242\"\u003e#1242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efixes problem with new \u003ccode\u003ecoverage\u003c/code\u003e in Python 3.14 using the fake filesystem\n(see \u003ca href=\"https://redirect.github.com/pytest-dev/pyfakefs/issues/1245\"\u003e#1245\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadded project information to documentation pages\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInfrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadded CI tests for Python 3.15\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\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/pyfakefs/commit/fe83300fa947d680afe687386c5d25a4c15819c6\"\u003e\u003ccode\u003efe83300\u003c/code\u003e\u003c/a\u003e Release 6.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pyfakefs/commit/326eaa377a4acf75ef5e1092778faf905d9329ac\"\u003e\u003ccode\u003e326eaa3\u003c/code\u003e\u003c/a\u003e Pin myst-parser to latest version 4.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pyfakefs/commit/ff7d90820b863726816b229cbe9f9c190ef7298e\"\u003e\u003ccode\u003eff7d908\u003c/code\u003e\u003c/a\u003e Add project info to documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pyfakefs/commit/42ad731dc9665d735d864208c21d862ba691c6a0\"\u003e\u003ccode\u003e42ad731\u003c/code\u003e\u003c/a\u003e Adapt to changes in Python 3.15a3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pyfakefs/commit/7613b9fb0ebb3c3bd15dbc6c089385f8986ef6a0\"\u003e\u003ccode\u003e7613b9f\u003c/code\u003e\u003c/a\u003e Add CI tests for Python 3.15\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pyfakefs/commit/4a4dea86226e8653f3ade74b85f562b0a1b5cc53\"\u003e\u003ccode\u003e4a4dea8\u003c/code\u003e\u003c/a\u003e Make old, deprecated \u0026quot;import py\u0026quot; optional (\u003ca href=\"https://redirect.github.com/pytest-dev/pyfakefs/issues/1257\"\u003e#1257\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pyfakefs/commit/f0794eebd424523eb2bb5d4280106379efebb4c4\"\u003e\u003ccode\u003ef0794ee\u003c/code\u003e\u003c/a\u003e Update furo from 2025.7.19 to 2025.12.19\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pyfakefs/commit/09a128334f49182a70dc8e671f83678e2a7ae9aa\"\u003e\u003ccode\u003e09a1283\u003c/code\u003e\u003c/a\u003e Update pre-commit from 4.5.0 to 4.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pyfakefs/commit/57e6dfeef6131665816121bf721135996b11aec5\"\u003e\u003ccode\u003e57e6dfe\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pyfakefs/commit/722ab00af67871af59bf28bb8c9c97931b75f016\"\u003e\u003ccode\u003e722ab00\u003c/code\u003e\u003c/a\u003e Bump actions/cache from 4 to 5\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pyfakefs/compare/v5.10.2...v6.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest` from 8.4.2 to 9.0.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest/releases\"\u003epytest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.0.2\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.2 (2025-12-06)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13896\"\u003e#13896\u003c/a\u003e: The terminal progress feature added in pytest 9.0.0 has been disabled by default, except on Windows, due to compatibility issues with some terminal emulators.\u003c/p\u003e\n\u003cp\u003eYou may enable it again by passing \u003ccode\u003e-p terminalprogress\u003c/code\u003e. We may enable it by default again once compatibility improves in the future.\u003c/p\u003e\n\u003cp\u003eAdditionally, when the environment variable \u003ccode\u003eTERM\u003c/code\u003e is \u003ccode\u003edumb\u003c/code\u003e, the escape codes are no longer emitted, even if the plugin is enabled.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13904\"\u003e#13904\u003c/a\u003e: Fixed the TOML type of the \u003ccode\u003etmp_path_retention_count\u003c/code\u003e settings in the API reference from number to string.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13946\"\u003e#13946\u003c/a\u003e: The private \u003ccode\u003econfig.inicfg\u003c/code\u003e attribute was changed in a breaking manner in pytest 9.0.0.\nDue to its usage in the ecosystem, it is now restored to working order using a compatibility shim.\nIt will be deprecated in pytest 9.1 and removed in pytest 10.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13965\"\u003e#13965\u003c/a\u003e: Fixed quadratic-time behavior when handling \u003ccode\u003eunittest\u003c/code\u003e subtests in Python 3.10.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImproved documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/4492\"\u003e#4492\u003c/a\u003e: The API Reference now contains cross-reference-able documentation of \u003ccode\u003epytest's command-line flags \u0026lt;command-line-flags\u0026gt;\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e9.0.1\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.1 (2025-11-12)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13895\"\u003e#13895\u003c/a\u003e: Restore support for skipping tests via \u003ccode\u003eraise unittest.SkipTest\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13896\"\u003e#13896\u003c/a\u003e: The terminal progress plugin added in pytest 9.0 is now automatically disabled when iTerm2 is detected, it generated desktop notifications instead of the desired functionality.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13904\"\u003e#13904\u003c/a\u003e: Fixed the TOML type of the verbosity settings in the API reference from number to string.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13910\"\u003e#13910\u003c/a\u003e: Fixed \u003c!-- raw HTML omitted --\u003eUserWarning: Do not expect file_or_dir\u003c!-- raw HTML omitted --\u003e on some earlier Python 3.12 and 3.13 point versions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePackaging updates and notes for downstreams\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13933\"\u003e#13933\u003c/a\u003e: The tox configuration has been adjusted to make sure the desired\nversion string can be passed into its \u003ccode\u003epackage_env\u003c/code\u003e through\nthe \u003ccode\u003eSETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTEST\u003c/code\u003e environment\nvariable as a part of the release process -- by \u003ccode\u003ewebknjaz\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributor-facing changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13891\"\u003e#13891\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13942\"\u003e#13942\u003c/a\u003e: The CI/CD part of the release automation is now capable of\ncreating GitHub Releases without having a Git checkout on\ndisk -- by \u003ccode\u003ebluetech\u003c/code\u003e and \u003ccode\u003ewebknjaz\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13933\"\u003e#13933\u003c/a\u003e: The tox configuration has been adjusted to make sure the desired\nversion string can be passed into its \u003ccode\u003epackage_env\u003c/code\u003e through\nthe \u003ccode\u003eSETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTEST\u003c/code\u003e environment\nvariable as a part of the release process -- by \u003ccode\u003ewebknjaz\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/3d10b5148e03eb82b3ee29181dbdc73cf82699e2\"\u003e\u003ccode\u003e3d10b51\u003c/code\u003e\u003c/a\u003e Prepare release version 9.0.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/188750b725add8c3400eee6fbb6b80559c296d69\"\u003e\u003ccode\u003e188750b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14030\"\u003e#14030\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/1e4b01d1f...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/b7d7bef90cb9a6db8ac1d3dd5b9ae0eb9abd6c58\"\u003e\u003ccode\u003eb7d7bef\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14014\"\u003e#14014\u003c/a\u003e from bluetech/compat-note\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/bd08e85ac76614ff5ca9ae338aee8d8b06c8fae0\"\u003e\u003ccode\u003ebd08e85\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14013\"\u003e#14013\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/922b60377...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/bc783862991241c442c9f9c068e51737ec15ea10\"\u003e\u003ccode\u003ebc78386\u003c/code\u003e\u003c/a\u003e Add CLI options reference documentation (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13930\"\u003e#13930\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/5a4e398ce89bc23d2cf3fd98c042fdffb6fa8afa\"\u003e\u003ccode\u003e5a4e398\u003c/code\u003e\u003c/a\u003e Fix docs typo (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14005\"\u003e#14005\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14008\"\u003e#14008\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/d7ae6df394398168bf9d926f803c26849c8f07ee\"\u003e\u003ccode\u003ed7ae6df\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14006\"\u003e#14006\u003c/a\u003e from pytest-dev/maintenance/update-plugin-list-tmpl...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/556f6a22e12d13d1ffeceaf64424eb95d5e0fb87\"\u003e\u003ccode\u003e556f6a2\u003c/code\u003e\u003c/a\u003e pre-commit: fix rst-lint after new release (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13999\"\u003e#13999\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14001\"\u003e#14001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/c60fbe63a26f64a42738e3f3527a8f79024fdf50\"\u003e\u003ccode\u003ec60fbe6\u003c/code\u003e\u003c/a\u003e Fix quadratic-time behavior when handling \u003ccode\u003eunittest\u003c/code\u003e subtests in Python 3.10 ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/73d9b011183d9a1c4a7007c1119d97a6e627788e\"\u003e\u003ccode\u003e73d9b01\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13995\"\u003e#13995\u003c/a\u003e from nicoddemus/patchback/backports/9.0.x/1b5200c0f...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest/compare/8.4.2...9.0.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\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/python/release-tools/pull/331","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/python%2Frelease-tools/issues/331","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/331/packages"}},{"old_version":"3.6.5","new_version":"4.1.0","update_type":"major","path":null,"pr_created_at":"2026-01-01T06:06:00.000Z","version_change":"3.6.5 → 4.1.0","issue":{"uuid":"3774180327","node_id":"PR_kwDOBAUWrs67LUY_","number":325,"state":"closed","title":"Bump the pip group with 5 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":["ezio-melotti"],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-01-07T09:34:56.000Z","author_association":null,"state_reason":null,"created_at":"2026-01-01T06:06:00.000Z","updated_at":"2026-01-07T09:34:57.000Z","time_to_close":530936,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"pip","update_count":5,"packages":[{"name":"python-gnupg","old_version":"0.5.5","new_version":"0.5.6","repository_url":"https://github.com/vsajip/python-gnupg"},{"name":"sigstore","old_version":"3.6.5","new_version":"4.1.0","repository_url":"https://github.com/sigstore/sigstore-python"},{"name":"mypy","old_version":"1.19.0","new_version":"1.19.1","repository_url":"https://github.com/python/mypy"},{"name":"pyfakefs","old_version":"5.10.2","new_version":"6.0.0","repository_url":"https://github.com/pytest-dev/pyfakefs"},{"name":"pytest","old_version":"8.4.2","new_version":"9.0.2","repository_url":"https://github.com/pytest-dev/pytest"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip group with 5 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [python-gnupg](https://github.com/vsajip/python-gnupg) | `0.5.5` | `0.5.6` |\n| [sigstore](https://github.com/sigstore/sigstore-python) | `3.6.5` | `4.1.0` |\n| [mypy](https://github.com/python/mypy) | `1.19.0` | `1.19.1` |\n| [pyfakefs](https://github.com/pytest-dev/pyfakefs) | `5.10.2` | `6.0.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.2` | `9.0.2` |\n\nUpdates `python-gnupg` from 0.5.5 to 0.5.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/vsajip/python-gnupg/releases\"\u003epython-gnupg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eEnhancement and bug-fix release 0.5.6\u003c/h2\u003e\n\u003cp\u003eThis is an enhancement and bug-fix release, and all users are encouraged to upgrade.\u003c/p\u003e\n\u003cp\u003eBrief summary:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/vsajip/python-gnupg/issues/261\"\u003e#261\u003c/a\u003e: Ensure capability, fingerprint and keygrip are added to subkey_info.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSet username in the result when Verify uses a signing key that has expired or been revoked. Thanks to Steven Galgano for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis release has been signed with my code signing key:\u003c/p\u003e\n\u003cp\u003eVinay Sajip (CODE SIGNING KEY) \u0026lt;vinay_sajip at yahoo.co.uk\u0026gt;\nFingerprint: CA74 9061 914E AC13 8E66 EADB 9147 B477 339A 9B86\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/vsajip/python-gnupg/commit/54e9ca0f80f5a0d0b4252e13d5c431f3f5f40c71\"\u003e\u003ccode\u003e54e9ca0\u003c/code\u003e\u003c/a\u003e Changes for 0.5.6.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vsajip/python-gnupg/commit/8825037344b03473595e694e01a1e0fa5e74023f\"\u003e\u003ccode\u003e8825037\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 (\u003ca href=\"https://redirect.github.com/vsajip/python-gnupg/issues/268\"\u003e#268\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vsajip/python-gnupg/commit/909cf606f07097feb5316c265f0108a4c753f9a5\"\u003e\u003ccode\u003e909cf60\u003c/code\u003e\u003c/a\u003e Remove Travis CI and AppVeyor config (\u003ca href=\"https://redirect.github.com/vsajip/python-gnupg/issues/269\"\u003e#269\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vsajip/python-gnupg/commit/f0bfa1acb7000cfff3bfdec5d9bff15299c364d3\"\u003e\u003ccode\u003ef0bfa1a\u003c/code\u003e\u003c/a\u003e Drop redundant \u003ccode\u003ewheel\u003c/code\u003e from PEP 517 build deps (\u003ca href=\"https://redirect.github.com/vsajip/python-gnupg/issues/264\"\u003e#264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vsajip/python-gnupg/commit/9b0399b4684a1f8d9e763c99c94cd9baed5ebc34\"\u003e\u003ccode\u003e9b0399b\u003c/code\u003e\u003c/a\u003e Fix typo: spell decrypted_data correctly in the documentation. (\u003ca href=\"https://redirect.github.com/vsajip/python-gnupg/issues/263\"\u003e#263\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vsajip/python-gnupg/commit/fcedea7ac922cf5113c28beff16e59340fa4731c\"\u003e\u003ccode\u003efcedea7\u003c/code\u003e\u003c/a\u003e Added capability to subkey_info, reformatted code.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vsajip/python-gnupg/commit/eca04eb5c9f5d251bb32a183427acb8fbe564102\"\u003e\u003ccode\u003eeca04eb\u003c/code\u003e\u003c/a\u003e Set username when Verify uses a signing key that has expired or been (\u003ca href=\"https://redirect.github.com/vsajip/python-gnupg/issues/262\"\u003e#262\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vsajip/python-gnupg/commit/acfa89869940b81a96c6eb1e475c1c4f645ae879\"\u003e\u003ccode\u003eacfa898\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/vsajip/python-gnupg/issues/261\"\u003e#261\u003c/a\u003e: Ensure fingerprint and keygrip are added to subkey_info.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vsajip/python-gnupg/commit/8148db43edf62ca8310000f0aaae138784c0e51b\"\u003e\u003ccode\u003e8148db4\u003c/code\u003e\u003c/a\u003e Bump version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vsajip/python-gnupg/commit/2e829849129d4789b8877fe621349b09ca5b29cd\"\u003e\u003ccode\u003e2e82984\u003c/code\u003e\u003c/a\u003e Added tag 0.5.5 for changeset 1b77f5b12ad7\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/vsajip/python-gnupg/compare/0.5.5...0.5.6\"\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.5 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.5...v4.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.19.0 to 1.19.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003eMypy 1.19.1\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix noncommutative joins with bounded TypeVars (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20345\"\u003e20345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRespect output format for cached runs by serializing raw errors in cache metas (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20372\"\u003e20372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003etypes.NoneType\u003c/code\u003e in match cases (A5rocks, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20383\"\u003e20383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix mypyc generator regression with empty tuple (BobTheBuidler, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20371\"\u003e20371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash involving Unpack-ed TypeVarTuple (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20323\"\u003e20323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on star import of redefinition (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20333\"\u003e20333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on typevar with forward ref used in other module (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20334\"\u003e20334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFail with an explicit error on PyPy (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/20389\"\u003e20389\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAcknowledgements\u003c/h3\u003e\n\u003cp\u003eThanks to all mypy contributors who contributed to this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eA5rocks\u003c/li\u003e\n\u003cli\u003eBobTheBuidler\u003c/li\u003e\n\u003cli\u003ebzoracler\u003c/li\u003e\n\u003cli\u003eChainfire\u003c/li\u003e\n\u003cli\u003eChristoph Tyralla\u003c/li\u003e\n\u003cli\u003eDavid Foster\u003c/li\u003e\n\u003cli\u003eFrank Dana\u003c/li\u003e\n\u003cli\u003eGuo Ci\u003c/li\u003e\n\u003cli\u003eiap\u003c/li\u003e\n\u003cli\u003eIvan Levkivskyi\u003c/li\u003e\n\u003cli\u003eJames Hilton-Balfe\u003c/li\u003e\n\u003cli\u003ejhance\u003c/li\u003e\n\u003cli\u003eJoren Hammudoglu\u003c/li\u003e\n\u003cli\u003eJukka Lehtosalo\u003c/li\u003e\n\u003cli\u003eKarelKenens\u003c/li\u003e\n\u003cli\u003eKevin Kannammalil\u003c/li\u003e\n\u003cli\u003eMarc Mueller\u003c/li\u003e\n\u003cli\u003eMichael Carlstrom\u003c/li\u003e\n\u003cli\u003eMichael J. Sullivan\u003c/li\u003e\n\u003cli\u003ePiotr Sawicki\u003c/li\u003e\n\u003cli\u003eRandolf Scholz\u003c/li\u003e\n\u003cli\u003eShantanu\u003c/li\u003e\n\u003cli\u003eSigve Sebastian Farstad\u003c/li\u003e\n\u003cli\u003esobolevn\u003c/li\u003e\n\u003cli\u003eStanislav Terliakov\u003c/li\u003e\n\u003cli\u003eStephen Morton\u003c/li\u003e\n\u003cli\u003eTheodore Ando\u003c/li\u003e\n\u003cli\u003eThiago J. Barbalho\u003c/li\u003e\n\u003cli\u003ewyattscarpenter\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eI’d also like to thank my employer, Dropbox, for supporting mypy development.\u003c/p\u003e\n\u003ch2\u003eMypy 1.18\u003c/h2\u003e\n\u003cp\u003eWe’ve just uploaded mypy 1.18.1 to the Python Package Index (\u003ca href=\"https://pypi.org/project/mypy/\"\u003ePyPI\u003c/a\u003e).\nMypy is a static type checker for Python. This release includes new features, performance\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/412c19a6bde31e7afa7f41afdf8356664689ae80\"\u003e\u003ccode\u003e412c19a\u003c/code\u003e\u003c/a\u003e Bump version to 1.19.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/20aea0a6ca0710f5427239bdd2fd8e8bf1caf634\"\u003e\u003ccode\u003e20aea0a\u003c/code\u003e\u003c/a\u003e Update changelog for 1.19.1 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20414\"\u003e#20414\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/2b23b507524bf1bd7513eea6f2a16fb91e072cb6\"\u003e\u003ccode\u003e2b23b50\u003c/code\u003e\u003c/a\u003e Serialize raw errors in cache metas (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20372\"\u003e#20372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/f60f90fb8872bf722e32aefd548daaf6d8560e05\"\u003e\u003ccode\u003ef60f90f\u003c/code\u003e\u003c/a\u003e Fail on PyPy in main instead of setup.py (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20389\"\u003e#20389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/58d485b4ea4776e0b9d4045b306cb0818ecc2aa6\"\u003e\u003ccode\u003e58d485b\u003c/code\u003e\u003c/a\u003e Fail with an explicit error on PyPy (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20384\"\u003e#20384\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/a4b31a26788b70c4a2a19adbafa2bbda43dc2e8b\"\u003e\u003ccode\u003ea4b31a2\u003c/code\u003e\u003c/a\u003e Allow \u003ccode\u003etypes.NoneType\u003c/code\u003e in match cases (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20383\"\u003e#20383\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/8a6eff478416cd3ed3931a6ed77ce61c88ab69e9\"\u003e\u003ccode\u003e8a6eff4\u003c/code\u003e\u003c/a\u003e [mypyc] fix generator regression with empty tuple (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20371\"\u003e#20371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/70eceea682c041c0d8e8462dffef9c7bb252e014\"\u003e\u003ccode\u003e70eceea\u003c/code\u003e\u003c/a\u003e Fix noncommutative joins with bounded TypeVars (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20345\"\u003e#20345\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/3890fc49bf7cc02db04b1e63eb2540aaacdeecc0\"\u003e\u003ccode\u003e3890fc4\u003c/code\u003e\u003c/a\u003e Fix crash involving Unpack-ed TypeVarTuple (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20323\"\u003e#20323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c93d917a86993e06dcc88e508f28f4f5199ce1c8\"\u003e\u003ccode\u003ec93d917\u003c/code\u003e\u003c/a\u003e Fix crash on star import of redefinition (\u003ca href=\"https://redirect.github.com/python/mypy/issues/20333\"\u003e#20333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.19.0...v1.19.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyfakefs` from 5.10.2 to 6.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pyfakefs/releases\"\u003epyfakefs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epyfakefs release version 6.0.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eremoves some deprecated functionality\u003c/li\u003e\n\u003cli\u003eremoves support for Python \u0026lt; 3.10\u003c/li\u003e\n\u003cli\u003esee the \u003ca href=\"https://github.com/pytest-dev/pyfakefs/blob/version-6.0/CHANGES.md#version-600-2025-12-21\"\u003erelease notes\u003c/a\u003e for a list of changes\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pyfakefs/blob/main/CHANGES.md\"\u003epyfakefs's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://pypi.python.org/pypi/pyfakefs/6.0.0\"\u003eVersion 6.0.0\u003c/a\u003e (2025-12-21)\u003c/h2\u003e\n\u003cp\u003eRemoves some deprecated functionality, removes support for Python \u0026lt; 3.10.\u003c/p\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eremoved support for Python versions \u0026lt; 3.10; patch releases based on \u003ccode\u003epyfakefs\u003c/code\u003e 5.10\nsupporting older versions may be made on demand\u003c/li\u003e\n\u003cli\u003eremoved support for patching legacy modules \u003ccode\u003escandir\u003c/code\u003e and \u003ccode\u003epathlib2\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003echanged the default for \u003ccode\u003eFakeFilesystem.shuffle_listdir_results\u003c/code\u003e to \u003ccode\u003eTrue\u003c/code\u003e to reflect\nthe real filesystem behavior\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanges\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadded some support for Python 3.15a3\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efixes a problem with \u003ccode\u003ePath\u003c/code\u003e type hints using the pipe symbol in wrapped functions\ninside an \u003ccode\u003efs\u003c/code\u003e dependent fixture (see \u003ca href=\"https://redirect.github.com/pytest-dev/pyfakefs/issues/1242\"\u003e#1242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efixes problem with new \u003ccode\u003ecoverage\u003c/code\u003e in Python 3.14 using the fake filesystem\n(see \u003ca href=\"https://redirect.github.com/pytest-dev/pyfakefs/issues/1245\"\u003e#1245\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadded project information to documentation pages\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInfrastructure\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadded CI tests for Python 3.15\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\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/pyfakefs/commit/fe83300fa947d680afe687386c5d25a4c15819c6\"\u003e\u003ccode\u003efe83300\u003c/code\u003e\u003c/a\u003e Release 6.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pyfakefs/commit/326eaa377a4acf75ef5e1092778faf905d9329ac\"\u003e\u003ccode\u003e326eaa3\u003c/code\u003e\u003c/a\u003e Pin myst-parser to latest version 4.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pyfakefs/commit/ff7d90820b863726816b229cbe9f9c190ef7298e\"\u003e\u003ccode\u003eff7d908\u003c/code\u003e\u003c/a\u003e Add project info to documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pyfakefs/commit/42ad731dc9665d735d864208c21d862ba691c6a0\"\u003e\u003ccode\u003e42ad731\u003c/code\u003e\u003c/a\u003e Adapt to changes in Python 3.15a3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pyfakefs/commit/7613b9fb0ebb3c3bd15dbc6c089385f8986ef6a0\"\u003e\u003ccode\u003e7613b9f\u003c/code\u003e\u003c/a\u003e Add CI tests for Python 3.15\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pyfakefs/commit/4a4dea86226e8653f3ade74b85f562b0a1b5cc53\"\u003e\u003ccode\u003e4a4dea8\u003c/code\u003e\u003c/a\u003e Make old, deprecated \u0026quot;import py\u0026quot; optional (\u003ca href=\"https://redirect.github.com/pytest-dev/pyfakefs/issues/1257\"\u003e#1257\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pyfakefs/commit/f0794eebd424523eb2bb5d4280106379efebb4c4\"\u003e\u003ccode\u003ef0794ee\u003c/code\u003e\u003c/a\u003e Update furo from 2025.7.19 to 2025.12.19\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pyfakefs/commit/09a128334f49182a70dc8e671f83678e2a7ae9aa\"\u003e\u003ccode\u003e09a1283\u003c/code\u003e\u003c/a\u003e Update pre-commit from 4.5.0 to 4.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pyfakefs/commit/57e6dfeef6131665816121bf721135996b11aec5\"\u003e\u003ccode\u003e57e6dfe\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pyfakefs/commit/722ab00af67871af59bf28bb8c9c97931b75f016\"\u003e\u003ccode\u003e722ab00\u003c/code\u003e\u003c/a\u003e Bump actions/cache from 4 to 5\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pyfakefs/compare/v5.10.2...v6.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest` from 8.4.2 to 9.0.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest/releases\"\u003epytest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.0.2\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.2 (2025-12-06)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13896\"\u003e#13896\u003c/a\u003e: The terminal progress feature added in pytest 9.0.0 has been disabled by default, except on Windows, due to compatibility issues with some terminal emulators.\u003c/p\u003e\n\u003cp\u003eYou may enable it again by passing \u003ccode\u003e-p terminalprogress\u003c/code\u003e. We may enable it by default again once compatibility improves in the future.\u003c/p\u003e\n\u003cp\u003eAdditionally, when the environment variable \u003ccode\u003eTERM\u003c/code\u003e is \u003ccode\u003edumb\u003c/code\u003e, the escape codes are no longer emitted, even if the plugin is enabled.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13904\"\u003e#13904\u003c/a\u003e: Fixed the TOML type of the \u003ccode\u003etmp_path_retention_count\u003c/code\u003e settings in the API reference from number to string.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13946\"\u003e#13946\u003c/a\u003e: The private \u003ccode\u003econfig.inicfg\u003c/code\u003e attribute was changed in a breaking manner in pytest 9.0.0.\nDue to its usage in the ecosystem, it is now restored to working order using a compatibility shim.\nIt will be deprecated in pytest 9.1 and removed in pytest 10.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13965\"\u003e#13965\u003c/a\u003e: Fixed quadratic-time behavior when handling \u003ccode\u003eunittest\u003c/code\u003e subtests in Python 3.10.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImproved documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/4492\"\u003e#4492\u003c/a\u003e: The API Reference now contains cross-reference-able documentation of \u003ccode\u003epytest's command-line flags \u0026lt;command-line-flags\u0026gt;\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e9.0.1\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.1 (2025-11-12)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13895\"\u003e#13895\u003c/a\u003e: Restore support for skipping tests via \u003ccode\u003eraise unittest.SkipTest\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13896\"\u003e#13896\u003c/a\u003e: The terminal progress plugin added in pytest 9.0 is now automatically disabled when iTerm2 is detected, it generated desktop notifications instead of the desired functionality.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13904\"\u003e#13904\u003c/a\u003e: Fixed the TOML type of the verbosity settings in the API reference from number to string.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13910\"\u003e#13910\u003c/a\u003e: Fixed \u003c!-- raw HTML omitted --\u003eUserWarning: Do not expect file_or_dir\u003c!-- raw HTML omitted --\u003e on some earlier Python 3.12 and 3.13 point versions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePackaging updates and notes for downstreams\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13933\"\u003e#13933\u003c/a\u003e: The tox configuration has been adjusted to make sure the desired\nversion string can be passed into its \u003ccode\u003epackage_env\u003c/code\u003e through\nthe \u003ccode\u003eSETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTEST\u003c/code\u003e environment\nvariable as a part of the release process -- by \u003ccode\u003ewebknjaz\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributor-facing changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13891\"\u003e#13891\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13942\"\u003e#13942\u003c/a\u003e: The CI/CD part of the release automation is now capable of\ncreating GitHub Releases without having a Git checkout on\ndisk -- by \u003ccode\u003ebluetech\u003c/code\u003e and \u003ccode\u003ewebknjaz\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13933\"\u003e#13933\u003c/a\u003e: The tox configuration has been adjusted to make sure the desired\nversion string can be passed into its \u003ccode\u003epackage_env\u003c/code\u003e through\nthe \u003ccode\u003eSETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTEST\u003c/code\u003e environment\nvariable as a part of the release process -- by \u003ccode\u003ewebknjaz\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/3d10b5148e03eb82b3ee29181dbdc73cf82699e2\"\u003e\u003ccode\u003e3d10b51\u003c/code\u003e\u003c/a\u003e Prepare release version 9.0.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/188750b725add8c3400eee6fbb6b80559c296d69\"\u003e\u003ccode\u003e188750b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14030\"\u003e#14030\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/1e4b01d1f...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/b7d7bef90cb9a6db8ac1d3dd5b9ae0eb9abd6c58\"\u003e\u003ccode\u003eb7d7bef\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14014\"\u003e#14014\u003c/a\u003e from bluetech/compat-note\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/bd08e85ac76614ff5ca9ae338aee8d8b06c8fae0\"\u003e\u003ccode\u003ebd08e85\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14013\"\u003e#14013\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/922b60377...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/bc783862991241c442c9f9c068e51737ec15ea10\"\u003e\u003ccode\u003ebc78386\u003c/code\u003e\u003c/a\u003e Add CLI options reference documentation (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13930\"\u003e#13930\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/5a4e398ce89bc23d2cf3fd98c042fdffb6fa8afa\"\u003e\u003ccode\u003e5a4e398\u003c/code\u003e\u003c/a\u003e Fix docs typo (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14005\"\u003e#14005\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14008\"\u003e#14008\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/d7ae6df394398168bf9d926f803c26849c8f07ee\"\u003e\u003ccode\u003ed7ae6df\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14006\"\u003e#14006\u003c/a\u003e from pytest-dev/maintenance/update-plugin-list-tmpl...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/556f6a22e12d13d1ffeceaf64424eb95d5e0fb87\"\u003e\u003ccode\u003e556f6a2\u003c/code\u003e\u003c/a\u003e pre-commit: fix rst-lint after new release (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13999\"\u003e#13999\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14001\"\u003e#14001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/c60fbe63a26f64a42738e3f3527a8f79024fdf50\"\u003e\u003ccode\u003ec60fbe6\u003c/code\u003e\u003c/a\u003e Fix quadratic-time behavior when handling \u003ccode\u003eunittest\u003c/code\u003e subtests in Python 3.10 ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/73d9b011183d9a1c4a7007c1119d97a6e627788e\"\u003e\u003ccode\u003e73d9b01\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13995\"\u003e#13995\u003c/a\u003e from nicoddemus/patchback/backports/9.0.x/1b5200c0f...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest/compare/8.4.2...9.0.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\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/python/release-tools/pull/325","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/python%2Frelease-tools/issues/325","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/325/packages"}},{"old_version":"3.6.2","new_version":"4.1.0","update_type":"major","path":null,"pr_created_at":"2025-11-27T10:46:16.000Z","version_change":"3.6.2 → 4.1.0","issue":{"uuid":"3670853702","node_id":"PR_kwDOHGh5u8610wID","number":915,"state":"closed","title":"build(deps): bump the pipenv group across 1 directory with 34 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-01-13T11:09:04.000Z","author_association":null,"state_reason":null,"created_at":"2025-11-27T10:46:16.000Z","updated_at":"2026-01-13T11:09:06.000Z","time_to_close":4062168,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"pipenv","update_count":34,"packages":[{"name":"rich-click","old_version":"1.8.8","new_version":"1.9.4","repository_url":"https://github.com/ewels/rich-click"},{"name":"securesystemslib","old_version":"1.3.0","new_version":"1.3.1","repository_url":"https://github.com/secure-systems-lab/securesystemslib"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"dynaconf","old_version":"3.2.10","new_version":"3.2.12","repository_url":"https://github.com/dynaconf/dynaconf"},{"name":"isort","old_version":"6.0.1","new_version":"7.0.0","repository_url":"https://github.com/PyCQA/isort"},{"name":"sqlalchemy","old_version":"2.0.40","new_version":"2.0.44","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"psycopg2","old_version":"2.9.10","new_version":"2.9.11","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"beaupy","old_version":"3.10.1","new_version":"3.10.2","repository_url":"https://github.com/petereon/beaupy"},{"name":"sigstore","old_version":"3.6.2","new_version":"4.1.0","repository_url":"https://github.com/sigstore/sigstore-python"},{"name":"boto3","old_version":"1.38.8","new_version":"1.41.5","repository_url":"https://github.com/boto/boto3"},{"name":"google-cloud-kms","old_version":"3.4.1","new_version":"3.7.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"hvac","old_version":"2.3.0","new_version":"2.4.0","repository_url":"https://github.com/hvac/hvac"},{"name":"azure-keyvault-keys","old_version":"4.10.0","new_version":"4.11.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"prompt-toolkit","old_version":"3.0.51","new_version":"3.0.52","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"setuptools","old_version":"80.3.1","new_version":"80.9.0","repository_url":"https://github.com/pypa/setuptools"},{"name":"pykcs11","old_version":"1.5.17","new_version":"1.5.18","repository_url":"https://github.com/LudovicRousseau/PyKCS11"},{"name":"exceptiongroup","old_version":"1.2.2","new_version":"1.3.1","repository_url":"https://github.com/agronholm/exceptiongroup"},{"name":"black","old_version":"25.1.0","new_version":"25.11.0","repository_url":"https://github.com/psf/black"},{"name":"flake8","old_version":"7.2.0","new_version":"7.3.0","repository_url":"https://github.com/pycqa/flake8"},{"name":"tox","old_version":"4.25.0","new_version":"4.32.0","repository_url":"https://github.com/tox-dev/tox"},{"name":"pytest","old_version":"8.3.5","new_version":"9.0.1","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"6.1.1","new_version":"7.0.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pytest-xdist","old_version":"3.6.1","new_version":"3.8.0","repository_url":"https://github.com/pytest-dev/pytest-xdist"},{"name":"mypy","old_version":"1.15.0","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"},{"name":"pip","old_version":"25.1.1","new_version":"25.3","repository_url":"https://github.com/pypa/pip"},{"name":"sphinxcontrib-plantuml","old_version":"0.30","new_version":"0.31","repository_url":"https://github.com/sphinx-contrib/plantuml"},{"name":"hatchling","old_version":"1.27.0","new_version":"1.28.0","repository_url":"https://github.com/pypa/hatch"},{"name":"build","old_version":"1.2.2.post1","new_version":"1.3.0","repository_url":"https://github.com/pypa/build"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.5.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"bandit","old_version":"1.8.3","new_version":"1.9.2","repository_url":"https://github.com/PyCQA/bandit"},{"name":"types-requests","old_version":"2.32.0.20250328","new_version":"2.32.4.20250913","repository_url":"https://github.com/typeshed-internal/stub_uploader"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pipenv group with 31 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [rich-click](https://github.com/ewels/rich-click) | `1.8.8` | `1.9.4` |\n| [securesystemslib](https://github.com/secure-systems-lab/securesystemslib) | `1.3.0` | `1.3.1` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [dynaconf](https://github.com/dynaconf/dynaconf) | `3.2.10` | `3.2.12` |\n| [isort](https://github.com/PyCQA/isort) | `6.0.1` | `7.0.0` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.40` | `2.0.44` |\n| [psycopg2](https://github.com/psycopg/psycopg2) | `2.9.10` | `2.9.11` |\n| [beaupy](https://github.com/petereon/beaupy) | `3.10.1` | `3.10.2` |\n| [sigstore](https://github.com/sigstore/sigstore-python) | `3.6.2` | `4.1.0` |\n| [boto3](https://github.com/boto/boto3) | `1.38.8` | `1.41.5` |\n| [google-cloud-kms](https://github.com/googleapis/google-cloud-python) | `3.4.1` | `3.7.0` |\n| [hvac](https://github.com/hvac/hvac) | `2.3.0` | `2.4.0` |\n| [azure-keyvault-keys](https://github.com/Azure/azure-sdk-for-python) | `4.10.0` | `4.11.0` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.51` | `3.0.52` |\n| [setuptools](https://github.com/pypa/setuptools) | `80.3.1` | `80.9.0` |\n| [pykcs11](https://github.com/LudovicRousseau/PyKCS11) | `1.5.17` | `1.5.18` |\n| [exceptiongroup](https://github.com/agronholm/exceptiongroup) | `1.2.2` | `1.3.1` |\n| [black](https://github.com/psf/black) | `25.1.0` | `25.11.0` |\n| [flake8](https://github.com/pycqa/flake8) | `7.2.0` | `7.3.0` |\n| [tox](https://github.com/tox-dev/tox) | `4.25.0` | `4.32.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.5` | `9.0.1` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `6.1.1` | `7.0.0` |\n| [pytest-xdist](https://github.com/pytest-dev/pytest-xdist) | `3.6.1` | `3.8.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.18.2` |\n| [pip](https://github.com/pypa/pip) | `25.1.1` | `25.3` |\n| [sphinxcontrib-plantuml](https://github.com/sphinx-contrib/plantuml) | `0.30` | `0.31` |\n| [hatchling](https://github.com/pypa/hatch) | `1.27.0` | `1.28.0` |\n| [build](https://github.com/pypa/build) | `1.2.2.post1` | `1.3.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.5.0` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.8.3` | `1.9.2` |\n| [types-requests](https://github.com/typeshed-internal/stub_uploader) | `2.32.0.20250328` | `2.32.4.20250913` |\n\n\nUpdates `rich-click` from 1.8.8 to 1.9.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ewels/rich-click/releases\"\u003erich-click's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.9.4\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded Typer 0.20 support\u003c/li\u003e\n\u003cli\u003eFix lack of support for \u003ccode\u003eflag_value=...\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.3\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed subcommand discovery in help text. Behavior should now be the same as \u003ccode\u003e1.8\u003c/code\u003e. [\u003ca href=\"https://redirect.github.com/ewels/rich-click/pull/304\"\u003e#304\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.3.dev0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed subcommand discovery in help text. Behavior should now be the same as \u003ccode\u003e1.8\u003c/code\u003e. [\u003ca href=\"https://redirect.github.com/ewels/rich-click/pull/304\"\u003e#304\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed legacy Windows rendering\u003c/li\u003e\n\u003cli\u003eFix issue with parent \u003ccode\u003eclick.Group\u003c/code\u003e and child \u003ccode\u003erich_click.RichCommand\u003c/code\u003e error formatter not resolving.\u003c/li\u003e\n\u003cli\u003eAdd headers to tables (by default these are not shown).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.2.dev0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed legacy windows rendering\u003c/li\u003e\n\u003cli\u003eFix issue with parent \u003ccode\u003eclick.Group\u003c/code\u003e and child \u003ccode\u003erich_click.RichCommand\u003c/code\u003e error formatter not resolving.\u003c/li\u003e\n\u003cli\u003eAdd headers to tables (by default these are not shown).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed bug where running the \u003ccode\u003erich-click\u003c/code\u003e CLI on a \u003ccode\u003e@rich_click.argument()\u003c/code\u003e sometimes caused arguments show up in the option panel when it shouldn't.\u003c/li\u003e\n\u003cli\u003eSlightly reduced horizontal padding of the \u003ccode\u003emodern\u003c/code\u003e theme format.\u003c/li\u003e\n\u003cli\u003eFixed Click 8.3 compatibility with rendering defaults in help text.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.0\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\nVersion 1.9.0 deprecates support for a lot of old versions of things:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ePython 3.7 support is removed.\u003c/strong\u003e The minimum supported Python version is 3.8.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eClick 7 support is removed.\u003c/strong\u003e The minimum supported Click version is 8.0.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRich 10 and 11 support is removed.\u003c/strong\u003e The minimum supported Rich version is 12.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\nVersion 1.9.0 introduces a minor breaking change:\nThe \u003ccode\u003eDEFAULT_STRING\u003c/code\u003e, \u003ccode\u003eENVVAR_STRING\u003c/code\u003e, \u003ccode\u003eREQUIRED_STRING\u003c/code\u003e, and \u003ccode\u003eDEPRECATED_STRING\u003c/code\u003e config options are now rendered with \u003ccode\u003eText.from_markup\u003c/code\u003e.\nSo for example, \u003ccode\u003eREQUIRED_STRING = \u0026quot;[required]\u0026quot;\u003c/code\u003e would be rendered as Rich markup.\nYou must now escape the rich markup: \u003ccode\u003eREQUIRED_STRING = \u0026quot;\\\\[required]\u0026quot;\u003c/code\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003eBig changes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eThemes!\u003c/strong\u003e Check them out with \u003ccode\u003erich-click --themes\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTyper support:\u003c/strong\u003e \u003ccode\u003erich-click typer_app --help\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRichPanels\u003c/strong\u003e API introduced. This replaces the \u0026quot;groups\u0026quot; feature going forward (although groups will continue to be supported).\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e@click.option_panel()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e@click.command_panel()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eIDE tab completion support for decorators\u003c/strong\u003e. Now you should no longer need to guess what goes in \u003ccode\u003e@click.option()\u003c/code\u003e or \u003ccode\u003e@click.command(context_settings=...)\u003c/code\u003e etc.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHelp for arguments:\u003c/strong\u003e \u003ccode\u003ehelp=\u003c/code\u003e is now a valid kwarg for \u003ccode\u003e@click.argument()\u003c/code\u003e decorator. See docs for more information.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSmall changes:\u003c/strong\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ewels/rich-click/blob/main/CHANGELOG.md\"\u003erich-click's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.9.4 (2025-10-24)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded Typer 0.20 support\u003c/li\u003e\n\u003cli\u003eFix lack of support for \u003ccode\u003eflag_value=...\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.9.3 (2025-10-09)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed subcommand discovery in help text. Behavior should now be the same as \u003ccode\u003e1.8\u003c/code\u003e. [\u003ca href=\"https://redirect.github.com/ewels/rich-click/pull/304\"\u003e#304\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.9.2 (2025-10-04)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed legacy windows rendering\u003c/li\u003e\n\u003cli\u003eFix issue with parent \u003ccode\u003eclick.Group\u003c/code\u003e and child \u003ccode\u003erich_click.RichCommand\u003c/code\u003e error formatter not resolving.\u003c/li\u003e\n\u003cli\u003eAdd headers to tables (by default these are not shown).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.9.1 (2025-09-20)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed bug where running the \u003ccode\u003erich-click\u003c/code\u003e CLI on a \u003ccode\u003e@rich_click.argument()\u003c/code\u003e sometimes caused arguments show up in the option panel when it shouldn't.\u003c/li\u003e\n\u003cli\u003eSlightly reduced horizontal padding of the \u003ccode\u003emodern\u003c/code\u003e theme format.\u003c/li\u003e\n\u003cli\u003eFixed Click 8.3 compatibility with rendering defaults in help text.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.9.0 (2025-09-16)\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\nVersion 1.9.0 deprecates support for a lot of old versions of things:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ePython 3.7 support is removed.\u003c/strong\u003e The minimum supported Python version is 3.8.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eClick 7 support is removed.\u003c/strong\u003e The minimum supported Click version is 8.0.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRich 10 and 11 support is removed.\u003c/strong\u003e The minimum supported Rich version is 12.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\nVersion 1.9.0 introduces a minor breaking change:\nThe \u003ccode\u003eDEFAULT_STRING\u003c/code\u003e, \u003ccode\u003eENVVAR_STRING\u003c/code\u003e, \u003ccode\u003eREQUIRED_STRING\u003c/code\u003e, and \u003ccode\u003eDEPRECATED_STRING\u003c/code\u003e config options are now rendered with \u003ccode\u003eText.from_markup\u003c/code\u003e.\nSo for example, \u003ccode\u003eREQUIRED_STRING = \u0026quot;[required]\u0026quot;\u003c/code\u003e would be rendered as Rich markup.\nYou must now escape the rich markup: \u003ccode\u003eREQUIRED_STRING = \u0026quot;\\\\[required]\u0026quot;\u003c/code\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003eBig changes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eThemes!\u003c/strong\u003e Check them out with \u003ccode\u003erich-click --themes\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTyper support:\u003c/strong\u003e \u003ccode\u003erich-click typer_app --help\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRichPanels\u003c/strong\u003e API introduced. This replaces the \u0026quot;groups\u0026quot; feature going forward (although groups will continue to be supported).\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e@click.option_panel()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e@click.command_panel()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eIDE tab completion support for decorators\u003c/strong\u003e. Now you should no longer need to guess what goes in \u003ccode\u003e@click.option()\u003c/code\u003e or \u003ccode\u003e@click.command(context_settings=...)\u003c/code\u003e etc.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHelp for arguments:\u003c/strong\u003e \u003ccode\u003ehelp=\u003c/code\u003e is now a valid kwarg for \u003ccode\u003e@click.argument()\u003c/code\u003e decorator. See docs for more information.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSmall changes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u0026quot;Deprecated\u0026quot; text properly handled and stylized in all places.\u003c/li\u003e\n\u003cli\u003eCommand aliases: \u003ccode\u003e@cli.command(aliases=[\u0026quot;foo\u0026quot;])\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/ewels/rich-click/commit/7577bb99779c3789f252bc59617daaefdd81cf75\"\u003e\u003ccode\u003e7577bb9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ewels/rich-click/issues/309\"\u003e#309\u003c/a\u003e from dwreeves/1.9.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/69152920143a12f4f9c47ccf9056a164048b7935\"\u003e\u003ccode\u003e6915292\u003c/code\u003e\u003c/a\u003e version bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/d1d294c8868d5b363e7ae96608722cb50223f3ec\"\u003e\u003ccode\u003ed1d294c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ewels/rich-click/issues/308\"\u003e#308\u003c/a\u003e from dwreeves/fix-flag-value-issue\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/2bcbd9f7c716079437c3f6024ad089335a184889\"\u003e\u003ccode\u003e2bcbd9f\u003c/code\u003e\u003c/a\u003e update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/fdbe0267dd492cfbc07817b0f2de5090c2e65b1a\"\u003e\u003ccode\u003efdbe026\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ewels/rich-click/issues/306\"\u003e#306\u003c/a\u003e from omad/patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/f55d3b8cb01feaaee720498bcea3581c859867cb\"\u003e\u003ccode\u003ef55d3b8\u003c/code\u003e\u003c/a\u003e Merge branch 'patch-1' of github.com-dwreeves:omad/rich-click into patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/515a091913fbe70a0172143ce7feed253e3763db\"\u003e\u003ccode\u003e515a091\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ewels/rich-click/issues/307\"\u003e#307\u003c/a\u003e from dwreeves/typer-0.20-support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/49dff4b13a1357307386edc73c540ecbda1c4854\"\u003e\u003ccode\u003e49dff4b\u003c/code\u003e\u003c/a\u003e Fix Typer 0.20\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/78793440af87f4e9b9204bbff90bfa2bf6fedbc2\"\u003e\u003ccode\u003e7879344\u003c/code\u003e\u003c/a\u003e Fix example links for documentation site\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/0ea0e0a13b199cc1cf28ece1338bf0838772727b\"\u003e\u003ccode\u003e0ea0e0a\u003c/code\u003e\u003c/a\u003e Bump to 1.9.3\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ewels/rich-click/compare/v1.8.8...v1.9.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `securesystemslib` from 1.3.0 to 1.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/releases\"\u003esecuresystemslib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.3.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/blob/v1.3.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e for details.\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/secure-systems-lab/securesystemslib/blob/main/CHANGELOG.md\"\u003esecuresystemslib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003esecuresystemslib v1.3.1\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAWSSigner: Don't send payload to AWS for signing, send hash only (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1026\"\u003e#1026\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSet Development status classifier to \u0026quot;production/stable\u0026quot; in Python\npackaging (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1030\"\u003e#1030\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternals\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMinor infrastructure changes (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1005\"\u003e#1005\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1013\"\u003e#1013\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/secure-systems-lab/securesystemslib/commit/6f774190b90f0aa9d5d7e077680adbaa29c5cd6c\"\u003e\u003ccode\u003e6f77419\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1030\"\u003e#1030\u003c/a\u003e from jku/release-prep-1.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/b71cc5271a9a7b6898c79c1a12393d90996d5388\"\u003e\u003ccode\u003eb71cc52\u003c/code\u003e\u003c/a\u003e Prepare release 1.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/f6835096a845acf25dc3675105937be2565b9e66\"\u003e\u003ccode\u003ef683509\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1026\"\u003e#1026\u003c/a\u003e from ArkadiuszNitkaSWI/fix-aws-signer\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/97527198c7bf5b75ef9fb8996412df5453995080\"\u003e\u003ccode\u003e9752719\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1027\"\u003e#1027\u003c/a\u003e from secure-systems-lab/dependabot/pip/test-and-lint...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/4226b762bf3333b5947af9cf29ed751afbfd69b9\"\u003e\u003ccode\u003e4226b76\u003c/code\u003e\u003c/a\u003e build(deps): bump the test-and-lint-dependencies group with 4 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/6394e3e467c091a06ee95dad674dec7e991758c8\"\u003e\u003ccode\u003e6394e3e\u003c/code\u003e\u003c/a\u003e Review changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/dee9a831390c9a69c0e66f7c34779e9eea6dcc6d\"\u003e\u003ccode\u003edee9a83\u003c/code\u003e\u003c/a\u003e linter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/07b0fc780d9d1f4c0843ce3e2096e1216814bd06\"\u003e\u003ccode\u003e07b0fc7\u003c/code\u003e\u003c/a\u003e update .gitignore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/e8158a4eb131760714290b9839e3e40f9cd4229c\"\u003e\u003ccode\u003ee8158a4\u003c/code\u003e\u003c/a\u003e Fix AWS signer, allow messages bigger than 4kB\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/e23f855ddecb97d4baddffc068e9591451b9aa72\"\u003e\u003ccode\u003ee23f855\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1023\"\u003e#1023\u003c/a\u003e from secure-systems-lab/dependabot/pip/dependencies-...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/compare/v1.3.0...v1.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.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 `rich` from 14.0.0 to 14.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Textualize/rich/releases\"\u003erich's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eThe Easy as Pi release\u003c/h2\u003e\n\u003cp\u003eThis release bumps Python compatibility to the just-released Python 3.14.\u003c/p\u003e\n\u003ch2\u003e[14.2.0] - 2025-10-09\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePython3.14 compatibility \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3861\"\u003eTextualize/rich#3861\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eThe Lively Release\u003c/h2\u003e\n\u003cp\u003eLive objects may now be nested. Previously a progress bar inside another progress context would fail. See the changelog below for this and other changes.\u003c/p\u003e\n\u003ch2\u003e[14.1.0] - 2025-06-25\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved \u003ccode\u003etyping_extensions\u003c/code\u003e from runtime dependencies \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3763\"\u003eTextualize/rich#3763\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLive objects (including Progress) may now be nested \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3768\"\u003eTextualize/rich#3768\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded padding property to Syntax which returns a tuple of four integers \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3782\"\u003eTextualize/rich#3782\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed extraction of recursive exceptions \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3772\"\u003eTextualize/rich#3772\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed padding applied to Syntax \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3782\"\u003eTextualize/rich#3782\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003ePanel\u003c/code\u003e title missing the panel background style \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3569\"\u003eTextualize/rich#3569\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eTTY_INTERACTIVE\u003c/code\u003e environment variable to force interactive mode off or on \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3777\"\u003eTextualize/rich#3777\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/Textualize/rich/blob/master/CHANGELOG.md\"\u003erich's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[14.2.0] - 2025-10-09\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePython3.14 compatibility \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3861\"\u003eTextualize/rich#3861\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[14.1.0] - 2025-06-25\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved \u003ccode\u003etyping_extensions\u003c/code\u003e from runtime dependencies \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3763\"\u003eTextualize/rich#3763\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLive objects (including Progress) may now be nested \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3768\"\u003eTextualize/rich#3768\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded padding property to Syntax which returns a tuple of four integers \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3782\"\u003eTextualize/rich#3782\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed extraction of recursive exceptions \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3772\"\u003eTextualize/rich#3772\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed padding applied to Syntax \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3782\"\u003eTextualize/rich#3782\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003ePanel\u003c/code\u003e title missing the panel background style \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3569\"\u003eTextualize/rich#3569\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eTTY_INTERACTIVE\u003c/code\u003e environment variable to force interactive mode off or on \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3777\"\u003eTextualize/rich#3777\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/Textualize/rich/commit/494f83c923ca54ecc943bf5e60c0004e65fbb54e\"\u003e\u003ccode\u003e494f83c\u003c/code\u003e\u003c/a\u003e changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/d476e85a19ea62966a25f6df0e0a287da52ab35f\"\u003e\u003ccode\u003ed476e85\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3862\"\u003e#3862\u003c/a\u003e from GeroZayas/docs/es-readme-sync-2025-10\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/518daaa39c17bad485c970bf229424784fbdf044\"\u003e\u003ccode\u003e518daaa\u003c/code\u003e\u003c/a\u003e docs(es): sync README.es.md (macOS, 16 colors, Python 3.8+)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/cd5074f87804aac2f6e5c6143e1cac5e3a0bddc5\"\u003e\u003ccode\u003ecd5074f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3861\"\u003e#3861\u003c/a\u003e from Textualize/python314\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/041406ca9b60af8fcc00cd7fc1b2973ab51eb851\"\u003e\u003ccode\u003e041406c\u003c/code\u003e\u003c/a\u003e removed asv\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/655b5210cb1403100a646d167cf027eec760dd9f\"\u003e\u003ccode\u003e655b521\u003c/code\u003e\u003c/a\u003e test fixes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/27c2d2df7523315de4b81577d414db8c1c7312f9\"\u003e\u003ccode\u003e27c2d2d\u003c/code\u003e\u003c/a\u003e bump for Python3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/ea9d4db5d84b4e834979304e3053bf757daae322\"\u003e\u003ccode\u003eea9d4db\u003c/code\u003e\u003c/a\u003e Update feature_request.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/2dca1b70359dac61e1bbfb6f14ebe19a5ab79c3d\"\u003e\u003ccode\u003e2dca1b7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3808\"\u003e#3808\u003c/a\u003e from Textualize/bump1410\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/19b6dddd807b887eaaf313174fff3eb2e22cda25\"\u003e\u003ccode\u003e19b6ddd\u003c/code\u003e\u003c/a\u003e version bump\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Textualize/rich/compare/v14.0.0...v14.2.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 `dynaconf` from 3.2.10 to 3.2.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dynaconf/dynaconf/releases\"\u003edynaconf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.2.12\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eIncremental improvment to access performance by \u003ca href=\"https://github.com/pedro-psb\"\u003e\u003ccode\u003e@​pedro-psb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/pull/1304\"\u003edynaconf/dynaconf#1304\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: get method to return Any type. by \u003ca href=\"https://github.com/rochacbruno\"\u003e\u003ccode\u003e@​rochacbruno\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/pull/1314\"\u003edynaconf/dynaconf#1314\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eperf: add lru caching to \u003ccode\u003efind_the_correct_casing\u003c/code\u003e function by \u003ca href=\"https://github.com/pedro-psb\"\u003e\u003ccode\u003e@​pedro-psb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/pull/1326\"\u003edynaconf/dynaconf#1326\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/dynaconf/dynaconf/compare/3.2.11...3.2.12\"\u003ehttps://github.com/dynaconf/dynaconf/compare/3.2.11...3.2.12\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.2.11\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eRelease version 3.2.11\u003c/p\u003e\n\u003cp\u003eShortlog of commits since last release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBruno Rocha (9): \u003ca href=\"https://github.com/rochacbruno\"\u003e\u003ccode\u003e@​rochacbruno\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003efix(cli): handle empty hooks and boolean environments.\u003c/li\u003e\n\u003cli\u003efix: Better way for CLI to find the Django Settings\u003c/li\u003e\n\u003cli\u003efix: windows CI\u003c/li\u003e\n\u003cli\u003efeat: Run CLI as module with \u003ccode\u003epython -m dynaconf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1290\"\u003e#1290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: use sys.argv instead of click.get_os_args (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1292\"\u003e#1292\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: \u003ccode\u003e-k\u003c/code\u003e must exit code 1 when key do not exist (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1293\"\u003e#1293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: envless load file (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1295\"\u003e#1295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: add correct supported python version to 3.2.x\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFabricio Aguiar (1): \u003ca href=\"https://github.com/fao89\"\u003e\u003ccode\u003e@​fao89\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003efix: make raw variables private (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1287\"\u003e#1287\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePedro Brochado (1): \u003ca href=\"https://github.com/pedro-psb\"\u003e\u003ccode\u003e@​pedro-psb\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003edocs: clarification on redis hash title when using custom envvar prefixes (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMilestone \u003ca href=\"https://github.com/dynaconf/dynaconf/milestone/31?closed=1\"\u003ehttps://github.com/dynaconf/dynaconf/milestone/31?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/dynaconf/dynaconf/compare/3.2.10...3.2.11\"\u003ehttps://github.com/dynaconf/dynaconf/compare/3.2.10...3.2.11\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/dynaconf/dynaconf/blob/3.2.12/CHANGELOG.md\"\u003edynaconf's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pedro-psb/dynaconf/releases/tag/3.2.12\"\u003e3.2.12\u003c/a\u003e - 2025-10-10\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eget method to return Any type.. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003eremove unnecessary recursive evaluation call on Settings.get. \u003cem\u003eBy Pedro Brochado\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003eimprove performance of settings access in a loop (part 1). \u003cem\u003eBy Pedro Brochado\u003c/em\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/releases/tag/3.2.11\"\u003e3.2.11\u003c/a\u003e - 2025-05-06\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd correct supported python version to 3.2.x. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e-k\u003c/code\u003e must exit code 1 when key do not exist (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1293\"\u003e#1293\u003c/a\u003e). \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003euse sys.argv instead of click.get_os_args (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1292\"\u003e#1292\u003c/a\u003e). \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003ewindows CI. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003emake raw variables private (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1287\"\u003e#1287\u003c/a\u003e). \u003cem\u003eBy Fabricio Aguiar\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003eBetter way for CLI to find the Django Settings. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003ehandle empty hooks and boolean environments.. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eenvless load file (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1295\"\u003e#1295\u003c/a\u003e). \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003eRun CLI as module with \u003ccode\u003epython -m dynaconf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1290\"\u003e#1290\u003c/a\u003e). \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eclarification on redis hash title when using custom envvar prefixes (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1273\"\u003e#1273\u003c/a\u003e). \u003cem\u003eBy Pedro Brochado\u003c/em\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/dynaconf/dynaconf/commit/7606f351ac460b15c56e7a538300de4a501c56e7\"\u003e\u003ccode\u003e7606f35\u003c/code\u003e\u003c/a\u003e Release version 3.2.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/da44e5182940299dd90ca3e2a0e0e3c23cb9ebf7\"\u003e\u003ccode\u003eda44e51\u003c/code\u003e\u003c/a\u003e perf: add lru caching to \u003ccode\u003efind_the_correct_casing\u003c/code\u003e function (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1326\"\u003e#1326\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/b75eda0da141bdc29f707f2cb0c29e06b03a72bb\"\u003e\u003ccode\u003eb75eda0\u003c/code\u003e\u003c/a\u003e fix: get method to return Any type.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/4f3df1a47bcb71feddf7565f603e7994c65ede65\"\u003e\u003ccode\u003e4f3df1a\u003c/code\u003e\u003c/a\u003e misc: add some profile/perf scripts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/420acebf64e77ba475df94dfd7d409207e5e239d\"\u003e\u003ccode\u003e420aceb\u003c/code\u003e\u003c/a\u003e refactor: merge \u003cem\u003esafe\u003c/em\u003e{get,copy} into .get and .copy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/18c0c8422dc9651d57c76d1b098ad6fb3f75c09d\"\u003e\u003ccode\u003e18c0c84\u003c/code\u003e\u003c/a\u003e fix: remove unnecessary recursive evaluation call on Settings.get\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/0fde96f2e0b71309e63800ddac8eceda062155a9\"\u003e\u003ccode\u003e0fde96f\u003c/code\u003e\u003c/a\u003e refactor: rewrite decorator as explicit call\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/52efd9ed78d2187550e03a2ae5008661d5e28df9\"\u003e\u003ccode\u003e52efd9e\u003c/code\u003e\u003c/a\u003e Bump to version 3.2.12-dev0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/c61da8fd191196c1341bd3d8a8dd895e9cf671ae\"\u003e\u003ccode\u003ec61da8f\u003c/code\u003e\u003c/a\u003e Release version 3.2.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/f8189fb6c130ff4709450e7daebcf1c174aea248\"\u003e\u003ccode\u003ef8189fb\u003c/code\u003e\u003c/a\u003e fix: add correct supported python version to 3.2.x\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/dynaconf/dynaconf/compare/3.2.10...3.2.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `isort` from 6.0.1 to 7.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/isort/releases\"\u003eisort's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.0.0\u003c/h2\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003ch2\u003e:boom: Breaking Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9 (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2430\"\u003e#2430\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:rocket: Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eShow absolute paths in skipped file messages (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2416\"\u003e#2416\u003c/a\u003e) \u003ca href=\"https://github.com/pranlawate\"\u003e\u003ccode\u003e@​pranlawate\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:beetle: Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSome fixes for Python 3.14 (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2433\"\u003e#2433\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTest on \u003ccode\u003e3.14\u003c/code\u003e and fix any bugs (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2425\"\u003e#2425\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CHANGELOG.md + Fix Formatting and Grammar (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2419\"\u003e#2419\u003c/a\u003e) \u003ca href=\"https://github.com/lukbrew25\"\u003e\u003ccode\u003e@​lukbrew25\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix output of hanging indent for long lines with noqa (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2407\"\u003e#2407\u003c/a\u003e) \u003ca href=\"https://github.com/matan1008\"\u003e\u003ccode\u003e@​matan1008\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:construction_worker: Continuous Integration\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFormat with \u003ccode\u003eruff\u003c/code\u003e instead of \u003ccode\u003eblack\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2432\"\u003e#2432\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTarget 3.10 for \u003ccode\u003eruff\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2431\"\u003e#2431\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate development dependencies to latest version (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2426\"\u003e#2426\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: update pre-commit examples to version 6.1.0 (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2413\"\u003e#2413\u003c/a\u003e) \u003ca href=\"https://github.com/pranlawate\"\u003e\u003ccode\u003e@​pranlawate\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall cleanup for developer environment (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2418\"\u003e#2418\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:package: Dependencies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/setup-python from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2411\"\u003e#2411\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e6.1.0\u003c/h2\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate docs discussions channel (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2410\"\u003e#2410\u003c/a\u003e) \u003ca href=\"https://github.com/staticdev\"\u003e\u003ccode\u003e@​staticdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd python 3.14 classifier and badge (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2409\"\u003e#2409\u003c/a\u003e) \u003ca href=\"https://github.com/staticdev\"\u003e\u003ccode\u003e@​staticdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop use of non-standard pkg_resources API (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2405\"\u003e#2405\u003c/a\u003e) \u003ca href=\"https://github.com/dvarrazzo\"\u003e\u003ccode\u003e@​dvarrazzo\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse working isort version in pre-commit example (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2402\"\u003e#2402\u003c/a\u003e) \u003ca href=\"https://github.com/iainelder\"\u003e\u003ccode\u003e@​iainelder\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix typo in _get_files_from_dir_cached test (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2392\"\u003e#2392\u003c/a\u003e) \u003ca href=\"https://github.com/tiltingpenguin\"\u003e\u003ccode\u003e@​tiltingpenguin\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eResolve bandit warnings (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2379\"\u003e#2379\u003c/a\u003e) \u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd tox for cross-platform, parallel test suite execution (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2378\"\u003e#2378\u003c/a\u003e) \u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Project URLs to PyPI Side Panel (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2387\"\u003e#2387\u003c/a\u003e) \u003ca href=\"https://github.com/guillermodotn\"\u003e\u003ccode\u003e@​guillermodotn\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typos (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2376\"\u003e#2376\u003c/a\u003e) \u003ca href=\"https://github.com/co63oc\"\u003e\u003ccode\u003e@​co63oc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:construction_worker: Continuous Integration\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd make bash scripts portable (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2377\"\u003e#2377\u003c/a\u003e) \u003ca href=\"https://github.com/staticdev\"\u003e\u003ccode\u003e@​staticdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:package: Dependencies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 4 to 5 in the github-actions group (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2406\"\u003e#2406\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/isort/blob/main/CHANGELOG.md\"\u003eisort's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003cp\u003eNOTE: isort follows the \u003ca href=\"https://semver.org/\"\u003esemver\u003c/a\u003e versioning standard.\nFind out more about isort's release policy \u003ca href=\"https://pycqa.github.io/isort/docs/major_releases/release_policy\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eUnreleased\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved \u003ccode\u003e--old-finders\u003c/code\u003e and \u003ccode\u003e--magic-placement\u003c/code\u003e flags and \u003ccode\u003eold_finders\u003c/code\u003e configuration option. The legacy finder logic that relied on environment introspection has been removed (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2445\"\u003e#2445\u003c/a\u003e) \u003ca href=\"https://github.com/joao-faria-dev\"\u003e\u003ccode\u003e@​joao-faria-dev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e6.1.0 October 1 2025\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd python 3.14 classifier and badge (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2409\"\u003e#2409\u003c/a\u003e) \u003ca href=\"https://github.com/staticdev\"\u003e\u003ccode\u003e@​staticdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop use of non-standard pkg_resources API (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2405\"\u003e#2405\u003c/a\u003e) \u003ca href=\"https://github.com/dvarrazzo\"\u003e\u003ccode\u003e@​dvarrazzo\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/PyCQA/isort/commit/0a09c783808cfe77bb3269250f663ff733d23302\"\u003e\u003ccode\u003e0a09c78\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2433\"\u003e#2433\u003c/a\u003e from DanielNoord/python-314\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/0fee794a05b5d0c471ac80bc8943f9843ca29644\"\u003e\u003ccode\u003e0fee794\u003c/code\u003e\u003c/a\u003e Add 3.14 to \u003ccode\u003estdlibds\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/332a1ad0b68bf3a3acac055b0ec3666408b3b425\"\u003e\u003ccode\u003e332a1ad\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003ezstandard\u003c/code\u003e for 3.14 compat\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/f756e5653afcf6d79ec4d0240b1868cbebd8fafd\"\u003e\u003ccode\u003ef756e56\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2432\"\u003e#2432\u003c/a\u003e from DanielNoord/ruff-it-up\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/52f5134889d345ff35afdcb86501c8221b804c70\"\u003e\u003ccode\u003e52f5134\u003c/code\u003e\u003c/a\u003e Format with \u003ccode\u003eruff\u003c/code\u003e instead of \u003ccode\u003eblack\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/012aa69fcadb3c89ff92a3d96aa449be7ae6746f\"\u003e\u003ccode\u003e012aa69\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2431\"\u003e#2431\u003c/a\u003e from DanielNoord/ruff-it-up\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/89773dbb371192541092657972a74e9ce0bbbc74\"\u003e\u003ccode\u003e89773db\u003c/code\u003e\u003c/a\u003e Target 3.10 with \u003ccode\u003eruff\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/933e382f98a0c77b4c6e33c4e3ef12bd57192884\"\u003e\u003ccode\u003e933e382\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2430\"\u003e#2430\u003c/a\u003e from DanielNoord/drop-39\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/8b6e00cbe643a216da57fed4baa282d0a4a1b829\"\u003e\u003ccode\u003e8b6e00c\u003c/code\u003e\u003c/a\u003e Remove support for Python 3.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/b5f9f296ad873734e8caa3a731f27360648d9b37\"\u003e\u003ccode\u003eb5f9f29\u003c/code\u003e\u003c/a\u003e Bump profile plugin to 3.10+ and re-lock\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PyCQA/isort/compare/6.0.1...7.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlalchemy` from 2.0.40 to 2.0.44\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/releases\"\u003esqlalchemy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.0.44\u003c/h1\u003e\n\u003cp\u003eReleased: October 10, 2025\u003c/p\u003e\n\u003ch2\u003eplatform\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e[platform] [bug]\u003c/strong\u003e Unblocked automatic greenlet installation for Python 3.14 now that\nthere are greenlet wheels on pypi for python 3.14.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eorm\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [usecase]\u003c/strong\u003e The way ORM Annotated Declarative interprets Python \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e type aliases\nin \u003ccode\u003eMapped[]\u003c/code\u003e annotations has been refined to expand the lookup scheme. A\n\u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e type can now be resolved based on either its direct presence in\n\u003ccode\u003e_orm.registry.type_annotation_map\u003c/code\u003e or its immediate resolved\nvalue, as long as a recursive lookup across multiple \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e types is\nnot required for it to resolve. This change reverses part of the\nrestrictions introduced in 2.0.37 as part of \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/11955\"\u003e#11955\u003c/a\u003e, which\ndeprecated (and disallowed in 2.1) the ability to resolve any \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e\ntype that was not explicitly present in\n\u003ccode\u003e_orm.registry.type_annotation_map\u003c/code\u003e. Recursive lookups of\n\u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e types remains deprecated in 2.0 and disallowed in version 2.1,\nas do implicit lookups of \u003ccode\u003eNewType\u003c/code\u003e types without an entry in\n\u003ccode\u003e_orm.registry.type_annotation_map\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eAdditionally, new support has been added for generic \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e aliases that\nrefer to \u003ca href=\"https://peps.python.org/pep-0593\"\u003ePEP 593\u003c/a\u003e \u003ccode\u003eAnnotated\u003c/code\u003e constructs containing\n\u003ccode\u003e_orm.mapped_column()\u003c/code\u003e configurations. See the sections below for\nexamples.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12829\"\u003e#12829\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed a caching issue where \u003ccode\u003e_orm.with_loader_criteria()\u003c/code\u003e would\nincorrectly reuse cached bound parameter values when used with\n\u003ccode\u003e_sql.CompoundSelect\u003c/code\u003e constructs such as \u003ccode\u003e_sql.union()\u003c/code\u003e. The\nissue was caused by the cache key for compound selects not including the\nexecution options that are part of the \u003ccode\u003e_sql.Executable\u003c/code\u003e base class,\nwhich \u003ccode\u003e_orm.with_loader_criteria()\u003c/code\u003e uses to apply its criteria\ndynamically. The fix ensures that compound selects and other executable\nconstructs properly include execution options in their cache key traversal.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12905\"\u003e#12905\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eengine\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e[engine] [bug]\u003c/strong\u003e Implemented initial support for free-threaded Python by adding new tests\nand reworking the test harness to include Python 3.13t and Python 3.14t in\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psycopg2` from 2.9.10 to 2.9.11\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psycopg/psycopg2/blob/master/NEWS\"\u003epsycopg2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eCurrent release\u003c/h2\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.11\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eAvoid a segfault passing more arguments than placeholders if Python is built\nwith assertions enabled (:ticket:\u003ccode\u003e[#1791](https://github.com/psycopg/psycopg2/issues/1791)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eAdd riscv64 platform binary packages (:ticket:\u003ccode\u003e[#1813](https://github.com/psycopg/psycopg2/issues/1813)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e~psycopg2.errorcodes\u003c/code\u003e map and \u003ccode\u003e~psycopg2.errors\u003c/code\u003e classes updated to\nPostgreSQL 18.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.8.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.10\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.13.\u003c/li\u003e\n\u003cli\u003eReceive notifications on commit (:ticket:\u003ccode\u003e[#1728](https://github.com/psycopg/psycopg2/issues/1728)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e~psycopg2.errorcodes\u003c/code\u003e map and \u003ccode\u003e~psycopg2.errors\u003c/code\u003e classes updated to\nPostgreSQL 17.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.7.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.9\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.12.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.6.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.8\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWheel package bundled with PostgreSQL 16 libpq in order to add support for\nrecent features, such as \u003ccode\u003esslcertmode\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.7\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix propagation of exceptions raised during module initialization\n(:ticket:\u003ccode\u003e[#1598](https://github.com/psycopg/psycopg2/issues/1598)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix building when pg_config returns an empty string (:ticket:\u003ccode\u003e[#1599](https://github.com/psycopg/psycopg2/issues/1599)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eWheel package bundled with OpenSSL 1.1.1v.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.6\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/psycopg/psycopg2/commit/fd9ae8cad2bcfc3e7e9410e7b6f07cda8f4f05ec\"\u003e\u003ccode\u003efd9ae8c\u003c/code\u003e\u003c/a\u003e chore: bump to version 2.9.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/d923840546942534f0956d9202f914fd9feac5fd\"\u003e\u003ccode\u003ed923840\u003c/code\u003e\u003c/a\u003e chore: update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/d42dc7169d3cd93517e282e9ef5dc2a2b40650a2\"\u003e\u003ccode\u003ed42dc71\u003c/code\u003e\u003c/a\u003e Merge branch 'fix-1791'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/4fde6560c32f06ad1304404c9f7f86148dcc4be0\"\u003e\u003ccode\u003e4fde656\u003c/code\u003e\u003c/a\u003e fix: avoid failed assert passing more arguments than placeholders\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/8308c19d6af0d904b313997539ed33415990a74e\"\u003e\u003ccode\u003e8308c19\u003c/code\u003e\u003c/a\u003e fix: drop warning about the use of deprecated PyWeakref_GetObject function\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/1a1eabf098a3374409bb2ab4b594777b900f396d\"\u003e\u003ccode\u003e1a1eabf\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/github-script from 7 to 8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/897af8b38beda851d7257dfc525129e37c0ec9e0\"\u003e\u003ccode\u003e897af8b\u003c/code\u003e\u003c/a\u003e build(deps): bump peter-evans/repository-dispatch from 3 to 4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/ceefd305117113ca10e383a626e87ba0796f3638\"\u003e\u003ccode\u003eceefd30\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/checkout from 4 to 5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/4dc585430cabe94cee96c5a9de0265d0f55370f1\"\u003e\u003ccode\u003e4dc5854\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/setup-python from 5 to 6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/1945788dcf6172bb1b9328ebc3587ccf0e6a659c\"\u003e\u003ccode\u003e1945788\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg2/issues/1802\"\u003e#1802\u003c/a\u003e from edgarrmondragon/cp314-wheels\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psycopg/psycopg2/compare/2.9.10...2.9.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `beaupy` 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/petereon/beaupy/releases\"\u003ebeaupy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.10.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): update dependency flake8 to v7.1.1 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/129\"\u003epetereon/beaupy#129\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency isort to v5.13.2 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/130\"\u003epetereon/beaupy#130\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency mypy to v1.14.1 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/131\"\u003epetereon/beaupy#131\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: adding documentation for global config by \u003ca href=\"https://github.com/petereon\"\u003e\u003ccode\u003e@​petereon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/148\"\u003epetereon/beaupy#148\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency pytest to v8.4.2 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/147\"\u003epetereon/beaupy#147\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency black to v25 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/144\"\u003epetereon/beaupy#144\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency pydoc-markdown to v4.8.2 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/132\"\u003epetereon/beaupy#132\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/petereon/beaupy/compare/v3.10.1...v3.10.2\"\u003ehttps://github.com/petereon/beaupy/compare/v3.10.1...v3.10.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/a2dc15764508c0451ed4dc386f3b0761fe7a9ce2\"\u003e\u003ccode\u003ea2dc157\u003c/code\u003e\u003c/a\u003e chore: bump version from 3.10.1 to 3.10.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/7599e5a43be6893c81612314f410ffa602a15f57\"\u003e\u003ccode\u003e7599e5a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/132\"\u003e#132\u003c/a\u003e from petereon/renovate/pydoc-markdown-4.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/6b2bb33d4fef6f2a607e1f42c873bd92ffc2b0d5\"\u003e\u003ccode\u003e6b2bb33\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency pydoc-markdown to v4.8.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/d2b0cbc3bb6b191816fdef9319a150e9b305ae7f\"\u003e\u003ccode\u003ed2b0cbc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/144\"\u003e#144\u003c/a\u003e from petereon/renovate/black-25.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/926fb4e8773f587417e7a3f453af1641364888e5\"\u003e\u003ccode\u003e926fb4e\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency black to v25\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/df126efc542641c8f7385f8087a19a95ee1615b7\"\u003e\u003ccode\u003edf126ef\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/147\"\u003e#147\u003c/a\u003e from petereon/renovate/pytest-8.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/0eb77250022a166836a4594a489d9c178591234b\"\u003e\u003ccode\u003e0eb7725\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency pytest to v8.4.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/7b9234631ce3510e433fbb59d4c0e829d70fd569\"\u003e\u003ccode\u003e7b92346\u003c/code\u003e\u003c/a\u003e chore: linting code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/531e870193a7cb26ab43370a45d8562cb44d8b15\"\u003e\u003ccode\u003e531e870\u003c/code\u003e\u003c/a\u003e chore: fix weird types\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/dfd9dbc54327c19455197566f7161de08ad3180b\"\u003e\u003ccode\u003edfd9dbc\u003c/code\u003e\u003c/a\u003e docs: adding documentation for global config (\u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/148\"\u003e#148\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/petereon/beaupy/compare/v3.10.1...v3.10.2\"\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.2 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 ...\n\n_Description has been truncated_","html_url":"https://github.com/repository-service-tuf/repository-service-tuf-cli/pull/915","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/repository-service-tuf%2Frepository-service-tuf-cli/issues/915","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/915/packages"}},{"old_version":"3.6.5","new_version":"4.1.0","update_type":"major","path":null,"pr_created_at":"2025-11-18T10:59:29.000Z","version_change":"3.6.5 → 4.1.0","issue":{"uuid":"3637510976","node_id":"PR_kwDOIPxgHc60FA43","number":81,"state":"closed","title":"build(deps): bump the python-deps group across 1 directory with 22 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-12-01T13:50:57.000Z","author_association":null,"state_reason":null,"created_at":"2025-11-18T10:59:29.000Z","updated_at":"2025-12-01T13:50:59.000Z","time_to_close":1133488,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python-deps","update_count":22,"packages":[{"name":"redis","old_version":"6.4.0","new_version":"7.0.1","repository_url":"https://github.com/redis/redis-py"},{"name":"dynaconf","old_version":"3.2.11","new_version":"3.2.12","repository_url":"https://github.com/dynaconf/dynaconf"},{"name":"securesystemslib","old_version":"1.3.0","new_version":"1.3.1","repository_url":"https://github.com/secure-systems-lab/securesystemslib"},{"name":"sqlalchemy","old_version":"2.0.43","new_version":"2.0.44","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"psycopg2","old_version":"2.9.10","new_version":"2.9.11","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"alembic","old_version":"1.16.4","new_version":"1.17.2","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"pydantic","old_version":"2.11.7","new_version":"2.12.4","repository_url":"https://github.com/pydantic/pydantic"},{"name":"boto3","old_version":"1.40.16","new_version":"1.40.75","repository_url":"https://github.com/boto/boto3"},{"name":"awswrangler","old_version":"3.12.1","new_version":"3.14.0","repository_url":"https://github.com/aws/aws-sdk-pandas"},{"name":"sigstore","old_version":"3.6.5","new_version":"4.1.0","repository_url":"https://github.com/sigstore/sigstore-python"},{"name":"google-cloud-kms","old_version":"3.5.1","new_version":"3.7.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"tox","old_version":"4.28.4","new_version":"4.32.0","repository_url":"https://github.com/tox-dev/tox"},{"name":"coverage","old_version":"7.10.5","new_version":"7.11.3","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"black","old_version":"25.1.0","new_version":"25.11.0","repository_url":"https://github.com/psf/black"},{"name":"isort","old_version":"6.0.1","new_version":"7.0.0","repository_url":"https://github.com/PyCQA/isort"},{"name":"mypy","old_version":"1.17.1","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"},{"name":"pytest","old_version":"8.4.1","new_version":"9.0.1","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"6.2.1","new_version":"7.0.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"sphinxcontrib-plantuml","old_version":"0.30","new_version":"0.31","repository_url":"https://github.com/sphinx-contrib/plantuml"},{"name":"pre-commit","old_version":"4.3.0","new_version":"4.4.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"bandit","old_version":"1.8.6","new_version":"1.9.1","repository_url":"https://github.com/PyCQA/bandit"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-deps group with 21 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [redis](https://github.com/redis/redis-py) | `6.4.0` | `7.0.1` |\n| [dynaconf](https://github.com/dynaconf/dynaconf) | `3.2.11` | `3.2.12` |\n| [securesystemslib](https://github.com/secure-systems-lab/securesystemslib) | `1.3.0` | `1.3.1` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.43` | `2.0.44` |\n| [psycopg2](https://github.com/psycopg/psycopg2) | `2.9.10` | `2.9.11` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.16.4` | `1.17.2` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.7` | `2.12.4` |\n| [boto3](https://github.com/boto/boto3) | `1.40.16` | `1.40.75` |\n| [awswrangler](https://github.com/aws/aws-sdk-pandas) | `3.12.1` | `3.14.0` |\n| [sigstore](https://github.com/sigstore/sigstore-python) | `3.6.5` | `4.1.0` |\n| [google-cloud-kms](https://github.com/googleapis/google-cloud-python) | `3.5.1` | `3.7.0` |\n| [tox](https://github.com/tox-dev/tox) | `4.28.4` | `4.32.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.10.5` | `7.11.3` |\n| [black](https://github.com/psf/black) | `25.1.0` | `25.11.0` |\n| [isort](https://github.com/PyCQA/isort) | `6.0.1` | `7.0.0` |\n| [mypy](https://github.com/python/mypy) | `1.17.1` | `1.18.2` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.1` | `9.0.1` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `6.2.1` | `7.0.0` |\n| [sphinxcontrib-plantuml](https://github.com/sphinx-contrib/plantuml) | `0.30` | `0.31` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.3.0` | `4.4.0` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.8.6` | `1.9.1` |\n\n\nUpdates `redis` from 6.4.0 to 7.0.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/redis-py/releases\"\u003eredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.0.1\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003cp\u003eThis release adds small fixes related to documentation.\u003c/p\u003e\n\u003ch2\u003e🧰 Maintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd 'multi_database' section to documentation index (313d93f)\u003c/li\u003e\n\u003cli\u003eRevised multi-database client documentation(78df745)\u003c/li\u003e\n\u003cli\u003eAdding info about Multi-database client in README.md (3f7a55e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWe'd like to thank all the contributors who worked on this release!\n\u003ca href=\"https://github.com/dmaier\"\u003e\u003ccode\u003e@​dmaier\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/petyaslavova\"\u003e\u003ccode\u003e@​petyaslavova\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.0.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003cp\u003eOne of the main features introduced in this release is a new type of client \u003ccode\u003eMultiDBClient\u003c/code\u003e. The purpose of this client is a communication with multiple databases that are eventually consistent (Active-Active setup) and handling failures by failover across databases.\nMore information could be found in docs.\u003c/p\u003e\n\u003ch2\u003e🚀 New Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for maintenance push notifications handling during server upgrade or maintenance procedures. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3756\"\u003e#3756\u003c/a\u003e \u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3777\"\u003e#3777\u003c/a\u003e \u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3778\"\u003e#3778\u003c/a\u003e \u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3779\"\u003e#3779\u003c/a\u003e \u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3785\"\u003e#3785\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdding WITHATTRIBS option to vector set's vsim command. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3746\"\u003e#3746\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdding ssl_verify_flags_config argument for ssl connection configuration (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3772\"\u003e#3772\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdding new ExternalAuthProviderError that will be raised when we receive 'problem with LDAP service' response from server. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3808\"\u003e#3808\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧪 Experimental Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMulti-database client implementation (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3784\"\u003e#3784\u003c/a\u003e \u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3811\"\u003e#3811\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🔥 Breaking changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdding abstract method declaration for cache property setter in EvictionPolicyInterface(\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3732\"\u003e#3732\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove unused parse_list_to_dict function from helpers (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3733\"\u003e#3733\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoving synchronous context manager handling from async RedisCluster. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3679\"\u003e#3679\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRedis Search/Aggregate improved type annotations (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3676\"\u003e#3676\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoving the threading.Lock locks and replacing them with RLock objects to avoid deadlocks. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3677\"\u003e#3677\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate ping command docstrings and method return type hint (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3789\"\u003e#3789\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixing several *arg type hints in core.py and json module commands (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3793\"\u003e#3793\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixing errors reported by mypy in search module files - query.py, commands.py and aggregation.py. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3666\"\u003e#3666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdding score_cast_func argument to zrank, zrevrank and zunion - for consistency with the other sorted sets commands (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3795\"\u003e#3795\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanging the timeout typehint in async BlockingConnectionPool from int to float (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3801\"\u003e#3801\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoving the threading.Lock locks and replacing them with RLock objects to avoid deadlocks. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3677\"\u003e#3677\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧰 Maintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 4 to 5 (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3760\"\u003e#3760\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix docstring for ssl_check_hostname (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3761\"\u003e#3761\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTypos in vectorset commands.py (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3719\"\u003e#3719\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixing typos in query.py (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3718\"\u003e#3718\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTypos in cluster.py (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3717\"\u003e#3717\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/613a06f5bee94ee8aad3d841dd8c595ae6cc62d2\"\u003e\u003ccode\u003e613a06f\u003c/code\u003e\u003c/a\u003e Updating redis-py package version to 7.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/3f7a55e5914f82787fde15c56c18b105f001745e\"\u003e\u003ccode\u003e3f7a55e\u003c/code\u003e\u003c/a\u003e Adding info about Multi-database client in README.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/313d93f0b90c69ea5e6c7af8ff9b31ee005f4994\"\u003e\u003ccode\u003e313d93f\u003c/code\u003e\u003c/a\u003e Add 'multi_database' section to documentation index\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/78df74522f76341be965e5c719427be6dcd5bedf\"\u003e\u003ccode\u003e78df745\u003c/code\u003e\u003c/a\u003e Revised multi-database client documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/7a4e8bc42a1cbda6b1e8e2e1dfbe8a94766e07f9\"\u003e\u003ccode\u003e7a4e8bc\u003c/code\u003e\u003c/a\u003e Updating package version to 7.0.0 and supported redis versions in readme.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/64a2721d6b0303e7a723066530b467145ee10841\"\u003e\u003ccode\u003e64a2721\u003c/code\u003e\u003c/a\u003e Refactor healthcheck to use PING instead of ECHO (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3811\"\u003e#3811\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/24a7a1027bd6390e161c1c88be35c8acb242833d\"\u003e\u003ccode\u003e24a7a10\u003c/code\u003e\u003c/a\u003e Fixing SORTABLE, INDEXEMPTY and INDEXMISSING order when using RediSearch fiel...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/32ba6d89d2061a44c0c3f36d249fb9929836fca6\"\u003e\u003ccode\u003e32ba6d8\u003c/code\u003e\u003c/a\u003e DOC-5821 update index/query example for runnable notebook (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3807\"\u003e#3807\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/c1e566f9fbd99912d7073b871eeda76d70f61b63\"\u003e\u003ccode\u003ec1e566f\u003c/code\u003e\u003c/a\u003e Add handling of empty spaces during CLIENT LIST response parsing (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3797\"\u003e#3797\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/295bec67ddbf99c205376483f08a3ddebb72f2b2\"\u003e\u003ccode\u003e295bec6\u003c/code\u003e\u003c/a\u003e Adding new ExternalAuthProviderError that will be raised when we receive 'pro...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/redis/redis-py/compare/v6.4.0...v7.0.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `dynaconf` from 3.2.11 to 3.2.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dynaconf/dynaconf/releases\"\u003edynaconf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.2.12\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eIncremental improvment to access performance by \u003ca href=\"https://github.com/pedro-psb\"\u003e\u003ccode\u003e@​pedro-psb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/pull/1304\"\u003edynaconf/dynaconf#1304\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: get method to return Any type. by \u003ca href=\"https://github.com/rochacbruno\"\u003e\u003ccode\u003e@​rochacbruno\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/pull/1314\"\u003edynaconf/dynaconf#1314\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eperf: add lru caching to \u003ccode\u003efind_the_correct_casing\u003c/code\u003e function by \u003ca href=\"https://github.com/pedro-psb\"\u003e\u003ccode\u003e@​pedro-psb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/pull/1326\"\u003edynaconf/dynaconf#1326\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/dynaconf/dynaconf/compare/3.2.11...3.2.12\"\u003ehttps://github.com/dynaconf/dynaconf/compare/3.2.11...3.2.12\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dynaconf/dynaconf/blob/3.2.12/CHANGELOG.md\"\u003edynaconf's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pedro-psb/dynaconf/releases/tag/3.2.12\"\u003e3.2.12\u003c/a\u003e - 2025-10-10\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eget method to return Any type.. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003eremove unnecessary recursive evaluation call on Settings.get. \u003cem\u003eBy Pedro Brochado\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003eimprove performance of settings access in a loop (part 1). \u003cem\u003eBy Pedro Brochado\u003c/em\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/dynaconf/dynaconf/commit/7606f351ac460b15c56e7a538300de4a501c56e7\"\u003e\u003ccode\u003e7606f35\u003c/code\u003e\u003c/a\u003e Release version 3.2.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/da44e5182940299dd90ca3e2a0e0e3c23cb9ebf7\"\u003e\u003ccode\u003eda44e51\u003c/code\u003e\u003c/a\u003e perf: add lru caching to \u003ccode\u003efind_the_correct_casing\u003c/code\u003e function (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1326\"\u003e#1326\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/b75eda0da141bdc29f707f2cb0c29e06b03a72bb\"\u003e\u003ccode\u003eb75eda0\u003c/code\u003e\u003c/a\u003e fix: get method to return Any type.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/4f3df1a47bcb71feddf7565f603e7994c65ede65\"\u003e\u003ccode\u003e4f3df1a\u003c/code\u003e\u003c/a\u003e misc: add some profile/perf scripts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/420acebf64e77ba475df94dfd7d409207e5e239d\"\u003e\u003ccode\u003e420aceb\u003c/code\u003e\u003c/a\u003e refactor: merge \u003cem\u003esafe\u003c/em\u003e{get,copy} into .get and .copy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/18c0c8422dc9651d57c76d1b098ad6fb3f75c09d\"\u003e\u003ccode\u003e18c0c84\u003c/code\u003e\u003c/a\u003e fix: remove unnecessary recursive evaluation call on Settings.get\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/0fde96f2e0b71309e63800ddac8eceda062155a9\"\u003e\u003ccode\u003e0fde96f\u003c/code\u003e\u003c/a\u003e refactor: rewrite decorator as explicit call\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/52efd9ed78d2187550e03a2ae5008661d5e28df9\"\u003e\u003ccode\u003e52efd9e\u003c/code\u003e\u003c/a\u003e Bump to version 3.2.12-dev0\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/dynaconf/dynaconf/compare/3.2.11...3.2.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `securesystemslib` from 1.3.0 to 1.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/releases\"\u003esecuresystemslib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.3.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/blob/v1.3.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e for details.\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/secure-systems-lab/securesystemslib/blob/main/CHANGELOG.md\"\u003esecuresystemslib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003esecuresystemslib v1.3.1\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAWSSigner: Don't send payload to AWS for signing, send hash only (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1026\"\u003e#1026\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSet Development status classifier to \u0026quot;production/stable\u0026quot; in Python\npackaging (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1030\"\u003e#1030\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternals\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMinor infrastructure changes (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1005\"\u003e#1005\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1013\"\u003e#1013\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/secure-systems-lab/securesystemslib/commit/6f774190b90f0aa9d5d7e077680adbaa29c5cd6c\"\u003e\u003ccode\u003e6f77419\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1030\"\u003e#1030\u003c/a\u003e from jku/release-prep-1.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/b71cc5271a9a7b6898c79c1a12393d90996d5388\"\u003e\u003ccode\u003eb71cc52\u003c/code\u003e\u003c/a\u003e Prepare release 1.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/f6835096a845acf25dc3675105937be2565b9e66\"\u003e\u003ccode\u003ef683509\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1026\"\u003e#1026\u003c/a\u003e from ArkadiuszNitkaSWI/fix-aws-signer\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/97527198c7bf5b75ef9fb8996412df5453995080\"\u003e\u003ccode\u003e9752719\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1027\"\u003e#1027\u003c/a\u003e from secure-systems-lab/dependabot/pip/test-and-lint...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/4226b762bf3333b5947af9cf29ed751afbfd69b9\"\u003e\u003ccode\u003e4226b76\u003c/code\u003e\u003c/a\u003e build(deps): bump the test-and-lint-dependencies group with 4 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/6394e3e467c091a06ee95dad674dec7e991758c8\"\u003e\u003ccode\u003e6394e3e\u003c/code\u003e\u003c/a\u003e Review changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/dee9a831390c9a69c0e66f7c34779e9eea6dcc6d\"\u003e\u003ccode\u003edee9a83\u003c/code\u003e\u003c/a\u003e linter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/07b0fc780d9d1f4c0843ce3e2096e1216814bd06\"\u003e\u003ccode\u003e07b0fc7\u003c/code\u003e\u003c/a\u003e update .gitignore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/e8158a4eb131760714290b9839e3e40f9cd4229c\"\u003e\u003ccode\u003ee8158a4\u003c/code\u003e\u003c/a\u003e Fix AWS signer, allow messages bigger than 4kB\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/e23f855ddecb97d4baddffc068e9591451b9aa72\"\u003e\u003ccode\u003ee23f855\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1023\"\u003e#1023\u003c/a\u003e from secure-systems-lab/dependabot/pip/dependencies-...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/compare/v1.3.0...v1.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlalchemy` from 2.0.43 to 2.0.44\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/releases\"\u003esqlalchemy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.0.44\u003c/h1\u003e\n\u003cp\u003eReleased: October 10, 2025\u003c/p\u003e\n\u003ch2\u003eplatform\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e[platform] [bug]\u003c/strong\u003e Unblocked automatic greenlet installation for Python 3.14 now that\nthere are greenlet wheels on pypi for python 3.14.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eorm\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [usecase]\u003c/strong\u003e The way ORM Annotated Declarative interprets Python \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e type aliases\nin \u003ccode\u003eMapped[]\u003c/code\u003e annotations has been refined to expand the lookup scheme. A\n\u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e type can now be resolved based on either its direct presence in\n\u003ccode\u003e_orm.registry.type_annotation_map\u003c/code\u003e or its immediate resolved\nvalue, as long as a recursive lookup across multiple \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e types is\nnot required for it to resolve. This change reverses part of the\nrestrictions introduced in 2.0.37 as part of \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/11955\"\u003e#11955\u003c/a\u003e, which\ndeprecated (and disallowed in 2.1) the ability to resolve any \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e\ntype that was not explicitly present in\n\u003ccode\u003e_orm.registry.type_annotation_map\u003c/code\u003e. Recursive lookups of\n\u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e types remains deprecated in 2.0 and disallowed in version 2.1,\nas do implicit lookups of \u003ccode\u003eNewType\u003c/code\u003e types without an entry in\n\u003ccode\u003e_orm.registry.type_annotation_map\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eAdditionally, new support has been added for generic \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e aliases that\nrefer to \u003ca href=\"https://peps.python.org/pep-0593\"\u003ePEP 593\u003c/a\u003e \u003ccode\u003eAnnotated\u003c/code\u003e constructs containing\n\u003ccode\u003e_orm.mapped_column()\u003c/code\u003e configurations. See the sections below for\nexamples.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12829\"\u003e#12829\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed a caching issue where \u003ccode\u003e_orm.with_loader_criteria()\u003c/code\u003e would\nincorrectly reuse cached bound parameter values when used with\n\u003ccode\u003e_sql.CompoundSelect\u003c/code\u003e constructs such as \u003ccode\u003e_sql.union()\u003c/code\u003e. The\nissue was caused by the cache key for compound selects not including the\nexecution options that are part of the \u003ccode\u003e_sql.Executable\u003c/code\u003e base class,\nwhich \u003ccode\u003e_orm.with_loader_criteria()\u003c/code\u003e uses to apply its criteria\ndynamically. The fix ensures that compound selects and other executable\nconstructs properly include execution options in their cache key traversal.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12905\"\u003e#12905\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eengine\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e[engine] [bug]\u003c/strong\u003e Implemented initial support for free-threaded Python by adding new tests\nand reworking the test harness to include Python 3.13t and Python 3.14t in\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psycopg2` from 2.9.10 to 2.9.11\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psycopg/psycopg2/blob/master/NEWS\"\u003epsycopg2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eCurrent release\u003c/h2\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.11\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eAvoid a segfault passing more arguments than placeholders if Python is built\nwith assertions enabled (:ticket:\u003ccode\u003e[#1791](https://github.com/psycopg/psycopg2/issues/1791)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eAdd riscv64 platform binary packages (:ticket:\u003ccode\u003e[#1813](https://github.com/psycopg/psycopg2/issues/1813)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e~psycopg2.errorcodes\u003c/code\u003e map and \u003ccode\u003e~psycopg2.errors\u003c/code\u003e classes updated to\nPostgreSQL 18.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.8.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.10\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.13.\u003c/li\u003e\n\u003cli\u003eReceive notifications on commit (:ticket:\u003ccode\u003e[#1728](https://github.com/psycopg/psycopg2/issues/1728)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e~psycopg2.errorcodes\u003c/code\u003e map and \u003ccode\u003e~psycopg2.errors\u003c/code\u003e classes updated to\nPostgreSQL 17.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.7.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.9\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.12.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.6.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.8\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWheel package bundled with PostgreSQL 16 libpq in order to add support for\nrecent features, such as \u003ccode\u003esslcertmode\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.7\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix propagation of exceptions raised during module initialization\n(:ticket:\u003ccode\u003e[#1598](https://github.com/psycopg/psycopg2/issues/1598)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix building when pg_config returns an empty string (:ticket:\u003ccode\u003e[#1599](https://github.com/psycopg/psycopg2/issues/1599)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eWheel package bundled with OpenSSL 1.1.1v.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.6\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/psycopg/psycopg2/commit/fd9ae8cad2bcfc3e7e9410e7b6f07cda8f4f05ec\"\u003e\u003ccode\u003efd9ae8c\u003c/code\u003e\u003c/a\u003e chore: bump to version 2.9.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/d923840546942534f0956d9202f914fd9feac5fd\"\u003e\u003ccode\u003ed923840\u003c/code\u003e\u003c/a\u003e chore: update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/d42dc7169d3cd93517e282e9ef5dc2a2b40650a2\"\u003e\u003ccode\u003ed42dc71\u003c/code\u003e\u003c/a\u003e Merge branch 'fix-1791'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/4fde6560c32f06ad1304404c9f7f86148dcc4be0\"\u003e\u003ccode\u003e4fde656\u003c/code\u003e\u003c/a\u003e fix: avoid failed assert passing more arguments than placeholders\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/8308c19d6af0d904b313997539ed33415990a74e\"\u003e\u003ccode\u003e8308c19\u003c/code\u003e\u003c/a\u003e fix: drop warning about the use of deprecated PyWeakref_GetObject function\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/1a1eabf098a3374409bb2ab4b594777b900f396d\"\u003e\u003ccode\u003e1a1eabf\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/github-script from 7 to 8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/897af8b38beda851d7257dfc525129e37c0ec9e0\"\u003e\u003ccode\u003e897af8b\u003c/code\u003e\u003c/a\u003e build(deps): bump peter-evans/repository-dispatch from 3 to 4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/ceefd305117113ca10e383a626e87ba0796f3638\"\u003e\u003ccode\u003eceefd30\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/checkout from 4 to 5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/4dc585430cabe94cee96c5a9de0265d0f55370f1\"\u003e\u003ccode\u003e4dc5854\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/setup-python from 5 to 6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/1945788dcf6172bb1b9328ebc3587ccf0e6a659c\"\u003e\u003ccode\u003e1945788\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg2/issues/1802\"\u003e#1802\u003c/a\u003e from edgarrmondragon/cp314-wheels\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psycopg/psycopg2/compare/2.9.10...2.9.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `alembic` from 1.16.4 to 1.17.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/alembic/releases\"\u003ealembic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.17.2\u003c/h1\u003e\n\u003cp\u003eReleased: November 14, 2025\u003c/p\u003e\n\u003ch2\u003efeature\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[feature] [operations]\u003c/strong\u003e Added \u003ccode\u003eOperations.implementation_for.replace\u003c/code\u003e parameter to\n\u003ccode\u003eOperations.implementation_for()\u003c/code\u003e, allowing replacement of existing\noperation implementations.  This allows for existing operations such as\n\u003ccode\u003eCreateTableOp\u003c/code\u003e to be extended directly.  Pull request courtesy\njustanothercatgirl.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1750\"\u003e#1750\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [mssql]\u003c/strong\u003e Fixed issue in SQL Server dialect where the DROP that's automatically\nemitted for existing default constraints during an ALTER COLUMN needs to\ntake place before not just the modification of the column's default, but\nalso before the column's type is changed.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1744\"\u003e#1744\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.17.1\u003c/h1\u003e\n\u003cp\u003eReleased: October 28, 2025\u003c/p\u003e\n\u003ch2\u003eusecase\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[usecase] [commands]\u003c/strong\u003e Added \u003ccode\u003ecommand.current.check_heads\u003c/code\u003e parameter to\n\u003ccode\u003ecommand.current()\u003c/code\u003e command, available from the command line via the\n\u003ccode\u003e--check-heads\u003c/code\u003e option to \u003ccode\u003ealembic current\u003c/code\u003e.  This tests if all head\nrevisions are applied to the database and raises \u003ccode\u003eDatabaseNotAtHead\u003c/code\u003e\n(or from the command line, exits with a non-zero exit code) if this is not\nthe case.  The parameter operates equvialently to the cookbook recipe\n\u003ccode\u003ecookbook_check_heads\u003c/code\u003e. Pull request courtesy Stefan Scherfke.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1705\"\u003e#1705\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e[bug] [commands]\u003c/strong\u003e Disallow ':' character in custom revision identifiers. Previously, using a\ncolon in a revision ID (e.g., 'REV:1') would create the revision, however\nrevisions with colons in them are not correctly interpreted by other\ncommands, as it overlaps with the revision range syntax.   Pull request\ncourtesy Kim Wooseok with original implementation by Hrushikesh Patil.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/alembic/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.11.7 to 2.12.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.12.4 2025-11-05\u003c/h2\u003e\n\u003ch2\u003ev2.12.4 (2025-11-05)\u003c/h2\u003e\n\u003cp\u003eThis is the fourth 2.12 patch release, fixing more regressions, and reverting a change in the \u003ccode\u003ebuild()\u003c/code\u003e method\nof the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis patch release also fixes an issue with the serialization of IP address types, when \u003ccode\u003eserialize_as_any\u003c/code\u003e is used. The next patch release\nwill try to address the remaining issues with \u003cem\u003eserialize as any\u003c/em\u003e behavior by introducing a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature, that\nshould be used in most cases in place of \u003cem\u003eserialize as any\u003c/em\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with forward references in parent \u003ccode\u003eTypedDict\u003c/code\u003e classes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12427\"\u003e#12427\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis issue is only relevant on Python 3.14 and greater.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eExclude fields with \u003ccode\u003eexclude_if\u003c/code\u003e from JSON Schema required fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12430\"\u003e#12430\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRevert URL percent-encoding of credentials in the \u003ccode\u003ebuild()\u003c/code\u003e method of the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1833\"\u003epydantic-core#1833\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis was initially considered as a bugfix, but caused regressions and as such was fully reverted. The next release will include\nan opt-in option to percent-encode components of the URL.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd type inference for IP address types by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1868\"\u003epydantic-core#1868\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThe 2.12 changes to the \u003ccode\u003eserialize_as_any\u003c/code\u003e behavior made it so that IP address types could not properly serialize to JSON.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid getting default values from defaultdict by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1853\"\u003epydantic-core#1853\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis fixes a subtle regression in the validation behavior of the \u003ca href=\"https://docs.python.org/3/library/collections.html#collections.defaultdict\"\u003e\u003ccode\u003ecollections.defaultdict\u003c/code\u003e\u003c/a\u003e\ntype.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with field serializers on nested typed dictionaries by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1879\"\u003epydantic-core#1879\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd more \u003ccode\u003epydantic-core\u003c/code\u003e builds for the three-threaded version of Python 3.14 by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1864\"\u003epydantic-core#1864\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.3...v2.12.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.12.3...v2.12.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.12.3 2025-10-17\u003c/h2\u003e\n\u003ch2\u003ev2.12.3 (2025-10-17)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThis is the third 2.13 patch release, fixing issues related to the \u003ccode\u003eFieldInfo\u003c/code\u003e class, and reverting a change to the supported \u003ca href=\"https://docs.pydantic.dev/latest/concepts/validators/#model-validators\"\u003e\u003cem\u003eafter\u003c/em\u003e model validator\u003c/a\u003e function signatures.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRaise a warning when an invalid after model validator function signature is raised by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12414\"\u003e#12414\u003c/a\u003e.\nStarting in 2.12.0, using class methods for \u003cem\u003eafter\u003c/em\u003e model validators raised an error, but the error wasn't raised concistently. We decided to emit a deprecation warning instead.\u003c/li\u003e\n\u003cli\u003eAdd \u003ca href=\"https://docs.pydantic.dev/latest/api/fields/#pydantic.fields.FieldInfo.asdict\"\u003e\u003ccode\u003eFieldInfo.asdict()\u003c/code\u003e\u003c/a\u003e method, improve documentation around \u003ccode\u003eFieldInfo\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12411\"\u003e#12411\u003c/a\u003e.\nThis also adds back support for mutations on \u003ccode\u003eFieldInfo\u003c/code\u003e classes, that are reused as \u003ccode\u003eAnnotated\u003c/code\u003e metadata. \u003cstrong\u003eHowever\u003c/strong\u003e, note that this is still \u003cem\u003enot\u003c/em\u003e a supported pattern. Instead, please refer to the \u003ca href=\"https://docs.pydantic.dev/latest/examples/dynamic_models/\"\u003eadded example\u003c/a\u003e in the documentation.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-12-release#changes\"\u003eblog post\u003c/a\u003e section on changes was also updated to document the changes related to \u003ccode\u003eserialize_as_any\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.2...v2.12.3\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.12.2...v2.12.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.12.2 2025-10-14\u003c/h2\u003e\n\u003ch2\u003ev2.12.2 (2025-10-14)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\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/pydantic/pydantic/blob/v2.12.4/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.12.4 (2025-11-05)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis is the fourth 2.12 patch release, fixing more regressions, and reverting a change in the \u003ccode\u003ebuild()\u003c/code\u003e method\nof the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis patch release also fixes an issue with the serialization of IP address types, when \u003ccode\u003eserialize_as_any\u003c/code\u003e is used. The next patch release\nwill try to address the remaining issues with \u003cem\u003eserialize as any\u003c/em\u003e behavior by introducing a new \u003cem\u003epolymorphic serialization\u003c/em\u003e feature, that\nshould be used in most cases in place of \u003cem\u003eserialize as any\u003c/em\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with forward references in parent \u003ccode\u003eTypedDict\u003c/code\u003e classes by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12427\"\u003e#12427\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis issue is only relevant on Python 3.14 and greater.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eExclude fields with \u003ccode\u003eexclude_if\u003c/code\u003e from JSON Schema required fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12430\"\u003e#12430\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRevert URL percent-encoding of credentials in the \u003ccode\u003ebuild()\u003c/code\u003e method\nof the \u003ca href=\"https://docs.pydantic.dev/latest/api/networks/\"\u003e\u003ccode\u003eAnyUrl\u003c/code\u003e and Dsn types\u003c/a\u003e by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in\n\u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1833\"\u003epydantic-core#1833\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis was initially considered as a bugfix, but caused regressions and as such was fully reverted. The next release will include\nan opt-in option to percent-encode components of the URL.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd type inference for IP address types by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1868\"\u003epydantic-core#1868\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThe 2.12 changes to the \u003ccode\u003eserialize_as_any\u003c/code\u003e behavior made it so that IP address types could not properly serialize to JSON.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid getting default values from defaultdict by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1853\"\u003epydantic-core#1853\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis fixes a subtle regression in the validation behavior of the \u003ca href=\"https://docs.python.org/3/library/collections.html#collections.defaultdict\"\u003e\u003ccode\u003ecollections.defaultdict\u003c/code\u003e\u003c/a\u003e\ntype.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix issue with field serializers on nested typed dictionaries by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1879\"\u003epydantic-core#1879\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd more \u003ccode\u003epydantic-core\u003c/code\u003e builds for the three-threaded version of Python 3.14 by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1864\"\u003epydantic-core#1864\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.12.3 (2025-10-17)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.3\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThis is the third 2.12 patch release, fixing issues related to the \u003ccode\u003eFieldInfo\u003c/code\u003e class, and reverting a change to the supported\n\u003ca href=\"https://docs.pydantic.dev/latest/concepts/validators/#model-validators\"\u003e\u003cem\u003eafter\u003c/em\u003e model validator\u003c/a\u003e function signatures.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRaise a warning when an invalid after model validator function signature is raised by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12414\"\u003e#12414\u003c/a\u003e.\nStarting in 2.12.0, using class methods for \u003cem\u003eafter\u003c/em\u003e model validators raised an error, but the error wasn't raised concistently. We decided\nto emit a deprecation warning instead.\u003c/li\u003e\n\u003cli\u003eAdd \u003ca href=\"https://docs.pydantic.dev/latest/api/fields/#pydantic.fields.FieldInfo.asdict\"\u003e\u003ccode\u003eFieldInfo.asdict()\u003c/code\u003e\u003c/a\u003e method, improve documentation around \u003ccode\u003eFieldInfo\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12411\"\u003e#12411\u003c/a\u003e.\nThis also add back support for mutations on \u003ccode\u003eFieldInfo\u003c/code\u003e classes, that are reused as \u003ccode\u003eAnnotated\u003c/code\u003e metadata. \u003cstrong\u003eHowever\u003c/strong\u003e, note that this is still\n\u003cem\u003enot\u003c/em\u003e a supported pattern. Instead, please refer to the \u003ca href=\"https://docs.pydantic.dev/latest/examples/dynamic_models/\"\u003eadded example\u003c/a\u003e in the documentation.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-12-release#changes\"\u003eblog post\u003c/a\u003e section on changes was also updated to document the changes related to \u003ccode\u003eserialize_as_any\u003c/code\u003e.\u003c/p\u003e\n\u003ch2\u003ev2.12.2 (2025-10-14)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/5c842dfc9c245fb37aa1f5ec5b55c1aed10bd7e6\"\u003e\u003ccode\u003e5c842df\u003c/code\u003e\u003c/a\u003e Prepare release v2.12.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/c678a710e8b8bb2ff4dce6233c6d5c88dc579136\"\u003e\u003ccode\u003ec678a71\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003epydantic-core\u003c/code\u003e to v2.41.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a7cd29254b2611c5768beb86e7ffd2c1c130a19a\"\u003e\u003ccode\u003ea7cd292\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003ecloudpickle\u003c/code\u003e to v3.1.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/21f627801b5eedfa87bed55925f73cf329cc9c2c\"\u003e\u003ccode\u003e21f6278\u003c/code\u003e\u003c/a\u003e Bump actions/setup-node from 5 to 6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/8d6be8fea9662203977b95758d97ec298edcd54a\"\u003e\u003ccode\u003e8d6be8f\u003c/code\u003e\u003c/a\u003e Bump astral-sh/setup-uv from 6 to 7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/17865ea3a1fd389ba697990b762f82a419a48221\"\u003e\u003ccode\u003e17865ea\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4 to 5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/90ad0af6b9340f72dde77997ed18fc180771e69f\"\u003e\u003ccode\u003e90ad0af\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 5 to 6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/18e6672b6fdeaeb75ccbbcb3c7883509b1f56cb3\"\u003e\u003ccode\u003e18e6672\u003c/code\u003e\u003c/a\u003e Drop testing under PyPy 3.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/650215be2d2336a72af481b724b368fed356d7e8\"\u003e\u003ccode\u003e650215b\u003c/code\u003e\u003c/a\u003e Document workaround for \u003ccode\u003eMongoDsn\u003c/code\u003e default port\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/e3267902272d8290ed6d1ae06f43052b2968ef14\"\u003e\u003ccode\u003ee326790\u003c/code\u003e\u003c/a\u003e Fix example of for \u003ccode\u003ebytes_invalid_encoding\u003c/code\u003e validation error\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.11.7...v2.12.4\"\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.16 to 1.40.75\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/76bb63ddcaf878e5fea038518af5f84a1dccfcb1\"\u003e\u003ccode\u003e76bb63d\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.40.75'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/4094ca62c842c51761d442a0eb6063565b5f07ad\"\u003e\u003ccode\u003e4094ca6\u003c/code\u003e\u003c/a\u003e Bumping version to 1.40.75\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/b37bc1c7514e9e1a8f9a4f3a1c650d8b4132f40d\"\u003e\u003ccode\u003eb37bc1c\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/49140e033d31324b28e340329f866af3009f0d06\"\u003e\u003ccode\u003e49140e0\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.40.74'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/f3fe4845588855a9871cf8182597e2ab2e26eca9\"\u003e\u003ccode\u003ef3fe484\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.40.74' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/786aff8131cd2e48dbe522643f06d84353dad2c5\"\u003e\u003ccode\u003e786aff8\u003c/code\u003e\u003c/a\u003e Bumping version to 1.40.74\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/0a66fb2138fec05d0ccbec07aba926c62f692e54\"\u003e\u003ccode\u003e0a66fb2\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/cd8545493fb93990034989cb24c7f151fe7af200\"\u003e\u003ccode\u003ecd85454\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.40.73'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/27d56447889f2c96bf1fda35929c7bf5add1cbad\"\u003e\u003ccode\u003e27d5644\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.40.73' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/5f2866c2057eb1c638c9aed9acf1e487eb7b4a93\"\u003e\u003ccode\u003e5f2866c\u003c/code\u003e\u003c/a\u003e Bumping version to 1.40.73\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.40.16...1.40.75\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `awswrangler` from 3.12.1 to 3.14.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aws/aws-sdk-pandas/releases\"\u003eawswrangler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eAWS SDK for pandas 3.14.0\u003c/h2\u003e\n\u003ch2\u003eNotable Changes ⚠️\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: upgrade pg8000 due to CVE-2025-61385 by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3225\"\u003eaws/aws-sdk-pandas#3225\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures / Enhancements 🚀\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: support redshift \u003ccode\u003eCLEANPATH\u003c/code\u003e by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3211\"\u003eaws/aws-sdk-pandas#3211\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add result reuse configuration to query execution functions by \u003ca href=\"https://github.com/DavidKatz-il\"\u003e\u003ccode\u003e@​DavidKatz-il\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3212\"\u003eaws/aws-sdk-pandas#3212\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBugfixes 🐛\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: Add \u003ccode\u003es3_output\u003c/code\u003e parameter to \u003ccode\u003e_start_query_execution\u003c/code\u003e call in \u0026quot;overwrite\u0026quot; mode by \u003ca href=\"https://github.com/sergeymazin\"\u003e\u003ccode\u003e@​sergeymazin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3205\"\u003eaws/aws-sdk-pandas#3205\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: iceberg overwrite partitions with s3 output by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3220\"\u003eaws/aws-sdk-pandas#3220\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: Correct MemoryFormat.set() Parameter Type Annotation by \u003ca href=\"https://github.com/DaltonWorsnup\"\u003e\u003ccode\u003e@​DaltonWorsnup\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3221\"\u003eaws/aws-sdk-pandas#3221\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: normalize AWS_SESSION_TOKEN=None to empty string for delta-rs compatibility by \u003ca href=\"https://github.com/skoschik\"\u003e\u003ccode\u003e@​skoschik\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3223\"\u003eaws/aws-sdk-pandas#3223\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity / Dependency Updates 🛡️\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the github-actions group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3208\"\u003eaws/aws-sdk-pandas#3208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: update pyarrow constraints by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3210\"\u003eaws/aws-sdk-pandas#3210\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump the production-dependencies group across 1 directory with 4 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3213\"\u003eaws/aws-sdk-pandas#3213\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump actions/setup-node from 5 to 6 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3214\"\u003eaws/aws-sdk-pandas#3214\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eHousekeeping 🧹\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: replace deprecated pr linting action by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3215\"\u003eaws/aws-sdk-pandas#3215\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: Release 3.14.0 by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3227\"\u003eaws/aws-sdk-pandas#3227\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: Update Snyk action by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3228\"\u003eaws/aws-sdk-pandas#3228\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: fix incorrect license field by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3229\"\u003eaws/aws-sdk-pandas#3229\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: Update layers.rst by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3230\"\u003eaws/aws-sdk-pandas#3230\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/sergeymazin\"\u003e\u003ccode\u003e@​sergeymazin\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3205\"\u003eaws/aws-sdk-pandas#3205\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DaltonWorsnup\"\u003e\u003ccode\u003e@​DaltonWorsnup\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3221\"\u003eaws/aws-sdk-pandas#3221\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/skoschik\"\u003e\u003ccode\u003e@​skoschik\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3223\"\u003eaws/aws-sdk-pandas#3223\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/aws/aws-sdk-pandas/compare/3.13.0...3.14.0\"\u003ehttps://github.com/aws/aws-sdk-pandas/compare/3.13.0...3.14.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eAWS SDK for pandas 3.13.0\u003c/h2\u003e\n\u003ch2\u003eNotable Changes ⚠️\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eupdated \u003ccode\u003eaiohhtp==3.12.15\u003c/code\u003eto fix CVE-2025-53643 (LOW) by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3197\"\u003eaws/aws-sdk-pandas#3197\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures / Enhancements 🚀\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: ray 2.49.0 by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3194\"\u003eaws/aws-sdk-pandas#3194\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add support for aurora-mysql and aurora-postgresql engines by \u003ca href=\"https://github.com/senorcinco\"\u003e\u003ccode\u003e@​senorcinco\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3188\"\u003eaws/aws-sdk-pandas#3188\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBugfixes 🐛\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: opensearch session by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3170\"\u003eaws/aws-sdk-pandas#3170\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: typo with Redshift write example by \u003ca href=\"https://github.com/Falydoor\"\u003e\u003ccode\u003e@​Falydoor\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3184\"\u003eaws/aws-sdk-pandas#3184\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: do not remove new columns values by \u003ca href=\"https://github.com/Braalfa\"\u003e\u003ccode\u003e@​Braalfa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3181\"\u003eaws/aws-sdk-pandas#3181\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity / Dependency Updates 🛡️\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the production-dependencies group across 1 directory with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3178\"\u003eaws/aws-sdk-pandas#3178\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump the production-dependencies 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/aws/aws-sdk-pandas/pull/3180\"\u003eaws/aws-sdk-pandas#3180\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/aws/aws-sdk-pandas/commit/20193b48db3a0e57d26a344e646811495e0c4e46\"\u003e\u003ccode\u003e20193b4\u003c/code\u003e\u003c/a\u003e Update layers.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/d1c7910e3b3bb125733c9f0318f4e639e7e13d1f\"\u003e\u003ccode\u003ed1c7910\u003c/code\u003e\u003c/a\u003e pin pyarrow in lambda layer\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/3521ddc6ae4f19ce6faaf43c34d1b3575b267d6b\"\u003e\u003ccode\u003e3521ddc\u003c/code\u003e\u003c/a\u003e chore: Release 3.14.0 (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/issues/3227\"\u003e#3227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/2371f80eead3b17d344a3a39794610e61e082e1f\"\u003e\u003ccode\u003e2371f80\u003c/code\u003e\u003c/a\u003e fix(delta-rs): normalize AWS_SESSION_TOKEN=None to empty string for delta-rs ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/9b843841000fbbe0d0aa91f6b0becc0c459204a2\"\u003e\u003ccode\u003e9b84384\u003c/code\u003e\u003c/a\u003e Correct MemoryFormat.set() Parameter Type Annotation (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/issues/3221\"\u003e#3221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/f5980f2adbd561f73564cfdbfd4e268b2c41fccd\"\u003e\u003ccode\u003ef5980f2\u003c/code\u003e\u003c/a\u003e chore: upgrade pg8000 due to a CVE-2025-61385 (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/issues/3225\"\u003e#3225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/ed4057e0d835585d72a434c284ee7f74fd6e9d33\"\u003e\u003ccode\u003eed4057e\u003c/code\u003e\u003c/a\u003e fix: iceberg overwrite partitions with s3 output (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/issues/3220\"\u003e#3220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/d425c500a2e2a30b3ac537e24bf34b900432215b\"\u003e\u003ccode\u003ed425c50\u003c/code\u003e\u003c/a\u003e [FIX] Add s3_output parameter to _start_query_execution call in \u0026quot;overwrite\u0026quot; m...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/294f35e4dd2c41ff5a1a0bc92c9134533355692a\"\u003e\u003ccode\u003e294f35e\u003c/code\u003e\u003c/a\u003e chore: replace pr linting action (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/issues/3215\"\u003e#3215\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/c81581ca40579735cd0caa6e91f1fa5d2c3b46d7\"\u003e\u003ccode\u003ec81581c\u003c/code\u003e\u003c/a\u003e chore(deps): bump actions/setup-node in the github-actions group (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/issues/3214\"\u003e#3214\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aws/aws-sdk-pandas/compare/3.12.1...3.14.0\"\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.5 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.5...v4.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-cloud-kms` from 3.5.1 to 3.7.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/google-cloud-python/blob/main/packages/google-cloud-documentai/CHANGELOG.md\"\u003egoogle-cloud-kms's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/compare/google-cloud-documentai-v3.6.0...google-cloud-documentai-v3.7.0\"\u003e3.7.0\u003c/a\u003e (2025-10-16)\u003c/h2\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe field \u003ccode\u003etraining_method\u003c/code\u003e in \u003ccode\u003eTrainProcessorVersionRequest\u003c/code\u003e is now marked as optional  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/4dc7381c2121c9e13b24cb3aae59523f8ff31a3a\"\u003e4dc7381c2121c9e13b24cb3aae59523f8ff31a3a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA comment for field \u003ccode\u003elatest_evaluation\u003c/code\u003e in message \u003ccode\u003e.google.cloud.documentai.v1beta3.ProcessorVersion\u003c/code\u003e is changed  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA comment for field \u003ccode\u003etraining_method\u003c/code\u003e in message \u003ccode\u003e.google.cloud.documentai.v1beta3.TrainProcessorVersionRequest\u003c/code\u003e is changed  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA comment for field \u003ccode\u003eprocessor_version_source\u003c/code\u003e in message \u003ccode\u003e.google.cloud.documentai.v1beta3.ImportProcessorVersionRequest\u003c/code\u003e is changed  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA comment for field \u003ccode\u003edeprecation_info\u003c/code\u003e in message \u003ccode\u003e.google.cloud.documentai.v1beta3.ProcessorVersion\u003c/code\u003e is changed  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA comment for field \u003ccode\u003ecreate_time\u003c/code\u003e in message \u003ccode\u003e.google.cloud.documentai.v1beta3.Processor\u003c/code\u003e is changed  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA comment for field \u003ccode\u003edocument_schema\u003c/code\u003e in message \u003ccode\u003e.google.cloud.documentai.v1beta3.ProcessorVersion\u003c/code\u003e is changed  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA comment for field \u003ccode\u003ekms_key_name\u003c/code\u003e in message \u003ccode\u003e.google.cloud.documentai.v1beta3.ProcessorVersion\u003c/code\u003e is changed  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA comment for field \u003ccode\u003ecreate_time\u003c/code\u003e in message \u003ccode\u003e.google.cloud.documentai.v1beta3.ProcessorVersion\u003c/code\u003e is changed  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA comment for field \u003ccode\u003ekms_key_version_name\u003c/code\u003e in message \u003ccode\u003e.google.cloud.documentai.v1beta3.ProcessorVersion\u003c/code\u003e is changed  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded new messages \u003ccode\u003eEntityValidationOutput\u003c/code\u003e and \u003ccode\u003eEntitiesRevision\u003c/code\u003e  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/4dc7381c2121c9e13b24cb3aae59523f8ff31a3a\"\u003e4dc7381c2121c9e13b24cb3aae59523f8ff31a3a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded new fields \u003ccode\u003eentity_validation_output\u003c/code\u003e, \u003ccode\u003eentities_revisions\u003c/code\u003e, and \u003ccode\u003eentities_revision_id\u003c/code\u003e to the \u003ccode\u003eDocument\u003c/code\u003e message  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/4dc7381c2121c9e13b24cb3aae59523f8ff31a3a\"\u003e4dc7381c2121c9e13b24cb3aae59523f8ff31a3a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA new field \u003ccode\u003esignature_value\u003c/code\u003e is added to message \u003ccode\u003e.google.cloud.documentai.v1beta3.Document\u003c/code\u003e  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA new message \u003ccode\u003eEntitiesRevision\u003c/code\u003e is added  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA new field \u003ccode\u003eentities_revisions\u003c/code\u003e is added to message \u003ccode\u003e.google.cloud.documentai.v1beta3.Document\u003c/code\u003e  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA new field \u003ccode\u003eentity_validation_output\u003c/code\u003e is added to message \u003ccode\u003e.google.cloud.documentai.v1beta3.Document\u003c/code\u003e  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA new field \u003ccode\u003emethod\u003c/code\u003e is added to message \u003ccode\u003e.google.cloud.documentai.v1beta3.DocumentSchema\u003c/code\u003e  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA new enum \u003ccode\u003eMethod\u003c/code\u003e is added  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA new field \u003ccode\u003emethod\u003c/code\u003e is added to message \u003ccode\u003e.google.cloud.documentai.v1beta3.Document\u003c/code\u003e  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def...\n\n_Description has been truncated_","html_url":"https://github.com/MVrachev/repository-service-tuf-worker/pull/81","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/MVrachev%2Frepository-service-tuf-worker/issues/81","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/81/packages"}},{"old_version":"3.6.0","new_version":"4.1.0","update_type":"major","path":null,"pr_created_at":"2025-10-27T23:03:00.000Z","version_change":"3.6.0 → 4.1.0","issue":{"uuid":"3558972009","node_id":"PR_kwDOQHjMgc6wArah","number":16,"state":"closed","title":"deps(deps-dev): bump sigstore from 3.6.0 to 4.1.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":["taylorleese"],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-10-27T23:15:52.000Z","author_association":null,"state_reason":null,"created_at":"2025-10-27T23:03:00.000Z","updated_at":"2025-10-27T23:15:55.000Z","time_to_close":772,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(deps-dev)","packages":[{"name":"sigstore","old_version":"3.6.0","new_version":"4.1.0","repository_url":"https://github.com/sigstore/sigstore-python"}],"path":null,"ecosystem":"pip"},"body":"Bumps [sigstore](https://github.com/sigstore/sigstore-python) from 3.6.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/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.0...v4.1.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=sigstore\u0026package-manager=pip\u0026previous-version=3.6.0\u0026new-version=4.1.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/taylorleese/mcp-toolz/pull/16","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/taylorleese%2Fmcp-toolz/issues/16","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/16/packages"}},{"old_version":"3.5.1","new_version":"3.6.0","update_type":"minor","path":"the pip group across 1 directory","pr_created_at":"2025-10-25T00:34:07.000Z","version_change":"3.5.1 → 3.6.0","issue":{"uuid":"3551413333","node_id":"PR_kwDOQHjMgc6vnqdY","number":10,"state":"closed","title":"Bump sigstore from 3.5.1 to 3.6.0 in the pip group across 1 directory","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-10-25T00:35:22.000Z","author_association":null,"state_reason":null,"created_at":"2025-10-25T00:34:07.000Z","updated_at":"2025-10-25T00:35:25.000Z","time_to_close":75,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"sigstore","old_version":"3.5.1","new_version":"3.6.0","repository_url":"https://github.com/sigstore/sigstore-python"}],"path":"the pip group across 1 directory","ecosystem":"pip"},"body":"[//]: # (dependabot-start)\n⚠️  **Dependabot is rebasing this PR** ⚠️ \n\nRebasing might not happen immediately, so don't worry if this takes some time.\n\nNote: if you make any changes to this PR yourself, they will take precedence over the rebase.\n\n---\n\n[//]: # (dependabot-end)\n\nBumps the pip group with 1 update in the / directory: [sigstore](https://github.com/sigstore/sigstore-python).\n\nUpdates `sigstore` from 3.5.1 to 3.6.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\u003ev3.6.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAPI: The DSSE \u003ccode\u003eEnvelope\u003c/code\u003e class now performs automatic validation\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1211\"\u003e#1211\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAPI: Added \u003ccode\u003esignature\u003c/code\u003e property to \u003ccode\u003eEnvelope\u003c/code\u003e class for accessing raw\nsignature bytes (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1211\"\u003e#1211\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSigned timestamps embedded in bundles are now automatically verified\nagainst Timestamp Authorities provided within the Trusted Root (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1206\"\u003e#1206\u003c/a\u003e\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1206\"\u003esigstore/sigstore-python#1206\u003c/a\u003e))\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBundles are now generated with signed timestamps when signing if the\nTrusted Root contains one or more Timestamp Authorities\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1216\"\u003e#1216\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for \u0026quot;detached\u0026quot; SCTs has been fully removed, aligning\nsigstore-python with other sigstore clients\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1236\"\u003e#1236\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed a CLI parsing bug introduced in 3.5.1 where a warning about\nverifying legacy bundles was never shown\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1198\"\u003e#1198\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eStrengthened the requirement that an inclusion promise is present\n\u003cem\u003eif\u003c/em\u003e no other source of signed time is present\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1247\"\u003e#1247\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.5.4\u003c/h2\u003e\n\u003cp\u003eThis is the last planned bug fix release in 3.5 series: all users should upgrade to a newer release series, preferably 4.1.\u003c/p\u003e\n\u003cp\u003e(this release was never published to PyPI because of a release process issue \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1591\"\u003e#1591\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDo not fail hard if trust root contains unsupported keys\n(Backport of \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1424\"\u003e#1424\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix bug in rekor key lookup\n(Backport of \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1350\"\u003e#1350\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.5.3\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCorrective release for [3.5.2]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- 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[3.6.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAPI: The DSSE \u003ccode\u003eEnvelope\u003c/code\u003e class now performs automatic validation\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1211\"\u003e#1211\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAPI: Added \u003ccode\u003esignature\u003c/code\u003e property to \u003ccode\u003eEnvelope\u003c/code\u003e class for accessing raw\nsignature bytes (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1211\"\u003e#1211\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSigned timestamps embedded in bundles are now automatically verified\nagainst Timestamp Authorities provided within the Trusted Root (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1206\"\u003e#1206\u003c/a\u003e\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1206\"\u003esigstore/sigstore-python#1206\u003c/a\u003e))\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBundles are now generated with signed timestamps when signing if the\nTrusted Root contains one or more Timestamp Authorities\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1216\"\u003e#1216\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for \u0026quot;detached\u0026quot; SCTs has been fully removed, aligning\nsigstore-python with other sigstore clients\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1236\"\u003e#1236\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed a CLI parsing bug introduced in 3.5.1 where a warning about\nverifying legacy bundles was never shown\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1198\"\u003e#1198\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eStrengthened the requirement that an inclusion promise is present\n\u003cem\u003eif\u003c/em\u003e no other source of signed time is present\n(\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1247\"\u003e#1247\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.5.3]\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCorrective release for [3.5.2]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[3.5.2]\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePinned \u003ccode\u003ecryptography\u003c/code\u003e dependency strictly to prevent future breakage\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\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/44aa3ebe74cfce9fbc39bb5d771f3c2e5fb5daaf\"\u003e\u003ccode\u003e44aa3eb\u003c/code\u003e\u003c/a\u003e prep 3.6.0 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1248\"\u003e#1248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/300b502ae99ebfaace124f1f4e422a6a669369cf\"\u003e\u003ccode\u003e300b502\u003c/code\u003e\u003c/a\u003e fix: require an inclusion promise when log integration time is used (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1247\"\u003e#1247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/9ee7ac259bcce37f95db13aa7d84a407c8b99a17\"\u003e\u003ccode\u003e9ee7ac2\u003c/code\u003e\u003c/a\u003e build(deps): bump github/codeql-action from 3.27.6 to 3.27.7 in the actions g...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/f4a80b5e66a7a61859bbe2fba39314134adceefc\"\u003e\u003ccode\u003ef4a80b5\u003c/code\u003e\u003c/a\u003e build(deps): bump pypa/gh-action-pypi-publish from 1.12.2 to 1.12.3 in the ac...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/70767a441c39003ad9a9b74d6f25caaddbb0e9ea\"\u003e\u003ccode\u003e70767a4\u003c/code\u003e\u003c/a\u003e build(deps): update ruff requirement from \u0026lt;0.8.2 to \u0026lt;0.8.3 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1242\"\u003e#1242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/1b3498f62370a041d2be37b6e766221f8bfcad34\"\u003e\u003ccode\u003e1b3498f\u003c/code\u003e\u003c/a\u003e build(deps): bump id from 1.4.0 to 1.5.0 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1241\"\u003e#1241\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/7a5e69bdd286c216f441f28a7d4873189074937e\"\u003e\u003ccode\u003e7a5e69b\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/1239\"\u003e#1239\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/3d66e6b3728f13e7327e672c4931e423dd0002e4\"\u003e\u003ccode\u003e3d66e6b\u003c/code\u003e\u003c/a\u003e build(deps): bump github/codeql-action from 3.27.5 to 3.27.6 in the actions g...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/dad57a23b70b214ea995367eb3182f1ba3a25547\"\u003e\u003ccode\u003edad57a2\u003c/code\u003e\u003c/a\u003e fulcio: remove detached SCT support (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1236\"\u003e#1236\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/435a8d21e89715e026e4c00e6d9c1605cbb12581\"\u003e\u003ccode\u003e435a8d2\u003c/code\u003e\u003c/a\u003e conftest: tweak _has_oidc_id to only check our repo (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1237\"\u003e#1237\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sigstore/sigstore-python/compare/v3.5.1...v3.6.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=sigstore\u0026package-manager=pip\u0026previous-version=3.5.1\u0026new-version=3.6.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 \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\nYou can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/taylorleese/mcp-toolz/network/alerts).\n\n\u003c/details\u003e","html_url":"https://github.com/taylorleese/mcp-toolz/pull/10","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/taylorleese%2Fmcp-toolz/issues/10","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/10/packages"}},{"old_version":"3.6.5","new_version":"4.1.0","update_type":"major","path":null,"pr_created_at":"2025-10-23T10:33:50.000Z","version_change":"3.6.5 → 4.1.0","issue":{"uuid":"3544110734","node_id":"PR_kwDOHsAm8s6vPECC","number":831,"state":"closed","title":"build(deps): bump the python-deps group across 1 directory with 20 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-11-10T11:33:08.000Z","author_association":null,"state_reason":null,"created_at":"2025-10-23T10:33:50.000Z","updated_at":"2025-11-10T11:33:11.000Z","time_to_close":1558758,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python-deps","update_count":20,"packages":[{"name":"redis","old_version":"6.4.0","new_version":"7.0.0","repository_url":"https://github.com/redis/redis-py"},{"name":"dynaconf","old_version":"3.2.11","new_version":"3.2.12","repository_url":"https://github.com/dynaconf/dynaconf"},{"name":"securesystemslib","old_version":"1.3.0","new_version":"1.3.1","repository_url":"https://github.com/secure-systems-lab/securesystemslib"},{"name":"sqlalchemy","old_version":"2.0.43","new_version":"2.0.44","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"psycopg2","old_version":"2.9.10","new_version":"2.9.11","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"alembic","old_version":"1.16.4","new_version":"1.17.0","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"pydantic","old_version":"2.11.7","new_version":"2.12.3","repository_url":"https://github.com/pydantic/pydantic"},{"name":"boto3","old_version":"1.40.16","new_version":"1.40.57","repository_url":"https://github.com/boto/boto3"},{"name":"awswrangler","old_version":"3.12.1","new_version":"3.13.0","repository_url":"https://github.com/aws/aws-sdk-pandas"},{"name":"sigstore","old_version":"3.6.5","new_version":"4.1.0","repository_url":"https://github.com/sigstore/sigstore-python"},{"name":"google-cloud-kms","old_version":"3.5.1","new_version":"3.7.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"tox","old_version":"4.28.4","new_version":"4.31.0","repository_url":"https://github.com/tox-dev/tox"},{"name":"coverage","old_version":"7.10.5","new_version":"7.11.0","repository_url":"https://github.com/nedbat/coveragepy"},{"name":"black","old_version":"25.1.0","new_version":"25.9.0","repository_url":"https://github.com/psf/black"},{"name":"isort","old_version":"6.0.1","new_version":"7.0.0","repository_url":"https://github.com/PyCQA/isort"},{"name":"mypy","old_version":"1.17.1","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"},{"name":"pytest","old_version":"8.4.1","new_version":"8.4.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"6.2.1","new_version":"7.0.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"sphinxcontrib-plantuml","old_version":"0.30","new_version":"0.31","repository_url":"https://github.com/sphinx-contrib/plantuml"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-deps group with 19 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [redis](https://github.com/redis/redis-py) | `6.4.0` | `7.0.0` |\n| [dynaconf](https://github.com/dynaconf/dynaconf) | `3.2.11` | `3.2.12` |\n| [securesystemslib](https://github.com/secure-systems-lab/securesystemslib) | `1.3.0` | `1.3.1` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.43` | `2.0.44` |\n| [psycopg2](https://github.com/psycopg/psycopg2) | `2.9.10` | `2.9.11` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.16.4` | `1.17.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.7` | `2.12.3` |\n| [boto3](https://github.com/boto/boto3) | `1.40.16` | `1.40.57` |\n| [awswrangler](https://github.com/aws/aws-sdk-pandas) | `3.12.1` | `3.13.0` |\n| [sigstore](https://github.com/sigstore/sigstore-python) | `3.6.5` | `4.1.0` |\n| [google-cloud-kms](https://github.com/googleapis/google-cloud-python) | `3.5.1` | `3.7.0` |\n| [tox](https://github.com/tox-dev/tox) | `4.28.4` | `4.31.0` |\n| [coverage](https://github.com/nedbat/coveragepy) | `7.10.5` | `7.11.0` |\n| [black](https://github.com/psf/black) | `25.1.0` | `25.9.0` |\n| [isort](https://github.com/PyCQA/isort) | `6.0.1` | `7.0.0` |\n| [mypy](https://github.com/python/mypy) | `1.17.1` | `1.18.2` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.1` | `8.4.2` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `6.2.1` | `7.0.0` |\n| [sphinxcontrib-plantuml](https://github.com/sphinx-contrib/plantuml) | `0.30` | `0.31` |\n\n\nUpdates `redis` from 6.4.0 to 7.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/redis-py/releases\"\u003eredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.0.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003cp\u003eOne of the main features introduced in this release is a new type of client \u003ccode\u003eMultiDBClient\u003c/code\u003e. The purpose of this client is a communication with multiple databases that are eventually consistent (Active-Active setup) and handling failures by failover across databases.\nMore information could be found in docs.\u003c/p\u003e\n\u003ch2\u003e🚀 New Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for maintenance push notifications handling during server upgrade or maintenance procedures. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3756\"\u003e#3756\u003c/a\u003e \u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3777\"\u003e#3777\u003c/a\u003e \u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3778\"\u003e#3778\u003c/a\u003e \u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3779\"\u003e#3779\u003c/a\u003e \u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3785\"\u003e#3785\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdding WITHATTRIBS option to vector set's vsim command. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3746\"\u003e#3746\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdding ssl_verify_flags_config argument for ssl connection configuration (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3772\"\u003e#3772\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdding new ExternalAuthProviderError that will be raised when we receive 'problem with LDAP service' response from server. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3808\"\u003e#3808\u003c/a\u003e)\n\u003cstrong\u003eNote\u003c/strong\u003e Not supported with hiredis parser. When hiredis parser is used this server response is mapped to ResponseError\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧪 Experimental Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMulti-database client implementation (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3784\"\u003e#3784\u003c/a\u003e \u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3811\"\u003e#3811\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🔥 Breaking changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdding abstract method declaration for cache property setter in EvictionPolicyInterface(\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3732\"\u003e#3732\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove unused parse_list_to_dict function from helpers (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3733\"\u003e#3733\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoving synchronous context manager handling from async RedisCluster. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3679\"\u003e#3679\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRedis Search/Aggregate improved type annotations (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3676\"\u003e#3676\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoving the threading.Lock locks and replacing them with RLock objects to avoid deadlocks. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3677\"\u003e#3677\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate ping command docstrings and method return type hint (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3789\"\u003e#3789\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixing several *arg type hints in core.py and json module commands (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3793\"\u003e#3793\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixing errors reported by mypy in search module files - query.py, commands.py and aggregation.py. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3666\"\u003e#3666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdding score_cast_func argument to zrank, zrevrank and zunion - for consistency with the other sorted sets commands (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3795\"\u003e#3795\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanging the timeout typehint in async BlockingConnectionPool from int to float (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3801\"\u003e#3801\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoving the threading.Lock locks and replacing them with RLock objects to avoid deadlocks. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3677\"\u003e#3677\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧰 Maintenance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 4 to 5 (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3760\"\u003e#3760\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix docstring for ssl_check_hostname (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3761\"\u003e#3761\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTypos in vectorset commands.py (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3719\"\u003e#3719\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixing typos in query.py (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3718\"\u003e#3718\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTypos in cluster.py (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3717\"\u003e#3717\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixing typos in core.py (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3720\"\u003e#3720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Redis image versions for GH pipeline actions. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3740\"\u003e#3740\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport the customization of the timeout parameter when using a blocking connection pool with a redis cluster (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3724\"\u003e#3724\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix async clients safety when used as an async context manager (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3512\"\u003e#3512\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: fix zadd command parameter description (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3727\"\u003e#3727\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFault injector boilerplate (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3749\"\u003e#3749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdding e2e scenario tests for maintenance push notifications handling. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3758\"\u003e#3758\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdding more e2e tests related to maintenance notifications. Extracting specific tests that validate notifications are received in new connections (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3770\"\u003e#3770\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRenaming of classes and configuration arguments related to maintenance push notifications handling during server upgrade or maintenance procedures (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3777\"\u003e#3777\u003c/a\u003e \u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3778\"\u003e#3778\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDOC-5743 BITOP examples (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3776\"\u003e#3776\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove stale issue management workflow (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3773\"\u003e#3773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[DOC] Add complex chaining example using pipelines with builder pattern (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3774\"\u003e#3774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix automation scenario maint notification (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3788\"\u003e#3788\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/7a4e8bc42a1cbda6b1e8e2e1dfbe8a94766e07f9\"\u003e\u003ccode\u003e7a4e8bc\u003c/code\u003e\u003c/a\u003e Updating package version to 7.0.0 and supported redis versions in readme.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/64a2721d6b0303e7a723066530b467145ee10841\"\u003e\u003ccode\u003e64a2721\u003c/code\u003e\u003c/a\u003e Refactor healthcheck to use PING instead of ECHO (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3811\"\u003e#3811\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/24a7a1027bd6390e161c1c88be35c8acb242833d\"\u003e\u003ccode\u003e24a7a10\u003c/code\u003e\u003c/a\u003e Fixing SORTABLE, INDEXEMPTY and INDEXMISSING order when using RediSearch fiel...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/32ba6d89d2061a44c0c3f36d249fb9929836fca6\"\u003e\u003ccode\u003e32ba6d8\u003c/code\u003e\u003c/a\u003e DOC-5821 update index/query example for runnable notebook (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3807\"\u003e#3807\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/c1e566f9fbd99912d7073b871eeda76d70f61b63\"\u003e\u003ccode\u003ec1e566f\u003c/code\u003e\u003c/a\u003e Add handling of empty spaces during CLIENT LIST response parsing (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3797\"\u003e#3797\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/295bec67ddbf99c205376483f08a3ddebb72f2b2\"\u003e\u003ccode\u003e295bec6\u003c/code\u003e\u003c/a\u003e Adding new ExternalAuthProviderError that will be raised when we receive 'pro...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/52c700379eee9c4d32244c905cd993ea02cb0d81\"\u003e\u003ccode\u003e52c7003\u003c/code\u003e\u003c/a\u003e Fixing sync BlockingConnectionPool's disconnect method to follow the definiti...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/1ac80f64a21cb442ca9f4880dd34782c9b022e77\"\u003e\u003ccode\u003e1ac80f6\u003c/code\u003e\u003c/a\u003e Changing the timeout typehint in async BlockingConnectionPool from int to flo...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/f9bc0348143184377fd9c9771bee61fdf507803e\"\u003e\u003ccode\u003ef9bc034\u003c/code\u003e\u003c/a\u003e Adding score_cast_func argument to zrank, zrevrank and zunion - for consisten...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/0768fbee450b73cb554565cb01192d7fe17db713\"\u003e\u003ccode\u003e0768fbe\u003c/code\u003e\u003c/a\u003e Update Python version to 3.14 in hiredis CI workflow (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/3798\"\u003e#3798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/redis/redis-py/compare/v6.4.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 `dynaconf` from 3.2.11 to 3.2.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dynaconf/dynaconf/releases\"\u003edynaconf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.2.12\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eIncremental improvment to access performance by \u003ca href=\"https://github.com/pedro-psb\"\u003e\u003ccode\u003e@​pedro-psb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/pull/1304\"\u003edynaconf/dynaconf#1304\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: get method to return Any type. by \u003ca href=\"https://github.com/rochacbruno\"\u003e\u003ccode\u003e@​rochacbruno\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/pull/1314\"\u003edynaconf/dynaconf#1314\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eperf: add lru caching to \u003ccode\u003efind_the_correct_casing\u003c/code\u003e function by \u003ca href=\"https://github.com/pedro-psb\"\u003e\u003ccode\u003e@​pedro-psb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/pull/1326\"\u003edynaconf/dynaconf#1326\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/dynaconf/dynaconf/compare/3.2.11...3.2.12\"\u003ehttps://github.com/dynaconf/dynaconf/compare/3.2.11...3.2.12\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dynaconf/dynaconf/blob/3.2.12/CHANGELOG.md\"\u003edynaconf's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pedro-psb/dynaconf/releases/tag/3.2.12\"\u003e3.2.12\u003c/a\u003e - 2025-10-10\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eget method to return Any type.. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003eremove unnecessary recursive evaluation call on Settings.get. \u003cem\u003eBy Pedro Brochado\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003eimprove performance of settings access in a loop (part 1). \u003cem\u003eBy Pedro Brochado\u003c/em\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/dynaconf/dynaconf/commit/7606f351ac460b15c56e7a538300de4a501c56e7\"\u003e\u003ccode\u003e7606f35\u003c/code\u003e\u003c/a\u003e Release version 3.2.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/da44e5182940299dd90ca3e2a0e0e3c23cb9ebf7\"\u003e\u003ccode\u003eda44e51\u003c/code\u003e\u003c/a\u003e perf: add lru caching to \u003ccode\u003efind_the_correct_casing\u003c/code\u003e function (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1326\"\u003e#1326\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/b75eda0da141bdc29f707f2cb0c29e06b03a72bb\"\u003e\u003ccode\u003eb75eda0\u003c/code\u003e\u003c/a\u003e fix: get method to return Any type.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/4f3df1a47bcb71feddf7565f603e7994c65ede65\"\u003e\u003ccode\u003e4f3df1a\u003c/code\u003e\u003c/a\u003e misc: add some profile/perf scripts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/420acebf64e77ba475df94dfd7d409207e5e239d\"\u003e\u003ccode\u003e420aceb\u003c/code\u003e\u003c/a\u003e refactor: merge \u003cem\u003esafe\u003c/em\u003e{get,copy} into .get and .copy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/18c0c8422dc9651d57c76d1b098ad6fb3f75c09d\"\u003e\u003ccode\u003e18c0c84\u003c/code\u003e\u003c/a\u003e fix: remove unnecessary recursive evaluation call on Settings.get\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/0fde96f2e0b71309e63800ddac8eceda062155a9\"\u003e\u003ccode\u003e0fde96f\u003c/code\u003e\u003c/a\u003e refactor: rewrite decorator as explicit call\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/52efd9ed78d2187550e03a2ae5008661d5e28df9\"\u003e\u003ccode\u003e52efd9e\u003c/code\u003e\u003c/a\u003e Bump to version 3.2.12-dev0\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/dynaconf/dynaconf/compare/3.2.11...3.2.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `securesystemslib` from 1.3.0 to 1.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/releases\"\u003esecuresystemslib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.3.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/blob/v1.3.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e for details.\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/secure-systems-lab/securesystemslib/blob/main/CHANGELOG.md\"\u003esecuresystemslib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003esecuresystemslib v1.3.1\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAWSSigner: Don't send payload to AWS for signing, send hash only (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1026\"\u003e#1026\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSet Development status classifier to \u0026quot;production/stable\u0026quot; in Python\npackaging (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1030\"\u003e#1030\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternals\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMinor infrastructure changes (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1005\"\u003e#1005\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1013\"\u003e#1013\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/secure-systems-lab/securesystemslib/commit/6f774190b90f0aa9d5d7e077680adbaa29c5cd6c\"\u003e\u003ccode\u003e6f77419\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1030\"\u003e#1030\u003c/a\u003e from jku/release-prep-1.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/b71cc5271a9a7b6898c79c1a12393d90996d5388\"\u003e\u003ccode\u003eb71cc52\u003c/code\u003e\u003c/a\u003e Prepare release 1.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/f6835096a845acf25dc3675105937be2565b9e66\"\u003e\u003ccode\u003ef683509\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1026\"\u003e#1026\u003c/a\u003e from ArkadiuszNitkaSWI/fix-aws-signer\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/97527198c7bf5b75ef9fb8996412df5453995080\"\u003e\u003ccode\u003e9752719\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1027\"\u003e#1027\u003c/a\u003e from secure-systems-lab/dependabot/pip/test-and-lint...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/4226b762bf3333b5947af9cf29ed751afbfd69b9\"\u003e\u003ccode\u003e4226b76\u003c/code\u003e\u003c/a\u003e build(deps): bump the test-and-lint-dependencies group with 4 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/6394e3e467c091a06ee95dad674dec7e991758c8\"\u003e\u003ccode\u003e6394e3e\u003c/code\u003e\u003c/a\u003e Review changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/dee9a831390c9a69c0e66f7c34779e9eea6dcc6d\"\u003e\u003ccode\u003edee9a83\u003c/code\u003e\u003c/a\u003e linter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/07b0fc780d9d1f4c0843ce3e2096e1216814bd06\"\u003e\u003ccode\u003e07b0fc7\u003c/code\u003e\u003c/a\u003e update .gitignore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/e8158a4eb131760714290b9839e3e40f9cd4229c\"\u003e\u003ccode\u003ee8158a4\u003c/code\u003e\u003c/a\u003e Fix AWS signer, allow messages bigger than 4kB\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/e23f855ddecb97d4baddffc068e9591451b9aa72\"\u003e\u003ccode\u003ee23f855\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1023\"\u003e#1023\u003c/a\u003e from secure-systems-lab/dependabot/pip/dependencies-...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/compare/v1.3.0...v1.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlalchemy` from 2.0.43 to 2.0.44\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/releases\"\u003esqlalchemy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.0.44\u003c/h1\u003e\n\u003cp\u003eReleased: October 10, 2025\u003c/p\u003e\n\u003ch2\u003eplatform\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e[platform] [bug]\u003c/strong\u003e Unblocked automatic greenlet installation for Python 3.14 now that\nthere are greenlet wheels on pypi for python 3.14.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eorm\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [usecase]\u003c/strong\u003e The way ORM Annotated Declarative interprets Python \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e type aliases\nin \u003ccode\u003eMapped[]\u003c/code\u003e annotations has been refined to expand the lookup scheme. A\n\u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e type can now be resolved based on either its direct presence in\n\u003ccode\u003e_orm.registry.type_annotation_map\u003c/code\u003e or its immediate resolved\nvalue, as long as a recursive lookup across multiple \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e types is\nnot required for it to resolve. This change reverses part of the\nrestrictions introduced in 2.0.37 as part of \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/11955\"\u003e#11955\u003c/a\u003e, which\ndeprecated (and disallowed in 2.1) the ability to resolve any \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e\ntype that was not explicitly present in\n\u003ccode\u003e_orm.registry.type_annotation_map\u003c/code\u003e. Recursive lookups of\n\u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e types remains deprecated in 2.0 and disallowed in version 2.1,\nas do implicit lookups of \u003ccode\u003eNewType\u003c/code\u003e types without an entry in\n\u003ccode\u003e_orm.registry.type_annotation_map\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eAdditionally, new support has been added for generic \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e aliases that\nrefer to \u003ca href=\"https://peps.python.org/pep-0593\"\u003ePEP 593\u003c/a\u003e \u003ccode\u003eAnnotated\u003c/code\u003e constructs containing\n\u003ccode\u003e_orm.mapped_column()\u003c/code\u003e configurations. See the sections below for\nexamples.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12829\"\u003e#12829\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed a caching issue where \u003ccode\u003e_orm.with_loader_criteria()\u003c/code\u003e would\nincorrectly reuse cached bound parameter values when used with\n\u003ccode\u003e_sql.CompoundSelect\u003c/code\u003e constructs such as \u003ccode\u003e_sql.union()\u003c/code\u003e. The\nissue was caused by the cache key for compound selects not including the\nexecution options that are part of the \u003ccode\u003e_sql.Executable\u003c/code\u003e base class,\nwhich \u003ccode\u003e_orm.with_loader_criteria()\u003c/code\u003e uses to apply its criteria\ndynamically. The fix ensures that compound selects and other executable\nconstructs properly include execution options in their cache key traversal.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12905\"\u003e#12905\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eengine\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e[engine] [bug]\u003c/strong\u003e Implemented initial support for free-threaded Python by adding new tests\nand reworking the test harness to include Python 3.13t and Python 3.14t in\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psycopg2` from 2.9.10 to 2.9.11\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psycopg/psycopg2/blob/master/NEWS\"\u003epsycopg2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eCurrent release\u003c/h2\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.11\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eAvoid a segfault passing more arguments than placeholders if Python is built\nwith assertions enabled (:ticket:\u003ccode\u003e[#1791](https://github.com/psycopg/psycopg2/issues/1791)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e~psycopg2.errorcodes\u003c/code\u003e map and \u003ccode\u003e~psycopg2.errors\u003c/code\u003e classes updated to\nPostgreSQL 18.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.8.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.10\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.13.\u003c/li\u003e\n\u003cli\u003eReceive notifications on commit (:ticket:\u003ccode\u003e[#1728](https://github.com/psycopg/psycopg2/issues/1728)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e~psycopg2.errorcodes\u003c/code\u003e map and \u003ccode\u003e~psycopg2.errors\u003c/code\u003e classes updated to\nPostgreSQL 17.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.7.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.9\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.12.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.6.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.8\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWheel package bundled with PostgreSQL 16 libpq in order to add support for\nrecent features, such as \u003ccode\u003esslcertmode\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.7\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix propagation of exceptions raised during module initialization\n(:ticket:\u003ccode\u003e[#1598](https://github.com/psycopg/psycopg2/issues/1598)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix building when pg_config returns an empty string (:ticket:\u003ccode\u003e[#1599](https://github.com/psycopg/psycopg2/issues/1599)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eWheel package bundled with OpenSSL 1.1.1v.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.6\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/psycopg/psycopg2/commit/fd9ae8cad2bcfc3e7e9410e7b6f07cda8f4f05ec\"\u003e\u003ccode\u003efd9ae8c\u003c/code\u003e\u003c/a\u003e chore: bump to version 2.9.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/d923840546942534f0956d9202f914fd9feac5fd\"\u003e\u003ccode\u003ed923840\u003c/code\u003e\u003c/a\u003e chore: update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/d42dc7169d3cd93517e282e9ef5dc2a2b40650a2\"\u003e\u003ccode\u003ed42dc71\u003c/code\u003e\u003c/a\u003e Merge branch 'fix-1791'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/4fde6560c32f06ad1304404c9f7f86148dcc4be0\"\u003e\u003ccode\u003e4fde656\u003c/code\u003e\u003c/a\u003e fix: avoid failed assert passing more arguments than placeholders\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/8308c19d6af0d904b313997539ed33415990a74e\"\u003e\u003ccode\u003e8308c19\u003c/code\u003e\u003c/a\u003e fix: drop warning about the use of deprecated PyWeakref_GetObject function\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/1a1eabf098a3374409bb2ab4b594777b900f396d\"\u003e\u003ccode\u003e1a1eabf\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/github-script from 7 to 8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/897af8b38beda851d7257dfc525129e37c0ec9e0\"\u003e\u003ccode\u003e897af8b\u003c/code\u003e\u003c/a\u003e build(deps): bump peter-evans/repository-dispatch from 3 to 4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/ceefd305117113ca10e383a626e87ba0796f3638\"\u003e\u003ccode\u003eceefd30\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/checkout from 4 to 5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/4dc585430cabe94cee96c5a9de0265d0f55370f1\"\u003e\u003ccode\u003e4dc5854\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/setup-python from 5 to 6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/1945788dcf6172bb1b9328ebc3587ccf0e6a659c\"\u003e\u003ccode\u003e1945788\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg2/issues/1802\"\u003e#1802\u003c/a\u003e from edgarrmondragon/cp314-wheels\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psycopg/psycopg2/compare/2.9.10...2.9.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `alembic` from 1.16.4 to 1.17.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/alembic/releases\"\u003ealembic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.17.0\u003c/h1\u003e\n\u003cp\u003eReleased: October 11, 2025\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[change] [tests]\u003c/strong\u003e The top-level test runner has been changed to use \u003ccode\u003enox\u003c/code\u003e, adding a\n\u003ccode\u003enoxfile.py\u003c/code\u003e as well as some included modules.   The \u003ccode\u003etox.ini\u003c/code\u003e file\nremains in place so that \u003ccode\u003etox\u003c/code\u003e runs will continue to function in the near\nterm, however it will be eventually removed and improvements and\nmaintenance going forward will be only towards \u003ccode\u003enoxfile.py\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[change] [general]\u003c/strong\u003e The minimum Python version is now 3.10, as Python 3.9 is EOL.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.16.5\u003c/h1\u003e\n\u003cp\u003eReleased: August 27, 2025\u003c/p\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [mysql]\u003c/strong\u003e Fixed Python-side autogenerate rendering of index expressions in MySQL\ndialect by aligning it with SQLAlchemy's MySQL index expression rules. Pull\nrequest courtesy david-fed.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1492\"\u003e#1492\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [config]\u003c/strong\u003e Fixed issue where new pyproject.toml config would fail to parse the integer\nvalue used for the \u003ccode\u003etruncate_slug_length\u003c/code\u003e parameter.  Pull request\ncourtesy Luís Henrique Allebrandt Schunemann.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1709\"\u003e#1709\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\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/alembic/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.11.7 to 2.12.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.12.3 2025-10-17\u003c/h2\u003e\n\u003ch2\u003ev2.12.3 (2025-10-17)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThis is the third 2.13 patch release, fixing issues related to the \u003ccode\u003eFieldInfo\u003c/code\u003e class, and reverting a change to the supported \u003ca href=\"https://docs.pydantic.dev/latest/concepts/validators/#model-validators\"\u003e\u003cem\u003eafter\u003c/em\u003e model validator\u003c/a\u003e function signatures.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRaise a warning when an invalid after model validator function signature is raised by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12414\"\u003e#12414\u003c/a\u003e.\nStarting in 2.12.0, using class methods for \u003cem\u003eafter\u003c/em\u003e model validators raised an error, but the error wasn't raised concistently. We decided to emit a deprecation warning instead.\u003c/li\u003e\n\u003cli\u003eAdd \u003ca href=\"https://docs.pydantic.dev/latest/api/fields/#pydantic.fields.FieldInfo.asdict\"\u003e\u003ccode\u003eFieldInfo.asdict()\u003c/code\u003e\u003c/a\u003e method, improve documentation around \u003ccode\u003eFieldInfo\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12411\"\u003e#12411\u003c/a\u003e.\nThis also adds back support for mutations on \u003ccode\u003eFieldInfo\u003c/code\u003e classes, that are reused as \u003ccode\u003eAnnotated\u003c/code\u003e metadata. \u003cstrong\u003eHowever\u003c/strong\u003e, note that this is still \u003cem\u003enot\u003c/em\u003e a supported pattern. Instead, please refer to the \u003ca href=\"https://docs.pydantic.dev/latest/examples/dynamic_models/\"\u003eadded example\u003c/a\u003e in the documentation.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-12-release#changes\"\u003eblog post\u003c/a\u003e section on changes was also updated to document the changes related to \u003ccode\u003eserialize_as_any\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.2...v2.12.3\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.12.2...v2.12.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.12.2 2025-10-14\u003c/h2\u003e\n\u003ch2\u003ev2.12.2 (2025-10-14)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eRelease a new \u003ccode\u003epydantic-core\u003c/code\u003e version, as a corrupted CPython 3.10 \u003ccode\u003emanylinux2014_aarch64\u003c/code\u003e wheel got uploaded (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1843\"\u003epydantic-core#1843\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix issue with recursive generic models with a parent model class by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12398\"\u003e#12398\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.1...v2.12.2\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.12.1...v2.12.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.12.1 2025-10-13\u003c/h2\u003e\n\u003ch2\u003ev2.12.1 (2025-10-13)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.1\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThis is the first 2.12 patch release, addressing most (but not all yet) regressions from the initial 2.12.0 release.\u003c/p\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eDo not evaluate annotations when inspecting validators and serializers by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12355\"\u003e#12355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake sure \u003ccode\u003eNone\u003c/code\u003e is converted as \u003ccode\u003eNoneType\u003c/code\u003e in Python 3.14 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12370\"\u003e#12370\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBackport V1 runtime warning when using Python 3.14 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12367\"\u003e#12367\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix error message for invalid validator signatures by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12366\"\u003e#12366\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePopulate field name in \u003ccode\u003eValidationInfo\u003c/code\u003e for validation of default value by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1826\"\u003epydantic-core#1826\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEncode credentials in \u003ccode\u003eMultiHostUrl\u003c/code\u003e builder by \u003ca href=\"https://github.com/willswire\"\u003e\u003ccode\u003e@​willswire\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1829\"\u003epydantic-core#1829\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRespect field serializers when using \u003ccode\u003eserialize_as_any\u003c/code\u003e serialization flag by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1829\"\u003epydantic-core#1829\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix various \u003ccode\u003eRootModel\u003c/code\u003e serialization issues by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1836\"\u003epydantic-core#1836\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Contributors\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/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.12.3 (2025-10-17)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.3\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThis is the third 2.12 patch release, fixing issues related to the \u003ccode\u003eFieldInfo\u003c/code\u003e class, and reverting a change to the supported\n\u003ca href=\"https://docs.pydantic.dev/latest/concepts/validators/#model-validators\"\u003e\u003cem\u003eafter\u003c/em\u003e model validator\u003c/a\u003e function signatures.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRaise a warning when an invalid after model validator function signature is raised by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12414\"\u003e#12414\u003c/a\u003e.\nStarting in 2.12.0, using class methods for \u003cem\u003eafter\u003c/em\u003e model validators raised an error, but the error wasn't raised concistently. We decided\nto emit a deprecation warning instead.\u003c/li\u003e\n\u003cli\u003eAdd \u003ca href=\"https://docs.pydantic.dev/latest/api/fields/#pydantic.fields.FieldInfo.asdict\"\u003e\u003ccode\u003eFieldInfo.asdict()\u003c/code\u003e\u003c/a\u003e method, improve documentation around \u003ccode\u003eFieldInfo\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12411\"\u003e#12411\u003c/a\u003e.\nThis also add back support for mutations on \u003ccode\u003eFieldInfo\u003c/code\u003e classes, that are reused as \u003ccode\u003eAnnotated\u003c/code\u003e metadata. \u003cstrong\u003eHowever\u003c/strong\u003e, note that this is still\n\u003cem\u003enot\u003c/em\u003e a supported pattern. Instead, please refer to the \u003ca href=\"https://docs.pydantic.dev/latest/examples/dynamic_models/\"\u003eadded example\u003c/a\u003e in the documentation.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-12-release#changes\"\u003eblog post\u003c/a\u003e section on changes was also updated to document the changes related to \u003ccode\u003eserialize_as_any\u003c/code\u003e.\u003c/p\u003e\n\u003ch2\u003ev2.12.2 (2025-10-14)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.2\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eRelease a new \u003ccode\u003epydantic-core\u003c/code\u003e version, as a corrupted CPython 3.10 \u003ccode\u003emanylinux2014_aarch64\u003c/code\u003e wheel got uploaded (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1843\"\u003epydantic-core#1843\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix issue with recursive generic models with a parent model class by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12398\"\u003e#12398\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.12.1 (2025-10-13)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.12.1\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003cp\u003eThis is the first 2.12 patch release, addressing most (but not all yet) regressions from the initial 2.12.0 release.\u003c/p\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eDo not evaluate annotations when inspecting validators and serializers by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12355\"\u003e#12355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake sure \u003ccode\u003eNone\u003c/code\u003e is converted as \u003ccode\u003eNoneType\u003c/code\u003e in Python 3.14 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12370\"\u003e#12370\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBackport V1 runtime warning when using Python 3.14 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12367\"\u003e#12367\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix error message for invalid validator signatures by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12366\"\u003e#12366\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePopulate field name in \u003ccode\u003eValidationInfo\u003c/code\u003e for validation of default value by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1826\"\u003epydantic-core#1826\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEncode credentials in \u003ccode\u003eMultiHostUrl\u003c/code\u003e builder by \u003ca href=\"https://github.com/willswire\"\u003e\u003ccode\u003e@​willswire\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1829\"\u003epydantic-core#1829\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRespect field serializers when using \u003ccode\u003eserialize_as_any\u003c/code\u003e serialization flag by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1829\"\u003epydantic-core#1829\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix various \u003ccode\u003eRootModel\u003c/code\u003e serialization issues by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-core/pull/1836\"\u003epydantic-core#1836\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Contributors\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/1a8850d101e67d2744ba8c6286e1172d7cd89d0b\"\u003e\u003ccode\u003e1a8850d\u003c/code\u003e\u003c/a\u003e Prepare release 2.12.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/09dbcf29c73c3fd7fd3ef1edfebe357e807cc9ca\"\u003e\u003ccode\u003e09dbcf2\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003eFieldInfo.asdict()\u003c/code\u003e method, improve documentation around \u003ccode\u003eFieldInfo\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/5da43310ec61a7b9b3017b2b9f388e778398a1bc\"\u003e\u003ccode\u003e5da4331\u003c/code\u003e\u003c/a\u003e Improve documentation about serialize as any behavior\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/9c863245ad3799ab331f33b52e2d7441e9c1191e\"\u003e\u003ccode\u003e9c86324\u003c/code\u003e\u003c/a\u003e Raise a warning when an invalid after model validator function signature is r...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/36a73c6ed53df7f1cad3343bc811e1dd3f52d26f\"\u003e\u003ccode\u003e36a73c6\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003epydantic-extra-types\u003c/code\u003e dependency to version \u003ccode\u003e\u0026gt;=2.10.6\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/1e616a3a6fa0201f840c08143cac883e56a2d9df\"\u003e\u003ccode\u003e1e616a3\u003c/code\u003e\u003c/a\u003e Prepare release v2.12.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/dc302e2d09f0eed14729f69bc61a258f1f35d35c\"\u003e\u003ccode\u003edc302e2\u003c/code\u003e\u003c/a\u003e Fix issue with recursive generic models with a parent model class\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/6876485d0cffeb66c915695574344ae4b03645a7\"\u003e\u003ccode\u003e6876485\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003epydantic-core\u003c/code\u003e to v2.41.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b4076c66773b514d4891f036a4cc562b8ff0ff21\"\u003e\u003ccode\u003eb4076c6\u003c/code\u003e\u003c/a\u003e Prepare release 2.12.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b67f07291167b4005a6eeee05fcad67b43a53f41\"\u003e\u003ccode\u003eb67f072\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003epydantic-core\u003c/code\u003e to v2.41.3\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.11.7...v2.12.3\"\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.16 to 1.40.57\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/43407ff84649f0d16c50fc87b69cb716a1ebc6c7\"\u003e\u003ccode\u003e43407ff\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.40.57'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/cb3d0c727b26c5648777cb50f66503c6daf5036f\"\u003e\u003ccode\u003ecb3d0c7\u003c/code\u003e\u003c/a\u003e Bumping version to 1.40.57\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/11328420285e28e0b3795596824d3f60370d9708\"\u003e\u003ccode\u003e1132842\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/69f915b4cf1961db9395db23e10c7210ad7a6814\"\u003e\u003ccode\u003e69f915b\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.40.56'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/1c2dc637c65e8178f9b3afd61977f45cb153a6ab\"\u003e\u003ccode\u003e1c2dc63\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.40.56' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/94dd6caaa7d4e75192fe3ca131f9fd180a557f8b\"\u003e\u003ccode\u003e94dd6ca\u003c/code\u003e\u003c/a\u003e Bumping version to 1.40.56\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/7f7a418fa31e3e0b2212d9d88ec9292c8f1a7e12\"\u003e\u003ccode\u003e7f7a418\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/eb5f82773991f715b62dc38f6801d76d1035a868\"\u003e\u003ccode\u003eeb5f827\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.40.55'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/849b54b57300b4442f71a74b7e6f8d9230fb63e4\"\u003e\u003ccode\u003e849b54b\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.40.55' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/52a3496b66a6ff66755c4315c55f22b07826e758\"\u003e\u003ccode\u003e52a3496\u003c/code\u003e\u003c/a\u003e Bumping version to 1.40.55\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.40.16...1.40.57\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `awswrangler` from 3.12.1 to 3.13.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aws/aws-sdk-pandas/releases\"\u003eawswrangler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eAWS SDK for pandas 3.13.0\u003c/h2\u003e\n\u003ch2\u003eNotable Changes ⚠️\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eupdated \u003ccode\u003eaiohhtp==3.12.15\u003c/code\u003eto fix CVE-2025-53643 (LOW) by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3197\"\u003eaws/aws-sdk-pandas#3197\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures / Enhancements 🚀\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: ray 2.49.0 by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3194\"\u003eaws/aws-sdk-pandas#3194\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add support for aurora-mysql and aurora-postgresql engines by \u003ca href=\"https://github.com/senorcinco\"\u003e\u003ccode\u003e@​senorcinco\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3188\"\u003eaws/aws-sdk-pandas#3188\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBugfixes 🐛\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: opensearch session by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3170\"\u003eaws/aws-sdk-pandas#3170\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: typo with Redshift write example by \u003ca href=\"https://github.com/Falydoor\"\u003e\u003ccode\u003e@​Falydoor\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3184\"\u003eaws/aws-sdk-pandas#3184\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: do not remove new columns values by \u003ca href=\"https://github.com/Braalfa\"\u003e\u003ccode\u003e@​Braalfa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3181\"\u003eaws/aws-sdk-pandas#3181\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity / Dependency Updates 🛡️\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the production-dependencies group across 1 directory with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3178\"\u003eaws/aws-sdk-pandas#3178\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump the production-dependencies 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/aws/aws-sdk-pandas/pull/3180\"\u003eaws/aws-sdk-pandas#3180\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump actions/checkout from 4 to 5 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3186\"\u003eaws/aws-sdk-pandas#3186\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump the github-actions group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3196\"\u003eaws/aws-sdk-pandas#3196\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update pytest-cov requirement from ~=6.0 to \u0026gt;=6,\u0026lt;8 in the production-dependencies group across 1 directory 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/aws/aws-sdk-pandas/pull/3198\"\u003eaws/aws-sdk-pandas#3198\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eHousekeeping 🧹\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore: clean up poetry.lock by \u003ca href=\"https://github.com/kukushking\"\u003e\u003ccode\u003e@​kukushking\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3171\"\u003eaws/aws-sdk-pandas#3171\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/senorcinco\"\u003e\u003ccode\u003e@​senorcinco\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3188\"\u003eaws/aws-sdk-pandas#3188\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Braalfa\"\u003e\u003ccode\u003e@​Braalfa\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/pull/3181\"\u003eaws/aws-sdk-pandas#3181\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/aws/aws-sdk-pandas/compare/3.12.1...3.13.0\"\u003ehttps://github.com/aws/aws-sdk-pandas/compare/3.12.1...3.13.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/aws/aws-sdk-pandas/commit/bca1fcd701e3d3a5bc410918d6564d0899846710\"\u003e\u003ccode\u003ebca1fcd\u003c/code\u003e\u003c/a\u003e fix: Readthedocs build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/e936e84d214ecf37d40c5648e014b0f8192f3061\"\u003e\u003ccode\u003ee936e84\u003c/code\u003e\u003c/a\u003e fix: Readthedocs build (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/issues/3200\"\u003e#3200\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/672d943de854871c09d7b158656c28c68756d91b\"\u003e\u003ccode\u003e672d943\u003c/code\u003e\u003c/a\u003e chore: Update layers.rst (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/issues/3199\"\u003e#3199\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/c2fc56f71b75dc3d678521ca3b0bba556982d4e4\"\u003e\u003ccode\u003ec2fc56f\u003c/code\u003e\u003c/a\u003e chore: Update layers.rst\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/2f3849db918a306f6baa81a7ff8fc8cf9708d3c5\"\u003e\u003ccode\u003e2f3849d\u003c/code\u003e\u003c/a\u003e chore(deps): update pytest-cov requirement from ~=6.0 to \u0026gt;=6,\u0026lt;8 in the produc...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/b7d889e4b72f9eeb6297ca63c325e5d753a6f259\"\u003e\u003ccode\u003eb7d889e\u003c/code\u003e\u003c/a\u003e fix: do not remove new columns values (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/issues/3181\"\u003e#3181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/286535f7f2149d6fd7b60276fe52a09e96270f5f\"\u003e\u003ccode\u003e286535f\u003c/code\u003e\u003c/a\u003e chore: Release 3.13.0 (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/issues/3197\"\u003e#3197\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/706d0328b35311b40b22ae78f1cefb4888a510d5\"\u003e\u003ccode\u003e706d032\u003c/code\u003e\u003c/a\u003e chore(deps): bump the github-actions group with 3 updates (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/issues/3196\"\u003e#3196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/e93974109f314544c57109fca28cb789fbf4841a\"\u003e\u003ccode\u003ee939741\u003c/code\u003e\u003c/a\u003e feat: add support for aurora-mysql and aurora-postgresql engines (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/issues/3188\"\u003e#3188\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/aws-sdk-pandas/commit/f9c921581b511cb422997cd1109c5f43b82ab99d\"\u003e\u003ccode\u003ef9c9215\u003c/code\u003e\u003c/a\u003e feat: ray 2.49.0 (\u003ca href=\"https://redirect.github.com/aws/aws-sdk-pandas/issues/3194\"\u003e#3194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aws/aws-sdk-pandas/compare/3.12.1...3.13.0\"\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.5 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.5...v4.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `google-cloud-kms` from 3.5.1 to 3.7.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/google-cloud-python/blob/main/packages/google-cloud-documentai/CHANGELOG.md\"\u003egoogle-cloud-kms's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/compare/google-cloud-documentai-v3.6.0...google-cloud-documentai-v3.7.0\"\u003e3.7.0\u003c/a\u003e (2025-10-16)\u003c/h2\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe field \u003ccode\u003etraining_method\u003c/code\u003e in \u003ccode\u003eTrainProcessorVersionRequest\u003c/code\u003e is now marked as optional  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/4dc7381c2121c9e13b24cb3aae59523f8ff31a3a\"\u003e4dc7381c2121c9e13b24cb3aae59523f8ff31a3a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA comment for field \u003ccode\u003elatest_evaluation\u003c/code\u003e in message \u003ccode\u003e.google.cloud.documentai.v1beta3.ProcessorVersion\u003c/code\u003e is changed  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA comment for field \u003ccode\u003etraining_method\u003c/code\u003e in message \u003ccode\u003e.google.cloud.documentai.v1beta3.TrainProcessorVersionRequest\u003c/code\u003e is changed  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA comment for field \u003ccode\u003eprocessor_version_source\u003c/code\u003e in message \u003ccode\u003e.google.cloud.documentai.v1beta3.ImportProcessorVersionRequest\u003c/code\u003e is changed  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA comment for field \u003ccode\u003edeprecation_info\u003c/code\u003e in message \u003ccode\u003e.google.cloud.documentai.v1beta3.ProcessorVersion\u003c/code\u003e is changed  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA comment for field \u003ccode\u003ecreate_time\u003c/code\u003e in message \u003ccode\u003e.google.cloud.documentai.v1beta3.Processor\u003c/code\u003e is changed  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA comment for field \u003ccode\u003edocument_schema\u003c/code\u003e in message \u003ccode\u003e.google.cloud.documentai.v1beta3.ProcessorVersion\u003c/code\u003e is changed  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA comment for field \u003ccode\u003ekms_key_name\u003c/code\u003e in message \u003ccode\u003e.google.cloud.documentai.v1beta3.ProcessorVersion\u003c/code\u003e is changed  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA comment for field \u003ccode\u003ecreate_time\u003c/code\u003e in message \u003ccode\u003e.google.cloud.documentai.v1beta3.ProcessorVersion\u003c/code\u003e is changed  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA comment for field \u003ccode\u003ekms_key_version_name\u003c/code\u003e in message \u003ccode\u003e.google.cloud.documentai.v1beta3.ProcessorVersion\u003c/code\u003e is changed  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded new messages \u003ccode\u003eEntityValidationOutput\u003c/code\u003e and \u003ccode\u003eEntitiesRevision\u003c/code\u003e  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/4dc7381c2121c9e13b24cb3aae59523f8ff31a3a\"\u003e4dc7381c2121c9e13b24cb3aae59523f8ff31a3a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded new fields \u003ccode\u003eentity_validation_output\u003c/code\u003e, \u003ccode\u003eentities_revisions\u003c/code\u003e, and \u003ccode\u003eentities_revision_id\u003c/code\u003e to the \u003ccode\u003eDocument\u003c/code\u003e message  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/4dc7381c2121c9e13b24cb3aae59523f8ff31a3a\"\u003e4dc7381c2121c9e13b24cb3aae59523f8ff31a3a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA new field \u003ccode\u003esignature_value\u003c/code\u003e is added to message \u003ccode\u003e.google.cloud.documentai.v1beta3.Document\u003c/code\u003e  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA new message \u003ccode\u003eEntitiesRevision\u003c/code\u003e is added  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA new field \u003ccode\u003eentities_revisions\u003c/code\u003e is added to message \u003ccode\u003e.google.cloud.documentai.v1beta3.Document\u003c/code\u003e  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA new field \u003ccode\u003eentity_validation_output\u003c/code\u003e is added to message \u003ccode\u003e.google.cloud.documentai.v1beta3.Document\u003c/code\u003e  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA new field \u003ccode\u003emethod\u003c/code\u003e is added to message \u003ccode\u003e.google.cloud.documentai.v1beta3.DocumentSchema\u003c/code\u003e  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA new enum \u003ccode\u003eMethod\u003c/code\u003e is added  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA new field \u003ccode\u003emethod\u003c/code\u003e is added to message \u003ccode\u003e.google.cloud.documentai.v1beta3.Document\u003c/code\u003e  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA new message \u003ccode\u003eEntityValidationOutput\u003c/code\u003e is added  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA new field \u003ccode\u003eentities_revision_id\u003c/code\u003e is added to message \u003ccode\u003e.google.cloud.documentai.v1beta3.Document\u003c/code\u003e  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA new field \u003ccode\u003eannotations\u003c/code\u003e is added to message \u003ccode\u003e.google.cloud.documentai.v1beta3.Document\u003c/code\u003e  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecate credentials_file argument  (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/98ee71abc0f97c88239b50bf0e0827df19630def\"\u003e98ee71abc0f97c88239b50bf0e0827df19630def\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/compare/google-cloud-documentai-v3.5.0...google-cloud-documentai-v3.6.0\"\u003e3.6.0\u003c/a\u003e (2025-08-29)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded config options for derived fields and signature detection. Some annotation changes changes to mark fields explicitly output only (no changes in semantics just readability) (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/6d0eeb7e4ae05a8ce9b2849eb9caf554b6e449c4\"\u003e6d0eeb7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eA comment for field \u003ccode\u003ecreate_time\u003c/code\u003e in message \u003ccode\u003e.google.cloud.documentai.v1.Processor\u003c/code\u003e  is changed to describe as output only. (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/6d0eeb7e4ae05a8ce9b2849eb9caf554b6e449c4\"\u003e6d0eeb7\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA comment for field \u003ccode\u003ecreate_time\u003c/code\u003e in message \u003ccode\u003e.google.cloud.documentai.v1.ProcessorVersion\u003c/code\u003e  is changed to describe as output only. (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/6d0eeb7e4ae05a8ce9b2849eb9caf554b6e449c4\"\u003e6d0eeb7\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/googleapis/google-cloud-python/commit/1b6c82dedecc7f5cff09650ee204641577620751\"\u003e\u003ccode\u003e1b6c82d\u003c/code\u003e\u003c/a\u003e chore: librarian release pull request: 20251016T234720Z (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/14754\"\u003e#14754\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/32b32eff99a3312711e116b75d12aabffa06a869\"\u003e\u003ccode\u003e32b32ef\u003c/code\u003e\u003c/a\u003e chore(librarian): Delete grpc-google-iam-v1/.OwlBot.yaml (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/14747\"\u003e#14747\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/d0ebbba25ce500e39e43635e4d55ca8f3226fa0e\"\u003e\u003ccode\u003ed0ebbba\u003c/code\u003e\u003c/a\u003e chore(librarian): onboard google-cloud-gke-hub (\u003ca href=\"...\n\n_Description has been truncated_","html_url":"https://github.com/repository-service-tuf/repository-service-tuf-worker/pull/831","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/repository-service-tuf%2Frepository-service-tuf-worker/issues/831","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/831/packages"}},{"old_version":"3.6.6","new_version":"4.1.0","update_type":"major","path":null,"pr_created_at":"2025-10-13T22:03:23.000Z","version_change":"3.6.6 → 4.1.0","issue":{"uuid":"3511599006","node_id":"PR_kwDOBIQy0c6ti747","number":1035,"state":"closed","title":"build(deps): bump the dependencies group with 3 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":8,"pull_request":true,"closed_at":"2025-10-27T22:02:04.000Z","author_association":null,"state_reason":null,"created_at":"2025-10-13T22:03:23.000Z","updated_at":"2025-10-28T10:00:41.974Z","time_to_close":1209521,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"dependencies","update_count":3,"packages":[{"name":"sigstore","old_version":"3.6.6","new_version":"4.1.0","repository_url":"https://github.com/sigstore/sigstore-python"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [sigstore](https://github.com/sigstore/sigstore-python), [boto3](https://github.com/boto/boto3) and [botocore](https://github.com/boto/botocore) to permit the latest version.\nUpdates `sigstore` from 3.6.6 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.6...v4.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3` to 1.40.51\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/92007179325850ec45c742098b9294cc98df4e03\"\u003e\u003ccode\u003e9200717\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.40.51'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/1a2cda23a5c30704502c19a1f6f09e386325308a\"\u003e\u003ccode\u003e1a2cda2\u003c/code\u003e\u003c/a\u003e Bumping version to 1.40.51\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/b59d03419e89314689d361a27cc5a23616ba31a3\"\u003e\u003ccode\u003eb59d034\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/045a9af984462fcfc501c6bd5491e0bb35c7d958\"\u003e\u003ccode\u003e045a9af\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action from 3.30.0 to 4.30.8 (\u003ca href=\"https://redirect.github.com/boto/boto3/issues/4638\"\u003e#4638\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/d8b41867dbfac406a2115d87abe1f8caea0365e7\"\u003e\u003ccode\u003ed8b4186\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.40.50'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/f6c0e6606ffb166be3acf79ba7ec143712b26ece\"\u003e\u003ccode\u003ef6c0e66\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.40.50' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/8fc5b245cf38d48dc03a7726be4141911fc09c54\"\u003e\u003ccode\u003e8fc5b24\u003c/code\u003e\u003c/a\u003e Bumping version to 1.40.50\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/f4d009760a05b09435bd1078c41e7c753246172d\"\u003e\u003ccode\u003ef4d0097\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/a5eec708c97fdb2e07179603fc8a42c8c80ad2ca\"\u003e\u003ccode\u003ea5eec70\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.40.49' into develop\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/boto/boto3/compare/1.40.49...1.40.51\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `botocore` to 1.40.51\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/d275003f1618e864ac5b45db5670f4f5c3560953\"\u003e\u003ccode\u003ed275003\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.40.51'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/60c4c5b52657f6b527669b933aace4e4c423f280\"\u003e\u003ccode\u003e60c4c5b\u003c/code\u003e\u003c/a\u003e Bumping version to 1.40.51\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/e55cf7c0ec65aa0eefb247395755e3bd4e3dbaa0\"\u003e\u003ccode\u003ee55cf7c\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/36e45455015f47b18823faab7f19638e85237a35\"\u003e\u003ccode\u003e36e4545\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/boto/botocore/issues/3576\"\u003e#3576\u003c/a\u003e from boto/dependabot/github_actions/github/codeql-ac...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/3dd950f6c25136c249d1b8c2122b896b033ecb35\"\u003e\u003ccode\u003e3dd950f\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action from 3.30.1 to 4.30.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/8d33050a8d49901b780602488aca77a392e32dc6\"\u003e\u003ccode\u003e8d33050\u003c/code\u003e\u003c/a\u003e remove License Classifier Deprecation and use up to date license setup (\u003ca href=\"https://redirect.github.com/boto/botocore/issues/3575\"\u003e#3575\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/c2ea08e8e14200c86716d14153648ea71f747ace\"\u003e\u003ccode\u003ec2ea08e\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.40.50'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/4fe0c4b511ca2076a59768c864a68964832875cf\"\u003e\u003ccode\u003e4fe0c4b\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.40.50' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/ccf712aeba55bff55fdd1cc335f5c0a71da1ca37\"\u003e\u003ccode\u003eccf712a\u003c/code\u003e\u003c/a\u003e Bumping version to 1.40.50\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/9eae5dff043168c807512b9728fc77ca2dec95f5\"\u003e\u003ccode\u003e9eae5df\u003c/code\u003e\u003c/a\u003e Update endpoints model\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/botocore/compare/1.40.49...1.40.51\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eMost Recent Ignore Conditions Applied to This Pull Request\u003c/summary\u003e\n\n| Dependency Name | Ignore Conditions |\n| --- | --- |\n| sigstore | [\u003e= 4.0.dev0, \u003c 4.1] |\n\u003c/details\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/secure-systems-lab/securesystemslib/pull/1035","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/secure-systems-lab%2Fsecuresystemslib/issues/1035","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1035/packages"}},{"old_version":"3.6.2","new_version":"4.1.0","update_type":"major","path":null,"pr_created_at":"2025-10-13T12:02:11.000Z","version_change":"3.6.2 → 4.1.0","issue":{"uuid":"3509784954","node_id":"PR_kwDOIPyH4s6tcwE4","number":57,"state":"closed","title":"build(deps): bump the pipenv group across 1 directory with 32 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-10-31T11:09:16.000Z","author_association":null,"state_reason":null,"created_at":"2025-10-13T12:02:11.000Z","updated_at":"2025-10-31T11:09:19.000Z","time_to_close":1552025,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"pipenv","update_count":32,"packages":[{"name":"rich-click","old_version":"1.8.8","new_version":"1.9.3","repository_url":"https://github.com/ewels/rich-click"},{"name":"securesystemslib","old_version":"1.3.0","new_version":"1.3.1","repository_url":"https://github.com/secure-systems-lab/securesystemslib"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"dynaconf","old_version":"3.2.10","new_version":"3.2.12","repository_url":"https://github.com/dynaconf/dynaconf"},{"name":"isort","old_version":"6.0.1","new_version":"7.0.0","repository_url":"https://github.com/PyCQA/isort"},{"name":"sqlalchemy","old_version":"2.0.40","new_version":"2.0.44","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"psycopg2","old_version":"2.9.10","new_version":"2.9.11","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"beaupy","old_version":"3.10.1","new_version":"3.10.2","repository_url":"https://github.com/petereon/beaupy"},{"name":"sigstore","old_version":"3.6.2","new_version":"4.1.0","repository_url":"https://github.com/sigstore/sigstore-python"},{"name":"boto3","old_version":"1.38.8","new_version":"1.40.50","repository_url":"https://github.com/boto/boto3"},{"name":"google-cloud-kms","old_version":"3.4.1","new_version":"3.6.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"azure-keyvault-keys","old_version":"4.10.0","new_version":"4.11.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"prompt-toolkit","old_version":"3.0.51","new_version":"3.0.52","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"setuptools","old_version":"80.3.1","new_version":"80.9.0","repository_url":"https://github.com/pypa/setuptools"},{"name":"pykcs11","old_version":"1.5.17","new_version":"1.5.18","repository_url":"https://github.com/LudovicRousseau/PyKCS11"},{"name":"exceptiongroup","old_version":"1.2.2","new_version":"1.3.0","repository_url":"https://github.com/agronholm/exceptiongroup"},{"name":"black","old_version":"25.1.0","new_version":"25.9.0","repository_url":"https://github.com/psf/black"},{"name":"flake8","old_version":"7.2.0","new_version":"7.3.0","repository_url":"https://github.com/pycqa/flake8"},{"name":"tox","old_version":"4.25.0","new_version":"4.31.0","repository_url":"https://github.com/tox-dev/tox"},{"name":"pytest","old_version":"8.3.5","new_version":"8.4.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"6.1.1","new_version":"7.0.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pytest-xdist","old_version":"3.6.1","new_version":"3.8.0","repository_url":"https://github.com/pytest-dev/pytest-xdist"},{"name":"mypy","old_version":"1.15.0","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"},{"name":"pip","old_version":"25.1.1","new_version":"25.2","repository_url":"https://github.com/pypa/pip"},{"name":"sphinxcontrib-plantuml","old_version":"0.30","new_version":"0.31","repository_url":"https://github.com/sphinx-contrib/plantuml"},{"name":"build","old_version":"1.2.2.post1","new_version":"1.3.0","repository_url":"https://github.com/pypa/build"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.3.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"bandit","old_version":"1.8.3","new_version":"1.8.6","repository_url":"https://github.com/PyCQA/bandit"},{"name":"types-requests","old_version":"2.32.0.20250328","new_version":"2.32.4.20250913","repository_url":"https://github.com/typeshed-internal/stub_uploader"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pipenv group with 29 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [rich-click](https://github.com/ewels/rich-click) | `1.8.8` | `1.9.3` |\n| [securesystemslib](https://github.com/secure-systems-lab/securesystemslib) | `1.3.0` | `1.3.1` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [dynaconf](https://github.com/dynaconf/dynaconf) | `3.2.10` | `3.2.12` |\n| [isort](https://github.com/PyCQA/isort) | `6.0.1` | `7.0.0` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.40` | `2.0.44` |\n| [psycopg2](https://github.com/psycopg/psycopg2) | `2.9.10` | `2.9.11` |\n| [beaupy](https://github.com/petereon/beaupy) | `3.10.1` | `3.10.2` |\n| [sigstore](https://github.com/sigstore/sigstore-python) | `3.6.2` | `4.1.0` |\n| [boto3](https://github.com/boto/boto3) | `1.38.8` | `1.40.50` |\n| [google-cloud-kms](https://github.com/googleapis/google-cloud-python) | `3.4.1` | `3.6.0` |\n| [azure-keyvault-keys](https://github.com/Azure/azure-sdk-for-python) | `4.10.0` | `4.11.0` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.51` | `3.0.52` |\n| [setuptools](https://github.com/pypa/setuptools) | `80.3.1` | `80.9.0` |\n| [pykcs11](https://github.com/LudovicRousseau/PyKCS11) | `1.5.17` | `1.5.18` |\n| [exceptiongroup](https://github.com/agronholm/exceptiongroup) | `1.2.2` | `1.3.0` |\n| [black](https://github.com/psf/black) | `25.1.0` | `25.9.0` |\n| [flake8](https://github.com/pycqa/flake8) | `7.2.0` | `7.3.0` |\n| [tox](https://github.com/tox-dev/tox) | `4.25.0` | `4.31.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.5` | `8.4.2` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `6.1.1` | `7.0.0` |\n| [pytest-xdist](https://github.com/pytest-dev/pytest-xdist) | `3.6.1` | `3.8.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.18.2` |\n| [pip](https://github.com/pypa/pip) | `25.1.1` | `25.2` |\n| [sphinxcontrib-plantuml](https://github.com/sphinx-contrib/plantuml) | `0.30` | `0.31` |\n| [build](https://github.com/pypa/build) | `1.2.2.post1` | `1.3.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.3.0` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.8.3` | `1.8.6` |\n| [types-requests](https://github.com/typeshed-internal/stub_uploader) | `2.32.0.20250328` | `2.32.4.20250913` |\n\n\nUpdates `rich-click` from 1.8.8 to 1.9.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ewels/rich-click/releases\"\u003erich-click's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.9.3\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed subcommand discovery in help text. Behavior should now be the same as \u003ccode\u003e1.8\u003c/code\u003e. [\u003ca href=\"https://redirect.github.com/ewels/rich-click/pull/304\"\u003e#304\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.3.dev0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed subcommand discovery in help text. Behavior should now be the same as \u003ccode\u003e1.8\u003c/code\u003e. [\u003ca href=\"https://redirect.github.com/ewels/rich-click/pull/304\"\u003e#304\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed legacy Windows rendering\u003c/li\u003e\n\u003cli\u003eFix issue with parent \u003ccode\u003eclick.Group\u003c/code\u003e and child \u003ccode\u003erich_click.RichCommand\u003c/code\u003e error formatter not resolving.\u003c/li\u003e\n\u003cli\u003eAdd headers to tables (by default these are not shown).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.2.dev0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed legacy windows rendering\u003c/li\u003e\n\u003cli\u003eFix issue with parent \u003ccode\u003eclick.Group\u003c/code\u003e and child \u003ccode\u003erich_click.RichCommand\u003c/code\u003e error formatter not resolving.\u003c/li\u003e\n\u003cli\u003eAdd headers to tables (by default these are not shown).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed bug where running the \u003ccode\u003erich-click\u003c/code\u003e CLI on a \u003ccode\u003e@rich_click.argument()\u003c/code\u003e sometimes caused arguments show up in the option panel when it shouldn't.\u003c/li\u003e\n\u003cli\u003eSlightly reduced horizontal padding of the \u003ccode\u003emodern\u003c/code\u003e theme format.\u003c/li\u003e\n\u003cli\u003eFixed Click 8.3 compatibility with rendering defaults in help text.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.0\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\nVersion 1.9.0 deprecates support for a lot of old versions of things:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ePython 3.7 support is removed.\u003c/strong\u003e The minimum supported Python version is 3.8.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eClick 7 support is removed.\u003c/strong\u003e The minimum supported Click version is 8.0.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRich 10 and 11 support is removed.\u003c/strong\u003e The minimum supported Rich version is 12.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\nVersion 1.9.0 introduces a minor breaking change:\nThe \u003ccode\u003eDEFAULT_STRING\u003c/code\u003e, \u003ccode\u003eENVVAR_STRING\u003c/code\u003e, \u003ccode\u003eREQUIRED_STRING\u003c/code\u003e, and \u003ccode\u003eDEPRECATED_STRING\u003c/code\u003e config options are now rendered with \u003ccode\u003eText.from_markup\u003c/code\u003e.\nSo for example, \u003ccode\u003eREQUIRED_STRING = \u0026quot;[required]\u0026quot;\u003c/code\u003e would be rendered as Rich markup.\nYou must now escape the rich markup: \u003ccode\u003eREQUIRED_STRING = \u0026quot;\\\\[required]\u0026quot;\u003c/code\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003eBig changes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eThemes!\u003c/strong\u003e Check them out with \u003ccode\u003erich-click --themes\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTyper support:\u003c/strong\u003e \u003ccode\u003erich-click typer_app --help\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRichPanels\u003c/strong\u003e API introduced. This replaces the \u0026quot;groups\u0026quot; feature going forward (although groups will continue to be supported).\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e@click.option_panel()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e@click.command_panel()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eIDE tab completion support for decorators\u003c/strong\u003e. Now you should no longer need to guess what goes in \u003ccode\u003e@click.option()\u003c/code\u003e or \u003ccode\u003e@click.command(context_settings=...)\u003c/code\u003e etc.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHelp for arguments:\u003c/strong\u003e \u003ccode\u003ehelp=\u003c/code\u003e is now a valid kwarg for \u003ccode\u003e@click.argument()\u003c/code\u003e decorator. See docs for more information.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSmall changes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u0026quot;Deprecated\u0026quot; text properly handled and stylized in all places.\u003c/li\u003e\n\u003cli\u003eCommand aliases: \u003ccode\u003e@cli.command(aliases=[\u0026quot;foo\u0026quot;])\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eImproved \u003ccode\u003erich-click\u003c/code\u003e CLI usability: improved patching and improved script detection+execution.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- 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/ewels/rich-click/blob/main/CHANGELOG.md\"\u003erich-click's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.9.3 (2025-10-09)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed subcommand discovery in help text. Behavior should now be the same as \u003ccode\u003e1.8\u003c/code\u003e. [\u003ca href=\"https://redirect.github.com/ewels/rich-click/pull/304\"\u003e#304\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.9.2 (2025-10-04)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed legacy windows rendering\u003c/li\u003e\n\u003cli\u003eFix issue with parent \u003ccode\u003eclick.Group\u003c/code\u003e and child \u003ccode\u003erich_click.RichCommand\u003c/code\u003e error formatter not resolving.\u003c/li\u003e\n\u003cli\u003eAdd headers to tables (by default these are not shown).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.9.1 (2025-09-20)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed bug where running the \u003ccode\u003erich-click\u003c/code\u003e CLI on a \u003ccode\u003e@rich_click.argument()\u003c/code\u003e sometimes caused arguments show up in the option panel when it shouldn't.\u003c/li\u003e\n\u003cli\u003eSlightly reduced horizontal padding of the \u003ccode\u003emodern\u003c/code\u003e theme format.\u003c/li\u003e\n\u003cli\u003eFixed Click 8.3 compatibility with rendering defaults in help text.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.9.0 (2025-09-16)\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\nVersion 1.9.0 deprecates support for a lot of old versions of things:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ePython 3.7 support is removed.\u003c/strong\u003e The minimum supported Python version is 3.8.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eClick 7 support is removed.\u003c/strong\u003e The minimum supported Click version is 8.0.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRich 10 and 11 support is removed.\u003c/strong\u003e The minimum supported Rich version is 12.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\nVersion 1.9.0 introduces a minor breaking change:\nThe \u003ccode\u003eDEFAULT_STRING\u003c/code\u003e, \u003ccode\u003eENVVAR_STRING\u003c/code\u003e, \u003ccode\u003eREQUIRED_STRING\u003c/code\u003e, and \u003ccode\u003eDEPRECATED_STRING\u003c/code\u003e config options are now rendered with \u003ccode\u003eText.from_markup\u003c/code\u003e.\nSo for example, \u003ccode\u003eREQUIRED_STRING = \u0026quot;[required]\u0026quot;\u003c/code\u003e would be rendered as Rich markup.\nYou must now escape the rich markup: \u003ccode\u003eREQUIRED_STRING = \u0026quot;\\\\[required]\u0026quot;\u003c/code\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003eBig changes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eThemes!\u003c/strong\u003e Check them out with \u003ccode\u003erich-click --themes\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTyper support:\u003c/strong\u003e \u003ccode\u003erich-click typer_app --help\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRichPanels\u003c/strong\u003e API introduced. This replaces the \u0026quot;groups\u0026quot; feature going forward (although groups will continue to be supported).\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e@click.option_panel()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e@click.command_panel()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eIDE tab completion support for decorators\u003c/strong\u003e. Now you should no longer need to guess what goes in \u003ccode\u003e@click.option()\u003c/code\u003e or \u003ccode\u003e@click.command(context_settings=...)\u003c/code\u003e etc.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHelp for arguments:\u003c/strong\u003e \u003ccode\u003ehelp=\u003c/code\u003e is now a valid kwarg for \u003ccode\u003e@click.argument()\u003c/code\u003e decorator. See docs for more information.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSmall changes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u0026quot;Deprecated\u0026quot; text properly handled and stylized in all places.\u003c/li\u003e\n\u003cli\u003eCommand aliases: \u003ccode\u003e@cli.command(aliases=[\u0026quot;foo\u0026quot;])\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eImproved \u003ccode\u003erich-click\u003c/code\u003e CLI usability: improved patching and improved script detection+execution.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003econtext_settings={\u0026quot;help_to_stderr\u0026quot;: True}\u003c/code\u003e support.\u003c/li\u003e\n\u003cli\u003eAdded suite of \u003ccode\u003epadding_*\u003c/code\u003e config options to control padding.\n\u003cul\u003e\n\u003cli\u003eBetter newline handling:\n\u003cul\u003e\n\u003cli\u003eUnordered lists create newlines in help text, e.g. \u003ccode\u003e\u0026quot;\\n- foo\\n- bar\u0026quot;\u003c/code\u003e or \u003ccode\u003e\u0026quot;\\n* foo\\n* bar\u0026quot;\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/0ea0e0a13b199cc1cf28ece1338bf0838772727b\"\u003e\u003ccode\u003e0ea0e0a\u003c/code\u003e\u003c/a\u003e Bump to 1.9.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/78f25499397fbcc9876a331732931d188b760b4a\"\u003e\u003ccode\u003e78f2549\u003c/code\u003e\u003c/a\u003e fix subcommand discovery (\u003ca href=\"https://redirect.github.com/ewels/rich-click/issues/304\"\u003e#304\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/12a50e911c05c6c8c97bfdd48147f999368bc7f5\"\u003e\u003ccode\u003e12a50e9\u003c/code\u003e\u003c/a\u003e Finish testing for 1.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/a2ccfed4946d5a7d677d0b5750617575f9de8c09\"\u003e\u003ccode\u003ea2ccfed\u003c/code\u003e\u003c/a\u003e 1.9.2 (\u003ca href=\"https://redirect.github.com/ewels/rich-click/issues/302\"\u003e#302\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/f041971bbd2ebadcfaed2e66b4e002260bf232eb\"\u003e\u003ccode\u003ef041971\u003c/code\u003e\u003c/a\u003e set date for changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/09b3ece0cf9fefaf98d83b9efd56e27083e6acc5\"\u003e\u003ccode\u003e09b3ece\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ewels/rich-click/issues/296\"\u003e#296\u003c/a\u003e from dwreeves/issue-293\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/164d7c0cb623d1332d43b66dee4fc3b911dd3544\"\u003e\u003ccode\u003e164d7c0\u003c/code\u003e\u003c/a\u003e add 8.3 to tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/c792472a3217d4a371352d1f9567b55287318689\"\u003e\u003ccode\u003ec792472\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ewels/rich-click/issues/295\"\u003e#295\u003c/a\u003e from dwreeves/issue-293\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/2268fc4e197c988f14076a138f797dc564367a47\"\u003e\u003ccode\u003e2268fc4\u003c/code\u003e\u003c/a\u003e fix 8.3 incompatibility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/bb9d72e0104b14629f7101aca01808c07bd5b5b9\"\u003e\u003ccode\u003ebb9d72e\u003c/code\u003e\u003c/a\u003e Generate new screengrabs with rich-codex\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ewels/rich-click/compare/v1.8.8...v1.9.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `securesystemslib` from 1.3.0 to 1.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/releases\"\u003esecuresystemslib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.3.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/blob/v1.3.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e for details.\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/secure-systems-lab/securesystemslib/blob/main/CHANGELOG.md\"\u003esecuresystemslib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003esecuresystemslib v1.3.1\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAWSSigner: Don't send payload to AWS for signing, send hash only (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1026\"\u003e#1026\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSet Development status classifier to \u0026quot;production/stable\u0026quot; in Python\npackaging (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1030\"\u003e#1030\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternals\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMinor infrastructure changes (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1005\"\u003e#1005\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1013\"\u003e#1013\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/secure-systems-lab/securesystemslib/commit/6f774190b90f0aa9d5d7e077680adbaa29c5cd6c\"\u003e\u003ccode\u003e6f77419\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1030\"\u003e#1030\u003c/a\u003e from jku/release-prep-1.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/b71cc5271a9a7b6898c79c1a12393d90996d5388\"\u003e\u003ccode\u003eb71cc52\u003c/code\u003e\u003c/a\u003e Prepare release 1.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/f6835096a845acf25dc3675105937be2565b9e66\"\u003e\u003ccode\u003ef683509\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1026\"\u003e#1026\u003c/a\u003e from ArkadiuszNitkaSWI/fix-aws-signer\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/97527198c7bf5b75ef9fb8996412df5453995080\"\u003e\u003ccode\u003e9752719\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1027\"\u003e#1027\u003c/a\u003e from secure-systems-lab/dependabot/pip/test-and-lint...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/4226b762bf3333b5947af9cf29ed751afbfd69b9\"\u003e\u003ccode\u003e4226b76\u003c/code\u003e\u003c/a\u003e build(deps): bump the test-and-lint-dependencies group with 4 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/6394e3e467c091a06ee95dad674dec7e991758c8\"\u003e\u003ccode\u003e6394e3e\u003c/code\u003e\u003c/a\u003e Review changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/dee9a831390c9a69c0e66f7c34779e9eea6dcc6d\"\u003e\u003ccode\u003edee9a83\u003c/code\u003e\u003c/a\u003e linter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/07b0fc780d9d1f4c0843ce3e2096e1216814bd06\"\u003e\u003ccode\u003e07b0fc7\u003c/code\u003e\u003c/a\u003e update .gitignore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/e8158a4eb131760714290b9839e3e40f9cd4229c\"\u003e\u003ccode\u003ee8158a4\u003c/code\u003e\u003c/a\u003e Fix AWS signer, allow messages bigger than 4kB\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/e23f855ddecb97d4baddffc068e9591451b9aa72\"\u003e\u003ccode\u003ee23f855\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1023\"\u003e#1023\u003c/a\u003e from secure-systems-lab/dependabot/pip/dependencies-...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/compare/v1.3.0...v1.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.1.8 to 8.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.3.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our \u003ca href=\"https://palletsprojects.com/versions\"\u003eVersion Support Policy\u003c/a\u003e on our website.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.0/\"\u003ehttps://pypi.org/project/click/8.3.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/27\"\u003ehttps://github.com/pallets/click/milestone/27\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: \u003ca href=\"https://redirect.github.com/pallets/click/issues/1992\"\u003e#1992\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2514\"\u003e#2514\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2610\"\u003e#2610\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3024\"\u003e#3024\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2164\"\u003e#2164\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for nargs option in combination with flag option \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2995\"\u003e#2995\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3013\"\u003e#3013\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3023\"\u003e#3023\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in CliRunner.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2939\"\u003e#2939\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.2.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.2.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.2.2/\"\u003ehttps://pypi.org/project/click/8.2.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-2-2\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-2-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/25\"\u003ehttps://github.com/pallets/click/milestone/25\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix reconciliation of \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003etype\u003c/code\u003e parameters for\nflag options, as well as parsing and normalization of environment variables.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/2952\"\u003e#2952\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2956\"\u003e#2956\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typing issue in \u003ccode\u003eBadParameter\u003c/code\u003e and \u003ccode\u003eMissingParameter\u003c/code\u003e exceptions for the\nparameter \u003ccode\u003eparam_hint\u003c/code\u003e that did not allow for a sequence of string where the\nunderlying functino \u003ccode\u003e_join_param_hints\u003c/code\u003e allows for it. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2777\"\u003e#2777\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2990\"\u003e#2990\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse the value of \u003ccode\u003eEnum\u003c/code\u003e choices to render their default value in help\nscreen. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2911\"\u003e#2911\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3004\"\u003e#3004\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix completion for the Z shell (\u003ccode\u003ezsh\u003c/code\u003e) for completion items containing\ncolons. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2703\"\u003e#2703\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2846\"\u003e#2846\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't include envvar in error hint when not configured. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2971\"\u003e#2971\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2972\"\u003e#2972\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.rst\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.3.0\u003c/h2\u003e\n\u003cp\u003eReleased 2025-09-17\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: :issue:\u003ccode\u003e1992\u003c/code\u003e :issue:\u003ccode\u003e2514\u003c/code\u003e :issue:\u003ccode\u003e2610\u003c/code\u003e\n:issue:\u003ccode\u003e3024\u003c/code\u003e :pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. :issue:\u003ccode\u003e2164\u003c/code\u003e\n:pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption :issue:\u003ccode\u003e2813\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. :issue:\u003ccode\u003e2995\u003c/code\u003e :pr:\u003ccode\u003e3013\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e. :pr:\u003ccode\u003e3023\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. :issue:\u003ccode\u003e2447\u003c/code\u003e :pr:\u003ccode\u003e3058\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in CliRunner. :issue:\u003ccode\u003e2939\u003c/code\u003e :pr:\u003ccode\u003e2940\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-07-31\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix reconciliation of \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003etype\u003c/code\u003e parameters for\nflag options, as well as parsing and normalization of environment variables.\n:issue:\u003ccode\u003e2952\u003c/code\u003e :pr:\u003ccode\u003e2956\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix typing issue in \u003ccode\u003eBadParameter\u003c/code\u003e and \u003ccode\u003eMissingParameter\u003c/code\u003e exceptions for the\nparameter \u003ccode\u003eparam_hint\u003c/code\u003e that did not allow for a sequence of string where the\nunderlying function \u003ccode\u003e_join_param_hints\u003c/code\u003e allows for it. :issue:\u003ccode\u003e2777\u003c/code\u003e :pr:\u003ccode\u003e2990\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUse the value of \u003ccode\u003eEnum\u003c/code\u003e choices to render their default value in help\nscreen. Refs :issue:\u003ccode\u003e2911\u003c/code\u003e :pr:\u003ccode\u003e3004\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix completion for the Z shell (\u003ccode\u003ezsh\u003c/code\u003e) for completion items containing\ncolons. :issue:\u003ccode\u003e2703\u003c/code\u003e :pr:\u003ccode\u003e2846\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDon't include envvar in error hint when not configured. :issue:\u003ccode\u003e2971\u003c/code\u003e :pr:\u003ccode\u003e2972\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix a rare race in \u003ccode\u003eclick.testing.StreamMixer\u003c/code\u003e's finalization that manifested\nas a \u003ccode\u003eValueError\u003c/code\u003e on close in a multi-threaded test session.\n:issue:\u003ccode\u003e2993\u003c/code\u003e :pr:\u003ccode\u003e2991\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-20\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/00fadb8904387158ce6e9aa1573be770446895c1\"\u003e\u003ccode\u003e00fadb8\u003c/code\u003e\u003c/a\u003e Release version 8.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/2a0e3ba907927ade6951d5732b775f11b54cb766\"\u003e\u003ccode\u003e2a0e3ba\u003c/code\u003e\u003c/a\u003e testing/CliRunner: Fix regression related to EOF introduced in 262bdf0 (\u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e11a1efc3395e998a1521a0dc35672a799e78d30\"\u003e\u003ccode\u003ee11a1ef\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into fix-cli-runner-prompt-eof-handling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/36deba8a95a2585de1a2aa4475b7f054f52830ac\"\u003e\u003ccode\u003e36deba8\u003c/code\u003e\u003c/a\u003e Forward exception information to resources registered in a context (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/f2cae7ae997cd32311cab3dede4c2b89fe05e191\"\u003e\u003ccode\u003ef2cae7a\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Add summary of PR to changelog for 8.3.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/7c7ec36354f49d1a092cb077fa4881ea4d70ba01\"\u003e\u003ccode\u003e7c7ec36\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Split resource exception handling tests in single and nested\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/92129c552da88ac30b578132031efa4b003ecc46\"\u003e\u003ccode\u003e92129c5\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Added exception forwarding to context tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/555fa9bb37770a6845a98be60b0c84876775552e\"\u003e\u003ccode\u003e555fa9b\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Forward exception data to exit stack when calling \u003ccode\u003e__exit__\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/16fe802a3f96c4c8fa3cd382f1a7577fda0c5321\"\u003e\u003ccode\u003e16fe802\u003c/code\u003e\u003c/a\u003e Add more tests on \u003ccode\u003eEnum\u003c/code\u003e rendering (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/d36de6fc67882f23d7a7d61cd4c0e25e0f88b0ac\"\u003e\u003ccode\u003ed36de6f\u003c/code\u003e\u003c/a\u003e Add more tests on Enum rendering their item's names and not values\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.1.8...8.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `rich` from 14.0.0 to 14.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Textualize/rich/releases\"\u003erich's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eThe Easy as Pi release\u003c/h2\u003e\n\u003cp\u003eThis release bumps Python compatibility to the just-released Python 3.14.\u003c/p\u003e\n\u003ch2\u003e[14.2.0] - 2025-10-09\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePython3.14 compatibility \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3861\"\u003eTextualize/rich#3861\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eThe Lively Release\u003c/h2\u003e\n\u003cp\u003eLive objects may now be nested. Previously a progress bar inside another progress context would fail. See the changelog below for this and other changes.\u003c/p\u003e\n\u003ch2\u003e[14.1.0] - 2025-06-25\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved \u003ccode\u003etyping_extensions\u003c/code\u003e from runtime dependencies \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3763\"\u003eTextualize/rich#3763\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLive objects (including Progress) may now be nested \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3768\"\u003eTextualize/rich#3768\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded padding property to Syntax which returns a tuple of four integers \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3782\"\u003eTextualize/rich#3782\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed extraction of recursive exceptions \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3772\"\u003eTextualize/rich#3772\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed padding applied to Syntax \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3782\"\u003eTextualize/rich#3782\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003ePanel\u003c/code\u003e title missing the panel background style \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3569\"\u003eTextualize/rich#3569\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eTTY_INTERACTIVE\u003c/code\u003e environment variable to force interactive mode off or on \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3777\"\u003eTextualize/rich#3777\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/Textualize/rich/blob/master/CHANGELOG.md\"\u003erich's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[14.2.0] - 2025-10-09\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePython3.14 compatibility \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3861\"\u003eTextualize/rich#3861\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[14.1.0] - 2025-06-25\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved \u003ccode\u003etyping_extensions\u003c/code\u003e from runtime dependencies \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3763\"\u003eTextualize/rich#3763\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLive objects (including Progress) may now be nested \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3768\"\u003eTextualize/rich#3768\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded padding property to Syntax which returns a tuple of four integers \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3782\"\u003eTextualize/rich#3782\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed extraction of recursive exceptions \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3772\"\u003eTextualize/rich#3772\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed padding applied to Syntax \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3782\"\u003eTextualize/rich#3782\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003ePanel\u003c/code\u003e title missing the panel background style \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3569\"\u003eTextualize/rich#3569\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eTTY_INTERACTIVE\u003c/code\u003e environment variable to force interactive mode off or on \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3777\"\u003eTextualize/rich#3777\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/Textualize/rich/commit/494f83c923ca54ecc943bf5e60c0004e65fbb54e\"\u003e\u003ccode\u003e494f83c\u003c/code\u003e\u003c/a\u003e changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/d476e85a19ea62966a25f6df0e0a287da52ab35f\"\u003e\u003ccode\u003ed476e85\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3862\"\u003e#3862\u003c/a\u003e from GeroZayas/docs/es-readme-sync-2025-10\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/518daaa39c17bad485c970bf229424784fbdf044\"\u003e\u003ccode\u003e518daaa\u003c/code\u003e\u003c/a\u003e docs(es): sync README.es.md (macOS, 16 colors, Python 3.8+)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/cd5074f87804aac2f6e5c6143e1cac5e3a0bddc5\"\u003e\u003ccode\u003ecd5074f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3861\"\u003e#3861\u003c/a\u003e from Textualize/python314\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/041406ca9b60af8fcc00cd7fc1b2973ab51eb851\"\u003e\u003ccode\u003e041406c\u003c/code\u003e\u003c/a\u003e removed asv\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/655b5210cb1403100a646d167cf027eec760dd9f\"\u003e\u003ccode\u003e655b521\u003c/code\u003e\u003c/a\u003e test fixes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/27c2d2df7523315de4b81577d414db8c1c7312f9\"\u003e\u003ccode\u003e27c2d2d\u003c/code\u003e\u003c/a\u003e bump for Python3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/ea9d4db5d84b4e834979304e3053bf757daae322\"\u003e\u003ccode\u003eea9d4db\u003c/code\u003e\u003c/a\u003e Update feature_request.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/2dca1b70359dac61e1bbfb6f14ebe19a5ab79c3d\"\u003e\u003ccode\u003e2dca1b7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3808\"\u003e#3808\u003c/a\u003e from Textualize/bump1410\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/19b6dddd807b887eaaf313174fff3eb2e22cda25\"\u003e\u003ccode\u003e19b6ddd\u003c/code\u003e\u003c/a\u003e version bump\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Textualize/rich/compare/v14.0.0...v14.2.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 `dynaconf` from 3.2.10 to 3.2.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dynaconf/dynaconf/releases\"\u003edynaconf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.2.12\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eIncremental improvment to access performance by \u003ca href=\"https://github.com/pedro-psb\"\u003e\u003ccode\u003e@​pedro-psb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/pull/1304\"\u003edynaconf/dynaconf#1304\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: get method to return Any type. by \u003ca href=\"https://github.com/rochacbruno\"\u003e\u003ccode\u003e@​rochacbruno\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/pull/1314\"\u003edynaconf/dynaconf#1314\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eperf: add lru caching to \u003ccode\u003efind_the_correct_casing\u003c/code\u003e function by \u003ca href=\"https://github.com/pedro-psb\"\u003e\u003ccode\u003e@​pedro-psb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/pull/1326\"\u003edynaconf/dynaconf#1326\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/dynaconf/dynaconf/compare/3.2.11...3.2.12\"\u003ehttps://github.com/dynaconf/dynaconf/compare/3.2.11...3.2.12\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.2.11\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eRelease version 3.2.11\u003c/p\u003e\n\u003cp\u003eShortlog of commits since last release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBruno Rocha (9): \u003ca href=\"https://github.com/rochacbruno\"\u003e\u003ccode\u003e@​rochacbruno\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003efix(cli): handle empty hooks and boolean environments.\u003c/li\u003e\n\u003cli\u003efix: Better way for CLI to find the Django Settings\u003c/li\u003e\n\u003cli\u003efix: windows CI\u003c/li\u003e\n\u003cli\u003efeat: Run CLI as module with \u003ccode\u003epython -m dynaconf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1290\"\u003e#1290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: use sys.argv instead of click.get_os_args (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1292\"\u003e#1292\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: \u003ccode\u003e-k\u003c/code\u003e must exit code 1 when key do not exist (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1293\"\u003e#1293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: envless load file (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1295\"\u003e#1295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: add correct supported python version to 3.2.x\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFabricio Aguiar (1): \u003ca href=\"https://github.com/fao89\"\u003e\u003ccode\u003e@​fao89\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003efix: make raw variables private (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1287\"\u003e#1287\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePedro Brochado (1): \u003ca href=\"https://github.com/pedro-psb\"\u003e\u003ccode\u003e@​pedro-psb\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003edocs: clarification on redis hash title when using custom envvar prefixes (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMilestone \u003ca href=\"https://github.com/dynaconf/dynaconf/milestone/31?closed=1\"\u003ehttps://github.com/dynaconf/dynaconf/milestone/31?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/dynaconf/dynaconf/compare/3.2.10...3.2.11\"\u003ehttps://github.com/dynaconf/dynaconf/compare/3.2.10...3.2.11\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/dynaconf/dynaconf/blob/3.2.12/CHANGELOG.md\"\u003edynaconf's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pedro-psb/dynaconf/releases/tag/3.2.12\"\u003e3.2.12\u003c/a\u003e - 2025-10-10\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eget method to return Any type.. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003eremove unnecessary recursive evaluation call on Settings.get. \u003cem\u003eBy Pedro Brochado\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003eimprove performance of settings access in a loop (part 1). \u003cem\u003eBy Pedro Brochado\u003c/em\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/releases/tag/3.2.11\"\u003e3.2.11\u003c/a\u003e - 2025-05-06\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd correct supported python version to 3.2.x. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e-k\u003c/code\u003e must exit code 1 when key do not exist (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1293\"\u003e#1293\u003c/a\u003e). \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003euse sys.argv instead of click.get_os_args (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1292\"\u003e#1292\u003c/a\u003e). \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003ewindows CI. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003emake raw variables private (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1287\"\u003e#1287\u003c/a\u003e). \u003cem\u003eBy Fabricio Aguiar\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003eBetter way for CLI to find the Django Settings. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003ehandle empty hooks and boolean environments.. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eenvless load file (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1295\"\u003e#1295\u003c/a\u003e). \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003eRun CLI as module with \u003ccode\u003epython -m dynaconf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1290\"\u003e#1290\u003c/a\u003e). \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eclarification on redis hash title when using custom envvar prefixes (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1273\"\u003e#1273\u003c/a\u003e). \u003cem\u003eBy Pedro Brochado\u003c/em\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/dynaconf/dynaconf/commit/7606f351ac460b15c56e7a538300de4a501c56e7\"\u003e\u003ccode\u003e7606f35\u003c/code\u003e\u003c/a\u003e Release version 3.2.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/da44e5182940299dd90ca3e2a0e0e3c23cb9ebf7\"\u003e\u003ccode\u003eda44e51\u003c/code\u003e\u003c/a\u003e perf: add lru caching to \u003ccode\u003efind_the_correct_casing\u003c/code\u003e function (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1326\"\u003e#1326\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/b75eda0da141bdc29f707f2cb0c29e06b03a72bb\"\u003e\u003ccode\u003eb75eda0\u003c/code\u003e\u003c/a\u003e fix: get method to return Any type.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/4f3df1a47bcb71feddf7565f603e7994c65ede65\"\u003e\u003ccode\u003e4f3df1a\u003c/code\u003e\u003c/a\u003e misc: add some profile/perf scripts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/420acebf64e77ba475df94dfd7d409207e5e239d\"\u003e\u003ccode\u003e420aceb\u003c/code\u003e\u003c/a\u003e refactor: merge \u003cem\u003esafe\u003c/em\u003e{get,copy} into .get and .copy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/18c0c8422dc9651d57c76d1b098ad6fb3f75c09d\"\u003e\u003ccode\u003e18c0c84\u003c/code\u003e\u003c/a\u003e fix: remove unnecessary recursive evaluation call on Settings.get\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/0fde96f2e0b71309e63800ddac8eceda062155a9\"\u003e\u003ccode\u003e0fde96f\u003c/code\u003e\u003c/a\u003e refactor: rewrite decorator as explicit call\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/52efd9ed78d2187550e03a2ae5008661d5e28df9\"\u003e\u003ccode\u003e52efd9e\u003c/code\u003e\u003c/a\u003e Bump to version 3.2.12-dev0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/c61da8fd191196c1341bd3d8a8dd895e9cf671ae\"\u003e\u003ccode\u003ec61da8f\u003c/code\u003e\u003c/a\u003e Release version 3.2.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/f8189fb6c130ff4709450e7daebcf1c174aea248\"\u003e\u003ccode\u003ef8189fb\u003c/code\u003e\u003c/a\u003e fix: add correct supported python version to 3.2.x\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/dynaconf/dynaconf/compare/3.2.10...3.2.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `isort` from 6.0.1 to 7.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/isort/releases\"\u003eisort's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.0.0\u003c/h2\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003ch2\u003e:boom: Breaking Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9 (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2430\"\u003e#2430\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:rocket: Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eShow absolute paths in skipped file messages (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2416\"\u003e#2416\u003c/a\u003e) \u003ca href=\"https://github.com/pranlawate\"\u003e\u003ccode\u003e@​pranlawate\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:beetle: Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSome fixes for Python 3.14 (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2433\"\u003e#2433\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTest on \u003ccode\u003e3.14\u003c/code\u003e and fix any bugs (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2425\"\u003e#2425\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CHANGELOG.md + Fix Formatting and Grammar (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2419\"\u003e#2419\u003c/a\u003e) \u003ca href=\"https://github.com/lukbrew25\"\u003e\u003ccode\u003e@​lukbrew25\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix output of hanging indent for long lines with noqa (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2407\"\u003e#2407\u003c/a\u003e) \u003ca href=\"https://github.com/matan1008\"\u003e\u003ccode\u003e@​matan1008\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:construction_worker: Continuous Integration\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFormat with \u003ccode\u003eruff\u003c/code\u003e instead of \u003ccode\u003eblack\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2432\"\u003e#2432\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTarget 3.10 for \u003ccode\u003eruff\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2431\"\u003e#2431\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate development dependencies to latest version (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2426\"\u003e#2426\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: update pre-commit examples to version 6.1.0 (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2413\"\u003e#2413\u003c/a\u003e) \u003ca href=\"https://github.com/pranlawate\"\u003e\u003ccode\u003e@​pranlawate\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall cleanup for developer environment (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2418\"\u003e#2418\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:package: Dependencies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/setup-python from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2411\"\u003e#2411\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e6.1.0\u003c/h2\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate docs discussions channel (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2410\"\u003e#2410\u003c/a\u003e) \u003ca href=\"https://github.com/staticdev\"\u003e\u003ccode\u003e@​staticdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd python 3.14 classifier and badge (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2409\"\u003e#2409\u003c/a\u003e) \u003ca href=\"https://github.com/staticdev\"\u003e\u003ccode\u003e@​staticdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop use of non-standard pkg_resources API (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2405\"\u003e#2405\u003c/a\u003e) \u003ca href=\"https://github.com/dvarrazzo\"\u003e\u003ccode\u003e@​dvarrazzo\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse working isort version in pre-commit example (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2402\"\u003e#2402\u003c/a\u003e) \u003ca href=\"https://github.com/iainelder\"\u003e\u003ccode\u003e@​iainelder\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix typo in _get_files_from_dir_cached test (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2392\"\u003e#2392\u003c/a\u003e) \u003ca href=\"https://github.com/tiltingpenguin\"\u003e\u003ccode\u003e@​tiltingpenguin\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eResolve bandit warnings (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2379\"\u003e#2379\u003c/a\u003e) \u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd tox for cross-platform, parallel test suite execution (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2378\"\u003e#2378\u003c/a\u003e) \u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Project URLs to PyPI Side Panel (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2387\"\u003e#2387\u003c/a\u003e) \u003ca href=\"https://github.com/guillermodotn\"\u003e\u003ccode\u003e@​guillermodotn\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typos (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2376\"\u003e#2376\u003c/a\u003e) \u003ca href=\"https://github.com/co63oc\"\u003e\u003ccode\u003e@​co63oc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:construction_worker: Continuous Integration\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd make bash scripts portable (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2377\"\u003e#2377\u003c/a\u003e) \u003ca href=\"https://github.com/staticdev\"\u003e\u003ccode\u003e@​staticdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:package: Dependencies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 4 to 5 in the github-actions group (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2406\"\u003e#2406\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/isort/blob/main/CHANGELOG.md\"\u003eisort's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003cp\u003eNOTE: isort follows the \u003ca href=\"https://semver.org/\"\u003esemver\u003c/a\u003e versioning standard.\nFind out more about isort's release policy \u003ca href=\"https://pycqa.github.io/isort/docs/major_releases/release_policy\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003e6.1.0 October 1 2025\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd python 3.14 classifier and badge (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2409\"\u003e#2409\u003c/a\u003e) \u003ca href=\"https://github.com/staticdev\"\u003e\u003ccode\u003e@​staticdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop use of non-standard pkg_resources API (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2405\"\u003e#2405\u003c/a\u003e) \u003ca href=\"https://github.com/dvarrazzo\"\u003e\u003ccode\u003e@​dvarrazzo\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/PyCQA/isort/commit/0a09c783808cfe77bb3269250f663ff733d23302\"\u003e\u003ccode\u003e0a09c78\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2433\"\u003e#2433\u003c/a\u003e from DanielNoord/python-314\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/0fee794a05b5d0c471ac80bc8943f9843ca29644\"\u003e\u003ccode\u003e0fee794\u003c/code\u003e\u003c/a\u003e Add 3.14 to \u003ccode\u003estdlibds\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/332a1ad0b68bf3a3acac055b0ec3666408b3b425\"\u003e\u003ccode\u003e332a1ad\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003ezstandard\u003c/code\u003e for 3.14 compat\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/f756e5653afcf6d79ec4d0240b1868cbebd8fafd\"\u003e\u003ccode\u003ef756e56\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2432\"\u003e#2432\u003c/a\u003e from DanielNoord/ruff-it-up\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/52f5134889d345ff35afdcb86501c8221b804c70\"\u003e\u003ccode\u003e52f5134\u003c/code\u003e\u003c/a\u003e Format with \u003ccode\u003eruff\u003c/code\u003e instead of \u003ccode\u003eblack\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/012aa69fcadb3c89ff92a3d96aa449be7ae6746f\"\u003e\u003ccode\u003e012aa69\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2431\"\u003e#2431\u003c/a\u003e from DanielNoord/ruff-it-up\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/89773dbb371192541092657972a74e9ce0bbbc74\"\u003e\u003ccode\u003e89773db\u003c/code\u003e\u003c/a\u003e Target 3.10 with \u003ccode\u003eruff\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/933e382f98a0c77b4c6e33c4e3ef12bd57192884\"\u003e\u003ccode\u003e933e382\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2430\"\u003e#2430\u003c/a\u003e from DanielNoord/drop-39\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/8b6e00cbe643a216da57fed4baa282d0a4a1b829\"\u003e\u003ccode\u003e8b6e00c\u003c/code\u003e\u003c/a\u003e Remove support for Python 3.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/b5f9f296ad873734e8caa3a731f27360648d9b37\"\u003e\u003ccode\u003eb5f9f29\u003c/code\u003e\u003c/a\u003e Bump profile plugin to 3.10+ and re-lock\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PyCQA/isort/compare/6.0.1...7.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlalchemy` from 2.0.40 to 2.0.44\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/releases\"\u003esqlalchemy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.0.44\u003c/h1\u003e\n\u003cp\u003eReleased: October 10, 2025\u003c/p\u003e\n\u003ch2\u003eplatform\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e[platform] [bug]\u003c/strong\u003e Unblocked automatic greenlet installation for Python 3.14 now that\nthere are greenlet wheels on pypi for python 3.14.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eorm\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [usecase]\u003c/strong\u003e The way ORM Annotated Declarative interprets Python \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e type aliases\nin \u003ccode\u003eMapped[]\u003c/code\u003e annotations has been refined to expand the lookup scheme. A\n\u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e type can now be resolved based on either its direct presence in\n\u003ccode\u003e_orm.registry.type_annotation_map\u003c/code\u003e or its immediate resolved\nvalue, as long as a recursive lookup across multiple \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e types is\nnot required for it to resolve. This change reverses part of the\nrestrictions introduced in 2.0.37 as part of \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/11955\"\u003e#11955\u003c/a\u003e, which\ndeprecated (and disallowed in 2.1) the ability to resolve any \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e\ntype that was not explicitly present in\n\u003ccode\u003e_orm.registry.type_annotation_map\u003c/code\u003e. Recursive lookups of\n\u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e types remains deprecated in 2.0 and disallowed in version 2.1,\nas do implicit lookups of \u003ccode\u003eNewType\u003c/code\u003e types without an entry in\n\u003ccode\u003e_orm.registry.type_annotation_map\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eAdditionally, new support has been added for generic \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e aliases that\nrefer to \u003ca href=\"https://peps.python.org/pep-0593\"\u003ePEP 593\u003c/a\u003e \u003ccode\u003eAnnotated\u003c/code\u003e constructs containing\n\u003ccode\u003e_orm.mapped_column()\u003c/code\u003e configurations. See the sections below for\nexamples.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12829\"\u003e#12829\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed a caching issue where \u003ccode\u003e_orm.with_loader_criteria()\u003c/code\u003e would\nincorrectly reuse cached bound parameter values when used with\n\u003ccode\u003e_sql.CompoundSelect\u003c/code\u003e constructs such as \u003ccode\u003e_sql.union()\u003c/code\u003e. The\nissue was caused by the cache key for compound selects not including the\nexecution options that are part of the \u003ccode\u003e_sql.Executable\u003c/code\u003e base class,\nwhich \u003ccode\u003e_orm.with_loader_criteria()\u003c/code\u003e uses to apply its criteria\ndynamically. The fix ensures that compound selects and other executable\nconstructs properly include execution options in their cache key traversal.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12905\"\u003e#12905\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eengine\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e[engine] [bug]\u003c/strong\u003e Implemented initial support for free-threaded Python by adding new tests\nand reworking the test harness to include Python 3.13t and Python 3.14t in\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psycopg2` from 2.9.10 to 2.9.11\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psycopg/psycopg2/blob/master/NEWS\"\u003epsycopg2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eCurrent release\u003c/h2\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.11\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eAvoid a segfault passing more arguments than placeholders if Python is built\nwith assertions enabled (:ticket:\u003ccode\u003e[#1791](https://github.com/psycopg/psycopg2/issues/1791)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e~psycopg2.errorcodes\u003c/code\u003e map and \u003ccode\u003e~psycopg2.errors\u003c/code\u003e classes updated to\nPostgreSQL 18.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.8.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.10\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.13.\u003c/li\u003e\n\u003cli\u003eReceive notifications on commit (:ticket:\u003ccode\u003e[#1728](https://github.com/psycopg/psycopg2/issues/1728)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e~psycopg2.errorcodes\u003c/code\u003e map and \u003ccode\u003e~psycopg2.errors\u003c/code\u003e classes updated to\nPostgreSQL 17.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.7.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.9\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.12.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.6.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.8\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWheel package bundled with PostgreSQL 16 libpq in order to add support for\nrecent features, such as \u003ccode\u003esslcertmode\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.7\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix propagation of exceptions raised during module initialization\n(:ticket:\u003ccode\u003e[#1598](https://github.com/psycopg/psycopg2/issues/1598)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix building when pg_config returns an empty string (:ticket:\u003ccode\u003e[#1599](https://github.com/psycopg/psycopg2/issues/1599)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eWheel package bundled with OpenSSL 1.1.1v.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.6\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/psycopg/psycopg2/commit/fd9ae8cad2bcfc3e7e9410e7b6f07cda8f4f05ec\"\u003e\u003ccode\u003efd9ae8c\u003c/code\u003e\u003c/a\u003e chore: bump to version 2.9.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/d923840546942534f0956d9202f914fd9feac5fd\"\u003e\u003ccode\u003ed923840\u003c/code\u003e\u003c/a\u003e chore: update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/d42dc7169d3cd93517e282e9ef5dc2a2b40650a2\"\u003e\u003ccode\u003ed42dc71\u003c/code\u003e\u003c/a\u003e Merge branch 'fix-1791'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/4fde6560c32f06ad1304404c9f7f86148dcc4be0\"\u003e\u003ccode\u003e4fde656\u003c/code\u003e\u003c/a\u003e fix: avoid failed assert passing more arguments than placeholders\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/8308c19d6af0d904b313997539ed33415990a74e\"\u003e\u003ccode\u003e8308c19\u003c/code\u003e\u003c/a\u003e fix: drop warning about the use of deprecated PyWeakref_GetObject function\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/1a1eabf098a3374409bb2ab4b594777b900f396d\"\u003e\u003ccode\u003e1a1eabf\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/github-script from 7 to 8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/897af8b38beda851d7257dfc525129e37c0ec9e0\"\u003e\u003ccode\u003e897af8b\u003c/code\u003e\u003c/a\u003e build(deps): bump peter-evans/repository-dispatch from 3 to 4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/ceefd305117113ca10e383a626e87ba0796f3638\"\u003e\u003ccode\u003eceefd30\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/checkout from 4 to 5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/4dc585430cabe94cee96c5a9de0265d0f55370f1\"\u003e\u003ccode\u003e4dc5854\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/setup-python from 5 to 6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/1945788dcf6172bb1b9328ebc3587ccf0e6a659c\"\u003e\u003ccode\u003e1945788\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg2/issues/1802\"\u003e#1802\u003c/a\u003e from edgarrmondragon/cp314-wheels\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psycopg/psycopg2/compare/2.9.10...2.9.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `beaupy` 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/petereon/beaupy/releases\"\u003ebeaupy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.10.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): update dependency flake8 to v7.1.1 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/129\"\u003epetereon/beaupy#129\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency isort to v5.13.2 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/130\"\u003epetereon/beaupy#130\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency mypy to v1.14.1 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/131\"\u003epetereon/beaupy#131\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: adding documentation for global config by \u003ca href=\"https://github.com/petereon\"\u003e\u003ccode\u003e@​petereon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/148\"\u003epetereon/beaupy#148\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency pytest to v8.4.2 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/147\"\u003epetereon/beaupy#147\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency black to v25 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/144\"\u003epetereon/beaupy#144\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency pydoc-markdown to v4.8.2 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/132\"\u003epetereon/beaupy#132\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/petereon/beaupy/compare/v3.10.1...v3.10.2\"\u003ehttps://github.com/petereon/beaupy/compare/v3.10.1...v3.10.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/a2dc15764508c0451ed4dc386f3b0761fe7a9ce2\"\u003e\u003ccode\u003ea2dc157\u003c/code\u003e\u003c/a\u003e chore: bump version from 3.10.1 to 3.10.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/7599e5a43be6893c81612314f410ffa602a15f57\"\u003e\u003ccode\u003e7599e5a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/132\"\u003e#132\u003c/a\u003e from petereon/renovate/pydoc-markdown-4.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/6b2bb33d4fef6f2a607e1f42c873bd92ffc2b0d5\"\u003e\u003ccode\u003e6b2bb33\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency pydoc-markdown to v4.8.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/d2b0cbc3bb6b191816fdef9319a150e9b305ae7f\"\u003e\u003ccode\u003ed2b0cbc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/144\"\u003e#144\u003c/a\u003e from petereon/renovate/black-25.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/926fb4e8773f587417e7a3f453af1641364888e5\"\u003e\u003ccode\u003e926fb4e\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency black to v25\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/df126efc542641c8f7385f8087a19a95ee1615b7\"\u003e\u003ccode\u003edf126ef\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/147\"\u003e#147\u003c/a\u003e from petereon/renovate/pytest-8.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/0eb77250022a166836a4594a489d9c178591234b\"\u003e\u003ccode\u003e0eb7725\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency pytest to v8.4.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/7b9234631ce3510e433fbb59d4c0e829d70fd569\"\u003e\u003ccode\u003e7b92346\u003c/code\u003e\u003c/a\u003e chore: linting code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/531e870193a7cb26ab43370a45d8562cb44d8b15\"\u003e\u003ccode\u003e531e870\u003c/code\u003e\u003c/a\u003e chore: fix weird types\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/dfd9dbc54327c19455197566f7161de08ad3180b\"\u003e\u003ccode\u003edfd9dbc\u003c/code\u003e\u003c/a\u003e docs: adding documentation for global config (\u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/148\"\u003e#148\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/petereon/beaupy/compare/v3.10.1...v3.10.2\"\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.2 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 suppo...\n\n_Description has been truncated_","html_url":"https://github.com/MVrachev/repository-service-tuf-cli/pull/57","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/MVrachev%2Frepository-service-tuf-cli/issues/57","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/57/packages"}},{"old_version":"3.6.2","new_version":"4.1.0","update_type":"major","path":null,"pr_created_at":"2025-10-13T11:34:46.000Z","version_change":"3.6.2 → 4.1.0","issue":{"uuid":"3509687694","node_id":"PR_kwDOHGh5u86tcags","number":911,"state":"closed","title":"build(deps): bump the pipenv group across 1 directory with 32 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-10-31T10:43:52.000Z","author_association":null,"state_reason":null,"created_at":"2025-10-13T11:34:46.000Z","updated_at":"2025-10-31T10:43:54.000Z","time_to_close":1552146,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"pipenv","update_count":32,"packages":[{"name":"rich-click","old_version":"1.8.8","new_version":"1.9.3","repository_url":"https://github.com/ewels/rich-click"},{"name":"securesystemslib","old_version":"1.3.0","new_version":"1.3.1","repository_url":"https://github.com/secure-systems-lab/securesystemslib"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"dynaconf","old_version":"3.2.10","new_version":"3.2.12","repository_url":"https://github.com/dynaconf/dynaconf"},{"name":"isort","old_version":"6.0.1","new_version":"7.0.0","repository_url":"https://github.com/PyCQA/isort"},{"name":"sqlalchemy","old_version":"2.0.40","new_version":"2.0.44","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"psycopg2","old_version":"2.9.10","new_version":"2.9.11","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"beaupy","old_version":"3.10.1","new_version":"3.10.2","repository_url":"https://github.com/petereon/beaupy"},{"name":"sigstore","old_version":"3.6.2","new_version":"4.1.0","repository_url":"https://github.com/sigstore/sigstore-python"},{"name":"boto3","old_version":"1.38.8","new_version":"1.40.50","repository_url":"https://github.com/boto/boto3"},{"name":"google-cloud-kms","old_version":"3.4.1","new_version":"3.6.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"azure-keyvault-keys","old_version":"4.10.0","new_version":"4.11.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"prompt-toolkit","old_version":"3.0.51","new_version":"3.0.52","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"setuptools","old_version":"80.3.1","new_version":"80.9.0","repository_url":"https://github.com/pypa/setuptools"},{"name":"pykcs11","old_version":"1.5.17","new_version":"1.5.18","repository_url":"https://github.com/LudovicRousseau/PyKCS11"},{"name":"exceptiongroup","old_version":"1.2.2","new_version":"1.3.0","repository_url":"https://github.com/agronholm/exceptiongroup"},{"name":"black","old_version":"25.1.0","new_version":"25.9.0","repository_url":"https://github.com/psf/black"},{"name":"flake8","old_version":"7.2.0","new_version":"7.3.0","repository_url":"https://github.com/pycqa/flake8"},{"name":"tox","old_version":"4.25.0","new_version":"4.31.0","repository_url":"https://github.com/tox-dev/tox"},{"name":"pytest","old_version":"8.3.5","new_version":"8.4.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"6.1.1","new_version":"7.0.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pytest-xdist","old_version":"3.6.1","new_version":"3.8.0","repository_url":"https://github.com/pytest-dev/pytest-xdist"},{"name":"mypy","old_version":"1.15.0","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"},{"name":"pip","old_version":"25.1.1","new_version":"25.2","repository_url":"https://github.com/pypa/pip"},{"name":"sphinxcontrib-plantuml","old_version":"0.30","new_version":"0.31","repository_url":"https://github.com/sphinx-contrib/plantuml"},{"name":"build","old_version":"1.2.2.post1","new_version":"1.3.0","repository_url":"https://github.com/pypa/build"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.3.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"bandit","old_version":"1.8.3","new_version":"1.8.6","repository_url":"https://github.com/PyCQA/bandit"},{"name":"types-requests","old_version":"2.32.0.20250328","new_version":"2.32.4.20250913","repository_url":"https://github.com/typeshed-internal/stub_uploader"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pipenv group with 29 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [rich-click](https://github.com/ewels/rich-click) | `1.8.8` | `1.9.3` |\n| [securesystemslib](https://github.com/secure-systems-lab/securesystemslib) | `1.3.0` | `1.3.1` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [dynaconf](https://github.com/dynaconf/dynaconf) | `3.2.10` | `3.2.12` |\n| [isort](https://github.com/PyCQA/isort) | `6.0.1` | `7.0.0` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.40` | `2.0.44` |\n| [psycopg2](https://github.com/psycopg/psycopg2) | `2.9.10` | `2.9.11` |\n| [beaupy](https://github.com/petereon/beaupy) | `3.10.1` | `3.10.2` |\n| [sigstore](https://github.com/sigstore/sigstore-python) | `3.6.2` | `4.1.0` |\n| [boto3](https://github.com/boto/boto3) | `1.38.8` | `1.40.50` |\n| [google-cloud-kms](https://github.com/googleapis/google-cloud-python) | `3.4.1` | `3.6.0` |\n| [azure-keyvault-keys](https://github.com/Azure/azure-sdk-for-python) | `4.10.0` | `4.11.0` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.51` | `3.0.52` |\n| [setuptools](https://github.com/pypa/setuptools) | `80.3.1` | `80.9.0` |\n| [pykcs11](https://github.com/LudovicRousseau/PyKCS11) | `1.5.17` | `1.5.18` |\n| [exceptiongroup](https://github.com/agronholm/exceptiongroup) | `1.2.2` | `1.3.0` |\n| [black](https://github.com/psf/black) | `25.1.0` | `25.9.0` |\n| [flake8](https://github.com/pycqa/flake8) | `7.2.0` | `7.3.0` |\n| [tox](https://github.com/tox-dev/tox) | `4.25.0` | `4.31.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.5` | `8.4.2` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `6.1.1` | `7.0.0` |\n| [pytest-xdist](https://github.com/pytest-dev/pytest-xdist) | `3.6.1` | `3.8.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.18.2` |\n| [pip](https://github.com/pypa/pip) | `25.1.1` | `25.2` |\n| [sphinxcontrib-plantuml](https://github.com/sphinx-contrib/plantuml) | `0.30` | `0.31` |\n| [build](https://github.com/pypa/build) | `1.2.2.post1` | `1.3.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.3.0` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.8.3` | `1.8.6` |\n| [types-requests](https://github.com/typeshed-internal/stub_uploader) | `2.32.0.20250328` | `2.32.4.20250913` |\n\n\nUpdates `rich-click` from 1.8.8 to 1.9.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ewels/rich-click/releases\"\u003erich-click's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.9.3\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed subcommand discovery in help text. Behavior should now be the same as \u003ccode\u003e1.8\u003c/code\u003e. [\u003ca href=\"https://redirect.github.com/ewels/rich-click/pull/304\"\u003e#304\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.3.dev0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed subcommand discovery in help text. Behavior should now be the same as \u003ccode\u003e1.8\u003c/code\u003e. [\u003ca href=\"https://redirect.github.com/ewels/rich-click/pull/304\"\u003e#304\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed legacy Windows rendering\u003c/li\u003e\n\u003cli\u003eFix issue with parent \u003ccode\u003eclick.Group\u003c/code\u003e and child \u003ccode\u003erich_click.RichCommand\u003c/code\u003e error formatter not resolving.\u003c/li\u003e\n\u003cli\u003eAdd headers to tables (by default these are not shown).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.2.dev0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed legacy windows rendering\u003c/li\u003e\n\u003cli\u003eFix issue with parent \u003ccode\u003eclick.Group\u003c/code\u003e and child \u003ccode\u003erich_click.RichCommand\u003c/code\u003e error formatter not resolving.\u003c/li\u003e\n\u003cli\u003eAdd headers to tables (by default these are not shown).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed bug where running the \u003ccode\u003erich-click\u003c/code\u003e CLI on a \u003ccode\u003e@rich_click.argument()\u003c/code\u003e sometimes caused arguments show up in the option panel when it shouldn't.\u003c/li\u003e\n\u003cli\u003eSlightly reduced horizontal padding of the \u003ccode\u003emodern\u003c/code\u003e theme format.\u003c/li\u003e\n\u003cli\u003eFixed Click 8.3 compatibility with rendering defaults in help text.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.0\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\nVersion 1.9.0 deprecates support for a lot of old versions of things:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ePython 3.7 support is removed.\u003c/strong\u003e The minimum supported Python version is 3.8.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eClick 7 support is removed.\u003c/strong\u003e The minimum supported Click version is 8.0.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRich 10 and 11 support is removed.\u003c/strong\u003e The minimum supported Rich version is 12.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\nVersion 1.9.0 introduces a minor breaking change:\nThe \u003ccode\u003eDEFAULT_STRING\u003c/code\u003e, \u003ccode\u003eENVVAR_STRING\u003c/code\u003e, \u003ccode\u003eREQUIRED_STRING\u003c/code\u003e, and \u003ccode\u003eDEPRECATED_STRING\u003c/code\u003e config options are now rendered with \u003ccode\u003eText.from_markup\u003c/code\u003e.\nSo for example, \u003ccode\u003eREQUIRED_STRING = \u0026quot;[required]\u0026quot;\u003c/code\u003e would be rendered as Rich markup.\nYou must now escape the rich markup: \u003ccode\u003eREQUIRED_STRING = \u0026quot;\\\\[required]\u0026quot;\u003c/code\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003eBig changes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eThemes!\u003c/strong\u003e Check them out with \u003ccode\u003erich-click --themes\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTyper support:\u003c/strong\u003e \u003ccode\u003erich-click typer_app --help\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRichPanels\u003c/strong\u003e API introduced. This replaces the \u0026quot;groups\u0026quot; feature going forward (although groups will continue to be supported).\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e@click.option_panel()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e@click.command_panel()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eIDE tab completion support for decorators\u003c/strong\u003e. Now you should no longer need to guess what goes in \u003ccode\u003e@click.option()\u003c/code\u003e or \u003ccode\u003e@click.command(context_settings=...)\u003c/code\u003e etc.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHelp for arguments:\u003c/strong\u003e \u003ccode\u003ehelp=\u003c/code\u003e is now a valid kwarg for \u003ccode\u003e@click.argument()\u003c/code\u003e decorator. See docs for more information.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSmall changes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u0026quot;Deprecated\u0026quot; text properly handled and stylized in all places.\u003c/li\u003e\n\u003cli\u003eCommand aliases: \u003ccode\u003e@cli.command(aliases=[\u0026quot;foo\u0026quot;])\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eImproved \u003ccode\u003erich-click\u003c/code\u003e CLI usability: improved patching and improved script detection+execution.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- 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/ewels/rich-click/blob/main/CHANGELOG.md\"\u003erich-click's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.9.3 (2025-10-09)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed subcommand discovery in help text. Behavior should now be the same as \u003ccode\u003e1.8\u003c/code\u003e. [\u003ca href=\"https://redirect.github.com/ewels/rich-click/pull/304\"\u003e#304\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.9.2 (2025-10-04)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed legacy windows rendering\u003c/li\u003e\n\u003cli\u003eFix issue with parent \u003ccode\u003eclick.Group\u003c/code\u003e and child \u003ccode\u003erich_click.RichCommand\u003c/code\u003e error formatter not resolving.\u003c/li\u003e\n\u003cli\u003eAdd headers to tables (by default these are not shown).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.9.1 (2025-09-20)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed bug where running the \u003ccode\u003erich-click\u003c/code\u003e CLI on a \u003ccode\u003e@rich_click.argument()\u003c/code\u003e sometimes caused arguments show up in the option panel when it shouldn't.\u003c/li\u003e\n\u003cli\u003eSlightly reduced horizontal padding of the \u003ccode\u003emodern\u003c/code\u003e theme format.\u003c/li\u003e\n\u003cli\u003eFixed Click 8.3 compatibility with rendering defaults in help text.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.9.0 (2025-09-16)\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\nVersion 1.9.0 deprecates support for a lot of old versions of things:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ePython 3.7 support is removed.\u003c/strong\u003e The minimum supported Python version is 3.8.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eClick 7 support is removed.\u003c/strong\u003e The minimum supported Click version is 8.0.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRich 10 and 11 support is removed.\u003c/strong\u003e The minimum supported Rich version is 12.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\nVersion 1.9.0 introduces a minor breaking change:\nThe \u003ccode\u003eDEFAULT_STRING\u003c/code\u003e, \u003ccode\u003eENVVAR_STRING\u003c/code\u003e, \u003ccode\u003eREQUIRED_STRING\u003c/code\u003e, and \u003ccode\u003eDEPRECATED_STRING\u003c/code\u003e config options are now rendered with \u003ccode\u003eText.from_markup\u003c/code\u003e.\nSo for example, \u003ccode\u003eREQUIRED_STRING = \u0026quot;[required]\u0026quot;\u003c/code\u003e would be rendered as Rich markup.\nYou must now escape the rich markup: \u003ccode\u003eREQUIRED_STRING = \u0026quot;\\\\[required]\u0026quot;\u003c/code\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003eBig changes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eThemes!\u003c/strong\u003e Check them out with \u003ccode\u003erich-click --themes\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTyper support:\u003c/strong\u003e \u003ccode\u003erich-click typer_app --help\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRichPanels\u003c/strong\u003e API introduced. This replaces the \u0026quot;groups\u0026quot; feature going forward (although groups will continue to be supported).\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e@click.option_panel()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e@click.command_panel()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eIDE tab completion support for decorators\u003c/strong\u003e. Now you should no longer need to guess what goes in \u003ccode\u003e@click.option()\u003c/code\u003e or \u003ccode\u003e@click.command(context_settings=...)\u003c/code\u003e etc.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHelp for arguments:\u003c/strong\u003e \u003ccode\u003ehelp=\u003c/code\u003e is now a valid kwarg for \u003ccode\u003e@click.argument()\u003c/code\u003e decorator. See docs for more information.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSmall changes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u0026quot;Deprecated\u0026quot; text properly handled and stylized in all places.\u003c/li\u003e\n\u003cli\u003eCommand aliases: \u003ccode\u003e@cli.command(aliases=[\u0026quot;foo\u0026quot;])\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eImproved \u003ccode\u003erich-click\u003c/code\u003e CLI usability: improved patching and improved script detection+execution.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003econtext_settings={\u0026quot;help_to_stderr\u0026quot;: True}\u003c/code\u003e support.\u003c/li\u003e\n\u003cli\u003eAdded suite of \u003ccode\u003epadding_*\u003c/code\u003e config options to control padding.\n\u003cul\u003e\n\u003cli\u003eBetter newline handling:\n\u003cul\u003e\n\u003cli\u003eUnordered lists create newlines in help text, e.g. \u003ccode\u003e\u0026quot;\\n- foo\\n- bar\u0026quot;\u003c/code\u003e or \u003ccode\u003e\u0026quot;\\n* foo\\n* bar\u0026quot;\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/0ea0e0a13b199cc1cf28ece1338bf0838772727b\"\u003e\u003ccode\u003e0ea0e0a\u003c/code\u003e\u003c/a\u003e Bump to 1.9.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/78f25499397fbcc9876a331732931d188b760b4a\"\u003e\u003ccode\u003e78f2549\u003c/code\u003e\u003c/a\u003e fix subcommand discovery (\u003ca href=\"https://redirect.github.com/ewels/rich-click/issues/304\"\u003e#304\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/12a50e911c05c6c8c97bfdd48147f999368bc7f5\"\u003e\u003ccode\u003e12a50e9\u003c/code\u003e\u003c/a\u003e Finish testing for 1.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/a2ccfed4946d5a7d677d0b5750617575f9de8c09\"\u003e\u003ccode\u003ea2ccfed\u003c/code\u003e\u003c/a\u003e 1.9.2 (\u003ca href=\"https://redirect.github.com/ewels/rich-click/issues/302\"\u003e#302\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/f041971bbd2ebadcfaed2e66b4e002260bf232eb\"\u003e\u003ccode\u003ef041971\u003c/code\u003e\u003c/a\u003e set date for changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/09b3ece0cf9fefaf98d83b9efd56e27083e6acc5\"\u003e\u003ccode\u003e09b3ece\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ewels/rich-click/issues/296\"\u003e#296\u003c/a\u003e from dwreeves/issue-293\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/164d7c0cb623d1332d43b66dee4fc3b911dd3544\"\u003e\u003ccode\u003e164d7c0\u003c/code\u003e\u003c/a\u003e add 8.3 to tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/c792472a3217d4a371352d1f9567b55287318689\"\u003e\u003ccode\u003ec792472\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ewels/rich-click/issues/295\"\u003e#295\u003c/a\u003e from dwreeves/issue-293\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/2268fc4e197c988f14076a138f797dc564367a47\"\u003e\u003ccode\u003e2268fc4\u003c/code\u003e\u003c/a\u003e fix 8.3 incompatibility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/bb9d72e0104b14629f7101aca01808c07bd5b5b9\"\u003e\u003ccode\u003ebb9d72e\u003c/code\u003e\u003c/a\u003e Generate new screengrabs with rich-codex\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ewels/rich-click/compare/v1.8.8...v1.9.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `securesystemslib` from 1.3.0 to 1.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/releases\"\u003esecuresystemslib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.3.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/blob/v1.3.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e for details.\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/secure-systems-lab/securesystemslib/blob/main/CHANGELOG.md\"\u003esecuresystemslib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003esecuresystemslib v1.3.1\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAWSSigner: Don't send payload to AWS for signing, send hash only (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1026\"\u003e#1026\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSet Development status classifier to \u0026quot;production/stable\u0026quot; in Python\npackaging (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1030\"\u003e#1030\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternals\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMinor infrastructure changes (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1005\"\u003e#1005\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1013\"\u003e#1013\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/secure-systems-lab/securesystemslib/commit/6f774190b90f0aa9d5d7e077680adbaa29c5cd6c\"\u003e\u003ccode\u003e6f77419\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1030\"\u003e#1030\u003c/a\u003e from jku/release-prep-1.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/b71cc5271a9a7b6898c79c1a12393d90996d5388\"\u003e\u003ccode\u003eb71cc52\u003c/code\u003e\u003c/a\u003e Prepare release 1.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/f6835096a845acf25dc3675105937be2565b9e66\"\u003e\u003ccode\u003ef683509\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1026\"\u003e#1026\u003c/a\u003e from ArkadiuszNitkaSWI/fix-aws-signer\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/97527198c7bf5b75ef9fb8996412df5453995080\"\u003e\u003ccode\u003e9752719\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1027\"\u003e#1027\u003c/a\u003e from secure-systems-lab/dependabot/pip/test-and-lint...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/4226b762bf3333b5947af9cf29ed751afbfd69b9\"\u003e\u003ccode\u003e4226b76\u003c/code\u003e\u003c/a\u003e build(deps): bump the test-and-lint-dependencies group with 4 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/6394e3e467c091a06ee95dad674dec7e991758c8\"\u003e\u003ccode\u003e6394e3e\u003c/code\u003e\u003c/a\u003e Review changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/dee9a831390c9a69c0e66f7c34779e9eea6dcc6d\"\u003e\u003ccode\u003edee9a83\u003c/code\u003e\u003c/a\u003e linter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/07b0fc780d9d1f4c0843ce3e2096e1216814bd06\"\u003e\u003ccode\u003e07b0fc7\u003c/code\u003e\u003c/a\u003e update .gitignore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/e8158a4eb131760714290b9839e3e40f9cd4229c\"\u003e\u003ccode\u003ee8158a4\u003c/code\u003e\u003c/a\u003e Fix AWS signer, allow messages bigger than 4kB\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/e23f855ddecb97d4baddffc068e9591451b9aa72\"\u003e\u003ccode\u003ee23f855\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1023\"\u003e#1023\u003c/a\u003e from secure-systems-lab/dependabot/pip/dependencies-...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/compare/v1.3.0...v1.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.1.8 to 8.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.3.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our \u003ca href=\"https://palletsprojects.com/versions\"\u003eVersion Support Policy\u003c/a\u003e on our website.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.0/\"\u003ehttps://pypi.org/project/click/8.3.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/27\"\u003ehttps://github.com/pallets/click/milestone/27\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: \u003ca href=\"https://redirect.github.com/pallets/click/issues/1992\"\u003e#1992\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2514\"\u003e#2514\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2610\"\u003e#2610\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3024\"\u003e#3024\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2164\"\u003e#2164\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for nargs option in combination with flag option \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2995\"\u003e#2995\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3013\"\u003e#3013\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3023\"\u003e#3023\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in CliRunner.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2939\"\u003e#2939\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.2.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.2.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.2.2/\"\u003ehttps://pypi.org/project/click/8.2.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-2-2\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-2-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/25\"\u003ehttps://github.com/pallets/click/milestone/25\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix reconciliation of \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003etype\u003c/code\u003e parameters for\nflag options, as well as parsing and normalization of environment variables.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/2952\"\u003e#2952\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2956\"\u003e#2956\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typing issue in \u003ccode\u003eBadParameter\u003c/code\u003e and \u003ccode\u003eMissingParameter\u003c/code\u003e exceptions for the\nparameter \u003ccode\u003eparam_hint\u003c/code\u003e that did not allow for a sequence of string where the\nunderlying functino \u003ccode\u003e_join_param_hints\u003c/code\u003e allows for it. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2777\"\u003e#2777\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2990\"\u003e#2990\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse the value of \u003ccode\u003eEnum\u003c/code\u003e choices to render their default value in help\nscreen. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2911\"\u003e#2911\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3004\"\u003e#3004\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix completion for the Z shell (\u003ccode\u003ezsh\u003c/code\u003e) for completion items containing\ncolons. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2703\"\u003e#2703\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2846\"\u003e#2846\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't include envvar in error hint when not configured. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2971\"\u003e#2971\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2972\"\u003e#2972\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.rst\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.3.0\u003c/h2\u003e\n\u003cp\u003eReleased 2025-09-17\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: :issue:\u003ccode\u003e1992\u003c/code\u003e :issue:\u003ccode\u003e2514\u003c/code\u003e :issue:\u003ccode\u003e2610\u003c/code\u003e\n:issue:\u003ccode\u003e3024\u003c/code\u003e :pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. :issue:\u003ccode\u003e2164\u003c/code\u003e\n:pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption :issue:\u003ccode\u003e2813\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. :issue:\u003ccode\u003e2995\u003c/code\u003e :pr:\u003ccode\u003e3013\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e. :pr:\u003ccode\u003e3023\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. :issue:\u003ccode\u003e2447\u003c/code\u003e :pr:\u003ccode\u003e3058\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in CliRunner. :issue:\u003ccode\u003e2939\u003c/code\u003e :pr:\u003ccode\u003e2940\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-07-31\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix reconciliation of \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003etype\u003c/code\u003e parameters for\nflag options, as well as parsing and normalization of environment variables.\n:issue:\u003ccode\u003e2952\u003c/code\u003e :pr:\u003ccode\u003e2956\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix typing issue in \u003ccode\u003eBadParameter\u003c/code\u003e and \u003ccode\u003eMissingParameter\u003c/code\u003e exceptions for the\nparameter \u003ccode\u003eparam_hint\u003c/code\u003e that did not allow for a sequence of string where the\nunderlying function \u003ccode\u003e_join_param_hints\u003c/code\u003e allows for it. :issue:\u003ccode\u003e2777\u003c/code\u003e :pr:\u003ccode\u003e2990\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUse the value of \u003ccode\u003eEnum\u003c/code\u003e choices to render their default value in help\nscreen. Refs :issue:\u003ccode\u003e2911\u003c/code\u003e :pr:\u003ccode\u003e3004\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix completion for the Z shell (\u003ccode\u003ezsh\u003c/code\u003e) for completion items containing\ncolons. :issue:\u003ccode\u003e2703\u003c/code\u003e :pr:\u003ccode\u003e2846\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDon't include envvar in error hint when not configured. :issue:\u003ccode\u003e2971\u003c/code\u003e :pr:\u003ccode\u003e2972\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix a rare race in \u003ccode\u003eclick.testing.StreamMixer\u003c/code\u003e's finalization that manifested\nas a \u003ccode\u003eValueError\u003c/code\u003e on close in a multi-threaded test session.\n:issue:\u003ccode\u003e2993\u003c/code\u003e :pr:\u003ccode\u003e2991\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-20\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/00fadb8904387158ce6e9aa1573be770446895c1\"\u003e\u003ccode\u003e00fadb8\u003c/code\u003e\u003c/a\u003e Release version 8.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/2a0e3ba907927ade6951d5732b775f11b54cb766\"\u003e\u003ccode\u003e2a0e3ba\u003c/code\u003e\u003c/a\u003e testing/CliRunner: Fix regression related to EOF introduced in 262bdf0 (\u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e11a1efc3395e998a1521a0dc35672a799e78d30\"\u003e\u003ccode\u003ee11a1ef\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into fix-cli-runner-prompt-eof-handling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/36deba8a95a2585de1a2aa4475b7f054f52830ac\"\u003e\u003ccode\u003e36deba8\u003c/code\u003e\u003c/a\u003e Forward exception information to resources registered in a context (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/f2cae7ae997cd32311cab3dede4c2b89fe05e191\"\u003e\u003ccode\u003ef2cae7a\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Add summary of PR to changelog for 8.3.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/7c7ec36354f49d1a092cb077fa4881ea4d70ba01\"\u003e\u003ccode\u003e7c7ec36\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Split resource exception handling tests in single and nested\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/92129c552da88ac30b578132031efa4b003ecc46\"\u003e\u003ccode\u003e92129c5\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Added exception forwarding to context tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/555fa9bb37770a6845a98be60b0c84876775552e\"\u003e\u003ccode\u003e555fa9b\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Forward exception data to exit stack when calling \u003ccode\u003e__exit__\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/16fe802a3f96c4c8fa3cd382f1a7577fda0c5321\"\u003e\u003ccode\u003e16fe802\u003c/code\u003e\u003c/a\u003e Add more tests on \u003ccode\u003eEnum\u003c/code\u003e rendering (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/d36de6fc67882f23d7a7d61cd4c0e25e0f88b0ac\"\u003e\u003ccode\u003ed36de6f\u003c/code\u003e\u003c/a\u003e Add more tests on Enum rendering their item's names and not values\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.1.8...8.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `rich` from 14.0.0 to 14.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Textualize/rich/releases\"\u003erich's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eThe Easy as Pi release\u003c/h2\u003e\n\u003cp\u003eThis release bumps Python compatibility to the just-released Python 3.14.\u003c/p\u003e\n\u003ch2\u003e[14.2.0] - 2025-10-09\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePython3.14 compatibility \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3861\"\u003eTextualize/rich#3861\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eThe Lively Release\u003c/h2\u003e\n\u003cp\u003eLive objects may now be nested. Previously a progress bar inside another progress context would fail. See the changelog below for this and other changes.\u003c/p\u003e\n\u003ch2\u003e[14.1.0] - 2025-06-25\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved \u003ccode\u003etyping_extensions\u003c/code\u003e from runtime dependencies \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3763\"\u003eTextualize/rich#3763\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLive objects (including Progress) may now be nested \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3768\"\u003eTextualize/rich#3768\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded padding property to Syntax which returns a tuple of four integers \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3782\"\u003eTextualize/rich#3782\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed extraction of recursive exceptions \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3772\"\u003eTextualize/rich#3772\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed padding applied to Syntax \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3782\"\u003eTextualize/rich#3782\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003ePanel\u003c/code\u003e title missing the panel background style \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3569\"\u003eTextualize/rich#3569\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eTTY_INTERACTIVE\u003c/code\u003e environment variable to force interactive mode off or on \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3777\"\u003eTextualize/rich#3777\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/Textualize/rich/blob/master/CHANGELOG.md\"\u003erich's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[14.2.0] - 2025-10-09\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePython3.14 compatibility \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3861\"\u003eTextualize/rich#3861\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[14.1.0] - 2025-06-25\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved \u003ccode\u003etyping_extensions\u003c/code\u003e from runtime dependencies \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3763\"\u003eTextualize/rich#3763\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLive objects (including Progress) may now be nested \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3768\"\u003eTextualize/rich#3768\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded padding property to Syntax which returns a tuple of four integers \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3782\"\u003eTextualize/rich#3782\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed extraction of recursive exceptions \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3772\"\u003eTextualize/rich#3772\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed padding applied to Syntax \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3782\"\u003eTextualize/rich#3782\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003ePanel\u003c/code\u003e title missing the panel background style \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3569\"\u003eTextualize/rich#3569\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eTTY_INTERACTIVE\u003c/code\u003e environment variable to force interactive mode off or on \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3777\"\u003eTextualize/rich#3777\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/Textualize/rich/commit/494f83c923ca54ecc943bf5e60c0004e65fbb54e\"\u003e\u003ccode\u003e494f83c\u003c/code\u003e\u003c/a\u003e changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/d476e85a19ea62966a25f6df0e0a287da52ab35f\"\u003e\u003ccode\u003ed476e85\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3862\"\u003e#3862\u003c/a\u003e from GeroZayas/docs/es-readme-sync-2025-10\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/518daaa39c17bad485c970bf229424784fbdf044\"\u003e\u003ccode\u003e518daaa\u003c/code\u003e\u003c/a\u003e docs(es): sync README.es.md (macOS, 16 colors, Python 3.8+)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/cd5074f87804aac2f6e5c6143e1cac5e3a0bddc5\"\u003e\u003ccode\u003ecd5074f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3861\"\u003e#3861\u003c/a\u003e from Textualize/python314\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/041406ca9b60af8fcc00cd7fc1b2973ab51eb851\"\u003e\u003ccode\u003e041406c\u003c/code\u003e\u003c/a\u003e removed asv\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/655b5210cb1403100a646d167cf027eec760dd9f\"\u003e\u003ccode\u003e655b521\u003c/code\u003e\u003c/a\u003e test fixes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/27c2d2df7523315de4b81577d414db8c1c7312f9\"\u003e\u003ccode\u003e27c2d2d\u003c/code\u003e\u003c/a\u003e bump for Python3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/ea9d4db5d84b4e834979304e3053bf757daae322\"\u003e\u003ccode\u003eea9d4db\u003c/code\u003e\u003c/a\u003e Update feature_request.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/2dca1b70359dac61e1bbfb6f14ebe19a5ab79c3d\"\u003e\u003ccode\u003e2dca1b7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3808\"\u003e#3808\u003c/a\u003e from Textualize/bump1410\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/19b6dddd807b887eaaf313174fff3eb2e22cda25\"\u003e\u003ccode\u003e19b6ddd\u003c/code\u003e\u003c/a\u003e version bump\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Textualize/rich/compare/v14.0.0...v14.2.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 `dynaconf` from 3.2.10 to 3.2.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dynaconf/dynaconf/releases\"\u003edynaconf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.2.12\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eIncremental improvment to access performance by \u003ca href=\"https://github.com/pedro-psb\"\u003e\u003ccode\u003e@​pedro-psb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/pull/1304\"\u003edynaconf/dynaconf#1304\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: get method to return Any type. by \u003ca href=\"https://github.com/rochacbruno\"\u003e\u003ccode\u003e@​rochacbruno\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/pull/1314\"\u003edynaconf/dynaconf#1314\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eperf: add lru caching to \u003ccode\u003efind_the_correct_casing\u003c/code\u003e function by \u003ca href=\"https://github.com/pedro-psb\"\u003e\u003ccode\u003e@​pedro-psb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/pull/1326\"\u003edynaconf/dynaconf#1326\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/dynaconf/dynaconf/compare/3.2.11...3.2.12\"\u003ehttps://github.com/dynaconf/dynaconf/compare/3.2.11...3.2.12\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.2.11\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eRelease version 3.2.11\u003c/p\u003e\n\u003cp\u003eShortlog of commits since last release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBruno Rocha (9): \u003ca href=\"https://github.com/rochacbruno\"\u003e\u003ccode\u003e@​rochacbruno\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003efix(cli): handle empty hooks and boolean environments.\u003c/li\u003e\n\u003cli\u003efix: Better way for CLI to find the Django Settings\u003c/li\u003e\n\u003cli\u003efix: windows CI\u003c/li\u003e\n\u003cli\u003efeat: Run CLI as module with \u003ccode\u003epython -m dynaconf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1290\"\u003e#1290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: use sys.argv instead of click.get_os_args (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1292\"\u003e#1292\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: \u003ccode\u003e-k\u003c/code\u003e must exit code 1 when key do not exist (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1293\"\u003e#1293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: envless load file (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1295\"\u003e#1295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: add correct supported python version to 3.2.x\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFabricio Aguiar (1): \u003ca href=\"https://github.com/fao89\"\u003e\u003ccode\u003e@​fao89\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003efix: make raw variables private (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1287\"\u003e#1287\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePedro Brochado (1): \u003ca href=\"https://github.com/pedro-psb\"\u003e\u003ccode\u003e@​pedro-psb\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003edocs: clarification on redis hash title when using custom envvar prefixes (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMilestone \u003ca href=\"https://github.com/dynaconf/dynaconf/milestone/31?closed=1\"\u003ehttps://github.com/dynaconf/dynaconf/milestone/31?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/dynaconf/dynaconf/compare/3.2.10...3.2.11\"\u003ehttps://github.com/dynaconf/dynaconf/compare/3.2.10...3.2.11\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/dynaconf/dynaconf/blob/3.2.12/CHANGELOG.md\"\u003edynaconf's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/pedro-psb/dynaconf/releases/tag/3.2.12\"\u003e3.2.12\u003c/a\u003e - 2025-10-10\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eget method to return Any type.. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003eremove unnecessary recursive evaluation call on Settings.get. \u003cem\u003eBy Pedro Brochado\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003eimprove performance of settings access in a loop (part 1). \u003cem\u003eBy Pedro Brochado\u003c/em\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/releases/tag/3.2.11\"\u003e3.2.11\u003c/a\u003e - 2025-05-06\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd correct supported python version to 3.2.x. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e-k\u003c/code\u003e must exit code 1 when key do not exist (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1293\"\u003e#1293\u003c/a\u003e). \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003euse sys.argv instead of click.get_os_args (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1292\"\u003e#1292\u003c/a\u003e). \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003ewindows CI. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003emake raw variables private (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1287\"\u003e#1287\u003c/a\u003e). \u003cem\u003eBy Fabricio Aguiar\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003eBetter way for CLI to find the Django Settings. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003ehandle empty hooks and boolean environments.. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eenvless load file (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1295\"\u003e#1295\u003c/a\u003e). \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003eRun CLI as module with \u003ccode\u003epython -m dynaconf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1290\"\u003e#1290\u003c/a\u003e). \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eclarification on redis hash title when using custom envvar prefixes (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1273\"\u003e#1273\u003c/a\u003e). \u003cem\u003eBy Pedro Brochado\u003c/em\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/dynaconf/dynaconf/commit/7606f351ac460b15c56e7a538300de4a501c56e7\"\u003e\u003ccode\u003e7606f35\u003c/code\u003e\u003c/a\u003e Release version 3.2.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/da44e5182940299dd90ca3e2a0e0e3c23cb9ebf7\"\u003e\u003ccode\u003eda44e51\u003c/code\u003e\u003c/a\u003e perf: add lru caching to \u003ccode\u003efind_the_correct_casing\u003c/code\u003e function (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1326\"\u003e#1326\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/b75eda0da141bdc29f707f2cb0c29e06b03a72bb\"\u003e\u003ccode\u003eb75eda0\u003c/code\u003e\u003c/a\u003e fix: get method to return Any type.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/4f3df1a47bcb71feddf7565f603e7994c65ede65\"\u003e\u003ccode\u003e4f3df1a\u003c/code\u003e\u003c/a\u003e misc: add some profile/perf scripts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/420acebf64e77ba475df94dfd7d409207e5e239d\"\u003e\u003ccode\u003e420aceb\u003c/code\u003e\u003c/a\u003e refactor: merge \u003cem\u003esafe\u003c/em\u003e{get,copy} into .get and .copy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/18c0c8422dc9651d57c76d1b098ad6fb3f75c09d\"\u003e\u003ccode\u003e18c0c84\u003c/code\u003e\u003c/a\u003e fix: remove unnecessary recursive evaluation call on Settings.get\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/0fde96f2e0b71309e63800ddac8eceda062155a9\"\u003e\u003ccode\u003e0fde96f\u003c/code\u003e\u003c/a\u003e refactor: rewrite decorator as explicit call\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/52efd9ed78d2187550e03a2ae5008661d5e28df9\"\u003e\u003ccode\u003e52efd9e\u003c/code\u003e\u003c/a\u003e Bump to version 3.2.12-dev0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/c61da8fd191196c1341bd3d8a8dd895e9cf671ae\"\u003e\u003ccode\u003ec61da8f\u003c/code\u003e\u003c/a\u003e Release version 3.2.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/f8189fb6c130ff4709450e7daebcf1c174aea248\"\u003e\u003ccode\u003ef8189fb\u003c/code\u003e\u003c/a\u003e fix: add correct supported python version to 3.2.x\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/dynaconf/dynaconf/compare/3.2.10...3.2.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `isort` from 6.0.1 to 7.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/isort/releases\"\u003eisort's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.0.0\u003c/h2\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003ch2\u003e:boom: Breaking Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9 (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2430\"\u003e#2430\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:rocket: Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eShow absolute paths in skipped file messages (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2416\"\u003e#2416\u003c/a\u003e) \u003ca href=\"https://github.com/pranlawate\"\u003e\u003ccode\u003e@​pranlawate\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:beetle: Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSome fixes for Python 3.14 (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2433\"\u003e#2433\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTest on \u003ccode\u003e3.14\u003c/code\u003e and fix any bugs (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2425\"\u003e#2425\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CHANGELOG.md + Fix Formatting and Grammar (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2419\"\u003e#2419\u003c/a\u003e) \u003ca href=\"https://github.com/lukbrew25\"\u003e\u003ccode\u003e@​lukbrew25\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix output of hanging indent for long lines with noqa (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2407\"\u003e#2407\u003c/a\u003e) \u003ca href=\"https://github.com/matan1008\"\u003e\u003ccode\u003e@​matan1008\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:construction_worker: Continuous Integration\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFormat with \u003ccode\u003eruff\u003c/code\u003e instead of \u003ccode\u003eblack\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2432\"\u003e#2432\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTarget 3.10 for \u003ccode\u003eruff\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2431\"\u003e#2431\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate development dependencies to latest version (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2426\"\u003e#2426\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: update pre-commit examples to version 6.1.0 (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2413\"\u003e#2413\u003c/a\u003e) \u003ca href=\"https://github.com/pranlawate\"\u003e\u003ccode\u003e@​pranlawate\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall cleanup for developer environment (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2418\"\u003e#2418\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:package: Dependencies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/setup-python from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2411\"\u003e#2411\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e6.1.0\u003c/h2\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate docs discussions channel (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2410\"\u003e#2410\u003c/a\u003e) \u003ca href=\"https://github.com/staticdev\"\u003e\u003ccode\u003e@​staticdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd python 3.14 classifier and badge (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2409\"\u003e#2409\u003c/a\u003e) \u003ca href=\"https://github.com/staticdev\"\u003e\u003ccode\u003e@​staticdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop use of non-standard pkg_resources API (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2405\"\u003e#2405\u003c/a\u003e) \u003ca href=\"https://github.com/dvarrazzo\"\u003e\u003ccode\u003e@​dvarrazzo\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse working isort version in pre-commit example (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2402\"\u003e#2402\u003c/a\u003e) \u003ca href=\"https://github.com/iainelder\"\u003e\u003ccode\u003e@​iainelder\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix typo in _get_files_from_dir_cached test (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2392\"\u003e#2392\u003c/a\u003e) \u003ca href=\"https://github.com/tiltingpenguin\"\u003e\u003ccode\u003e@​tiltingpenguin\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eResolve bandit warnings (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2379\"\u003e#2379\u003c/a\u003e) \u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd tox for cross-platform, parallel test suite execution (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2378\"\u003e#2378\u003c/a\u003e) \u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Project URLs to PyPI Side Panel (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2387\"\u003e#2387\u003c/a\u003e) \u003ca href=\"https://github.com/guillermodotn\"\u003e\u003ccode\u003e@​guillermodotn\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typos (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2376\"\u003e#2376\u003c/a\u003e) \u003ca href=\"https://github.com/co63oc\"\u003e\u003ccode\u003e@​co63oc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:construction_worker: Continuous Integration\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd make bash scripts portable (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2377\"\u003e#2377\u003c/a\u003e) \u003ca href=\"https://github.com/staticdev\"\u003e\u003ccode\u003e@​staticdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:package: Dependencies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 4 to 5 in the github-actions group (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2406\"\u003e#2406\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/isort/blob/main/CHANGELOG.md\"\u003eisort's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003cp\u003eNOTE: isort follows the \u003ca href=\"https://semver.org/\"\u003esemver\u003c/a\u003e versioning standard.\nFind out more about isort's release policy \u003ca href=\"https://pycqa.github.io/isort/docs/major_releases/release_policy\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003e6.1.0 October 1 2025\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd python 3.14 classifier and badge (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2409\"\u003e#2409\u003c/a\u003e) \u003ca href=\"https://github.com/staticdev\"\u003e\u003ccode\u003e@​staticdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop use of non-standard pkg_resources API (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2405\"\u003e#2405\u003c/a\u003e) \u003ca href=\"https://github.com/dvarrazzo\"\u003e\u003ccode\u003e@​dvarrazzo\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/PyCQA/isort/commit/0a09c783808cfe77bb3269250f663ff733d23302\"\u003e\u003ccode\u003e0a09c78\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2433\"\u003e#2433\u003c/a\u003e from DanielNoord/python-314\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/0fee794a05b5d0c471ac80bc8943f9843ca29644\"\u003e\u003ccode\u003e0fee794\u003c/code\u003e\u003c/a\u003e Add 3.14 to \u003ccode\u003estdlibds\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/332a1ad0b68bf3a3acac055b0ec3666408b3b425\"\u003e\u003ccode\u003e332a1ad\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003ezstandard\u003c/code\u003e for 3.14 compat\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/f756e5653afcf6d79ec4d0240b1868cbebd8fafd\"\u003e\u003ccode\u003ef756e56\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2432\"\u003e#2432\u003c/a\u003e from DanielNoord/ruff-it-up\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/52f5134889d345ff35afdcb86501c8221b804c70\"\u003e\u003ccode\u003e52f5134\u003c/code\u003e\u003c/a\u003e Format with \u003ccode\u003eruff\u003c/code\u003e instead of \u003ccode\u003eblack\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/012aa69fcadb3c89ff92a3d96aa449be7ae6746f\"\u003e\u003ccode\u003e012aa69\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2431\"\u003e#2431\u003c/a\u003e from DanielNoord/ruff-it-up\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/89773dbb371192541092657972a74e9ce0bbbc74\"\u003e\u003ccode\u003e89773db\u003c/code\u003e\u003c/a\u003e Target 3.10 with \u003ccode\u003eruff\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/933e382f98a0c77b4c6e33c4e3ef12bd57192884\"\u003e\u003ccode\u003e933e382\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2430\"\u003e#2430\u003c/a\u003e from DanielNoord/drop-39\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/8b6e00cbe643a216da57fed4baa282d0a4a1b829\"\u003e\u003ccode\u003e8b6e00c\u003c/code\u003e\u003c/a\u003e Remove support for Python 3.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/b5f9f296ad873734e8caa3a731f27360648d9b37\"\u003e\u003ccode\u003eb5f9f29\u003c/code\u003e\u003c/a\u003e Bump profile plugin to 3.10+ and re-lock\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PyCQA/isort/compare/6.0.1...7.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlalchemy` from 2.0.40 to 2.0.44\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/releases\"\u003esqlalchemy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.0.44\u003c/h1\u003e\n\u003cp\u003eReleased: October 10, 2025\u003c/p\u003e\n\u003ch2\u003eplatform\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e[platform] [bug]\u003c/strong\u003e Unblocked automatic greenlet installation for Python 3.14 now that\nthere are greenlet wheels on pypi for python 3.14.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eorm\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [usecase]\u003c/strong\u003e The way ORM Annotated Declarative interprets Python \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e type aliases\nin \u003ccode\u003eMapped[]\u003c/code\u003e annotations has been refined to expand the lookup scheme. A\n\u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e type can now be resolved based on either its direct presence in\n\u003ccode\u003e_orm.registry.type_annotation_map\u003c/code\u003e or its immediate resolved\nvalue, as long as a recursive lookup across multiple \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e types is\nnot required for it to resolve. This change reverses part of the\nrestrictions introduced in 2.0.37 as part of \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/11955\"\u003e#11955\u003c/a\u003e, which\ndeprecated (and disallowed in 2.1) the ability to resolve any \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e\ntype that was not explicitly present in\n\u003ccode\u003e_orm.registry.type_annotation_map\u003c/code\u003e. Recursive lookups of\n\u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e types remains deprecated in 2.0 and disallowed in version 2.1,\nas do implicit lookups of \u003ccode\u003eNewType\u003c/code\u003e types without an entry in\n\u003ccode\u003e_orm.registry.type_annotation_map\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eAdditionally, new support has been added for generic \u003ca href=\"https://peps.python.org/pep-0695\"\u003ePEP 695\u003c/a\u003e aliases that\nrefer to \u003ca href=\"https://peps.python.org/pep-0593\"\u003ePEP 593\u003c/a\u003e \u003ccode\u003eAnnotated\u003c/code\u003e constructs containing\n\u003ccode\u003e_orm.mapped_column()\u003c/code\u003e configurations. See the sections below for\nexamples.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12829\"\u003e#12829\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed a caching issue where \u003ccode\u003e_orm.with_loader_criteria()\u003c/code\u003e would\nincorrectly reuse cached bound parameter values when used with\n\u003ccode\u003e_sql.CompoundSelect\u003c/code\u003e constructs such as \u003ccode\u003e_sql.union()\u003c/code\u003e. The\nissue was caused by the cache key for compound selects not including the\nexecution options that are part of the \u003ccode\u003e_sql.Executable\u003c/code\u003e base class,\nwhich \u003ccode\u003e_orm.with_loader_criteria()\u003c/code\u003e uses to apply its criteria\ndynamically. The fix ensures that compound selects and other executable\nconstructs properly include execution options in their cache key traversal.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12905\"\u003e#12905\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eengine\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e[engine] [bug]\u003c/strong\u003e Implemented initial support for free-threaded Python by adding new tests\nand reworking the test harness to include Python 3.13t and Python 3.14t in\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psycopg2` from 2.9.10 to 2.9.11\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psycopg/psycopg2/blob/master/NEWS\"\u003epsycopg2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eCurrent release\u003c/h2\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.11\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eAvoid a segfault passing more arguments than placeholders if Python is built\nwith assertions enabled (:ticket:\u003ccode\u003e[#1791](https://github.com/psycopg/psycopg2/issues/1791)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e~psycopg2.errorcodes\u003c/code\u003e map and \u003ccode\u003e~psycopg2.errors\u003c/code\u003e classes updated to\nPostgreSQL 18.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.8.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.10\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.13.\u003c/li\u003e\n\u003cli\u003eReceive notifications on commit (:ticket:\u003ccode\u003e[#1728](https://github.com/psycopg/psycopg2/issues/1728)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e~psycopg2.errorcodes\u003c/code\u003e map and \u003ccode\u003e~psycopg2.errors\u003c/code\u003e classes updated to\nPostgreSQL 17.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.7.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.9\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.12.\u003c/li\u003e\n\u003cli\u003eDrop support for Python 3.6.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.8\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWheel package bundled with PostgreSQL 16 libpq in order to add support for\nrecent features, such as \u003ccode\u003esslcertmode\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.7\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix propagation of exceptions raised during module initialization\n(:ticket:\u003ccode\u003e[#1598](https://github.com/psycopg/psycopg2/issues/1598)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix building when pg_config returns an empty string (:ticket:\u003ccode\u003e[#1599](https://github.com/psycopg/psycopg2/issues/1599)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eWheel package bundled with OpenSSL 1.1.1v.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eWhat's new in psycopg 2.9.6\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/psycopg/psycopg2/commit/fd9ae8cad2bcfc3e7e9410e7b6f07cda8f4f05ec\"\u003e\u003ccode\u003efd9ae8c\u003c/code\u003e\u003c/a\u003e chore: bump to version 2.9.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/d923840546942534f0956d9202f914fd9feac5fd\"\u003e\u003ccode\u003ed923840\u003c/code\u003e\u003c/a\u003e chore: update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/d42dc7169d3cd93517e282e9ef5dc2a2b40650a2\"\u003e\u003ccode\u003ed42dc71\u003c/code\u003e\u003c/a\u003e Merge branch 'fix-1791'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/4fde6560c32f06ad1304404c9f7f86148dcc4be0\"\u003e\u003ccode\u003e4fde656\u003c/code\u003e\u003c/a\u003e fix: avoid failed assert passing more arguments than placeholders\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/8308c19d6af0d904b313997539ed33415990a74e\"\u003e\u003ccode\u003e8308c19\u003c/code\u003e\u003c/a\u003e fix: drop warning about the use of deprecated PyWeakref_GetObject function\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/1a1eabf098a3374409bb2ab4b594777b900f396d\"\u003e\u003ccode\u003e1a1eabf\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/github-script from 7 to 8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/897af8b38beda851d7257dfc525129e37c0ec9e0\"\u003e\u003ccode\u003e897af8b\u003c/code\u003e\u003c/a\u003e build(deps): bump peter-evans/repository-dispatch from 3 to 4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/ceefd305117113ca10e383a626e87ba0796f3638\"\u003e\u003ccode\u003eceefd30\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/checkout from 4 to 5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/4dc585430cabe94cee96c5a9de0265d0f55370f1\"\u003e\u003ccode\u003e4dc5854\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/setup-python from 5 to 6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/1945788dcf6172bb1b9328ebc3587ccf0e6a659c\"\u003e\u003ccode\u003e1945788\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg2/issues/1802\"\u003e#1802\u003c/a\u003e from edgarrmondragon/cp314-wheels\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psycopg/psycopg2/compare/2.9.10...2.9.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `beaupy` 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/petereon/beaupy/releases\"\u003ebeaupy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.10.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): update dependency flake8 to v7.1.1 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/129\"\u003epetereon/beaupy#129\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency isort to v5.13.2 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/130\"\u003epetereon/beaupy#130\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency mypy to v1.14.1 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/131\"\u003epetereon/beaupy#131\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: adding documentation for global config by \u003ca href=\"https://github.com/petereon\"\u003e\u003ccode\u003e@​petereon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/148\"\u003epetereon/beaupy#148\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency pytest to v8.4.2 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/147\"\u003epetereon/beaupy#147\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency black to v25 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/144\"\u003epetereon/beaupy#144\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency pydoc-markdown to v4.8.2 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/132\"\u003epetereon/beaupy#132\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/petereon/beaupy/compare/v3.10.1...v3.10.2\"\u003ehttps://github.com/petereon/beaupy/compare/v3.10.1...v3.10.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/a2dc15764508c0451ed4dc386f3b0761fe7a9ce2\"\u003e\u003ccode\u003ea2dc157\u003c/code\u003e\u003c/a\u003e chore: bump version from 3.10.1 to 3.10.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/7599e5a43be6893c81612314f410ffa602a15f57\"\u003e\u003ccode\u003e7599e5a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/132\"\u003e#132\u003c/a\u003e from petereon/renovate/pydoc-markdown-4.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/6b2bb33d4fef6f2a607e1f42c873bd92ffc2b0d5\"\u003e\u003ccode\u003e6b2bb33\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency pydoc-markdown to v4.8.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/d2b0cbc3bb6b191816fdef9319a150e9b305ae7f\"\u003e\u003ccode\u003ed2b0cbc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/144\"\u003e#144\u003c/a\u003e from petereon/renovate/black-25.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/926fb4e8773f587417e7a3f453af1641364888e5\"\u003e\u003ccode\u003e926fb4e\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency black to v25\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/df126efc542641c8f7385f8087a19a95ee1615b7\"\u003e\u003ccode\u003edf126ef\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/147\"\u003e#147\u003c/a\u003e from petereon/renovate/pytest-8.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/0eb77250022a166836a4594a489d9c178591234b\"\u003e\u003ccode\u003e0eb7725\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency pytest to v8.4.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/7b9234631ce3510e433fbb59d4c0e829d70fd569\"\u003e\u003ccode\u003e7b92346\u003c/code\u003e\u003c/a\u003e chore: linting code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/531e870193a7cb26ab43370a45d8562cb44d8b15\"\u003e\u003ccode\u003e531e870\u003c/code\u003e\u003c/a\u003e chore: fix weird types\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/dfd9dbc54327c19455197566f7161de08ad3180b\"\u003e\u003ccode\u003edfd9dbc\u003c/code\u003e\u003c/a\u003e docs: adding documentation for global config (\u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/148\"\u003e#148\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/petereon/beaupy/compare/v3.10.1...v3.10.2\"\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.2 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 suppo...\n\n_Description has been truncated_","html_url":"https://github.com/repository-service-tuf/repository-service-tuf-cli/pull/911","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/repository-service-tuf%2Frepository-service-tuf-cli/issues/911","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/911/packages"}},{"old_version":"3.6.1","new_version":"4.1.0","update_type":"major","path":null,"pr_created_at":"2025-10-13T05:51:21.000Z","version_change":"3.6.1 → 4.1.0","issue":{"uuid":"3508558707","node_id":"PR_kwDOPjXchc6tYkjy","number":12,"state":"closed","title":"Bump the dependencies group across 1 directory with 36 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-11-03T05:34:16.000Z","author_association":null,"state_reason":null,"created_at":"2025-10-13T05:51:21.000Z","updated_at":"2025-11-03T05:34:18.000Z","time_to_close":1813375,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"dependencies","update_count":36,"packages":[{"name":"cryptography","old_version":"43.0.3","new_version":"46.0.2","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.11.0","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":"2025.10.5","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.3","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), [pydantic](https://github.com/pydantic/pydantic), [pydantic-core](https://github.com/pydantic/pydantic-core), [pygments](https://github.com/pygments/pygments), [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), [urllib3](https://github.com/urllib3/urllib3), [uvicorn](https://github.com/Kludex/uvicorn), [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.2\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.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* Removed the deprecated ``CAST5``, ``SEED``, ``IDEA``, and ``Blowfish``\n  classes from the cipher module. These are still available in\n  :doc:`/hazmat/decrepit/index`.\n* In X.509, when performing a PSS signature with a SHA-3 hash, it is now\n  encoded with the official NIST SHA3 OID.\n\u003cp\u003e.. _v45-0-7:\u003c/p\u003e\n\u003cp\u003e45.0.7 - 2025-09-01\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a function to support an upcoming \u003ccode\u003epyOpenSSL\u003c/code\u003e release.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v45-0-6:\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/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\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e076d08ee42da5daa432d1d145b8bee2dc0d5b44\"\u003e\u003ccode\u003ee076d08\u003c/code\u003e\u003c/a\u003e Attempt to fix commit message for bump downstreams (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/13440\"\u003e#13440\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.2\"\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.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.11.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for cancellation reasons (the \u003ccode\u003ereason\u003c/code\u003e parameter to \u003ccode\u003eCancelScope.cancel()\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/975\"\u003e#975\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped the minimum version of Trio to v0.31.0\u003c/li\u003e\n\u003cli\u003eAdded the ability to enter the event loop from foreign (non-worker) threads by passing the return value of \u003ccode\u003eanyio.lowlevel.current_token()\u003c/code\u003e to \u003ccode\u003eanyio.from_thread.run()\u003c/code\u003e and \u003ccode\u003eanyio.from_thread.run_sync()\u003c/code\u003e as the \u003ccode\u003etoken\u003c/code\u003e keyword argument (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/256\"\u003e#256\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded pytest option (\u003ccode\u003eanyio_mode = \u0026quot;auto\u0026quot;\u003c/code\u003e) to make the pytest plugin automatically handle all async tests (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/971\"\u003e#971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the \u003ccode\u003eanyio.Condition.wait_for()\u003c/code\u003e method for feature parity with asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged the default type argument of \u003ccode\u003eanyio.abc.TaskStatus\u003c/code\u003e from \u003ccode\u003eAny\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/964\"\u003e#964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed TCP listener behavior to guarantee the same ephemeral port is used for all socket listeners when \u003ccode\u003elocal_port=0\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/857\"\u003e#857\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed inconsistency between Trio and asyncio where a TCP stream that previously raised a \u003ccode\u003eBrokenResourceError\u003c/code\u003e on \u003ccode\u003esend()\u003c/code\u003e would still raise \u003ccode\u003eBrokenResourceError\u003c/code\u003e after the stream was closed on asyncio, but \u003ccode\u003eClosedResourceError\u003c/code\u003e on Trio. They now both raise a \u003ccode\u003eClosedResourceError\u003c/code\u003e in this scenario. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/671\"\u003e#671\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.10.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded the \u003ccode\u003efeed_data()\u003c/code\u003e method to the \u003ccode\u003eBufferedByteReceiveStream\u003c/code\u003e class, allowing users to inject data directly into the buffer\u003c/li\u003e\n\u003cli\u003eAdded various class methods to wrap existing sockets as listeners or socket streams:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eSocketListener.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded a hierarchy of connectable stream classes for transparently connecting to various remote or local endpoints for exchanging bytes or objects\u003c/li\u003e\n\u003cli\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and \u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context managers, particularly cancel scopes or task groups (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/905\"\u003e#905\u003c/a\u003e; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the ability to specify the thread name in \u003ccode\u003estart_blocking_portal()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/818\"\u003e#818\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eanyio.notify_closing\u003c/code\u003e to allow waking \u003ccode\u003eanyio.wait_readable\u003c/code\u003e and \u003ccode\u003eanyio.wait_writable\u003c/code\u003e before closing a socket. Among other things, this prevents an OSError on the \u003ccode\u003eProactorEventLoop\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/896\"\u003e#896\u003c/a\u003e; PR by \u003ca href=\"https://github.com/graingert\"\u003e\u003ccode\u003e@​graingert\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIncorporated several documentation improvements from the EuroPython 2025 sprint (special thanks to the sprinters: Emmanuel Okedele, Jan Murre, Euxenia Miruna Goia and Christoffer Fjord)\u003c/li\u003e\n\u003cli\u003eAdded a documentation page explaining why one might want to use AnyIO's APIs instead of asyncio's\u003c/li\u003e\n\u003cli\u003eUpdated the \u003ccode\u003eto_interpreters\u003c/code\u003e module to use the public \u003ccode\u003econcurrent.interpreters\u003c/code\u003e API on Python 3.14 or later\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path.copy()\u003c/code\u003e and \u003ccode\u003eanyio.Path.copy_into()\u003c/code\u003e failing on Python 3.14.0a7\u003c/li\u003e\n\u003cli\u003eFixed return annotation of \u003ccode\u003e__aexit__\u003c/code\u003e on async context managers. CMs which can suppress exceptions should return \u003ccode\u003ebool\u003c/code\u003e, or \u003ccode\u003eNone\u003c/code\u003e otherwise. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/913\"\u003e#913\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Enegg\"\u003e\u003ccode\u003e@​Enegg\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed rollover boundary check in \u003ccode\u003eSpooledTemporaryFile\u003c/code\u003e so that rollover only occurs when the buffer size exceeds \u003ccode\u003emax_size\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/915\"\u003e#915\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMigrated testing and documentation dependencies from extras to dependency groups\u003c/li\u003e\n\u003cli\u003eFixed compatibility of \u003ccode\u003eanyio.to_interpreter\u003c/code\u003e with Python 3.14.0b2 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/926\"\u003e#926\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hroncok\"\u003e\u003ccode\u003e@​hroncok\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSyntaxWarning\u003c/code\u003e on Python 3.14 about \u003ccode\u003ereturn\u003c/code\u003e in \u003ccode\u003efinally\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/816\"\u003e#816\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed RunVar name conflicts. RunVar instances with the same name should not share storage (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/880\"\u003e#880\u003c/a\u003e; PR by \u003ca href=\"https://github.com/vimfu\"\u003e\u003ccode\u003e@​vimfu\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRenamed the \u003ccode\u003eBrokenWorkerIntepreter\u003c/code\u003e exception to \u003ccode\u003eBrokenWorkerInterpreter\u003c/code\u003e. The old name is available as a deprecated alias. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/938\"\u003e#938\u003c/a\u003e; PR by \u003ca href=\"https://github.com/ayussh-verma\"\u003e\u003ccode\u003e@​ayussh-verma\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed an edge case in \u003ccode\u003eCapacityLimiter\u003c/code\u003e on asyncio where a task, waiting to acquire a limiter gets cancelled and is subsequently granted a token from the limiter, but before the cancellation is delivered, and then fails to notify the next waiting task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/947\"\u003e#947\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/blob/master/docs/versionhistory.rst\"\u003eanyio's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion history\u003c/h1\u003e\n\u003cp\u003eThis library adheres to \u003ccode\u003eSemantic Versioning 2.0 \u0026lt;http://semver.org/\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eUNRELEASED\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSet \u003ccode\u003eNone\u003c/code\u003e as the default type argument for \u003ccode\u003eanyio.abc.TaskStatus\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003euvloop=True\u003c/code\u003e on Windows via the winloop_ implementation\n(\u003ccode\u003e[#960](https://github.com/agronholm/anyio/issues/960) \u0026lt;https://github.com/agronholm/anyio/pull/960\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _winloop: \u003ca href=\"https://github.com/Vizonex/Winloop\"\u003ehttps://github.com/Vizonex/Winloop\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e4.11.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for cancellation reasons (the \u003ccode\u003ereason\u003c/code\u003e parameter to\n\u003ccode\u003eCancelScope.cancel()\u003c/code\u003e)\n(\u003ccode\u003e[#975](https://github.com/agronholm/anyio/issues/975) \u0026lt;https://github.com/agronholm/anyio/pull/975\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eBumped the minimum version of Trio to v0.31.0\u003c/li\u003e\n\u003cli\u003eAdded the ability to enter the event loop from foreign (non-worker) threads by\npassing the return value of \u003ccode\u003eanyio.lowlevel.current_token()\u003c/code\u003e to\n\u003ccode\u003eanyio.from_thread.run()\u003c/code\u003e and \u003ccode\u003eanyio.from_thread.run_sync()\u003c/code\u003e as the \u003ccode\u003etoken\u003c/code\u003e\nkeyword argument (\u003ccode\u003e[#256](https://github.com/agronholm/anyio/issues/256) \u0026lt;https://github.com/agronholm/anyio/issues/256\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded pytest option (\u003ccode\u003eanyio_mode = \u0026quot;auto\u0026quot;\u003c/code\u003e) to make the pytest plugin automatically\nhandle all async tests\n(\u003ccode\u003e[#971](https://github.com/agronholm/anyio/issues/971) \u0026lt;https://github.com/agronholm/anyio/pull/971\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded the \u003ccode\u003eanyio.Condition.wait_for()\u003c/code\u003e method for feature parity with asyncio\n(\u003ccode\u003e[#974](https://github.com/agronholm/anyio/issues/974) \u0026lt;https://github.com/agronholm/anyio/pull/974\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eChanged the default type argument of \u003ccode\u003eanyio.abc.TaskStatus\u003c/code\u003e from \u003ccode\u003eAny\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e\n(\u003ccode\u003e[#964](https://github.com/agronholm/anyio/issues/964) \u0026lt;https://github.com/agronholm/anyio/pull/964\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eFixed TCP listener behavior to guarantee the same ephemeral port is used for all\nsocket listeners when \u003ccode\u003elocal_port=0\u003c/code\u003e\n(\u003ccode\u003e[#857](https://github.com/agronholm/anyio/issues/857) \u0026lt;https://github.com/agronholm/anyio/issues/857\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed inconsistency between Trio and asyncio where a TCP stream that previously\nraised a \u003ccode\u003eBrokenResourceError\u003c/code\u003e on \u003ccode\u003esend()\u003c/code\u003e would still raise\n\u003ccode\u003eBrokenResourceError\u003c/code\u003e after the stream was closed on asyncio, but\n\u003ccode\u003eClosedResourceError\u003c/code\u003e on Trio. They now both raise a \u003ccode\u003eClosedResourceError\u003c/code\u003e in this\nscenario. (\u003ccode\u003e[#671](https://github.com/agronholm/anyio/issues/671) \u0026lt;https://github.com/agronholm/anyio/issues/671\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e4.10.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003efeed_data()\u003c/code\u003e method to the \u003ccode\u003eBufferedByteReceiveStream\u003c/code\u003e class, allowing\nusers to inject data directly into the buffer\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded various class methods to wrap existing sockets as listeners or socket streams:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eSocketListener.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/08737af202f6610cdb8ba53fecaefd9c03269637\"\u003e\u003ccode\u003e08737af\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/8bb9fe04a1c0a4b6615c843d4a88bba38a386059\"\u003e\u003ccode\u003e8bb9fe0\u003c/code\u003e\u003c/a\u003e Fixed the inconsistent exception on sending to a closed TCP stream (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/963709358a05ced66986e928b593b4bd82422981\"\u003e\u003ccode\u003e9637093\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/981\"\u003e#981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/f1bc6ee95a75007681ef9cb4eec0369838b390e9\"\u003e\u003ccode\u003ef1bc6ee\u003c/code\u003e\u003c/a\u003e Fixed changelog entry formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0b58964a26c68ca427b711bbe8536f61ed900133\"\u003e\u003ccode\u003e0b58964\u003c/code\u003e\u003c/a\u003e Mentioned the sub-interpreter support in the README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/1ed112c65628d3cce312e7b6875b9f914d174a71\"\u003e\u003ccode\u003e1ed112c\u003c/code\u003e\u003c/a\u003e Ensure same port is used for IPv4/IPv6 when creating TCP listener with local_...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/aceeee09868642311a96626924f2f09c088a26c0\"\u003e\u003ccode\u003eaceeee0\u003c/code\u003e\u003c/a\u003e Re-enabled coverage reporting on macOS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6b890dc869f54b6237caff52a74e86382c076ad2\"\u003e\u003ccode\u003e6b890dc\u003c/code\u003e\u003c/a\u003e Reworded a changelog entry and added PR links to others\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/944257d2d59e8057dd00cd5cc96d8f73028031dd\"\u003e\u003ccode\u003e944257d\u003c/code\u003e\u003c/a\u003e Updated pre-commit modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/087975f44599471a84bea2077731143a346c276a\"\u003e\u003ccode\u003e087975f\u003c/code\u003e\u003c/a\u003e Fixed a documentation style (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/976\"\u003e#976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `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 2025.10.5\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/fb14ac49a976b1695d84b1ac1307276a20b3aac9\"\u003e\u003ccode\u003efb14ac4\u003c/code\u003e\u003c/a\u003e 2025.10.05 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/371\"\u003e#371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/2c7c7ee6b76a118191b685a4cc028d4241f22eb7\"\u003e\u003ccode\u003e2c7c7ee\u003c/code\u003e\u003c/a\u003e Add Python 3.14 classifier in setup.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/1a5cb7b3771bba256755f88b3dcf3ac13f064622\"\u003e\u003ccode\u003e1a5cb7b\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.6.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/dea59605ef2b266c2e0e67938e8c8535a04b1211\"\u003e\u003ccode\u003edea5960\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/83566b7c993eef772facdaff59c7bba105675329\"\u003e\u003ccode\u003e83566b7\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.2 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ca2e121bdb304fd01f802d3b1ee6a65684f569f2\"\u003e\u003ccode\u003eca2e121\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.3.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a97d9ad8f87c382378dddc0b0b33b9770932404e\"\u003e\u003ccode\u003ea97d9ad\u003c/code\u003e\u003c/a\u003e 2025.08.03 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/ddd90c6d726f174c1e5820379dac0f2a8fc723a1\"\u003e\u003ccode\u003eddd90c6\u003c/code\u003e\u003c/a\u003e 2025.07.14 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d905221c916d51077f5c8071a0f7aa2df2a37c52\"\u003e\u003ccode\u003ed905221\u003c/code\u003e\u003c/a\u003e 2025.07.09 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/358\"\u003e#358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/e767d5938eddddf804216cec93a55c85129c5f2d\"\u003e\u003ccode\u003ee767d59\u003c/code\u003e\u003c/a\u003e 2025.06.15 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/357\"\u003e#357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.01.31...2025.10.05\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.1 to 3.4.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2\"\u003e3.4.2\u003c/a\u003e (2025-05-02)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAddressed the DeprecationWarning in our CLI regarding \u003ccode\u003eargparse.FileType\u003c/code\u003e by backporting the target class into the package. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/591\"\u003e#591\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved the overall reliability of the detector with CJK Ideographs. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/605\"\u003e#605\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/587\"\u003e#587\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptional mypyc compilation upgraded to version 1.15 for Python \u0026gt;= 3.9\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summa...\n\n_Description has been truncated_","html_url":"https://github.com/openreview-bot7/securesystemslib/pull/12","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/openreview-bot7%2Fsecuresystemslib/issues/12","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/12/packages"}},{"old_version":"3.6.2","new_version":"4.0.0","update_type":"major","path":null,"pr_created_at":"2025-10-07T10:42:01.000Z","version_change":"3.6.2 → 4.0.0","issue":{"uuid":"2893509065","node_id":"PR_kwDOHGh5u86sd3HJ","number":910,"state":"open","title":"build(deps): bump the pipenv group across 1 directory with 31 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":0,"pull_request":true,"closed_at":null,"author_association":"CONTRIBUTOR","state_reason":null,"created_at":"2025-10-07T10:42:01.000Z","updated_at":"2025-10-07T10:42:02.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"pipenv","update_count":31,"packages":[{"name":"rich-click","old_version":"1.8.8","new_version":"1.9.2","repository_url":"https://github.com/ewels/rich-click"},{"name":"securesystemslib","old_version":"1.3.0","new_version":"1.3.1","repository_url":"https://github.com/secure-systems-lab/securesystemslib"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"dynaconf","old_version":"3.2.10","new_version":"3.2.11","repository_url":"https://github.com/dynaconf/dynaconf"},{"name":"isort","old_version":"6.0.1","new_version":"6.1.0","repository_url":"https://github.com/PyCQA/isort"},{"name":"sqlalchemy","old_version":"2.0.40","new_version":"2.0.43","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"beaupy","old_version":"3.10.1","new_version":"3.10.2","repository_url":"https://github.com/petereon/beaupy"},{"name":"sigstore","old_version":"3.6.2","new_version":"4.0.0","repository_url":"https://github.com/sigstore/sigstore-python"},{"name":"boto3","old_version":"1.38.8","new_version":"1.40.46","repository_url":"https://github.com/boto/boto3"},{"name":"google-cloud-kms","old_version":"3.4.1","new_version":"3.6.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"azure-keyvault-keys","old_version":"4.10.0","new_version":"4.11.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"prompt-toolkit","old_version":"3.0.51","new_version":"3.0.52","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"setuptools","old_version":"80.3.1","new_version":"80.9.0","repository_url":"https://github.com/pypa/setuptools"},{"name":"pykcs11","old_version":"1.5.17","new_version":"1.5.18","repository_url":"https://github.com/LudovicRousseau/PyKCS11"},{"name":"exceptiongroup","old_version":"1.2.2","new_version":"1.3.0","repository_url":"https://github.com/agronholm/exceptiongroup"},{"name":"black","old_version":"25.1.0","new_version":"25.9.0","repository_url":"https://github.com/psf/black"},{"name":"flake8","old_version":"7.2.0","new_version":"7.3.0","repository_url":"https://github.com/pycqa/flake8"},{"name":"tox","old_version":"4.25.0","new_version":"4.30.3","repository_url":"https://github.com/tox-dev/tox"},{"name":"pytest","old_version":"8.3.5","new_version":"8.4.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"6.1.1","new_version":"7.0.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pytest-xdist","old_version":"3.6.1","new_version":"3.8.0","repository_url":"https://github.com/pytest-dev/pytest-xdist"},{"name":"mypy","old_version":"1.15.0","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"},{"name":"pip","old_version":"25.1.1","new_version":"25.2","repository_url":"https://github.com/pypa/pip"},{"name":"sphinxcontrib-plantuml","old_version":"0.30","new_version":"0.31","repository_url":"https://github.com/sphinx-contrib/plantuml"},{"name":"build","old_version":"1.2.2.post1","new_version":"1.3.0","repository_url":"https://github.com/pypa/build"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.3.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"bandit","old_version":"1.8.3","new_version":"1.8.6","repository_url":"https://github.com/PyCQA/bandit"},{"name":"types-requests","old_version":"2.32.0.20250328","new_version":"2.32.4.20250913","repository_url":"https://github.com/typeshed-internal/stub_uploader"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pipenv group with 28 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [rich-click](https://github.com/ewels/rich-click) | `1.8.8` | `1.9.2` |\n| [securesystemslib](https://github.com/secure-systems-lab/securesystemslib) | `1.3.0` | `1.3.1` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [dynaconf](https://github.com/dynaconf/dynaconf) | `3.2.10` | `3.2.11` |\n| [isort](https://github.com/PyCQA/isort) | `6.0.1` | `6.1.0` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.40` | `2.0.43` |\n| [beaupy](https://github.com/petereon/beaupy) | `3.10.1` | `3.10.2` |\n| [sigstore](https://github.com/sigstore/sigstore-python) | `3.6.2` | `4.0.0` |\n| [boto3](https://github.com/boto/boto3) | `1.38.8` | `1.40.46` |\n| [google-cloud-kms](https://github.com/googleapis/google-cloud-python) | `3.4.1` | `3.6.0` |\n| [azure-keyvault-keys](https://github.com/Azure/azure-sdk-for-python) | `4.10.0` | `4.11.0` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.51` | `3.0.52` |\n| [setuptools](https://github.com/pypa/setuptools) | `80.3.1` | `80.9.0` |\n| [pykcs11](https://github.com/LudovicRousseau/PyKCS11) | `1.5.17` | `1.5.18` |\n| [exceptiongroup](https://github.com/agronholm/exceptiongroup) | `1.2.2` | `1.3.0` |\n| [black](https://github.com/psf/black) | `25.1.0` | `25.9.0` |\n| [flake8](https://github.com/pycqa/flake8) | `7.2.0` | `7.3.0` |\n| [tox](https://github.com/tox-dev/tox) | `4.25.0` | `4.30.3` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.5` | `8.4.2` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `6.1.1` | `7.0.0` |\n| [pytest-xdist](https://github.com/pytest-dev/pytest-xdist) | `3.6.1` | `3.8.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.18.2` |\n| [pip](https://github.com/pypa/pip) | `25.1.1` | `25.2` |\n| [sphinxcontrib-plantuml](https://github.com/sphinx-contrib/plantuml) | `0.30` | `0.31` |\n| [build](https://github.com/pypa/build) | `1.2.2.post1` | `1.3.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.3.0` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.8.3` | `1.8.6` |\n| [types-requests](https://github.com/typeshed-internal/stub_uploader) | `2.32.0.20250328` | `2.32.4.20250913` |\n\n\nUpdates `rich-click` from 1.8.8 to 1.9.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ewels/rich-click/releases\"\u003erich-click's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.9.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed legacy Windows rendering\u003c/li\u003e\n\u003cli\u003eFix issue with parent \u003ccode\u003eclick.Group\u003c/code\u003e and child \u003ccode\u003erich_click.RichCommand\u003c/code\u003e error formatter not resolving.\u003c/li\u003e\n\u003cli\u003eAdd headers to tables (by default these are not shown).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.2.dev0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed legacy windows rendering\u003c/li\u003e\n\u003cli\u003eFix issue with parent \u003ccode\u003eclick.Group\u003c/code\u003e and child \u003ccode\u003erich_click.RichCommand\u003c/code\u003e error formatter not resolving.\u003c/li\u003e\n\u003cli\u003eAdd headers to tables (by default these are not shown).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed bug where running the \u003ccode\u003erich-click\u003c/code\u003e CLI on a \u003ccode\u003e@rich_click.argument()\u003c/code\u003e sometimes caused arguments show up in the option panel when it shouldn't.\u003c/li\u003e\n\u003cli\u003eSlightly reduced horizontal padding of the \u003ccode\u003emodern\u003c/code\u003e theme format.\u003c/li\u003e\n\u003cli\u003eFixed Click 8.3 compatibility with rendering defaults in help text.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.0\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\nVersion 1.9.0 deprecates support for a lot of old versions of things:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ePython 3.7 support is removed.\u003c/strong\u003e The minimum supported Python version is 3.8.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eClick 7 support is removed.\u003c/strong\u003e The minimum supported Click version is 8.0.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRich 10 and 11 support is removed.\u003c/strong\u003e The minimum supported Rich version is 12.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\nVersion 1.9.0 introduces a minor breaking change:\nThe \u003ccode\u003eDEFAULT_STRING\u003c/code\u003e, \u003ccode\u003eENVVAR_STRING\u003c/code\u003e, \u003ccode\u003eREQUIRED_STRING\u003c/code\u003e, and \u003ccode\u003eDEPRECATED_STRING\u003c/code\u003e config options are now rendered with \u003ccode\u003eText.from_markup\u003c/code\u003e.\nSo for example, \u003ccode\u003eREQUIRED_STRING = \u0026quot;[required]\u0026quot;\u003c/code\u003e would be rendered as Rich markup.\nYou must now escape the rich markup: \u003ccode\u003eREQUIRED_STRING = \u0026quot;\\\\[required]\u0026quot;\u003c/code\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003eBig changes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eThemes!\u003c/strong\u003e Check them out with \u003ccode\u003erich-click --themes\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTyper support:\u003c/strong\u003e \u003ccode\u003erich-click typer_app --help\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRichPanels\u003c/strong\u003e API introduced. This replaces the \u0026quot;groups\u0026quot; feature going forward (although groups will continue to be supported).\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e@click.option_panel()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e@click.command_panel()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eIDE tab completion support for decorators\u003c/strong\u003e. Now you should no longer need to guess what goes in \u003ccode\u003e@click.option()\u003c/code\u003e or \u003ccode\u003e@click.command(context_settings=...)\u003c/code\u003e etc.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHelp for arguments:\u003c/strong\u003e \u003ccode\u003ehelp=\u003c/code\u003e is now a valid kwarg for \u003ccode\u003e@click.argument()\u003c/code\u003e decorator. See docs for more information.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSmall changes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u0026quot;Deprecated\u0026quot; text properly handled and stylized in all places.\u003c/li\u003e\n\u003cli\u003eCommand aliases: \u003ccode\u003e@cli.command(aliases=[\u0026quot;foo\u0026quot;])\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eImproved \u003ccode\u003erich-click\u003c/code\u003e CLI usability: improved patching and improved script detection+execution.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003econtext_settings={\u0026quot;help_to_stderr\u0026quot;: True}\u003c/code\u003e support.\u003c/li\u003e\n\u003cli\u003eAdded suite of \u003ccode\u003epadding_*\u003c/code\u003e config options to control padding.\n\u003cul\u003e\n\u003cli\u003eBetter newline handling:\n\u003cul\u003e\n\u003cli\u003eUnordered lists create newlines in help text, e.g. \u003ccode\u003e\u0026quot;\\n- foo\\n- bar\u0026quot;\u003c/code\u003e or \u003ccode\u003e\u0026quot;\\n* foo\\n* bar\u0026quot;\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eNewline control in help text with \u003ccode\u003etext_paragraph_linebreaks\u003c/code\u003e config option.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded a few \u003ccode\u003etext_*\u003c/code\u003e config options, including notably \u003ccode\u003etext_kwargs\u003c/code\u003e which can control code styles in Markdown.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- 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/ewels/rich-click/blob/main/CHANGELOG.md\"\u003erich-click's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.9.2 (2025-10-04)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed legacy windows rendering\u003c/li\u003e\n\u003cli\u003eFix issue with parent \u003ccode\u003eclick.Group\u003c/code\u003e and child \u003ccode\u003erich_click.RichCommand\u003c/code\u003e error formatter not resolving.\u003c/li\u003e\n\u003cli\u003eAdd headers to tables (by default these are not shown).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.9.1 (2025-09-20)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed bug where running the \u003ccode\u003erich-click\u003c/code\u003e CLI on a \u003ccode\u003e@rich_click.argument()\u003c/code\u003e sometimes caused arguments show up in the option panel when it shouldn't.\u003c/li\u003e\n\u003cli\u003eSlightly reduced horizontal padding of the \u003ccode\u003emodern\u003c/code\u003e theme format.\u003c/li\u003e\n\u003cli\u003eFixed Click 8.3 compatibility with rendering defaults in help text.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.9.0 (2025-09-16)\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\nVersion 1.9.0 deprecates support for a lot of old versions of things:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ePython 3.7 support is removed.\u003c/strong\u003e The minimum supported Python version is 3.8.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eClick 7 support is removed.\u003c/strong\u003e The minimum supported Click version is 8.0.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRich 10 and 11 support is removed.\u003c/strong\u003e The minimum supported Rich version is 12.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\nVersion 1.9.0 introduces a minor breaking change:\nThe \u003ccode\u003eDEFAULT_STRING\u003c/code\u003e, \u003ccode\u003eENVVAR_STRING\u003c/code\u003e, \u003ccode\u003eREQUIRED_STRING\u003c/code\u003e, and \u003ccode\u003eDEPRECATED_STRING\u003c/code\u003e config options are now rendered with \u003ccode\u003eText.from_markup\u003c/code\u003e.\nSo for example, \u003ccode\u003eREQUIRED_STRING = \u0026quot;[required]\u0026quot;\u003c/code\u003e would be rendered as Rich markup.\nYou must now escape the rich markup: \u003ccode\u003eREQUIRED_STRING = \u0026quot;\\\\[required]\u0026quot;\u003c/code\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003eBig changes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eThemes!\u003c/strong\u003e Check them out with \u003ccode\u003erich-click --themes\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTyper support:\u003c/strong\u003e \u003ccode\u003erich-click typer_app --help\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRichPanels\u003c/strong\u003e API introduced. This replaces the \u0026quot;groups\u0026quot; feature going forward (although groups will continue to be supported).\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e@click.option_panel()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e@click.command_panel()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eIDE tab completion support for decorators\u003c/strong\u003e. Now you should no longer need to guess what goes in \u003ccode\u003e@click.option()\u003c/code\u003e or \u003ccode\u003e@click.command(context_settings=...)\u003c/code\u003e etc.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHelp for arguments:\u003c/strong\u003e \u003ccode\u003ehelp=\u003c/code\u003e is now a valid kwarg for \u003ccode\u003e@click.argument()\u003c/code\u003e decorator. See docs for more information.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSmall changes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u0026quot;Deprecated\u0026quot; text properly handled and stylized in all places.\u003c/li\u003e\n\u003cli\u003eCommand aliases: \u003ccode\u003e@cli.command(aliases=[\u0026quot;foo\u0026quot;])\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eImproved \u003ccode\u003erich-click\u003c/code\u003e CLI usability: improved patching and improved script detection+execution.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003econtext_settings={\u0026quot;help_to_stderr\u0026quot;: True}\u003c/code\u003e support.\u003c/li\u003e\n\u003cli\u003eAdded suite of \u003ccode\u003epadding_*\u003c/code\u003e config options to control padding.\n\u003cul\u003e\n\u003cli\u003eBetter newline handling:\n\u003cul\u003e\n\u003cli\u003eUnordered lists create newlines in help text, e.g. \u003ccode\u003e\u0026quot;\\n- foo\\n- bar\u0026quot;\u003c/code\u003e or \u003ccode\u003e\u0026quot;\\n* foo\\n* bar\u0026quot;\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eNewline control in help text with \u003ccode\u003etext_paragraph_linebreaks\u003c/code\u003e config option.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded a few \u003ccode\u003etext_*\u003c/code\u003e config options, including notably \u003ccode\u003etext_kwargs\u003c/code\u003e which can control code styles in Markdown.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBackend (mostly invisible) changes:\u003c/strong\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/12a50e911c05c6c8c97bfdd48147f999368bc7f5\"\u003e\u003ccode\u003e12a50e9\u003c/code\u003e\u003c/a\u003e Finish testing for 1.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/a2ccfed4946d5a7d677d0b5750617575f9de8c09\"\u003e\u003ccode\u003ea2ccfed\u003c/code\u003e\u003c/a\u003e 1.9.2 (\u003ca href=\"https://redirect.github.com/ewels/rich-click/issues/302\"\u003e#302\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/f041971bbd2ebadcfaed2e66b4e002260bf232eb\"\u003e\u003ccode\u003ef041971\u003c/code\u003e\u003c/a\u003e set date for changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/09b3ece0cf9fefaf98d83b9efd56e27083e6acc5\"\u003e\u003ccode\u003e09b3ece\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ewels/rich-click/issues/296\"\u003e#296\u003c/a\u003e from dwreeves/issue-293\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/164d7c0cb623d1332d43b66dee4fc3b911dd3544\"\u003e\u003ccode\u003e164d7c0\u003c/code\u003e\u003c/a\u003e add 8.3 to tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/c792472a3217d4a371352d1f9567b55287318689\"\u003e\u003ccode\u003ec792472\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ewels/rich-click/issues/295\"\u003e#295\u003c/a\u003e from dwreeves/issue-293\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/2268fc4e197c988f14076a138f797dc564367a47\"\u003e\u003ccode\u003e2268fc4\u003c/code\u003e\u003c/a\u003e fix 8.3 incompatibility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/bb9d72e0104b14629f7101aca01808c07bd5b5b9\"\u003e\u003ccode\u003ebb9d72e\u003c/code\u003e\u003c/a\u003e Generate new screengrabs with rich-codex\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/ff6722289f441cb7c511a2103410b1188a957cbe\"\u003e\u003ccode\u003eff67222\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ewels/rich-click/issues/291\"\u003e#291\u003c/a\u003e from dwreeves/19-extremely-minor-bugfix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/96d7dc02db171b52cec1ac73464a51856fbaecc0\"\u003e\u003ccode\u003e96d7dc0\u003c/code\u003e\u003c/a\u003e update test case\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ewels/rich-click/compare/v1.8.8...v1.9.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `securesystemslib` from 1.3.0 to 1.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/releases\"\u003esecuresystemslib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.3.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/blob/v1.3.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e for details.\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/secure-systems-lab/securesystemslib/blob/main/CHANGELOG.md\"\u003esecuresystemslib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003esecuresystemslib v1.3.1\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAWSSigner: Don't send payload to AWS for signing, send hash only (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1026\"\u003e#1026\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSet Development status classifier to \u0026quot;production/stable\u0026quot; in Python\npackaging (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1030\"\u003e#1030\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternals\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMinor infrastructure changes (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1005\"\u003e#1005\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1013\"\u003e#1013\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/secure-systems-lab/securesystemslib/commit/6f774190b90f0aa9d5d7e077680adbaa29c5cd6c\"\u003e\u003ccode\u003e6f77419\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1030\"\u003e#1030\u003c/a\u003e from jku/release-prep-1.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/b71cc5271a9a7b6898c79c1a12393d90996d5388\"\u003e\u003ccode\u003eb71cc52\u003c/code\u003e\u003c/a\u003e Prepare release 1.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/f6835096a845acf25dc3675105937be2565b9e66\"\u003e\u003ccode\u003ef683509\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1026\"\u003e#1026\u003c/a\u003e from ArkadiuszNitkaSWI/fix-aws-signer\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/97527198c7bf5b75ef9fb8996412df5453995080\"\u003e\u003ccode\u003e9752719\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1027\"\u003e#1027\u003c/a\u003e from secure-systems-lab/dependabot/pip/test-and-lint...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/4226b762bf3333b5947af9cf29ed751afbfd69b9\"\u003e\u003ccode\u003e4226b76\u003c/code\u003e\u003c/a\u003e build(deps): bump the test-and-lint-dependencies group with 4 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/6394e3e467c091a06ee95dad674dec7e991758c8\"\u003e\u003ccode\u003e6394e3e\u003c/code\u003e\u003c/a\u003e Review changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/dee9a831390c9a69c0e66f7c34779e9eea6dcc6d\"\u003e\u003ccode\u003edee9a83\u003c/code\u003e\u003c/a\u003e linter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/07b0fc780d9d1f4c0843ce3e2096e1216814bd06\"\u003e\u003ccode\u003e07b0fc7\u003c/code\u003e\u003c/a\u003e update .gitignore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/e8158a4eb131760714290b9839e3e40f9cd4229c\"\u003e\u003ccode\u003ee8158a4\u003c/code\u003e\u003c/a\u003e Fix AWS signer, allow messages bigger than 4kB\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/e23f855ddecb97d4baddffc068e9591451b9aa72\"\u003e\u003ccode\u003ee23f855\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1023\"\u003e#1023\u003c/a\u003e from secure-systems-lab/dependabot/pip/dependencies-...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/compare/v1.3.0...v1.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.1.8 to 8.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.3.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our \u003ca href=\"https://palletsprojects.com/versions\"\u003eVersion Support Policy\u003c/a\u003e on our website.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.0/\"\u003ehttps://pypi.org/project/click/8.3.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/27\"\u003ehttps://github.com/pallets/click/milestone/27\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: \u003ca href=\"https://redirect.github.com/pallets/click/issues/1992\"\u003e#1992\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2514\"\u003e#2514\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2610\"\u003e#2610\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3024\"\u003e#3024\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2164\"\u003e#2164\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for nargs option in combination with flag option \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2995\"\u003e#2995\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3013\"\u003e#3013\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3023\"\u003e#3023\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in CliRunner.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2939\"\u003e#2939\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.2.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.2.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.2.2/\"\u003ehttps://pypi.org/project/click/8.2.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-2-2\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-2-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/25\"\u003ehttps://github.com/pallets/click/milestone/25\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix reconciliation of \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003etype\u003c/code\u003e parameters for\nflag options, as well as parsing and normalization of environment variables.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/2952\"\u003e#2952\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2956\"\u003e#2956\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typing issue in \u003ccode\u003eBadParameter\u003c/code\u003e and \u003ccode\u003eMissingParameter\u003c/code\u003e exceptions for the\nparameter \u003ccode\u003eparam_hint\u003c/code\u003e that did not allow for a sequence of string where the\nunderlying functino \u003ccode\u003e_join_param_hints\u003c/code\u003e allows for it. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2777\"\u003e#2777\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2990\"\u003e#2990\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse the value of \u003ccode\u003eEnum\u003c/code\u003e choices to render their default value in help\nscreen. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2911\"\u003e#2911\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3004\"\u003e#3004\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix completion for the Z shell (\u003ccode\u003ezsh\u003c/code\u003e) for completion items containing\ncolons. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2703\"\u003e#2703\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2846\"\u003e#2846\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't include envvar in error hint when not configured. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2971\"\u003e#2971\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2972\"\u003e#2972\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.rst\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.3.0\u003c/h2\u003e\n\u003cp\u003eReleased 2025-09-17\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: :issue:\u003ccode\u003e1992\u003c/code\u003e :issue:\u003ccode\u003e2514\u003c/code\u003e :issue:\u003ccode\u003e2610\u003c/code\u003e\n:issue:\u003ccode\u003e3024\u003c/code\u003e :pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. :issue:\u003ccode\u003e2164\u003c/code\u003e\n:pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption :issue:\u003ccode\u003e2813\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. :issue:\u003ccode\u003e2995\u003c/code\u003e :pr:\u003ccode\u003e3013\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e. :pr:\u003ccode\u003e3023\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. :issue:\u003ccode\u003e2447\u003c/code\u003e :pr:\u003ccode\u003e3058\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in CliRunner. :issue:\u003ccode\u003e2939\u003c/code\u003e :pr:\u003ccode\u003e2940\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-07-31\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix reconciliation of \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003etype\u003c/code\u003e parameters for\nflag options, as well as parsing and normalization of environment variables.\n:issue:\u003ccode\u003e2952\u003c/code\u003e :pr:\u003ccode\u003e2956\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix typing issue in \u003ccode\u003eBadParameter\u003c/code\u003e and \u003ccode\u003eMissingParameter\u003c/code\u003e exceptions for the\nparameter \u003ccode\u003eparam_hint\u003c/code\u003e that did not allow for a sequence of string where the\nunderlying function \u003ccode\u003e_join_param_hints\u003c/code\u003e allows for it. :issue:\u003ccode\u003e2777\u003c/code\u003e :pr:\u003ccode\u003e2990\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUse the value of \u003ccode\u003eEnum\u003c/code\u003e choices to render their default value in help\nscreen. Refs :issue:\u003ccode\u003e2911\u003c/code\u003e :pr:\u003ccode\u003e3004\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix completion for the Z shell (\u003ccode\u003ezsh\u003c/code\u003e) for completion items containing\ncolons. :issue:\u003ccode\u003e2703\u003c/code\u003e :pr:\u003ccode\u003e2846\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDon't include envvar in error hint when not configured. :issue:\u003ccode\u003e2971\u003c/code\u003e :pr:\u003ccode\u003e2972\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix a rare race in \u003ccode\u003eclick.testing.StreamMixer\u003c/code\u003e's finalization that manifested\nas a \u003ccode\u003eValueError\u003c/code\u003e on close in a multi-threaded test session.\n:issue:\u003ccode\u003e2993\u003c/code\u003e :pr:\u003ccode\u003e2991\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-20\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/00fadb8904387158ce6e9aa1573be770446895c1\"\u003e\u003ccode\u003e00fadb8\u003c/code\u003e\u003c/a\u003e Release version 8.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/2a0e3ba907927ade6951d5732b775f11b54cb766\"\u003e\u003ccode\u003e2a0e3ba\u003c/code\u003e\u003c/a\u003e testing/CliRunner: Fix regression related to EOF introduced in 262bdf0 (\u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e11a1efc3395e998a1521a0dc35672a799e78d30\"\u003e\u003ccode\u003ee11a1ef\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into fix-cli-runner-prompt-eof-handling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/36deba8a95a2585de1a2aa4475b7f054f52830ac\"\u003e\u003ccode\u003e36deba8\u003c/code\u003e\u003c/a\u003e Forward exception information to resources registered in a context (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/f2cae7ae997cd32311cab3dede4c2b89fe05e191\"\u003e\u003ccode\u003ef2cae7a\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Add summary of PR to changelog for 8.3.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/7c7ec36354f49d1a092cb077fa4881ea4d70ba01\"\u003e\u003ccode\u003e7c7ec36\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Split resource exception handling tests in single and nested\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/92129c552da88ac30b578132031efa4b003ecc46\"\u003e\u003ccode\u003e92129c5\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Added exception forwarding to context tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/555fa9bb37770a6845a98be60b0c84876775552e\"\u003e\u003ccode\u003e555fa9b\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Forward exception data to exit stack when calling \u003ccode\u003e__exit__\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/16fe802a3f96c4c8fa3cd382f1a7577fda0c5321\"\u003e\u003ccode\u003e16fe802\u003c/code\u003e\u003c/a\u003e Add more tests on \u003ccode\u003eEnum\u003c/code\u003e rendering (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/d36de6fc67882f23d7a7d61cd4c0e25e0f88b0ac\"\u003e\u003ccode\u003ed36de6f\u003c/code\u003e\u003c/a\u003e Add more tests on Enum rendering their item's names and not values\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.1.8...8.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `rich` from 14.0.0 to 14.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Textualize/rich/releases\"\u003erich's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eThe Lively Release\u003c/h2\u003e\n\u003cp\u003eLive objects may now be nested. Previously a progress bar inside another progress context would fail. See the changelog below for this and other changes.\u003c/p\u003e\n\u003ch2\u003e[14.1.0] - 2025-06-25\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved \u003ccode\u003etyping_extensions\u003c/code\u003e from runtime dependencies \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3763\"\u003eTextualize/rich#3763\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLive objects (including Progress) may now be nested \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3768\"\u003eTextualize/rich#3768\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded padding property to Syntax which returns a tuple of four integers \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3782\"\u003eTextualize/rich#3782\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed extraction of recursive exceptions \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3772\"\u003eTextualize/rich#3772\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed padding applied to Syntax \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3782\"\u003eTextualize/rich#3782\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003ePanel\u003c/code\u003e title missing the panel background style \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3569\"\u003eTextualize/rich#3569\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eTTY_INTERACTIVE\u003c/code\u003e environment variable to force interactive mode off or on \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3777\"\u003eTextualize/rich#3777\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/Textualize/rich/blob/master/CHANGELOG.md\"\u003erich's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[14.1.0] - 2025-06-25\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved \u003ccode\u003etyping_extensions\u003c/code\u003e from runtime dependencies \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3763\"\u003eTextualize/rich#3763\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLive objects (including Progress) may now be nested \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3768\"\u003eTextualize/rich#3768\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded padding property to Syntax which returns a tuple of four integers \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3782\"\u003eTextualize/rich#3782\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed extraction of recursive exceptions \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3772\"\u003eTextualize/rich#3772\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed padding applied to Syntax \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3782\"\u003eTextualize/rich#3782\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003ePanel\u003c/code\u003e title missing the panel background style \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3569\"\u003eTextualize/rich#3569\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eTTY_INTERACTIVE\u003c/code\u003e environment variable to force interactive mode off or on \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3777\"\u003eTextualize/rich#3777\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/Textualize/rich/commit/2dca1b70359dac61e1bbfb6f14ebe19a5ab79c3d\"\u003e\u003ccode\u003e2dca1b7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3808\"\u003e#3808\u003c/a\u003e from Textualize/bump1410\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/19b6dddd807b887eaaf313174fff3eb2e22cda25\"\u003e\u003ccode\u003e19b6ddd\u003c/code\u003e\u003c/a\u003e version bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/a75a9a9838814cffb68cefe3522fc47c8ddce768\"\u003e\u003ccode\u003ea75a9a9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3807\"\u003e#3807\u003c/a\u003e from Textualize/optimize-options\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/9a08a2d3a983591e2d0d46e4f63558dd8df9e47d\"\u003e\u003ccode\u003e9a08a2d\u003c/code\u003e\u003c/a\u003e optimize size\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/9c9b011187bba772dca57653c9114005b489f005\"\u003e\u003ccode\u003e9c9b011\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3680\"\u003e#3680\u003c/a\u003e from Textualize/willmcgugan-patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/56855a6b81befafa6e978cffed4c1fb389a20df0\"\u003e\u003ccode\u003e56855a6\u003c/code\u003e\u003c/a\u003e Update bug_report.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/fa9ce3ce70c22ea2bb83dbd1f867fe90d1b3f0c5\"\u003e\u003ccode\u003efa9ce3c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3692\"\u003e#3692\u003c/a\u003e from smacke/null-tb-offset-fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/e0c7e96b303e6f3e48818380527129fb21f453f3\"\u003e\u003ccode\u003ee0c7e96\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3783\"\u003e#3783\u003c/a\u003e from Textualize/live-typing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/81b12554b3b15374aa48dae3f6507202bd8fab3e\"\u003e\u003ccode\u003e81b1255\u003c/code\u003e\u003c/a\u003e Self typing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/21b3800894f6a81d3f68a0e34796be67e3ccd39f\"\u003e\u003ccode\u003e21b3800\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3718\"\u003e#3718\u003c/a\u003e from TomJGooding/fix-panel-fix-title-missing-panel-b...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Textualize/rich/compare/v14.0.0...v14.1.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 `dynaconf` from 3.2.10 to 3.2.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dynaconf/dynaconf/releases\"\u003edynaconf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.2.11\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eRelease version 3.2.11\u003c/p\u003e\n\u003cp\u003eShortlog of commits since last release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBruno Rocha (9): \u003ca href=\"https://github.com/rochacbruno\"\u003e\u003ccode\u003e@​rochacbruno\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003efix(cli): handle empty hooks and boolean environments.\u003c/li\u003e\n\u003cli\u003efix: Better way for CLI to find the Django Settings\u003c/li\u003e\n\u003cli\u003efix: windows CI\u003c/li\u003e\n\u003cli\u003efeat: Run CLI as module with \u003ccode\u003epython -m dynaconf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1290\"\u003e#1290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: use sys.argv instead of click.get_os_args (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1292\"\u003e#1292\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: \u003ccode\u003e-k\u003c/code\u003e must exit code 1 when key do not exist (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1293\"\u003e#1293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: envless load file (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1295\"\u003e#1295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: add correct supported python version to 3.2.x\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFabricio Aguiar (1): \u003ca href=\"https://github.com/fao89\"\u003e\u003ccode\u003e@​fao89\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003efix: make raw variables private (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1287\"\u003e#1287\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePedro Brochado (1): \u003ca href=\"https://github.com/pedro-psb\"\u003e\u003ccode\u003e@​pedro-psb\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003edocs: clarification on redis hash title when using custom envvar prefixes (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMilestone \u003ca href=\"https://github.com/dynaconf/dynaconf/milestone/31?closed=1\"\u003ehttps://github.com/dynaconf/dynaconf/milestone/31?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/dynaconf/dynaconf/compare/3.2.10...3.2.11\"\u003ehttps://github.com/dynaconf/dynaconf/compare/3.2.10...3.2.11\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/dynaconf/dynaconf/blob/3.2.11/CHANGELOG.md\"\u003edynaconf's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/releases/tag/3.2.11\"\u003e3.2.11\u003c/a\u003e - 2025-05-06\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd correct supported python version to 3.2.x. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e-k\u003c/code\u003e must exit code 1 when key do not exist (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1293\"\u003e#1293\u003c/a\u003e). \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003euse sys.argv instead of click.get_os_args (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1292\"\u003e#1292\u003c/a\u003e). \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003ewindows CI. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003emake raw variables private (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1287\"\u003e#1287\u003c/a\u003e). \u003cem\u003eBy Fabricio Aguiar\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003eBetter way for CLI to find the Django Settings. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003ehandle empty hooks and boolean environments.. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eenvless load file (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1295\"\u003e#1295\u003c/a\u003e). \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003eRun CLI as module with \u003ccode\u003epython -m dynaconf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1290\"\u003e#1290\u003c/a\u003e). \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eclarification on redis hash title when using custom envvar prefixes (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1273\"\u003e#1273\u003c/a\u003e). \u003cem\u003eBy Pedro Brochado\u003c/em\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/dynaconf/dynaconf/commit/c61da8fd191196c1341bd3d8a8dd895e9cf671ae\"\u003e\u003ccode\u003ec61da8f\u003c/code\u003e\u003c/a\u003e Release version 3.2.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/f8189fb6c130ff4709450e7daebcf1c174aea248\"\u003e\u003ccode\u003ef8189fb\u003c/code\u003e\u003c/a\u003e fix: add correct supported python version to 3.2.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/aeb31b256b436485211466214ba4f5f01a8a8305\"\u003e\u003ccode\u003eaeb31b2\u003c/code\u003e\u003c/a\u003e feat: envless load file (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1295\"\u003e#1295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/4893f4744d2c590069890756ae935059fbc08e2c\"\u003e\u003ccode\u003e4893f47\u003c/code\u003e\u003c/a\u003e fix: \u003ccode\u003e-k\u003c/code\u003e must exit code 1 when key do not exist (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1293\"\u003e#1293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/d55368bb13646b8b7976e641e2df6d4ff2bd7374\"\u003e\u003ccode\u003ed55368b\u003c/code\u003e\u003c/a\u003e fix: use sys.argv instead of click.get_os_args (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1292\"\u003e#1292\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/9a7af916a78c79f23f166b2e1ca077047f1c8cda\"\u003e\u003ccode\u003e9a7af91\u003c/code\u003e\u003c/a\u003e feat: Run CLI as module with \u003ccode\u003epython -m dynaconf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1290\"\u003e#1290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/f772e9fa940d7fd539e1a3d75d3e1902874b8e94\"\u003e\u003ccode\u003ef772e9f\u003c/code\u003e\u003c/a\u003e fix: windows CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/a2460bd65d94ac21a3f5f6d4a0f2ff37982e608f\"\u003e\u003ccode\u003ea2460bd\u003c/code\u003e\u003c/a\u003e fix: make raw variables private (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1287\"\u003e#1287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/da6456e98b78a1bba4c5f0cd8f4cced749ce5861\"\u003e\u003ccode\u003eda6456e\u003c/code\u003e\u003c/a\u003e docs: clarification on redis hash title when using custom envvar prefixes (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1\"\u003e#1\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/e5af61425d279bbbe18a3f83e95dcd0c75f04bd5\"\u003e\u003ccode\u003ee5af614\u003c/code\u003e\u003c/a\u003e fix: Better way for CLI to find the Django Settings\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/dynaconf/dynaconf/compare/3.2.10...3.2.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `isort` from 6.0.1 to 6.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/isort/releases\"\u003eisort's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.1.0\u003c/h2\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate docs discussions channel (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2410\"\u003e#2410\u003c/a\u003e) \u003ca href=\"https://github.com/staticdev\"\u003e\u003ccode\u003e@​staticdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd python 3.14 classifier and badge (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2409\"\u003e#2409\u003c/a\u003e) \u003ca href=\"https://github.com/staticdev\"\u003e\u003ccode\u003e@​staticdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop use of non-standard pkg_resources API (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2405\"\u003e#2405\u003c/a\u003e) \u003ca href=\"https://github.com/dvarrazzo\"\u003e\u003ccode\u003e@​dvarrazzo\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse working isort version in pre-commit example (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2402\"\u003e#2402\u003c/a\u003e) \u003ca href=\"https://github.com/iainelder\"\u003e\u003ccode\u003e@​iainelder\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix typo in _get_files_from_dir_cached test (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2392\"\u003e#2392\u003c/a\u003e) \u003ca href=\"https://github.com/tiltingpenguin\"\u003e\u003ccode\u003e@​tiltingpenguin\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eResolve bandit warnings (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2379\"\u003e#2379\u003c/a\u003e) \u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd tox for cross-platform, parallel test suite execution (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2378\"\u003e#2378\u003c/a\u003e) \u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Project URLs to PyPI Side Panel (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2387\"\u003e#2387\u003c/a\u003e) \u003ca href=\"https://github.com/guillermodotn\"\u003e\u003ccode\u003e@​guillermodotn\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typos (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2376\"\u003e#2376\u003c/a\u003e) \u003ca href=\"https://github.com/co63oc\"\u003e\u003ccode\u003e@​co63oc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:construction_worker: Continuous Integration\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd make bash scripts portable (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2377\"\u003e#2377\u003c/a\u003e) \u003ca href=\"https://github.com/staticdev\"\u003e\u003ccode\u003e@​staticdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:package: Dependencies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 4 to 5 in the github-actions group (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2406\"\u003e#2406\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump astral-sh/setup-uv from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2395\"\u003e#2395\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\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/PyCQA/isort/blob/main/CHANGELOG.md\"\u003eisort's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e6.1.0 October 1 2025\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd python 3.14 classifier and badge (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2409\"\u003e#2409\u003c/a\u003e) \u003ca href=\"https://github.com/staticdev\"\u003e\u003ccode\u003e@​staticdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop use of non-standard pkg_resources API (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2405\"\u003e#2405\u003c/a\u003e) \u003ca href=\"https://github.com/dvarrazzo\"\u003e\u003ccode\u003e@​dvarrazzo\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/PyCQA/isort/commit/ec0efaee4acfce198521e43caa3029b06cedd64a\"\u003e\u003ccode\u003eec0efae\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2410\"\u003e#2410\u003c/a\u003e from PyCQA/docs/discussion\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/8af675ffcbb25dc5b5c2ff52863afc2923a818e2\"\u003e\u003ccode\u003e8af675f\u003c/code\u003e\u003c/a\u003e Update docs discussions channel\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/a03dae897f7e4a2b2eeb01d094b2c112b10ff0b7\"\u003e\u003ccode\u003ea03dae8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2409\"\u003e#2409\u003c/a\u003e from PyCQA/build/py314-classifier\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/2232a26fd15d43ad0fca0e662d311ca4cf0d161e\"\u003e\u003ccode\u003e2232a26\u003c/code\u003e\u003c/a\u003e Add python 3.14 classifier and badge\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/ec48dd7c823bcebf6da93db5eb4921a7808e6bb3\"\u003e\u003ccode\u003eec48dd7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2405\"\u003e#2405\u003c/a\u003e from dvarrazzo/fix/drop-pkg-resources\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/be46cd476d1a61996a6a4469177edf0869df531e\"\u003e\u003ccode\u003ebe46cd4\u003c/code\u003e\u003c/a\u003e refactor: make importlib metadata package import lazy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/18ecd0c3bf0bc7d6eb9bb5b9a72297f172a57663\"\u003e\u003ccode\u003e18ecd0c\u003c/code\u003e\u003c/a\u003e chore: drop branch guarding unsupported Python versions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/1d42e564d9bd1e026e8d635880336dd0528c2c29\"\u003e\u003ccode\u003e1d42e56\u003c/code\u003e\u003c/a\u003e fix: drop use of non-standard pkg_resources API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/0c8fc82fdf1b60065d447f3f7307f01c51d44b01\"\u003e\u003ccode\u003e0c8fc82\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2406\"\u003e#2406\u003c/a\u003e from PyCQA/dependabot/github_actions/github-actions-...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/3478763347707341e3ce729008acc9cf73a0ff35\"\u003e\u003ccode\u003e3478763\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 in the github-actions group\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PyCQA/isort/compare/6.0.1...6.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlalchemy` from 2.0.40 to 2.0.43\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/releases\"\u003esqlalchemy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.0.43\u003c/h1\u003e\n\u003cp\u003eReleased: August 11, 2025\u003c/p\u003e\n\u003ch2\u003eorm\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed issue where using the \u003ccode\u003epost_update\u003c/code\u003e feature would apply incorrect\n\u0026quot;pre-fetched\u0026quot; values to the ORM objects after a multi-row UPDATE process\ncompleted.  These \u0026quot;pre-fetched\u0026quot; values would come from any column that had\nan \u003ccode\u003eColumn.onupdate\u003c/code\u003e callable or a version id generator used by\n\u003ccode\u003eorm.Mapper.version_id_generator\u003c/code\u003e; for a version id generator\nthat delivered random identifiers like timestamps or UUIDs, this incorrect\ndata would lead to a DELETE statement against those same rows to fail in\nthe next step.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12748\"\u003e#12748\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003e_orm.mapped_column.use_existing_column\u003c/code\u003e\nparameter in \u003ccode\u003e_orm.mapped_column()\u003c/code\u003e would not work when the\n\u003ccode\u003e_orm.mapped_column()\u003c/code\u003e is used inside of an \u003ccode\u003eAnnotated\u003c/code\u003e type alias in\npolymorphic inheritance scenarios. The parameter is now properly recognized\nand processed during declarative mapping configuration.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12787\"\u003e#12787\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Improved the implementation of the \u003ccode\u003e_orm.selectin_polymorphic()\u003c/code\u003e\ninheritance loader strategy to properly render the IN expressions using\nchunks of 500 records each, in the same manner as that of the\n\u003ccode\u003e_orm.selectinload()\u003c/code\u003e relationship loader strategy.  Previously, the IN\nexpression would be arbitrarily large, leading to failures on databases\nthat have limits on the size of IN expressions including Oracle Database.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12790\"\u003e#12790\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eengine\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[engine] [usecase]\u003c/strong\u003e Added new parameter \u003ccode\u003ecreate_engine.skip_autocommit_rollback\u003c/code\u003e\nwhich provides for a per-dialect feature of preventing the DBAPI\n\u003ccode\u003e.rollback()\u003c/code\u003e from being called under any circumstances, if the\nconnection is detected as being in \u0026quot;autocommit\u0026quot; mode.   This improves upon\na critical performance issue identified in MySQL dialects where the network\noverhead of the \u003ccode\u003e.rollback()\u003c/code\u003e call remains prohibitive even if autocommit\nmode is set.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12784\"\u003e#12784\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epostgresql\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\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `beaupy` 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/petereon/beaupy/releases\"\u003ebeaupy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.10.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): update dependency flake8 to v7.1.1 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/129\"\u003epetereon/beaupy#129\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency isort to v5.13.2 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/130\"\u003epetereon/beaupy#130\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency mypy to v1.14.1 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/131\"\u003epetereon/beaupy#131\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: adding documentation for global config by \u003ca href=\"https://github.com/petereon\"\u003e\u003ccode\u003e@​petereon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/148\"\u003epetereon/beaupy#148\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency pytest to v8.4.2 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/147\"\u003epetereon/beaupy#147\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency black to v25 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/144\"\u003epetereon/beaupy#144\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency pydoc-markdown to v4.8.2 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/132\"\u003epetereon/beaupy#132\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/petereon/beaupy/compare/v3.10.1...v3.10.2\"\u003ehttps://github.com/petereon/beaupy/compare/v3.10.1...v3.10.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/a2dc15764508c0451ed4dc386f3b0761fe7a9ce2\"\u003e\u003ccode\u003ea2dc157\u003c/code\u003e\u003c/a\u003e chore: bump version from 3.10.1 to 3.10.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/7599e5a43be6893c81612314f410ffa602a15f57\"\u003e\u003ccode\u003e7599e5a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/132\"\u003e#132\u003c/a\u003e from petereon/renovate/pydoc-markdown-4.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/6b2bb33d4fef6f2a607e1f42c873bd92ffc2b0d5\"\u003e\u003ccode\u003e6b2bb33\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency pydoc-markdown to v4.8.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/d2b0cbc3bb6b191816fdef9319a150e9b305ae7f\"\u003e\u003ccode\u003ed2b0cbc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/144\"\u003e#144\u003c/a\u003e from petereon/renovate/black-25.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/926fb4e8773f587417e7a3f453af1641364888e5\"\u003e\u003ccode\u003e926fb4e\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency black to v25\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/df126efc542641c8f7385f8087a19a95ee1615b7\"\u003e\u003ccode\u003edf126ef\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/147\"\u003e#147\u003c/a\u003e from petereon/renovate/pytest-8.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/0eb77250022a166836a4594a489d9c178591234b\"\u003e\u003ccode\u003e0eb7725\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency pytest to v8.4.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/7b9234631ce3510e433fbb59d4c0e829d70fd569\"\u003e\u003ccode\u003e7b92346\u003c/code\u003e\u003c/a\u003e chore: linting code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/531e870193a7cb26ab43370a45d8562cb44d8b15\"\u003e\u003ccode\u003e531e870\u003c/code\u003e\u003c/a\u003e chore: fix weird types\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/dfd9dbc54327c19455197566f7161de08ad3180b\"\u003e\u003ccode\u003edfd9dbc\u003c/code\u003e\u003c/a\u003e docs: adding documentation for global config (\u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/148\"\u003e#148\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/petereon/beaupy/compare/v3.10.1...v3.10.2\"\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.2 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/sigstore/sigstore-python/releases\"\u003esigstore's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003cli\u003etrust: Update embedded TUF root\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1515\"\u003e#1515\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etrust (API): TrustConfig now provides the \u003ccode\u003eproduction()\u003c/code\u003eand \u003ccode\u003estaging()\u003c/code\u003e helpers. Similar methods were removed from\nSigningConfig, TrustedRoot, SigningContext and Issuer. Use TrustConfig everywhere in code base.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1363\"\u003e#1363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etrust (API): support SigningConfig v0.2, remove support for v0.1. The new format now fully defines the\nsigstore instance the client uses. \u003ccode\u003eSigningConfig\u003c/code\u003e class now has methods to return actual clients\n(like RekorClient) instead of just URLs for that sigstore instance. The \u003ccode\u003e--trust-config\u003c/code\u003e cli option now\nexpects the trust config to contain a v0.2 SigningConfig.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1358\"\u003e#1358\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1407\"\u003e#1407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etrust: Support ed25519 keys in trusted root\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1377\"\u003e#1377\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003erekor: resolve circular import of LogEntry\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1458\"\u003e#1458\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erekor: Fix checkpoint signature lookup when there are multiple signatures\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1514\"\u003e#1514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erekor: Fix entry handling so inclusion promise is optional\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1382\"\u003e#1382\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.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\u003cli\u003etrust: Update embedded TUF root\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1515\"\u003e#1515\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etrust (API): TrustConfig now provides the \u003ccode\u003eproduction()\u003c/code\u003eand \u003ccode\u003estaging()\u003c/code\u003e helpers. Similar methods were removed from\nSigningConfig, TrustedRoot, SigningContext and Issuer. Use TrustConfig everywhere in code base.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1363\"\u003e#1363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etrust (API): support SigningConfig v0.2, remove support for v0.1. The new format now fully defines the\nsigstore instance the client uses. \u003ccode\u003eSigningConfig\u003c/code\u003e class now has methods to return actual clients\n(like RekorClient) instead of just URLs for that sigstore instance. The \u003ccode\u003e--trust-config\u003c/code\u003e cli option now\nexpects the trust config to contain a v0.2 SigningConfig.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1358\"\u003e#1358\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1407\"\u003e#1407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etrust: Support ed25519 keys in trusted root\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1377\"\u003e#1377\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003erekor: resolve circular import of LogEntry\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1458\"\u003e#1458\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erekor: Fix checkpoint signature lookup when there are multiple signatures\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1514\"\u003e#1514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erekor: Fix entry handling so inclusion promise is optional\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1382\"\u003e#1382\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/sigstore/sigstore-python/commit/7a9551fe2efd45eb12cb873cfb8857427e33eb5a\"\u003e\u003ccode\u003e7a9551f\u003c/code\u003e\u003c/a\u003e Prepare 4.0.0 release (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1541\"\u003e#1541\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/83feb3d934570174cb7b56bdbfa10d214b3f66f5\"\u003e\u003ccode\u003e83feb3d\u003c/code\u003e\u003c/a\u003e build(deps): bump pyopenssl from 25.2.0 to 25.3.0 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1543\"\u003e#1543\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/3b5632f642a86272faf6121b8ba4d180bbdd99d3\"\u003e\u003ccode\u003e3b5632f\u003c/code\u003e\u003c/a\u003e build(deps): bump cryptography from 45.0.7 to 46.0.1 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1544\"\u003e#1544\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/365af7bcb3668cc0aa4dd3b07b1f3234beffa1ed\"\u003e\u003ccode\u003e365af7b\u003c/code\u003e\u003c/a\u003e build(deps): bump pyopenssl from 25.1.0 to 25.2.0 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1542\"\u003e#1542\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/5fac47707fe60329b2860fe85bf73d2ebffdb5c6\"\u003e\u003ccode\u003e5fac477\u003c/code\u003e\u003c/a\u003e build(deps): update ruff requirement from \u0026lt;0.12.13 to \u0026lt;0.13.1 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1539\"\u003e#1539\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/2265c11592522514bc7989abebd1d09ecc4ba5b7\"\u003e\u003ccode\u003e2265c11\u003c/code\u003e\u003c/a\u003e build(deps): bump github/codeql-action in the actions group (\u003ca h...\n\n_Description has been truncated_","html_url":"https://github.com/repository-service-tuf/repository-service-tuf-cli/pull/910","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/repository-service-tuf%2Frepository-service-tuf-cli/issues/910","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/910/packages"}},{"old_version":"3.6.2","new_version":"4.0.0","update_type":"major","path":null,"pr_created_at":"2025-10-07T10:41:41.000Z","version_change":"3.6.2 → 4.0.0","issue":{"uuid":"2893507894","node_id":"PR_kwDOINe-us6sd202","number":108,"state":"open","title":"build(deps): bump the pipenv group across 1 directory with 31 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":0,"pull_request":true,"closed_at":null,"author_association":"NONE","state_reason":null,"created_at":"2025-10-07T10:41:41.000Z","updated_at":"2025-10-07T10:41:42.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"pipenv","update_count":31,"packages":[{"name":"rich-click","old_version":"1.8.8","new_version":"1.9.2","repository_url":"https://github.com/ewels/rich-click"},{"name":"securesystemslib","old_version":"1.3.0","new_version":"1.3.1","repository_url":"https://github.com/secure-systems-lab/securesystemslib"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"dynaconf","old_version":"3.2.10","new_version":"3.2.11","repository_url":"https://github.com/dynaconf/dynaconf"},{"name":"isort","old_version":"6.0.1","new_version":"6.1.0","repository_url":"https://github.com/PyCQA/isort"},{"name":"sqlalchemy","old_version":"2.0.40","new_version":"2.0.43","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"beaupy","old_version":"3.10.1","new_version":"3.10.2","repository_url":"https://github.com/petereon/beaupy"},{"name":"sigstore","old_version":"3.6.2","new_version":"4.0.0","repository_url":"https://github.com/sigstore/sigstore-python"},{"name":"boto3","old_version":"1.38.5","new_version":"1.40.46","repository_url":"https://github.com/boto/boto3"},{"name":"google-cloud-kms","old_version":"3.4.1","new_version":"3.6.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"azure-keyvault-keys","old_version":"4.10.0","new_version":"4.11.0","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"prompt-toolkit","old_version":"3.0.51","new_version":"3.0.52","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"setuptools","old_version":"80.0.1","new_version":"80.9.0","repository_url":"https://github.com/pypa/setuptools"},{"name":"pykcs11","old_version":"1.5.17","new_version":"1.5.18","repository_url":"https://github.com/LudovicRousseau/PyKCS11"},{"name":"exceptiongroup","old_version":"1.2.2","new_version":"1.3.0","repository_url":"https://github.com/agronholm/exceptiongroup"},{"name":"black","old_version":"25.1.0","new_version":"25.9.0","repository_url":"https://github.com/psf/black"},{"name":"flake8","old_version":"7.2.0","new_version":"7.3.0","repository_url":"https://github.com/pycqa/flake8"},{"name":"tox","old_version":"4.25.0","new_version":"4.30.3","repository_url":"https://github.com/tox-dev/tox"},{"name":"pytest","old_version":"8.3.5","new_version":"8.4.2","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"6.1.1","new_version":"7.0.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pytest-xdist","old_version":"3.6.1","new_version":"3.8.0","repository_url":"https://github.com/pytest-dev/pytest-xdist"},{"name":"mypy","old_version":"1.15.0","new_version":"1.18.2","repository_url":"https://github.com/python/mypy"},{"name":"pip","old_version":"25.1","new_version":"25.2","repository_url":"https://github.com/pypa/pip"},{"name":"sphinxcontrib-plantuml","old_version":"0.30","new_version":"0.31","repository_url":"https://github.com/sphinx-contrib/plantuml"},{"name":"build","old_version":"1.2.2.post1","new_version":"1.3.0","repository_url":"https://github.com/pypa/build"},{"name":"pre-commit","old_version":"4.2.0","new_version":"4.3.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"bandit","old_version":"1.8.3","new_version":"1.8.6","repository_url":"https://github.com/PyCQA/bandit"},{"name":"types-requests","old_version":"2.32.0.20250328","new_version":"2.32.4.20250913","repository_url":"https://github.com/typeshed-internal/stub_uploader"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pipenv group with 28 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [rich-click](https://github.com/ewels/rich-click) | `1.8.8` | `1.9.2` |\n| [securesystemslib](https://github.com/secure-systems-lab/securesystemslib) | `1.3.0` | `1.3.1` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [dynaconf](https://github.com/dynaconf/dynaconf) | `3.2.10` | `3.2.11` |\n| [isort](https://github.com/PyCQA/isort) | `6.0.1` | `6.1.0` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.40` | `2.0.43` |\n| [beaupy](https://github.com/petereon/beaupy) | `3.10.1` | `3.10.2` |\n| [sigstore](https://github.com/sigstore/sigstore-python) | `3.6.2` | `4.0.0` |\n| [boto3](https://github.com/boto/boto3) | `1.38.5` | `1.40.46` |\n| [google-cloud-kms](https://github.com/googleapis/google-cloud-python) | `3.4.1` | `3.6.0` |\n| [azure-keyvault-keys](https://github.com/Azure/azure-sdk-for-python) | `4.10.0` | `4.11.0` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.51` | `3.0.52` |\n| [setuptools](https://github.com/pypa/setuptools) | `80.0.1` | `80.9.0` |\n| [pykcs11](https://github.com/LudovicRousseau/PyKCS11) | `1.5.17` | `1.5.18` |\n| [exceptiongroup](https://github.com/agronholm/exceptiongroup) | `1.2.2` | `1.3.0` |\n| [black](https://github.com/psf/black) | `25.1.0` | `25.9.0` |\n| [flake8](https://github.com/pycqa/flake8) | `7.2.0` | `7.3.0` |\n| [tox](https://github.com/tox-dev/tox) | `4.25.0` | `4.30.3` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.3.5` | `8.4.2` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `6.1.1` | `7.0.0` |\n| [pytest-xdist](https://github.com/pytest-dev/pytest-xdist) | `3.6.1` | `3.8.0` |\n| [mypy](https://github.com/python/mypy) | `1.15.0` | `1.18.2` |\n| [pip](https://github.com/pypa/pip) | `25.1` | `25.2` |\n| [sphinxcontrib-plantuml](https://github.com/sphinx-contrib/plantuml) | `0.30` | `0.31` |\n| [build](https://github.com/pypa/build) | `1.2.2.post1` | `1.3.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.2.0` | `4.3.0` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.8.3` | `1.8.6` |\n| [types-requests](https://github.com/typeshed-internal/stub_uploader) | `2.32.0.20250328` | `2.32.4.20250913` |\n\n\nUpdates `rich-click` from 1.8.8 to 1.9.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ewels/rich-click/releases\"\u003erich-click's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.9.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed legacy Windows rendering\u003c/li\u003e\n\u003cli\u003eFix issue with parent \u003ccode\u003eclick.Group\u003c/code\u003e and child \u003ccode\u003erich_click.RichCommand\u003c/code\u003e error formatter not resolving.\u003c/li\u003e\n\u003cli\u003eAdd headers to tables (by default these are not shown).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.2.dev0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed legacy windows rendering\u003c/li\u003e\n\u003cli\u003eFix issue with parent \u003ccode\u003eclick.Group\u003c/code\u003e and child \u003ccode\u003erich_click.RichCommand\u003c/code\u003e error formatter not resolving.\u003c/li\u003e\n\u003cli\u003eAdd headers to tables (by default these are not shown).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed bug where running the \u003ccode\u003erich-click\u003c/code\u003e CLI on a \u003ccode\u003e@rich_click.argument()\u003c/code\u003e sometimes caused arguments show up in the option panel when it shouldn't.\u003c/li\u003e\n\u003cli\u003eSlightly reduced horizontal padding of the \u003ccode\u003emodern\u003c/code\u003e theme format.\u003c/li\u003e\n\u003cli\u003eFixed Click 8.3 compatibility with rendering defaults in help text.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.0\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\nVersion 1.9.0 deprecates support for a lot of old versions of things:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ePython 3.7 support is removed.\u003c/strong\u003e The minimum supported Python version is 3.8.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eClick 7 support is removed.\u003c/strong\u003e The minimum supported Click version is 8.0.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRich 10 and 11 support is removed.\u003c/strong\u003e The minimum supported Rich version is 12.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\nVersion 1.9.0 introduces a minor breaking change:\nThe \u003ccode\u003eDEFAULT_STRING\u003c/code\u003e, \u003ccode\u003eENVVAR_STRING\u003c/code\u003e, \u003ccode\u003eREQUIRED_STRING\u003c/code\u003e, and \u003ccode\u003eDEPRECATED_STRING\u003c/code\u003e config options are now rendered with \u003ccode\u003eText.from_markup\u003c/code\u003e.\nSo for example, \u003ccode\u003eREQUIRED_STRING = \u0026quot;[required]\u0026quot;\u003c/code\u003e would be rendered as Rich markup.\nYou must now escape the rich markup: \u003ccode\u003eREQUIRED_STRING = \u0026quot;\\\\[required]\u0026quot;\u003c/code\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003eBig changes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eThemes!\u003c/strong\u003e Check them out with \u003ccode\u003erich-click --themes\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTyper support:\u003c/strong\u003e \u003ccode\u003erich-click typer_app --help\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRichPanels\u003c/strong\u003e API introduced. This replaces the \u0026quot;groups\u0026quot; feature going forward (although groups will continue to be supported).\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e@click.option_panel()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e@click.command_panel()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eIDE tab completion support for decorators\u003c/strong\u003e. Now you should no longer need to guess what goes in \u003ccode\u003e@click.option()\u003c/code\u003e or \u003ccode\u003e@click.command(context_settings=...)\u003c/code\u003e etc.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHelp for arguments:\u003c/strong\u003e \u003ccode\u003ehelp=\u003c/code\u003e is now a valid kwarg for \u003ccode\u003e@click.argument()\u003c/code\u003e decorator. See docs for more information.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSmall changes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u0026quot;Deprecated\u0026quot; text properly handled and stylized in all places.\u003c/li\u003e\n\u003cli\u003eCommand aliases: \u003ccode\u003e@cli.command(aliases=[\u0026quot;foo\u0026quot;])\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eImproved \u003ccode\u003erich-click\u003c/code\u003e CLI usability: improved patching and improved script detection+execution.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003econtext_settings={\u0026quot;help_to_stderr\u0026quot;: True}\u003c/code\u003e support.\u003c/li\u003e\n\u003cli\u003eAdded suite of \u003ccode\u003epadding_*\u003c/code\u003e config options to control padding.\n\u003cul\u003e\n\u003cli\u003eBetter newline handling:\n\u003cul\u003e\n\u003cli\u003eUnordered lists create newlines in help text, e.g. \u003ccode\u003e\u0026quot;\\n- foo\\n- bar\u0026quot;\u003c/code\u003e or \u003ccode\u003e\u0026quot;\\n* foo\\n* bar\u0026quot;\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eNewline control in help text with \u003ccode\u003etext_paragraph_linebreaks\u003c/code\u003e config option.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded a few \u003ccode\u003etext_*\u003c/code\u003e config options, including notably \u003ccode\u003etext_kwargs\u003c/code\u003e which can control code styles in Markdown.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- 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/ewels/rich-click/blob/main/CHANGELOG.md\"\u003erich-click's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.9.2 (2025-10-04)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed legacy windows rendering\u003c/li\u003e\n\u003cli\u003eFix issue with parent \u003ccode\u003eclick.Group\u003c/code\u003e and child \u003ccode\u003erich_click.RichCommand\u003c/code\u003e error formatter not resolving.\u003c/li\u003e\n\u003cli\u003eAdd headers to tables (by default these are not shown).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.9.1 (2025-09-20)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed bug where running the \u003ccode\u003erich-click\u003c/code\u003e CLI on a \u003ccode\u003e@rich_click.argument()\u003c/code\u003e sometimes caused arguments show up in the option panel when it shouldn't.\u003c/li\u003e\n\u003cli\u003eSlightly reduced horizontal padding of the \u003ccode\u003emodern\u003c/code\u003e theme format.\u003c/li\u003e\n\u003cli\u003eFixed Click 8.3 compatibility with rendering defaults in help text.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.9.0 (2025-09-16)\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\nVersion 1.9.0 deprecates support for a lot of old versions of things:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ePython 3.7 support is removed.\u003c/strong\u003e The minimum supported Python version is 3.8.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eClick 7 support is removed.\u003c/strong\u003e The minimum supported Click version is 8.0.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRich 10 and 11 support is removed.\u003c/strong\u003e The minimum supported Rich version is 12.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\nVersion 1.9.0 introduces a minor breaking change:\nThe \u003ccode\u003eDEFAULT_STRING\u003c/code\u003e, \u003ccode\u003eENVVAR_STRING\u003c/code\u003e, \u003ccode\u003eREQUIRED_STRING\u003c/code\u003e, and \u003ccode\u003eDEPRECATED_STRING\u003c/code\u003e config options are now rendered with \u003ccode\u003eText.from_markup\u003c/code\u003e.\nSo for example, \u003ccode\u003eREQUIRED_STRING = \u0026quot;[required]\u0026quot;\u003c/code\u003e would be rendered as Rich markup.\nYou must now escape the rich markup: \u003ccode\u003eREQUIRED_STRING = \u0026quot;\\\\[required]\u0026quot;\u003c/code\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003eBig changes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eThemes!\u003c/strong\u003e Check them out with \u003ccode\u003erich-click --themes\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTyper support:\u003c/strong\u003e \u003ccode\u003erich-click typer_app --help\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRichPanels\u003c/strong\u003e API introduced. This replaces the \u0026quot;groups\u0026quot; feature going forward (although groups will continue to be supported).\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e@click.option_panel()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e@click.command_panel()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eIDE tab completion support for decorators\u003c/strong\u003e. Now you should no longer need to guess what goes in \u003ccode\u003e@click.option()\u003c/code\u003e or \u003ccode\u003e@click.command(context_settings=...)\u003c/code\u003e etc.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHelp for arguments:\u003c/strong\u003e \u003ccode\u003ehelp=\u003c/code\u003e is now a valid kwarg for \u003ccode\u003e@click.argument()\u003c/code\u003e decorator. See docs for more information.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSmall changes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u0026quot;Deprecated\u0026quot; text properly handled and stylized in all places.\u003c/li\u003e\n\u003cli\u003eCommand aliases: \u003ccode\u003e@cli.command(aliases=[\u0026quot;foo\u0026quot;])\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eImproved \u003ccode\u003erich-click\u003c/code\u003e CLI usability: improved patching and improved script detection+execution.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003econtext_settings={\u0026quot;help_to_stderr\u0026quot;: True}\u003c/code\u003e support.\u003c/li\u003e\n\u003cli\u003eAdded suite of \u003ccode\u003epadding_*\u003c/code\u003e config options to control padding.\n\u003cul\u003e\n\u003cli\u003eBetter newline handling:\n\u003cul\u003e\n\u003cli\u003eUnordered lists create newlines in help text, e.g. \u003ccode\u003e\u0026quot;\\n- foo\\n- bar\u0026quot;\u003c/code\u003e or \u003ccode\u003e\u0026quot;\\n* foo\\n* bar\u0026quot;\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eNewline control in help text with \u003ccode\u003etext_paragraph_linebreaks\u003c/code\u003e config option.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded a few \u003ccode\u003etext_*\u003c/code\u003e config options, including notably \u003ccode\u003etext_kwargs\u003c/code\u003e which can control code styles in Markdown.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBackend (mostly invisible) changes:\u003c/strong\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/12a50e911c05c6c8c97bfdd48147f999368bc7f5\"\u003e\u003ccode\u003e12a50e9\u003c/code\u003e\u003c/a\u003e Finish testing for 1.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/a2ccfed4946d5a7d677d0b5750617575f9de8c09\"\u003e\u003ccode\u003ea2ccfed\u003c/code\u003e\u003c/a\u003e 1.9.2 (\u003ca href=\"https://redirect.github.com/ewels/rich-click/issues/302\"\u003e#302\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/f041971bbd2ebadcfaed2e66b4e002260bf232eb\"\u003e\u003ccode\u003ef041971\u003c/code\u003e\u003c/a\u003e set date for changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/09b3ece0cf9fefaf98d83b9efd56e27083e6acc5\"\u003e\u003ccode\u003e09b3ece\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ewels/rich-click/issues/296\"\u003e#296\u003c/a\u003e from dwreeves/issue-293\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/164d7c0cb623d1332d43b66dee4fc3b911dd3544\"\u003e\u003ccode\u003e164d7c0\u003c/code\u003e\u003c/a\u003e add 8.3 to tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/c792472a3217d4a371352d1f9567b55287318689\"\u003e\u003ccode\u003ec792472\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ewels/rich-click/issues/295\"\u003e#295\u003c/a\u003e from dwreeves/issue-293\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/2268fc4e197c988f14076a138f797dc564367a47\"\u003e\u003ccode\u003e2268fc4\u003c/code\u003e\u003c/a\u003e fix 8.3 incompatibility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/bb9d72e0104b14629f7101aca01808c07bd5b5b9\"\u003e\u003ccode\u003ebb9d72e\u003c/code\u003e\u003c/a\u003e Generate new screengrabs with rich-codex\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/ff6722289f441cb7c511a2103410b1188a957cbe\"\u003e\u003ccode\u003eff67222\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ewels/rich-click/issues/291\"\u003e#291\u003c/a\u003e from dwreeves/19-extremely-minor-bugfix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewels/rich-click/commit/96d7dc02db171b52cec1ac73464a51856fbaecc0\"\u003e\u003ccode\u003e96d7dc0\u003c/code\u003e\u003c/a\u003e update test case\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ewels/rich-click/compare/v1.8.8...v1.9.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `securesystemslib` from 1.3.0 to 1.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/releases\"\u003esecuresystemslib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.3.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/blob/v1.3.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e for details.\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/secure-systems-lab/securesystemslib/blob/main/CHANGELOG.md\"\u003esecuresystemslib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003esecuresystemslib v1.3.1\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAWSSigner: Don't send payload to AWS for signing, send hash only (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1026\"\u003e#1026\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSet Development status classifier to \u0026quot;production/stable\u0026quot; in Python\npackaging (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1030\"\u003e#1030\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternals\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMinor infrastructure changes (\u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1005\"\u003e#1005\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1013\"\u003e#1013\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/secure-systems-lab/securesystemslib/commit/6f774190b90f0aa9d5d7e077680adbaa29c5cd6c\"\u003e\u003ccode\u003e6f77419\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1030\"\u003e#1030\u003c/a\u003e from jku/release-prep-1.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/b71cc5271a9a7b6898c79c1a12393d90996d5388\"\u003e\u003ccode\u003eb71cc52\u003c/code\u003e\u003c/a\u003e Prepare release 1.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/f6835096a845acf25dc3675105937be2565b9e66\"\u003e\u003ccode\u003ef683509\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1026\"\u003e#1026\u003c/a\u003e from ArkadiuszNitkaSWI/fix-aws-signer\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/97527198c7bf5b75ef9fb8996412df5453995080\"\u003e\u003ccode\u003e9752719\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1027\"\u003e#1027\u003c/a\u003e from secure-systems-lab/dependabot/pip/test-and-lint...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/4226b762bf3333b5947af9cf29ed751afbfd69b9\"\u003e\u003ccode\u003e4226b76\u003c/code\u003e\u003c/a\u003e build(deps): bump the test-and-lint-dependencies group with 4 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/6394e3e467c091a06ee95dad674dec7e991758c8\"\u003e\u003ccode\u003e6394e3e\u003c/code\u003e\u003c/a\u003e Review changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/dee9a831390c9a69c0e66f7c34779e9eea6dcc6d\"\u003e\u003ccode\u003edee9a83\u003c/code\u003e\u003c/a\u003e linter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/07b0fc780d9d1f4c0843ce3e2096e1216814bd06\"\u003e\u003ccode\u003e07b0fc7\u003c/code\u003e\u003c/a\u003e update .gitignore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/e8158a4eb131760714290b9839e3e40f9cd4229c\"\u003e\u003ccode\u003ee8158a4\u003c/code\u003e\u003c/a\u003e Fix AWS signer, allow messages bigger than 4kB\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/commit/e23f855ddecb97d4baddffc068e9591451b9aa72\"\u003e\u003ccode\u003ee23f855\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/secure-systems-lab/securesystemslib/issues/1023\"\u003e#1023\u003c/a\u003e from secure-systems-lab/dependabot/pip/dependencies-...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/secure-systems-lab/securesystemslib/compare/v1.3.0...v1.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.1.8 to 8.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.3.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our \u003ca href=\"https://palletsprojects.com/versions\"\u003eVersion Support Policy\u003c/a\u003e on our website.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.0/\"\u003ehttps://pypi.org/project/click/8.3.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/27\"\u003ehttps://github.com/pallets/click/milestone/27\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: \u003ca href=\"https://redirect.github.com/pallets/click/issues/1992\"\u003e#1992\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2514\"\u003e#2514\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2610\"\u003e#2610\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3024\"\u003e#3024\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2164\"\u003e#2164\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for nargs option in combination with flag option \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2995\"\u003e#2995\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3013\"\u003e#3013\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3023\"\u003e#3023\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in CliRunner.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2939\"\u003e#2939\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.2.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.2.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.2.2/\"\u003ehttps://pypi.org/project/click/8.2.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-2-2\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-2-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/25\"\u003ehttps://github.com/pallets/click/milestone/25\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix reconciliation of \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003etype\u003c/code\u003e parameters for\nflag options, as well as parsing and normalization of environment variables.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/2952\"\u003e#2952\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2956\"\u003e#2956\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typing issue in \u003ccode\u003eBadParameter\u003c/code\u003e and \u003ccode\u003eMissingParameter\u003c/code\u003e exceptions for the\nparameter \u003ccode\u003eparam_hint\u003c/code\u003e that did not allow for a sequence of string where the\nunderlying functino \u003ccode\u003e_join_param_hints\u003c/code\u003e allows for it. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2777\"\u003e#2777\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2990\"\u003e#2990\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse the value of \u003ccode\u003eEnum\u003c/code\u003e choices to render their default value in help\nscreen. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2911\"\u003e#2911\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3004\"\u003e#3004\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix completion for the Z shell (\u003ccode\u003ezsh\u003c/code\u003e) for completion items containing\ncolons. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2703\"\u003e#2703\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2846\"\u003e#2846\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't include envvar in error hint when not configured. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2971\"\u003e#2971\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2972\"\u003e#2972\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.rst\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.3.0\u003c/h2\u003e\n\u003cp\u003eReleased 2025-09-17\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: :issue:\u003ccode\u003e1992\u003c/code\u003e :issue:\u003ccode\u003e2514\u003c/code\u003e :issue:\u003ccode\u003e2610\u003c/code\u003e\n:issue:\u003ccode\u003e3024\u003c/code\u003e :pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. :issue:\u003ccode\u003e2164\u003c/code\u003e\n:pr:\u003ccode\u003e3030\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption :issue:\u003ccode\u003e2813\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. :issue:\u003ccode\u003e2995\u003c/code\u003e :pr:\u003ccode\u003e3013\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e. :pr:\u003ccode\u003e3023\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. :issue:\u003ccode\u003e2447\u003c/code\u003e :pr:\u003ccode\u003e3058\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in CliRunner. :issue:\u003ccode\u003e2939\u003c/code\u003e :pr:\u003ccode\u003e2940\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.2\u003c/h2\u003e\n\u003cp\u003eReleased 2025-07-31\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix reconciliation of \u003ccode\u003edefault\u003c/code\u003e, \u003ccode\u003eflag_value\u003c/code\u003e and \u003ccode\u003etype\u003c/code\u003e parameters for\nflag options, as well as parsing and normalization of environment variables.\n:issue:\u003ccode\u003e2952\u003c/code\u003e :pr:\u003ccode\u003e2956\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix typing issue in \u003ccode\u003eBadParameter\u003c/code\u003e and \u003ccode\u003eMissingParameter\u003c/code\u003e exceptions for the\nparameter \u003ccode\u003eparam_hint\u003c/code\u003e that did not allow for a sequence of string where the\nunderlying function \u003ccode\u003e_join_param_hints\u003c/code\u003e allows for it. :issue:\u003ccode\u003e2777\u003c/code\u003e :pr:\u003ccode\u003e2990\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUse the value of \u003ccode\u003eEnum\u003c/code\u003e choices to render their default value in help\nscreen. Refs :issue:\u003ccode\u003e2911\u003c/code\u003e :pr:\u003ccode\u003e3004\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix completion for the Z shell (\u003ccode\u003ezsh\u003c/code\u003e) for completion items containing\ncolons. :issue:\u003ccode\u003e2703\u003c/code\u003e :pr:\u003ccode\u003e2846\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDon't include envvar in error hint when not configured. :issue:\u003ccode\u003e2971\u003c/code\u003e :pr:\u003ccode\u003e2972\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix a rare race in \u003ccode\u003eclick.testing.StreamMixer\u003c/code\u003e's finalization that manifested\nas a \u003ccode\u003eValueError\u003c/code\u003e on close in a multi-threaded test session.\n:issue:\u003ccode\u003e2993\u003c/code\u003e :pr:\u003ccode\u003e2991\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.2.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-05-20\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/00fadb8904387158ce6e9aa1573be770446895c1\"\u003e\u003ccode\u003e00fadb8\u003c/code\u003e\u003c/a\u003e Release version 8.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/2a0e3ba907927ade6951d5732b775f11b54cb766\"\u003e\u003ccode\u003e2a0e3ba\u003c/code\u003e\u003c/a\u003e testing/CliRunner: Fix regression related to EOF introduced in 262bdf0 (\u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/e11a1efc3395e998a1521a0dc35672a799e78d30\"\u003e\u003ccode\u003ee11a1ef\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into fix-cli-runner-prompt-eof-handling\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/36deba8a95a2585de1a2aa4475b7f054f52830ac\"\u003e\u003ccode\u003e36deba8\u003c/code\u003e\u003c/a\u003e Forward exception information to resources registered in a context (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/f2cae7ae997cd32311cab3dede4c2b89fe05e191\"\u003e\u003ccode\u003ef2cae7a\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Add summary of PR to changelog for 8.3.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/7c7ec36354f49d1a092cb077fa4881ea4d70ba01\"\u003e\u003ccode\u003e7c7ec36\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Split resource exception handling tests in single and nested\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/92129c552da88ac30b578132031efa4b003ecc46\"\u003e\u003ccode\u003e92129c5\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Added exception forwarding to context tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/555fa9bb37770a6845a98be60b0c84876775552e\"\u003e\u003ccode\u003e555fa9b\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e Forward exception data to exit stack when calling \u003ccode\u003e__exit__\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/16fe802a3f96c4c8fa3cd382f1a7577fda0c5321\"\u003e\u003ccode\u003e16fe802\u003c/code\u003e\u003c/a\u003e Add more tests on \u003ccode\u003eEnum\u003c/code\u003e rendering (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/d36de6fc67882f23d7a7d61cd4c0e25e0f88b0ac\"\u003e\u003ccode\u003ed36de6f\u003c/code\u003e\u003c/a\u003e Add more tests on Enum rendering their item's names and not values\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.1.8...8.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `rich` from 14.0.0 to 14.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Textualize/rich/releases\"\u003erich's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eThe Lively Release\u003c/h2\u003e\n\u003cp\u003eLive objects may now be nested. Previously a progress bar inside another progress context would fail. See the changelog below for this and other changes.\u003c/p\u003e\n\u003ch2\u003e[14.1.0] - 2025-06-25\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved \u003ccode\u003etyping_extensions\u003c/code\u003e from runtime dependencies \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3763\"\u003eTextualize/rich#3763\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLive objects (including Progress) may now be nested \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3768\"\u003eTextualize/rich#3768\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded padding property to Syntax which returns a tuple of four integers \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3782\"\u003eTextualize/rich#3782\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed extraction of recursive exceptions \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3772\"\u003eTextualize/rich#3772\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed padding applied to Syntax \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3782\"\u003eTextualize/rich#3782\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003ePanel\u003c/code\u003e title missing the panel background style \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3569\"\u003eTextualize/rich#3569\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eTTY_INTERACTIVE\u003c/code\u003e environment variable to force interactive mode off or on \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3777\"\u003eTextualize/rich#3777\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/Textualize/rich/blob/master/CHANGELOG.md\"\u003erich's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[14.1.0] - 2025-06-25\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved \u003ccode\u003etyping_extensions\u003c/code\u003e from runtime dependencies \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3763\"\u003eTextualize/rich#3763\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLive objects (including Progress) may now be nested \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3768\"\u003eTextualize/rich#3768\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded padding property to Syntax which returns a tuple of four integers \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3782\"\u003eTextualize/rich#3782\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed extraction of recursive exceptions \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3772\"\u003eTextualize/rich#3772\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed padding applied to Syntax \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3782\"\u003eTextualize/rich#3782\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003ePanel\u003c/code\u003e title missing the panel background style \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3569\"\u003eTextualize/rich#3569\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eTTY_INTERACTIVE\u003c/code\u003e environment variable to force interactive mode off or on \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3777\"\u003eTextualize/rich#3777\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/Textualize/rich/commit/2dca1b70359dac61e1bbfb6f14ebe19a5ab79c3d\"\u003e\u003ccode\u003e2dca1b7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3808\"\u003e#3808\u003c/a\u003e from Textualize/bump1410\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/19b6dddd807b887eaaf313174fff3eb2e22cda25\"\u003e\u003ccode\u003e19b6ddd\u003c/code\u003e\u003c/a\u003e version bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/a75a9a9838814cffb68cefe3522fc47c8ddce768\"\u003e\u003ccode\u003ea75a9a9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3807\"\u003e#3807\u003c/a\u003e from Textualize/optimize-options\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/9a08a2d3a983591e2d0d46e4f63558dd8df9e47d\"\u003e\u003ccode\u003e9a08a2d\u003c/code\u003e\u003c/a\u003e optimize size\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/9c9b011187bba772dca57653c9114005b489f005\"\u003e\u003ccode\u003e9c9b011\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3680\"\u003e#3680\u003c/a\u003e from Textualize/willmcgugan-patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/56855a6b81befafa6e978cffed4c1fb389a20df0\"\u003e\u003ccode\u003e56855a6\u003c/code\u003e\u003c/a\u003e Update bug_report.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/fa9ce3ce70c22ea2bb83dbd1f867fe90d1b3f0c5\"\u003e\u003ccode\u003efa9ce3c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3692\"\u003e#3692\u003c/a\u003e from smacke/null-tb-offset-fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/e0c7e96b303e6f3e48818380527129fb21f453f3\"\u003e\u003ccode\u003ee0c7e96\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3783\"\u003e#3783\u003c/a\u003e from Textualize/live-typing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/81b12554b3b15374aa48dae3f6507202bd8fab3e\"\u003e\u003ccode\u003e81b1255\u003c/code\u003e\u003c/a\u003e Self typing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/21b3800894f6a81d3f68a0e34796be67e3ccd39f\"\u003e\u003ccode\u003e21b3800\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3718\"\u003e#3718\u003c/a\u003e from TomJGooding/fix-panel-fix-title-missing-panel-b...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Textualize/rich/compare/v14.0.0...v14.1.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 `dynaconf` from 3.2.10 to 3.2.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dynaconf/dynaconf/releases\"\u003edynaconf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.2.11\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eRelease version 3.2.11\u003c/p\u003e\n\u003cp\u003eShortlog of commits since last release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eBruno Rocha (9): \u003ca href=\"https://github.com/rochacbruno\"\u003e\u003ccode\u003e@​rochacbruno\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003efix(cli): handle empty hooks and boolean environments.\u003c/li\u003e\n\u003cli\u003efix: Better way for CLI to find the Django Settings\u003c/li\u003e\n\u003cli\u003efix: windows CI\u003c/li\u003e\n\u003cli\u003efeat: Run CLI as module with \u003ccode\u003epython -m dynaconf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1290\"\u003e#1290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: use sys.argv instead of click.get_os_args (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1292\"\u003e#1292\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: \u003ccode\u003e-k\u003c/code\u003e must exit code 1 when key do not exist (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1293\"\u003e#1293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: envless load file (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1295\"\u003e#1295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: add correct supported python version to 3.2.x\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFabricio Aguiar (1): \u003ca href=\"https://github.com/fao89\"\u003e\u003ccode\u003e@​fao89\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003efix: make raw variables private (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1287\"\u003e#1287\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePedro Brochado (1): \u003ca href=\"https://github.com/pedro-psb\"\u003e\u003ccode\u003e@​pedro-psb\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003edocs: clarification on redis hash title when using custom envvar prefixes (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1273\"\u003e#1273\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMilestone \u003ca href=\"https://github.com/dynaconf/dynaconf/milestone/31?closed=1\"\u003ehttps://github.com/dynaconf/dynaconf/milestone/31?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/dynaconf/dynaconf/compare/3.2.10...3.2.11\"\u003ehttps://github.com/dynaconf/dynaconf/compare/3.2.10...3.2.11\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/dynaconf/dynaconf/blob/3.2.11/CHANGELOG.md\"\u003edynaconf's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/releases/tag/3.2.11\"\u003e3.2.11\u003c/a\u003e - 2025-05-06\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd correct supported python version to 3.2.x. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e-k\u003c/code\u003e must exit code 1 when key do not exist (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1293\"\u003e#1293\u003c/a\u003e). \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003euse sys.argv instead of click.get_os_args (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1292\"\u003e#1292\u003c/a\u003e). \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003ewindows CI. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003emake raw variables private (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1287\"\u003e#1287\u003c/a\u003e). \u003cem\u003eBy Fabricio Aguiar\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003eBetter way for CLI to find the Django Settings. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003ehandle empty hooks and boolean environments.. \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eenvless load file (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1295\"\u003e#1295\u003c/a\u003e). \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003cli\u003eRun CLI as module with \u003ccode\u003epython -m dynaconf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1290\"\u003e#1290\u003c/a\u003e). \u003cem\u003eBy Bruno Rocha\u003c/em\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eclarification on redis hash title when using custom envvar prefixes (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1273\"\u003e#1273\u003c/a\u003e). \u003cem\u003eBy Pedro Brochado\u003c/em\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/dynaconf/dynaconf/commit/c61da8fd191196c1341bd3d8a8dd895e9cf671ae\"\u003e\u003ccode\u003ec61da8f\u003c/code\u003e\u003c/a\u003e Release version 3.2.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/f8189fb6c130ff4709450e7daebcf1c174aea248\"\u003e\u003ccode\u003ef8189fb\u003c/code\u003e\u003c/a\u003e fix: add correct supported python version to 3.2.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/aeb31b256b436485211466214ba4f5f01a8a8305\"\u003e\u003ccode\u003eaeb31b2\u003c/code\u003e\u003c/a\u003e feat: envless load file (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1295\"\u003e#1295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/4893f4744d2c590069890756ae935059fbc08e2c\"\u003e\u003ccode\u003e4893f47\u003c/code\u003e\u003c/a\u003e fix: \u003ccode\u003e-k\u003c/code\u003e must exit code 1 when key do not exist (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1293\"\u003e#1293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/d55368bb13646b8b7976e641e2df6d4ff2bd7374\"\u003e\u003ccode\u003ed55368b\u003c/code\u003e\u003c/a\u003e fix: use sys.argv instead of click.get_os_args (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1292\"\u003e#1292\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/9a7af916a78c79f23f166b2e1ca077047f1c8cda\"\u003e\u003ccode\u003e9a7af91\u003c/code\u003e\u003c/a\u003e feat: Run CLI as module with \u003ccode\u003epython -m dynaconf\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1290\"\u003e#1290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/f772e9fa940d7fd539e1a3d75d3e1902874b8e94\"\u003e\u003ccode\u003ef772e9f\u003c/code\u003e\u003c/a\u003e fix: windows CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/a2460bd65d94ac21a3f5f6d4a0f2ff37982e608f\"\u003e\u003ccode\u003ea2460bd\u003c/code\u003e\u003c/a\u003e fix: make raw variables private (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1287\"\u003e#1287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/da6456e98b78a1bba4c5f0cd8f4cced749ce5861\"\u003e\u003ccode\u003eda6456e\u003c/code\u003e\u003c/a\u003e docs: clarification on redis hash title when using custom envvar prefixes (\u003ca href=\"https://redirect.github.com/dynaconf/dynaconf/issues/1\"\u003e#1\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dynaconf/dynaconf/commit/e5af61425d279bbbe18a3f83e95dcd0c75f04bd5\"\u003e\u003ccode\u003ee5af614\u003c/code\u003e\u003c/a\u003e fix: Better way for CLI to find the Django Settings\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/dynaconf/dynaconf/compare/3.2.10...3.2.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `isort` from 6.0.1 to 6.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/isort/releases\"\u003eisort's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.1.0\u003c/h2\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate docs discussions channel (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2410\"\u003e#2410\u003c/a\u003e) \u003ca href=\"https://github.com/staticdev\"\u003e\u003ccode\u003e@​staticdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd python 3.14 classifier and badge (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2409\"\u003e#2409\u003c/a\u003e) \u003ca href=\"https://github.com/staticdev\"\u003e\u003ccode\u003e@​staticdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop use of non-standard pkg_resources API (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2405\"\u003e#2405\u003c/a\u003e) \u003ca href=\"https://github.com/dvarrazzo\"\u003e\u003ccode\u003e@​dvarrazzo\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse working isort version in pre-commit example (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2402\"\u003e#2402\u003c/a\u003e) \u003ca href=\"https://github.com/iainelder\"\u003e\u003ccode\u003e@​iainelder\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix typo in _get_files_from_dir_cached test (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2392\"\u003e#2392\u003c/a\u003e) \u003ca href=\"https://github.com/tiltingpenguin\"\u003e\u003ccode\u003e@​tiltingpenguin\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eResolve bandit warnings (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2379\"\u003e#2379\u003c/a\u003e) \u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd tox for cross-platform, parallel test suite execution (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2378\"\u003e#2378\u003c/a\u003e) \u003ca href=\"https://github.com/kurtmckee\"\u003e\u003ccode\u003e@​kurtmckee\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Project URLs to PyPI Side Panel (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2387\"\u003e#2387\u003c/a\u003e) \u003ca href=\"https://github.com/guillermodotn\"\u003e\u003ccode\u003e@​guillermodotn\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typos (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2376\"\u003e#2376\u003c/a\u003e) \u003ca href=\"https://github.com/co63oc\"\u003e\u003ccode\u003e@​co63oc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:construction_worker: Continuous Integration\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd make bash scripts portable (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2377\"\u003e#2377\u003c/a\u003e) \u003ca href=\"https://github.com/staticdev\"\u003e\u003ccode\u003e@​staticdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:package: Dependencies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 4 to 5 in the github-actions group (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2406\"\u003e#2406\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump astral-sh/setup-uv from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2395\"\u003e#2395\u003c/a\u003e) @\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\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/PyCQA/isort/blob/main/CHANGELOG.md\"\u003eisort's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e6.1.0 October 1 2025\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd python 3.14 classifier and badge (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2409\"\u003e#2409\u003c/a\u003e) \u003ca href=\"https://github.com/staticdev\"\u003e\u003ccode\u003e@​staticdev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop use of non-standard pkg_resources API (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2405\"\u003e#2405\u003c/a\u003e) \u003ca href=\"https://github.com/dvarrazzo\"\u003e\u003ccode\u003e@​dvarrazzo\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/PyCQA/isort/commit/ec0efaee4acfce198521e43caa3029b06cedd64a\"\u003e\u003ccode\u003eec0efae\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2410\"\u003e#2410\u003c/a\u003e from PyCQA/docs/discussion\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/8af675ffcbb25dc5b5c2ff52863afc2923a818e2\"\u003e\u003ccode\u003e8af675f\u003c/code\u003e\u003c/a\u003e Update docs discussions channel\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/a03dae897f7e4a2b2eeb01d094b2c112b10ff0b7\"\u003e\u003ccode\u003ea03dae8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2409\"\u003e#2409\u003c/a\u003e from PyCQA/build/py314-classifier\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/2232a26fd15d43ad0fca0e662d311ca4cf0d161e\"\u003e\u003ccode\u003e2232a26\u003c/code\u003e\u003c/a\u003e Add python 3.14 classifier and badge\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/ec48dd7c823bcebf6da93db5eb4921a7808e6bb3\"\u003e\u003ccode\u003eec48dd7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2405\"\u003e#2405\u003c/a\u003e from dvarrazzo/fix/drop-pkg-resources\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/be46cd476d1a61996a6a4469177edf0869df531e\"\u003e\u003ccode\u003ebe46cd4\u003c/code\u003e\u003c/a\u003e refactor: make importlib metadata package import lazy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/18ecd0c3bf0bc7d6eb9bb5b9a72297f172a57663\"\u003e\u003ccode\u003e18ecd0c\u003c/code\u003e\u003c/a\u003e chore: drop branch guarding unsupported Python versions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/1d42e564d9bd1e026e8d635880336dd0528c2c29\"\u003e\u003ccode\u003e1d42e56\u003c/code\u003e\u003c/a\u003e fix: drop use of non-standard pkg_resources API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/0c8fc82fdf1b60065d447f3f7307f01c51d44b01\"\u003e\u003ccode\u003e0c8fc82\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2406\"\u003e#2406\u003c/a\u003e from PyCQA/dependabot/github_actions/github-actions-...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/3478763347707341e3ce729008acc9cf73a0ff35\"\u003e\u003ccode\u003e3478763\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 in the github-actions group\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PyCQA/isort/compare/6.0.1...6.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlalchemy` from 2.0.40 to 2.0.43\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/releases\"\u003esqlalchemy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.0.43\u003c/h1\u003e\n\u003cp\u003eReleased: August 11, 2025\u003c/p\u003e\n\u003ch2\u003eorm\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed issue where using the \u003ccode\u003epost_update\u003c/code\u003e feature would apply incorrect\n\u0026quot;pre-fetched\u0026quot; values to the ORM objects after a multi-row UPDATE process\ncompleted.  These \u0026quot;pre-fetched\u0026quot; values would come from any column that had\nan \u003ccode\u003eColumn.onupdate\u003c/code\u003e callable or a version id generator used by\n\u003ccode\u003eorm.Mapper.version_id_generator\u003c/code\u003e; for a version id generator\nthat delivered random identifiers like timestamps or UUIDs, this incorrect\ndata would lead to a DELETE statement against those same rows to fail in\nthe next step.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12748\"\u003e#12748\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed issue where \u003ccode\u003e_orm.mapped_column.use_existing_column\u003c/code\u003e\nparameter in \u003ccode\u003e_orm.mapped_column()\u003c/code\u003e would not work when the\n\u003ccode\u003e_orm.mapped_column()\u003c/code\u003e is used inside of an \u003ccode\u003eAnnotated\u003c/code\u003e type alias in\npolymorphic inheritance scenarios. The parameter is now properly recognized\nand processed during declarative mapping configuration.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12787\"\u003e#12787\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Improved the implementation of the \u003ccode\u003e_orm.selectin_polymorphic()\u003c/code\u003e\ninheritance loader strategy to properly render the IN expressions using\nchunks of 500 records each, in the same manner as that of the\n\u003ccode\u003e_orm.selectinload()\u003c/code\u003e relationship loader strategy.  Previously, the IN\nexpression would be arbitrarily large, leading to failures on databases\nthat have limits on the size of IN expressions including Oracle Database.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12790\"\u003e#12790\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eengine\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[engine] [usecase]\u003c/strong\u003e Added new parameter \u003ccode\u003ecreate_engine.skip_autocommit_rollback\u003c/code\u003e\nwhich provides for a per-dialect feature of preventing the DBAPI\n\u003ccode\u003e.rollback()\u003c/code\u003e from being called under any circumstances, if the\nconnection is detected as being in \u0026quot;autocommit\u0026quot; mode.   This improves upon\na critical performance issue identified in MySQL dialects where the network\noverhead of the \u003ccode\u003e.rollback()\u003c/code\u003e call remains prohibitive even if autocommit\nmode is set.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12784\"\u003e#12784\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epostgresql\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\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `beaupy` 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/petereon/beaupy/releases\"\u003ebeaupy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.10.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): update dependency flake8 to v7.1.1 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/129\"\u003epetereon/beaupy#129\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency isort to v5.13.2 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/130\"\u003epetereon/beaupy#130\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency mypy to v1.14.1 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/131\"\u003epetereon/beaupy#131\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: adding documentation for global config by \u003ca href=\"https://github.com/petereon\"\u003e\u003ccode\u003e@​petereon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/148\"\u003epetereon/beaupy#148\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency pytest to v8.4.2 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/147\"\u003epetereon/beaupy#147\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency black to v25 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/144\"\u003epetereon/beaupy#144\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency pydoc-markdown to v4.8.2 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/petereon/beaupy/pull/132\"\u003epetereon/beaupy#132\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/petereon/beaupy/compare/v3.10.1...v3.10.2\"\u003ehttps://github.com/petereon/beaupy/compare/v3.10.1...v3.10.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/a2dc15764508c0451ed4dc386f3b0761fe7a9ce2\"\u003e\u003ccode\u003ea2dc157\u003c/code\u003e\u003c/a\u003e chore: bump version from 3.10.1 to 3.10.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/7599e5a43be6893c81612314f410ffa602a15f57\"\u003e\u003ccode\u003e7599e5a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/132\"\u003e#132\u003c/a\u003e from petereon/renovate/pydoc-markdown-4.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/6b2bb33d4fef6f2a607e1f42c873bd92ffc2b0d5\"\u003e\u003ccode\u003e6b2bb33\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency pydoc-markdown to v4.8.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/d2b0cbc3bb6b191816fdef9319a150e9b305ae7f\"\u003e\u003ccode\u003ed2b0cbc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/144\"\u003e#144\u003c/a\u003e from petereon/renovate/black-25.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/926fb4e8773f587417e7a3f453af1641364888e5\"\u003e\u003ccode\u003e926fb4e\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency black to v25\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/df126efc542641c8f7385f8087a19a95ee1615b7\"\u003e\u003ccode\u003edf126ef\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/147\"\u003e#147\u003c/a\u003e from petereon/renovate/pytest-8.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/0eb77250022a166836a4594a489d9c178591234b\"\u003e\u003ccode\u003e0eb7725\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency pytest to v8.4.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/7b9234631ce3510e433fbb59d4c0e829d70fd569\"\u003e\u003ccode\u003e7b92346\u003c/code\u003e\u003c/a\u003e chore: linting code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/531e870193a7cb26ab43370a45d8562cb44d8b15\"\u003e\u003ccode\u003e531e870\u003c/code\u003e\u003c/a\u003e chore: fix weird types\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/dfd9dbc54327c19455197566f7161de08ad3180b\"\u003e\u003ccode\u003edfd9dbc\u003c/code\u003e\u003c/a\u003e docs: adding documentation for global config (\u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/148\"\u003e#148\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/petereon/beaupy/compare/v3.10.1...v3.10.2\"\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.2 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/sigstore/sigstore-python/releases\"\u003esigstore's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\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\u003cli\u003etrust: Update embedded TUF root\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1515\"\u003e#1515\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etrust (API): TrustConfig now provides the \u003ccode\u003eproduction()\u003c/code\u003eand \u003ccode\u003estaging()\u003c/code\u003e helpers. Similar methods were removed from\nSigningConfig, TrustedRoot, SigningContext and Issuer. Use TrustConfig everywhere in code base.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1363\"\u003e#1363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etrust (API): support SigningConfig v0.2, remove support for v0.1. The new format now fully defines the\nsigstore instance the client uses. \u003ccode\u003eSigningConfig\u003c/code\u003e class now has methods to return actual clients\n(like RekorClient) instead of just URLs for that sigstore instance. The \u003ccode\u003e--trust-config\u003c/code\u003e cli option now\nexpects the trust config to contain a v0.2 SigningConfig.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1358\"\u003e#1358\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1407\"\u003e#1407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etrust: Support ed25519 keys in trusted root\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1377\"\u003e#1377\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003erekor: resolve circular import of LogEntry\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1458\"\u003e#1458\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erekor: Fix checkpoint signature lookup when there are multiple signatures\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1514\"\u003e#1514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erekor: Fix entry handling so inclusion promise is optional\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1382\"\u003e#1382\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.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\u003cli\u003etrust: Update embedded TUF root\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1515\"\u003e#1515\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etrust (API): TrustConfig now provides the \u003ccode\u003eproduction()\u003c/code\u003eand \u003ccode\u003estaging()\u003c/code\u003e helpers. Similar methods were removed from\nSigningConfig, TrustedRoot, SigningContext and Issuer. Use TrustConfig everywhere in code base.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1363\"\u003e#1363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etrust (API): support SigningConfig v0.2, remove support for v0.1. The new format now fully defines the\nsigstore instance the client uses. \u003ccode\u003eSigningConfig\u003c/code\u003e class now has methods to return actual clients\n(like RekorClient) instead of just URLs for that sigstore instance. The \u003ccode\u003e--trust-config\u003c/code\u003e cli option now\nexpects the trust config to contain a v0.2 SigningConfig.\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1358\"\u003e#1358\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1407\"\u003e#1407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etrust: Support ed25519 keys in trusted root\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1377\"\u003e#1377\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003erekor: resolve circular import of LogEntry\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1458\"\u003e#1458\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erekor: Fix checkpoint signature lookup when there are multiple signatures\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1514\"\u003e#1514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erekor: Fix entry handling so inclusion promise is optional\n\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/pull/1382\"\u003e#1382\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/sigstore/sigstore-python/commit/7a9551fe2efd45eb12cb873cfb8857427e33eb5a\"\u003e\u003ccode\u003e7a9551f\u003c/code\u003e\u003c/a\u003e Prepare 4.0.0 release (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1541\"\u003e#1541\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/83feb3d934570174cb7b56bdbfa10d214b3f66f5\"\u003e\u003ccode\u003e83feb3d\u003c/code\u003e\u003c/a\u003e build(deps): bump pyopenssl from 25.2.0 to 25.3.0 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1543\"\u003e#1543\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/3b5632f642a86272faf6121b8ba4d180bbdd99d3\"\u003e\u003ccode\u003e3b5632f\u003c/code\u003e\u003c/a\u003e build(deps): bump cryptography from 45.0.7 to 46.0.1 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1544\"\u003e#1544\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/365af7bcb3668cc0aa4dd3b07b1f3234beffa1ed\"\u003e\u003ccode\u003e365af7b\u003c/code\u003e\u003c/a\u003e build(deps): bump pyopenssl from 25.1.0 to 25.2.0 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1542\"\u003e#1542\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/5fac47707fe60329b2860fe85bf73d2ebffdb5c6\"\u003e\u003ccode\u003e5fac477\u003c/code\u003e\u003c/a\u003e build(deps): update ruff requirement from \u0026lt;0.12.13 to \u0026lt;0.13.1 (\u003ca href=\"https://redirect.github.com/sigstore/sigstore-python/issues/1539\"\u003e#1539\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sigstore/sigstore-python/commit/2265c11592522514bc7989abebd1d09ecc4ba5b7\"\u003e\u003ccode\u003e2265c11\u003c/code\u003e\u003c/a\u003e build(deps): bump github/codeql-action in the actions group (\u003ca hre...\n\n_Description has been truncated_","html_url":"https://github.com/kairoaraujo/repository-service-tuf-cli/pull/108","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/kairoaraujo%2Frepository-service-tuf-cli/issues/108","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/108/packages"}}]}