{"id":18457,"name":"build","ecosystem":"pip","repository_url":"https://github.com/pypa/build","issues_count":660,"created_at":"2025-06-07T01:19:35.348Z","updated_at":"2025-06-07T01:19:35.348Z","purl":"pkg:pypi/build","metadata":{"id":2661797,"name":"build","ecosystem":"pypi","description":"A simple, correct Python build frontend","homepage":null,"licenses":"MIT License","normalized_licenses":["MIT"],"repository_url":"https://github.com/pypa/build","keywords_array":[],"namespace":null,"versions_count":28,"first_release_published_at":"2020-05-25T01:17:25.000Z","latest_release_published_at":"2024-09-06T20:14:56.000Z","latest_release_number":"1.2.2","last_synced_at":"2025-06-07T02:31:25.770Z","created_at":"2022-04-10T10:15:39.378Z","updated_at":"2025-06-07T02:31:25.771Z","registry_url":"https://pypi.org/project/build/","install_command":"pip install build --index-url https://pypi.org/simple","documentation_url":"https://build.readthedocs.io/","metadata":{"funding":null,"documentation":null,"classifiers":["License :: OSI Approved :: MIT 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.8","Programming Language :: Python :: 3.9","Programming Language :: Python :: Implementation :: CPython","Programming Language :: Python :: Implementation :: PyPy"],"normalized_name":"build"},"repo_metadata":{"id":37952217,"uuid":"262827329","full_name":"pypa/build","owner":"pypa","description":"A simple, correct Python build frontend","archived":false,"fork":false,"pushed_at":"2025-05-21T20:17:17.000Z","size":946,"stargazers_count":786,"open_issues_count":66,"forks_count":129,"subscribers_count":26,"default_branch":"main","last_synced_at":"2025-05-21T20:39:32.725Z","etag":null,"topics":["python"],"latest_commit_sha":null,"homepage":"https://build.pypa.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pypa.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.rst","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-05-10T16:20:46.000Z","updated_at":"2025-05-21T20:17:19.000Z","dependencies_parsed_at":"2023-02-17T01:40:25.255Z","dependency_job_id":"a813819d-b07c-4442-8adb-ec31fc746351","html_url":"https://github.com/pypa/build","commit_stats":{"total_commits":818,"total_committers":59,"mean_commits":"13.864406779661017","dds":0.7665036674816625,"last_synced_commit":"10571fb26afe38cfcba5b783c536aa0ec1f18408"},"previous_names":[],"tags_count":29,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pypa","download_url":"https://codeload.github.com/pypa/build/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":257479800,"owners_count":22551645,"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":"pypa","name":"Python Packaging Authority","uuid":"647025","kind":"organization","description":"","email":"info@pypa.io","website":"https://www.pypa.io","location":"United States of America","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/647025?v=4","repositories_count":58,"last_synced_at":"2025-05-29T00:14:44.539Z","metadata":{"has_sponsors_listing":true},"html_url":"https://github.com/pypa","funding_links":["https://github.com/sponsors/pypa"],"total_stars":86888,"followers":1927,"following":0,"created_at":"2022-11-02T16:21:37.826Z","updated_at":"2025-05-29T00:14:44.540Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pypa","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pypa/repositories"},"tags":[{"name":"1.2.2.post1","sha":"2f667024a90718da24c5bdfdb264944436adf82e","kind":"commit","published_at":"2024-10-06T16:46:46.000Z","download_url":"https://codeload.github.com/pypa/build/tar.gz/1.2.2.post1","html_url":"https://github.com/pypa/build/releases/tag/1.2.2.post1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/1.2.2.post1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/1.2.2.post1/manifests"},{"name":"1.2.2","sha":"3b0b5d07077473f5da3f038cf7b74cd2b65d2a98","kind":"tag","published_at":"2024-09-06T19:08:29.000Z","download_url":"https://codeload.github.com/pypa/build/tar.gz/1.2.2","html_url":"https://github.com/pypa/build/releases/tag/1.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/1.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/1.2.2/manifests"},{"name":"1.2.1","sha":"1e67c062e9d1b1a6d5ffed621f4b29902bb764e5","kind":"tag","published_at":"2024-03-28T07:10:23.000Z","download_url":"https://codeload.github.com/pypa/build/tar.gz/1.2.1","html_url":"https://github.com/pypa/build/releases/tag/1.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/1.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/1.2.1/manifests"},{"name":"1.2.0","sha":"d5fb6fbecce164e01065b62b52ac4f270d09183d","kind":"commit","published_at":"2024-03-27T23:01:47.000Z","download_url":"https://codeload.github.com/pypa/build/tar.gz/1.2.0","html_url":"https://github.com/pypa/build/releases/tag/1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/1.2.0/manifests"},{"name":"1.1.1","sha":"b36126a2b7a387757519029d121da17a38135d67","kind":"tag","published_at":"2024-02-29T20:26:04.000Z","download_url":"https://codeload.github.com/pypa/build/tar.gz/1.1.1","html_url":"https://github.com/pypa/build/releases/tag/1.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/1.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/1.1.1/manifests"},{"name":"v1.1.0","sha":"da0697318dfc36afa8ae57f814c15cc39d225758","kind":"tag","published_at":"2024-02-29T16:49:28.000Z","download_url":"https://codeload.github.com/pypa/build/tar.gz/v1.1.0","html_url":"https://github.com/pypa/build/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/v1.1.0/manifests"},{"name":"1.0.3","sha":"38d1a688d5e05557a929245ada14d106f3e5b547","kind":"commit","published_at":"2023-09-06T22:31:16.000Z","download_url":"https://codeload.github.com/pypa/build/tar.gz/1.0.3","html_url":"https://github.com/pypa/build/releases/tag/1.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/1.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/1.0.3/manifests"},{"name":"1.0.1","sha":"c48f4ca7cbe84f027f37ad575713870f5f4f7818","kind":"commit","published_at":"2023-09-06T19:25:10.000Z","download_url":"https://codeload.github.com/pypa/build/tar.gz/1.0.1","html_url":"https://github.com/pypa/build/releases/tag/1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/1.0.1/manifests"},{"name":"1.0.0","sha":"1fff01ed7440d5b5626fec31422026a4920b7764","kind":"commit","published_at":"2023-09-01T18:08:10.000Z","download_url":"https://codeload.github.com/pypa/build/tar.gz/1.0.0","html_url":"https://github.com/pypa/build/releases/tag/1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/1.0.0/manifests"},{"name":"0.10.0","sha":"cd06da25481b9a610f846fa60cb67b5a5fa9a051","kind":"tag","published_at":"2023-01-11T20:31:39.000Z","download_url":"https://codeload.github.com/pypa/build/tar.gz/0.10.0","html_url":"https://github.com/pypa/build/releases/tag/0.10.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/0.10.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/0.10.0/manifests"},{"name":"0.9.0","sha":"7b002bbc48e965fd677d51ea88b1adc276ba506d","kind":"tag","published_at":"2022-10-27T10:43:07.000Z","download_url":"https://codeload.github.com/pypa/build/tar.gz/0.9.0","html_url":"https://github.com/pypa/build/releases/tag/0.9.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/0.9.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/0.9.0/manifests"},{"name":"0.8.0","sha":"6d97b86298d1663814ad74c22a1b4c0b3ce479c9","kind":"tag","published_at":"2022-05-22T15:08:19.000Z","download_url":"https://codeload.github.com/pypa/build/tar.gz/0.8.0","html_url":"https://github.com/pypa/build/releases/tag/0.8.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/0.8.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/0.8.0/manifests"},{"name":"0.7.0","sha":"c940180b6ace5210e6f00149d45b1358f39fb274","kind":"tag","published_at":"2021-09-16T21:15:24.000Z","download_url":"https://codeload.github.com/pypa/build/tar.gz/0.7.0","html_url":"https://github.com/pypa/build/releases/tag/0.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/0.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/0.7.0/manifests"},{"name":"0.6.0.post1","sha":"018a6f81cca1b26d9bf754eb91a64667c3847d28","kind":"tag","published_at":"2021-08-05T18:02:26.000Z","download_url":"https://codeload.github.com/pypa/build/tar.gz/0.6.0.post1","html_url":"https://github.com/pypa/build/releases/tag/0.6.0.post1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/0.6.0.post1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/0.6.0.post1/manifests"},{"name":"0.6.0","sha":"4cb0c1ec375aeff3e681855fdb37cf8f47e0fa93","kind":"tag","published_at":"2021-08-02T21:01:42.000Z","download_url":"https://codeload.github.com/pypa/build/tar.gz/0.6.0","html_url":"https://github.com/pypa/build/releases/tag/0.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/0.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/0.6.0/manifests"},{"name":"0.5.1","sha":"5a3c5243a2135236f207da3a4b6401e1561f952d","kind":"tag","published_at":"2021-06-22T18:02:59.000Z","download_url":"https://codeload.github.com/pypa/build/tar.gz/0.5.1","html_url":"https://github.com/pypa/build/releases/tag/0.5.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/0.5.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/0.5.1/manifests"},{"name":"0.5.0","sha":"4492dec726cdfd159f0850d68c98f82496b28d79","kind":"tag","published_at":"2021-06-19T17:04:44.000Z","download_url":"https://codeload.github.com/pypa/build/tar.gz/0.5.0","html_url":"https://github.com/pypa/build/releases/tag/0.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/0.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/0.5.0/manifests"},{"name":"0.4.0","sha":"de05f70e56195b135b1e24af1614949c51580b79","kind":"tag","published_at":"2021-05-23T22:16:10.000Z","download_url":"https://codeload.github.com/pypa/build/tar.gz/0.4.0","html_url":"https://github.com/pypa/build/releases/tag/0.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/0.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/0.4.0/manifests"},{"name":"0.3.1.post1","sha":"8a27cc1d98f309ffef8743c00ada6e93877e530f","kind":"tag","published_at":"2021-03-10T09:20:21.000Z","download_url":"https://codeload.github.com/pypa/build/tar.gz/0.3.1.post1","html_url":"https://github.com/pypa/build/releases/tag/0.3.1.post1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/0.3.1.post1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/0.3.1.post1/manifests"},{"name":"0.3.1","sha":"e880a1022f9e62607a502c59961f4986cd9f7699","kind":"tag","published_at":"2021-03-09T17:15:40.000Z","download_url":"https://codeload.github.com/pypa/build/tar.gz/0.3.1","html_url":"https://github.com/pypa/build/releases/tag/0.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/0.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/0.3.1/manifests"},{"name":"0.3.0","sha":"387c807c67fb0a62cd963be6ff64c415077782ac","kind":"tag","published_at":"2021-02-19T15:32:18.000Z","download_url":"https://codeload.github.com/pypa/build/tar.gz/0.3.0","html_url":"https://github.com/pypa/build/releases/tag/0.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/0.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/0.3.0/manifests"},{"name":"0.2.1","sha":"7d8f9150ae56c6bc43dc34bcefa30b0c6d03246a","kind":"tag","published_at":"2021-02-09T15:13:29.000Z","download_url":"https://codeload.github.com/pypa/build/tar.gz/0.2.1","html_url":"https://github.com/pypa/build/releases/tag/0.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/0.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/0.2.1/manifests"},{"name":"0.2.0","sha":"a5a0b3860cff68ac9aad896fad22febd2b8d3718","kind":"tag","published_at":"2021-02-07T15:44:36.000Z","download_url":"https://codeload.github.com/pypa/build/tar.gz/0.2.0","html_url":"https://github.com/pypa/build/releases/tag/0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/0.2.0/manifests"},{"name":"0.1.0","sha":"3df03617bd92dc023021ec902a8d47a9dd4bad99","kind":"tag","published_at":"2020-10-29T16:08:26.000Z","download_url":"https://codeload.github.com/pypa/build/tar.gz/0.1.0","html_url":"https://github.com/pypa/build/releases/tag/0.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/0.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/0.1.0/manifests"},{"name":"0.0.4","sha":"10bf02e443417ea06b090d2902d0b8c8ac9666be","kind":"tag","published_at":"2020-09-08T21:20:15.000Z","download_url":"https://codeload.github.com/pypa/build/tar.gz/0.0.4","html_url":"https://github.com/pypa/build/releases/tag/0.0.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/0.0.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/0.0.4/manifests"},{"name":"0.0.3.1","sha":"aa6d36e8970af683b8fcc508287a40b07c7e9c5a","kind":"tag","published_at":"2020-06-09T23:36:57.000Z","download_url":"https://codeload.github.com/pypa/build/tar.gz/0.0.3.1","html_url":"https://github.com/pypa/build/releases/tag/0.0.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/0.0.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/0.0.3.1/manifests"},{"name":"0.0.3","sha":"14aa82a68ed4964c78fab7120ac9a15aff7febd8","kind":"tag","published_at":"2020-06-09T15:08:21.000Z","download_url":"https://codeload.github.com/pypa/build/tar.gz/0.0.3","html_url":"https://github.com/pypa/build/releases/tag/0.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/0.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/0.0.3/manifests"},{"name":"0.0.2","sha":"3cb902f4c2ba2088ed54315dbc5836f7692aee3d","kind":"tag","published_at":"2020-05-29T16:11:21.000Z","download_url":"https://codeload.github.com/pypa/build/tar.gz/0.0.2","html_url":"https://github.com/pypa/build/releases/tag/0.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/0.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/0.0.2/manifests"},{"name":"0.0.1","sha":"7738d41f0959c89c2724ab8ce0259df265dd04d1","kind":"tag","published_at":"2020-05-17T16:42:51.000Z","download_url":"https://codeload.github.com/pypa/build/tar.gz/0.0.1","html_url":"https://github.com/pypa/build/releases/tag/0.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/0.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pypa%2Fbuild/tags/0.0.1/manifests"}]},"repo_metadata_updated_at":"2025-06-02T18:02:34.371Z","dependent_packages_count":3201,"downloads":82541400,"downloads_period":"last-month","dependent_repos_count":7486,"rankings":{"downloads":0.028612985526598154,"dependent_repos_count":0.10528111341197013,"dependent_packages_count":0.009721078416087835,"stargazers_count":3.2864581709332414,"forks_count":5.574946763339429,"docker_downloads_count":0.4077350437540237,"average":1.5687925258968916},"purl":"pkg:pypi/build","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/build","docker_dependents_count":1159,"docker_downloads_count":215281203,"usage_url":"https://repos.ecosyste.ms/usage/pypi/build","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/build/dependencies","status":null,"funding_links":["https://github.com/sponsors/pypa"],"critical":true,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/build/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/build/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/build/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/build/related_packages","maintainers":[{"uuid":"FFY00","login":"FFY00","name":null,"email":null,"url":null,"packages_count":23,"html_url":"https://pypi.org/user/FFY00/","role":null,"created_at":"2023-01-04T05:57:53.053Z","updated_at":"2023-01-04T05:57:53.053Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/FFY00/packages"},{"uuid":"gaborbernat","login":"gaborbernat","name":null,"email":null,"url":null,"packages_count":18,"html_url":"https://pypi.org/user/gaborbernat/","role":null,"created_at":"2023-01-04T05:57:53.063Z","updated_at":"2023-01-04T05:57:53.063Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/gaborbernat/packages"},{"uuid":"henryiii","login":"henryiii","name":null,"email":null,"url":null,"packages_count":25,"html_url":"https://pypi.org/user/henryiii/","role":null,"created_at":"2023-01-04T05:57:53.078Z","updated_at":"2023-01-04T05:57:53.078Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/henryiii/packages"},{"uuid":"layday","login":"layday","name":null,"email":null,"url":null,"packages_count":3,"html_url":"https://pypi.org/user/layday/","role":"Owner","created_at":"2024-03-01T17:08:21.019Z","updated_at":"2024-03-01T17:08:21.019Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/layday/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":690449,"maintainers_count":292827,"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":426,"unique_repositories_count_past_30_days":44,"recent_issues":[{"uuid":"4501917941","node_id":"PR_kwDOHGh5u87eTq-E","number":953,"state":"closed","title":"build(deps): bump the pipenv group across 1 directory with 18 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-25T15:54:26.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-22T10:32:57.000Z","updated_at":"2026-05-25T15:54:28.000Z","time_to_close":278489,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"pipenv","update_count":18,"packages":[{"name":"click","old_version":"8.3.2","new_version":"8.4.1","repository_url":"https://github.com/pallets/click"},{"name":"rich","old_version":"14.3.3","new_version":"14.3.4","repository_url":"https://github.com/Textualize/rich"},{"name":"requests","old_version":"2.33.1","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"psycopg2","old_version":"2.9.11","new_version":"2.9.12","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"beaupy","old_version":"3.11.0","new_version":"3.12.0","repository_url":"https://github.com/petereon/beaupy"},{"name":"boto3","old_version":"1.42.83","new_version":"1.43.13","repository_url":"https://github.com/boto/boto3"},{"name":"google-cloud-kms","old_version":"3.12.0","new_version":"3.13.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"azure-keyvault-keys","old_version":"4.11.0","new_version":"4.11.1","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"black","old_version":"26.3.1","new_version":"26.5.1","repository_url":"https://github.com/psf/black"},{"name":"tox","old_version":"4.52.0","new_version":"4.54.0","repository_url":"https://github.com/tox-dev/tox"},{"name":"pytest","old_version":"9.0.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"coverage","old_version":"7.13.5","new_version":"7.14.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"mypy","old_version":"1.20.0","new_version":"2.1.0","repository_url":"https://github.com/python/mypy"},{"name":"pip","old_version":"26.0.1","new_version":"26.1.1","repository_url":"https://github.com/pypa/pip"},{"name":"hatchling","old_version":"1.27.0","new_version":"1.29.0","repository_url":"https://github.com/pypa/hatch"},{"name":"build","old_version":"1.4.2","new_version":"1.5.0","repository_url":"https://github.com/pypa/build"},{"name":"pre-commit","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"types-requests","old_version":"2.33.0.20260402","new_version":"2.33.0.20260518","repository_url":"https://github.com/python/typeshed"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pipenv group with 18 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [click](https://github.com/pallets/click) | `8.3.2` | `8.4.1` |\n| [rich](https://github.com/Textualize/rich) | `14.3.3` | `14.3.4` |\n| [requests](https://github.com/psf/requests) | `2.33.1` | `2.34.2` |\n| [psycopg2](https://github.com/psycopg/psycopg2) | `2.9.11` | `2.9.12` |\n| [beaupy](https://github.com/petereon/beaupy) | `3.11.0` | `3.12.0` |\n| [boto3](https://github.com/boto/boto3) | `1.42.83` | `1.43.13` |\n| [google-cloud-kms](https://github.com/googleapis/google-cloud-python) | `3.12.0` | `3.13.0` |\n| [azure-keyvault-keys](https://github.com/Azure/azure-sdk-for-python) | `4.11.0` | `4.11.1` |\n| [black](https://github.com/psf/black) | `26.3.1` | `26.5.1` |\n| [tox](https://github.com/tox-dev/tox) | `4.52.0` | `4.54.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.0.3` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.5` | `7.14.0` |\n| [mypy](https://github.com/python/mypy) | `1.20.0` | `2.1.0` |\n| [pip](https://github.com/pypa/pip) | `26.0.1` | `26.1.1` |\n| [hatchling](https://github.com/pypa/hatch) | `1.27.0` | `1.29.0` |\n| [build](https://github.com/pypa/build) | `1.4.2` | `1.5.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.5.1` | `4.6.0` |\n| [types-requests](https://github.com/python/typeshed) | `2.33.0.20260402` | `2.33.0.20260518` |\n\n\nUpdates `click` from 8.3.2 to 8.4.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.4.1\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.4.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.4.1/\"\u003ehttps://pypi.org/project/click/8.4.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-4-1\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-4-1\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/32?closed=1\"\u003ehttps://github.com/pallets/click/milestone/32?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eget_parameter_source()\u003c/code\u003e is available during eager callbacks and type conversion again. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3458\"\u003e#3458\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3484\"\u003e#3484\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eZsh completion scripts parse correctly on Windows. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3277\"\u003e#3277\u003c/a\u003e # 3466\u003c/li\u003e\n\u003cli\u003eShell completion of \u003ccode\u003eChoice\u003c/code\u003e \u003ccode\u003eEnum\u003c/code\u003e values produces a valid completion result. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3015\"\u003e#3015\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix empty byte-string handling in echo. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3487\"\u003e#3487\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix closed file error with \u003ccode\u003eecho_via_pager\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3449\"\u003e#3449\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.4.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.4.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.4.0/\"\u003ehttps://pypi.org/project/click/8.4.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-4-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-4-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/30\"\u003ehttps://github.com/pallets/click/milestone/30\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eParamType\u003c/code\u003e typing improvements. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3371\"\u003e#3371\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:class:\u003ccode\u003eParamType\u003c/code\u003e is now a generic abstract base class,\nparameterized by its converted value type.\u003c/li\u003e\n\u003cli\u003e:meth:\u003ccode\u003e~ParamType.convert\u003c/code\u003e return types are narrowed on all\nconcrete types (\u003ccode\u003estr\u003c/code\u003e for :class:\u003ccode\u003eSTRING\u003c/code\u003e, \u003ccode\u003eint\u003c/code\u003e for\n:class:\u003ccode\u003eINT\u003c/code\u003e, etc.).\u003c/li\u003e\n\u003cli\u003e:meth:\u003ccode\u003e~ParamType.to_info_dict\u003c/code\u003e returns specific\n:class:\u003ccode\u003e~typing.TypedDict\u003c/code\u003e subclasses instead of\n\u003ccode\u003edict[str, Any]\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e:class:\u003ccode\u003eCompositeParamType\u003c/code\u003e and the number-range base are now\ngeneric with abstract methods.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRefactor \u003ccode\u003econvert_type\u003c/code\u003e to extract type inference into a private\n\u003ccode\u003e_guess_type\u003c/code\u003e helper, and add :func:\u003ccode\u003etyping.overload\u003c/code\u003e signatures.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3372\"\u003e#3372\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eParameter\u003c/code\u003e typing improvements. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2805\"\u003e#2805\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:class:\u003ccode\u003eParameter\u003c/code\u003e is now an abstract base class, making explicit\nthat it cannot be instantiated directly.\u003c/li\u003e\n\u003cli\u003e:attr:\u003ccode\u003eParameter.name\u003c/code\u003e is now \u003ccode\u003estr\u003c/code\u003e instead of \u003ccode\u003estr | None\u003c/code\u003e.\nWhen \u003ccode\u003eexpose_value=False\u003c/code\u003e, the name is set to \u003ccode\u003e\u0026quot;\u0026quot;\u003c/code\u003e instead\nof \u003ccode\u003eNone\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ectx\u003c/code\u003e parameter of :meth:\u003ccode\u003eParameter.get_error_hint\u003c/code\u003e is now\ntyped as \u003ccode\u003eContext | None\u003c/code\u003e, matching the runtime behavior.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSplit string values from \u003ccode\u003edefault_map\u003c/code\u003e for parameters with \u003ccode\u003enargs \u0026gt; 1\u003c/code\u003e\nor :class:\u003ccode\u003eTuple\u003c/code\u003e type, matching environment variable behavior.\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\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.4.1\u003c/h2\u003e\n\u003cp\u003eReleased 2026-05-21\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eget_parameter_source()\u003c/code\u003e is available during eager callbacks and type\nconversion again. :issue:\u003ccode\u003e3458\u003c/code\u003e :issue:\u003ccode\u003e3484\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eZsh completion scripts parse correctly on Windows. :issue:\u003ccode\u003e3277\u003c/code\u003e :pr:\u003ccode\u003e3466\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eShell completion of \u003ccode\u003eChoice\u003c/code\u003e \u003ccode\u003eEnum\u003c/code\u003e values produces a valid completion\nresult. :issue:\u003ccode\u003e3015\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix empty byte-string handling in echo. :issue:\u003ccode\u003e3487\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix closed file error with \u003ccode\u003eecho_via_pager\u003c/code\u003e. :issue:\u003ccode\u003e3449\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.4.0\u003c/h2\u003e\n\u003cp\u003eReleased 2026-05-17\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e:class:\u003ccode\u003eParamType\u003c/code\u003e typing improvements. :pr:\u003ccode\u003e3371\u003c/code\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:class:\u003ccode\u003eParamType\u003c/code\u003e is now a generic abstract base class,\nparameterized by its converted value type.\u003c/li\u003e\n\u003cli\u003e:meth:\u003ccode\u003e~ParamType.convert\u003c/code\u003e return types are narrowed on all\nconcrete types (\u003ccode\u003estr\u003c/code\u003e for :class:\u003ccode\u003eSTRING\u003c/code\u003e, \u003ccode\u003eint\u003c/code\u003e for\n:class:\u003ccode\u003eINT\u003c/code\u003e, etc.).\u003c/li\u003e\n\u003cli\u003e:meth:\u003ccode\u003e~ParamType.to_info_dict\u003c/code\u003e returns specific\n:class:\u003ccode\u003e~typing.TypedDict\u003c/code\u003e subclasses instead of\n\u003ccode\u003edict[str, Any]\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e:class:\u003ccode\u003eCompositeParamType\u003c/code\u003e and the number-range base are now\ngeneric with abstract methods.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRefactor \u003ccode\u003econvert_type\u003c/code\u003e to extract type inference into a private\n\u003ccode\u003e_guess_type\u003c/code\u003e helper, and add :func:\u003ccode\u003etyping.overload\u003c/code\u003e signatures.\n:pr:\u003ccode\u003e3372\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e:class:\u003ccode\u003eParameter\u003c/code\u003e typing improvements. :pr:\u003ccode\u003e2805\u003c/code\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:class:\u003ccode\u003eParameter\u003c/code\u003e is now an abstract base class, making explicit\nthat it cannot be instantiated directly.\u003c/li\u003e\n\u003cli\u003e:attr:\u003ccode\u003eParameter.name\u003c/code\u003e is now \u003ccode\u003estr\u003c/code\u003e instead of \u003ccode\u003estr | None\u003c/code\u003e.\nWhen \u003ccode\u003eexpose_value=False\u003c/code\u003e, the name is set to \u003ccode\u003e\u0026quot;\u0026quot;\u003c/code\u003e instead\nof \u003ccode\u003eNone\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ectx\u003c/code\u003e parameter of :meth:\u003ccode\u003eParameter.get_error_hint\u003c/code\u003e is now\ntyped as \u003ccode\u003eContext | None\u003c/code\u003e, matching the runtime behavior.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSplit string values from \u003ccode\u003edefault_map\u003c/code\u003e for parameters with \u003ccode\u003enargs \u0026gt; 1\u003c/code\u003e\nor :class:\u003ccode\u003eTuple\u003c/code\u003e type, matching environment variable behavior.\n:issue:\u003ccode\u003e2745\u003c/code\u003e :pr:\u003ccode\u003e3364\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAuto-detect \u003ccode\u003etype=UNPROCESSED\u003c/code\u003e for \u003ccode\u003eflag_value\u003c/code\u003e of non-basic types\n(not \u003ccode\u003estr\u003c/code\u003e, \u003ccode\u003eint\u003c/code\u003e, \u003ccode\u003efloat\u003c/code\u003e, or \u003ccode\u003ebool\u003c/code\u003e), so programmer-provided\nPython objects like classes and enum members are passed through unchanged\ninstead of being stringified. Previously \u003ccode\u003etype=click.UNPROCESSED\u003c/code\u003e had\nto be set explicitly. :issue:\u003ccode\u003e2012\u003c/code\u003e :pr:\u003ccode\u003e3363\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/6eeb50e948ea136db145280f6f5dd52eca3fa7e5\"\u003e\u003ccode\u003e6eeb50e\u003c/code\u003e\u003c/a\u003e release version 8.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/67921d5b71584112eebcbf89596b5f0e6d14c49f\"\u003e\u003ccode\u003e67921d5\u003c/code\u003e\u003c/a\u003e change log and doc fixes (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3495\"\u003e#3495\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/9c41f46a4015700489ad009266edf1f3893d01d1\"\u003e\u003ccode\u003e9c41f46\u003c/code\u003e\u003c/a\u003e Fix changelog and version admonitions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/6cb34774f20598aa288332f8da02c5aee85448a6\"\u003e\u003ccode\u003e6cb3477\u003c/code\u003e\u003c/a\u003e fix skip condition\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/5ee8e3123d8ddece6c47eff9a7a7d4ca478c4f37\"\u003e\u003ccode\u003e5ee8e31\u003c/code\u003e\u003c/a\u003e fix I/O operation on closed file error with CliRunner and echo_via_pager (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3482\"\u003e#3482\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/becbde5cf416441627f779e8dd34e57738ee1c1f\"\u003e\u003ccode\u003ebecbde5\u003c/code\u003e\u003c/a\u003e pager doesn't close std streams\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a5f5aa6d4012d256ccca24638f2642fc371e9f77\"\u003e\u003ccode\u003ea5f5aa6\u003c/code\u003e\u003c/a\u003e Handle empty bytes in echo (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3493\"\u003e#3493\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/4d3db84b251518e97299a38a5ca4bab3d01873a2\"\u003e\u003ccode\u003e4d3db84\u003c/code\u003e\u003c/a\u003e handle empty bytes in echo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/d42f15b71757de791a5781fb179fd972da9169f5\"\u003e\u003ccode\u003ed42f15b\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eget_parameter_source()\u003c/code\u003e during type conversion and eager callbacks (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3484\"\u003e#3484\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/0baa8db07736fc7ad3d3eed97d4c73b0059c63e1\"\u003e\u003ccode\u003e0baa8db\u003c/code\u003e\u003c/a\u003e Document ctx.params bypass with test and doc\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.3.2...8.4.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.3.3 to 14.3.4\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 Faster Startup Release\u003c/h2\u003e\n\u003cp\u003eNo new features in this release, but there should be improved startup time for Rich apps, and potentially improved runtime if you have a lot of links.\u003c/p\u003e\n\u003ch2\u003e[14.3.4] - 2026-04-11\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved import time with lazy loading \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/4070\"\u003eTextualize/rich#4070\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChanged link id generation to avoid random number generation at runtime \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3845\"\u003eTextualize/rich#3845\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.3.4] - 2026-04-11\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved import time with lazy loading \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/4070\"\u003eTextualize/rich#4070\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChanged link id generation to avoid random number generation at runtime \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3845\"\u003eTextualize/rich#3845\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/ee8378c3bbbd7c75abc2f55c6c19e83b218ae81d\"\u003e\u003ccode\u003eee8378c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/4073\"\u003e#4073\u003c/a\u003e from Textualize/bump1434\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/f441a326f10af5dc0cd570dadaed16e7f7035fc3\"\u003e\u003ccode\u003ef441a32\u003c/code\u003e\u003c/a\u003e changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/b3167144fea59b02e257c1361f5e0c5832065ccd\"\u003e\u003ccode\u003eb316714\u003c/code\u003e\u003c/a\u003e bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/a86dce09714f4e5195cce8c15fce7a586d7b562a\"\u003e\u003ccode\u003ea86dce0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3845\"\u003e#3845\u003c/a\u003e from akx/faster-ids\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/7f40063da781f4990d21423f23f7ccb3165ce0bd\"\u003e\u003ccode\u003e7f40063\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/4070\"\u003e#4070\u003c/a\u003e from KRRT7/upstream/lazy-traceback-logging\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/6729c6f6c4ee24a13a94d825cb7ce66b52206db2\"\u003e\u003ccode\u003e6729c6f\u003c/code\u003e\u003c/a\u003e typing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/64f2f1cf89a698f17f5b2c801b014dc8aced1177\"\u003e\u003ccode\u003e64f2f1c\u003c/code\u003e\u003c/a\u003e import\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/de4a8bd5746a3cbda6d8ead9f75cbf49f868a639\"\u003e\u003ccode\u003ede4a8bd\u003c/code\u003e\u003c/a\u003e lazy is_expandable\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/e5b7b3199fecb1f7d1fbc3d3d0df800fa6234830\"\u003e\u003ccode\u003ee5b7b31\u003c/code\u003e\u003c/a\u003e no need to rename locals\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/5d6e2d72e4012eb594e131a8319dbd4165d97eda\"\u003e\u003ccode\u003e5d6e2d7\u003c/code\u003e\u003c/a\u003e fix docstring\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Textualize/rich/compare/v14.3.3...v14.3.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.33.1 to 2.34.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.34.2\u003c/h2\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues with \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling \u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.1\u003c/h2\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/k223kim\"\u003e\u003ccode\u003e@​k223kim\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7433\"\u003epsf/requests#7433\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.0\u003c/h2\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. \u003cstrong\u003eWe believe types are comprehensive but if you find issues, please\nreport them to the \u003ca href=\"https://redirect.github.com/psf/requests/issues/7271\"\u003epinned tracking issue\u003c/a\u003e.\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be able to start testing prior to its release in October. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.14t. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResponse.history\u003c/code\u003e no longer contains a reference to itself, preventing\naccidental looping when traversing the history list. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7328\"\u003e#7328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer performs greedy matching on no_proxy domains. The\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues\nwith \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling\n\u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. We believe types are comprehensive but if you find issues, please\nreport them to the pinned tracking issue.\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be able to start testing prior to its release in October. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.14t. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResponse.history\u003c/code\u003e no longer contains a reference to itself, preventing\naccidental looping when traversing the history list. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7328\"\u003e#7328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer performs greedy matching on no_proxy domains. The\nproxy_bypass implementation has been updated with CPython's fix from\nbpo-39057. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer incorrectly strips duplicate leading slashes in\nURI paths. This should address user issues with specific presigned\nURLs. Note the full fix requires urllib3 2.7.0+. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7315\"\u003e#7315\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6e83187b8feb273ed4c6cdab5efd8d54901dfab3\"\u003e\u003ccode\u003e6e83187\u003c/code\u003e\u003c/a\u003e v2.34.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/84d10f0be83e8f6aeca8a05230c52216431c4d0b\"\u003e\u003ccode\u003e84d10f0\u003c/code\u003e\u003c/a\u003e Move Request.headers back to Mapping (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b7b549b54571d03950b16afd2d01bc6ff0348224\"\u003e\u003ccode\u003eb7b549b\u003c/code\u003e\u003c/a\u003e v2.34.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/e511bc72777a94c45d004e010c597925092e1efe\"\u003e\u003ccode\u003ee511bc7\u003c/code\u003e\u003c/a\u003e Fix mutability issues with headers input types (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/5691f596134c2feb121e595c77a0178921fcce61\"\u003e\u003ccode\u003e5691f59\u003c/code\u003e\u003c/a\u003e Update JsonType containers to read-based collections (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/2144213c307691710c9d665700860fc4993c3035\"\u003e\u003ccode\u003e2144213\u003c/code\u003e\u003c/a\u003e Constrain Response.reason to str (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6404f345e562d962abe6700a1c357ec1e7e18232\"\u003e\u003ccode\u003e6404f34\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eprepare_body\u003c/code\u003e stream detection for \u003ccode\u003e__getattr__\u003c/code\u003e-based file wrappers (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7\"\u003e#7\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/0b401c76b6e80a4eecf3c690085b2553f6e261ca\"\u003e\u003ccode\u003e0b401c7\u003c/code\u003e\u003c/a\u003e v2.34.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/86b378d3f60f828daa13ca50aa82e287ff7b66b4\"\u003e\u003ccode\u003e86b378d\u003c/code\u003e\u003c/a\u003e Align Session.get parameters with requests.get (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7429\"\u003e#7429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/a4f9a5999bdb9bf2d6e7c8aa973b28cacb17134f\"\u003e\u003ccode\u003ea4f9a59\u003c/code\u003e\u003c/a\u003e Port bpo-39057 to Requests (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.33.1...v2.34.2\"\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.11 to 2.9.12\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.12\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix infinite loop with malformed interval (:ticket:\u003ccode\u003e1835\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\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\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/3a6d9d6ddc6b53eaa80b712f5fa6b23abbdc38db\"\u003e\u003ccode\u003e3a6d9d6\u003c/code\u003e\u003c/a\u003e ci: include almalinux in whieel building\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/ebca6bf0f86bc6cbdc86de1eb3a53eaf49966d86\"\u003e\u003ccode\u003eebca6bf\u003c/code\u003e\u003c/a\u003e chore: bump to version 3.9.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/0196f02cc9512df8de3c941f87d27bda98f9f7af\"\u003e\u003ccode\u003e0196f02\u003c/code\u003e\u003c/a\u003e build(deps): bump pypa/cibuildwheel from 3.3.1 to 3.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/d157bdc2235a42dc1742936dbb0f5cfc8e4d2eb7\"\u003e\u003ccode\u003ed157bdc\u003c/code\u003e\u003c/a\u003e build(deps): bump docker/setup-qemu-action from 3 to 4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/7fccc0f5066a40dea530512abbf02621f4182b81\"\u003e\u003ccode\u003e7fccc0f\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 6 to 7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/d52a61eb2e6095fc1b9891bfcca44ebfac509e55\"\u003e\u003ccode\u003ed52a61e\u003c/code\u003e\u003c/a\u003e chore: bump dependency libraries\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/b231d726a01d55e07ec3620b2b82f4a2da37ba62\"\u003e\u003ccode\u003eb231d72\u003c/code\u003e\u003c/a\u003e chore: fix building binary images\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/6d76e8479f0f522c2e07ce0e2701030d8fd63785\"\u003e\u003ccode\u003e6d76e84\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg2/issues/1836\"\u003e#1836\u003c/a\u003e from psycopg/fix-1835\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/f7e314c7ab418ab9b9956e694956089a49c5c3b9\"\u003e\u003ccode\u003ef7e314c\u003c/code\u003e\u003c/a\u003e fix: overflow in malformed interval\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/eb905c124b75f2a5183d22177b85af20914b0f17\"\u003e\u003ccode\u003eeb905c1\u003c/code\u003e\u003c/a\u003e docs: replace bare except clause with except Exception\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psycopg/psycopg2/compare/2.9.11...2.9.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `beaupy` from 3.11.0 to 3.12.0\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.12.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: update python versions and fix test CI action 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/156\"\u003epetereon/beaupy#156\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency python to 3.14 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/154\"\u003epetereon/beaupy#154\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency black to v25.12.0 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/153\"\u003epetereon/beaupy#153\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency mock to v5.2.0 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/151\"\u003epetereon/beaupy#151\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency mypy to v1.19.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/142\"\u003epetereon/beaupy#142\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(deps): update dependency emoji to v2.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/140\"\u003epetereon/beaupy#140\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update jamesives/github-pages-deploy-action action to v4.7.3 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/146\"\u003epetereon/beaupy#146\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update actions/setup-python action to v6 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/161\"\u003epetereon/beaupy#161\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update jamesives/github-pages-deploy-action action to v4.8.0 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/160\"\u003epetereon/beaupy#160\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update actions/checkout action to v6 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/159\"\u003epetereon/beaupy#159\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency questo to v0.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/158\"\u003epetereon/beaupy#158\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update github/codeql-action action to v4 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/165\"\u003epetereon/beaupy#165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency pytest to v9 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/163\"\u003epetereon/beaupy#163\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency pytest-cov to v7 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/164\"\u003epetereon/beaupy#164\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update pypa/gh-action-pypi-publish digest to 03f86fe 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/134\"\u003epetereon/beaupy#134\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency black to v26 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/167\"\u003epetereon/beaupy#167\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update stefanzweifel/git-auto-commit-action action to v7 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/166\"\u003epetereon/beaupy#166\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update pypa/gh-action-pypi-publish digest to e2bab26 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/168\"\u003epetereon/beaupy#168\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency flake8-simplify to v0.30.0 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/150\"\u003epetereon/beaupy#150\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency toml-sort to v0.24.3 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/149\"\u003epetereon/beaupy#149\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update pypa/gh-action-pypi-publish digest to cef2210 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/169\"\u003epetereon/beaupy#169\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency black to v26.3.1 [security] 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/172\"\u003epetereon/beaupy#172\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency pytest-cov to v7.1.0 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/173\"\u003epetereon/beaupy#173\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency toml-sort to v0.24.4 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/174\"\u003epetereon/beaupy#174\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update codecov/codecov-action action to v6 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/175\"\u003epetereon/beaupy#175\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency mypy to v1.20.0 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/176\"\u003epetereon/beaupy#176\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency pytest to v9.0.3 [security] 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/179\"\u003epetereon/beaupy#179\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency mypy to v1.20.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/178\"\u003epetereon/beaupy#178\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency black to v26.5.0 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/183\"\u003epetereon/beaupy#183\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: auto-pagination for longer lists than console size 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/186\"\u003epetereon/beaupy#186\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.11.0...v3.12.0\"\u003ehttps://github.com/petereon/beaupy/compare/v3.11.0...v3.12.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/d9d8577621abeae86bd8b1850e827ea9fca1fd0c\"\u003e\u003ccode\u003ed9d8577\u003c/code\u003e\u003c/a\u003e chore: bump version from 3.11.0 to 3.12.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/47744409ee262465a2f3bed51f2d77aa499bb917\"\u003e\u003ccode\u003e4774440\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/186\"\u003e#186\u003c/a\u003e from petereon/auto-pagination\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/921dd5d1505662037778a125eb84d4ad2ce59b0f\"\u003e\u003ccode\u003e921dd5d\u003c/code\u003e\u003c/a\u003e feat: auto-pagination for longer lists than console size\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/4797730dc88f8cf3d4c2ac0a9ca054506824fc29\"\u003e\u003ccode\u003e4797730\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/183\"\u003e#183\u003c/a\u003e from petereon/renovate/black-26.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/516d53cc3b8cfa47f1ee12ce5471b6128c7315ad\"\u003e\u003ccode\u003e516d53c\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency black to v26.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/2b3e71d98e0ba14cba384abd427b590b55da1ed7\"\u003e\u003ccode\u003e2b3e71d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/178\"\u003e#178\u003c/a\u003e from petereon/renovate/mypy-1.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/7b9253fa26400b348a88a1eac7e23ff0076412c3\"\u003e\u003ccode\u003e7b9253f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/179\"\u003e#179\u003c/a\u003e from petereon/renovate/pypi-pytest-vulnerability\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/a4328a124d1db144fe729c1bd03d1431653b1141\"\u003e\u003ccode\u003ea4328a1\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency pytest to v9.0.3 [security]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/a5afb6074875b15728be3a9141318984cfa2178e\"\u003e\u003ccode\u003ea5afb60\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency mypy to v1.20.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/cf1d47ec126cbe3f271fb624adcf9a7b1e3425c2\"\u003e\u003ccode\u003ecf1d47e\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency mypy to v1.20.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/petereon/beaupy/compare/v3.11.0...v3.12.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3` from 1.42.83 to 1.43.13\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/97921f4babf469d1c1fbbb27746bbaece6008122\"\u003e\u003ccode\u003e97921f4\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.13'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/1307ac2642ed8e53aca983b1c89e952309a0c66d\"\u003e\u003ccode\u003e1307ac2\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.13\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/c75c901f5be45cce8e8f46733ee0562d06110c81\"\u003e\u003ccode\u003ec75c901\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/d3f2433ff49062a75426c406e606625b69a32eb6\"\u003e\u003ccode\u003ed3f2433\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.12'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/d5eddf97fcacb8e8aecf0ff043501ff97454f105\"\u003e\u003ccode\u003ed5eddf9\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.12' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/93f3a42377b288934f08416a9c3b63920d8163c6\"\u003e\u003ccode\u003e93f3a42\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/5355abdca2dfffff34b4e7b05135911845a87631\"\u003e\u003ccode\u003e5355abd\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/9ef5febabaaa8cb403fb3a5e97b0b6d333a0851a\"\u003e\u003ccode\u003e9ef5feb\u003c/code\u003e\u003c/a\u003e Bump idna from 3.7 to 3.15 (\u003ca href=\"https://redirect.github.com/boto/boto3/issues/4788\"\u003e#4788\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/c628e75265dc9d48b40a216c72575e46348bbd21\"\u003e\u003ccode\u003ec628e75\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.11'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/210f10744645854d03856c59e73b4db84144dacb\"\u003e\u003ccode\u003e210f107\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.11' into develop\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.42.83...1.43.13\"\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.12.0 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/googleapis/google-cloud-python/releases\"\u003egoogle-cloud-kms's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003egoogle-cloud-kms: v3.13.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/compare/google-cloud-kms-v3.12.0...google-cloud-kms-v3.13.0\"\u003ev3.13.0\u003c/a\u003e (2026-05-06)\u003c/h2\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/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.12.0...google-cloud-documentai-v3.13.0\"\u003e3.13.0\u003c/a\u003e (2026-03-26)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow Protobuf 7.x (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/1eb7c268482e55971966e284dac2cbeb903adcbb\"\u003e1eb7c268482e55971966e284dac2cbeb903adcbb\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRequire Python 3.9 (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/1eb7c268482e55971966e284dac2cbeb903adcbb\"\u003e1eb7c268482e55971966e284dac2cbeb903adcbb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequire google-api-core \u0026gt;= 2.11.0 (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/1eb7c268482e55971966e284dac2cbeb903adcbb\"\u003e1eb7c268482e55971966e284dac2cbeb903adcbb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove type checking (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/1eb7c268482e55971966e284dac2cbeb903adcbb\"\u003e1eb7c268482e55971966e284dac2cbeb903adcbb\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/googleapis/google-cloud-python/commit/3997a108c45e1c1df8e844746eb2af4b1a77e154\"\u003e\u003ccode\u003e3997a10\u003c/code\u003e\u003c/a\u003e chore: librarian release pull request: 20260506T163115Z (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16964\"\u003e#16964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/f655e492c0879684b60a7d06e90501dd49e96252\"\u003e\u003ccode\u003ef655e49\u003c/code\u003e\u003c/a\u003e chore: add type annotation to SYNCPOINTS (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16973\"\u003e#16973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/f149bd7dd30489c3165bf03a2343dc9f75875451\"\u003e\u003ccode\u003ef149bd7\u003c/code\u003e\u003c/a\u003e refactor(bigframes): Modularize compiler routing as proxy executor (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16907\"\u003e#16907\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/19db82f5cb033215531e5b65239e45275e3ed568\"\u003e\u003ccode\u003e19db82f\u003c/code\u003e\u003c/a\u003e chore(bigframes): remove leftover support for Python \u0026lt;= 3.9 (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16961\"\u003e#16961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/2dedaacf0666ade39ae89194ad8dbc34761bd1df\"\u003e\u003ccode\u003e2dedaac\u003c/code\u003e\u003c/a\u003e chore: test CommonResource resource name alias (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16965\"\u003e#16965\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/9652a08cb89441fac779eb4fa4d6f48f33b55d3b\"\u003e\u003ccode\u003e9652a08\u003c/code\u003e\u003c/a\u003e fix: pass resource aliases to file-level CommonResources (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16945\"\u003e#16945\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/78a48b040a2abc0bf19ebe267aba0a1f410df2e6\"\u003e\u003ccode\u003e78a48b0\u003c/code\u003e\u003c/a\u003e fix(google-cloud-core): Drop support for Python 3.9 (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16953\"\u003e#16953\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/5975c48186dd8798b172ac442fd55bc7fece1612\"\u003e\u003ccode\u003e5975c48\u003c/code\u003e\u003c/a\u003e fix(dns): Drop support for Python 3.9 (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16954\"\u003e#16954\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/d5bea2e99b435b8b3d75321679072db092001de6\"\u003e\u003ccode\u003ed5bea2e\u003c/code\u003e\u003c/a\u003e fix(crc32c): Drop support for Python 3.8 and 3.9 (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16955\"\u003e#16955\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/63f6d96c1c5569b5fdaea85dfe995ce280907b98\"\u003e\u003ccode\u003e63f6d96\u003c/code\u003e\u003c/a\u003e fix(sqlalchemy-bigquery): Drop support for Python 3.8 and 3.9 (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16956\"\u003e#16956\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/googleapis/google-cloud-python/compare/google-cloud-kms-v3.12.0...google-cloud-kms-v3.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `azure-keyvault-keys` from 4.11.0 to 4.11.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Azure/azure-sdk-for-python/releases\"\u003eazure-keyvault-keys's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eazure-keyvault-keys_4.11.1\u003c/h2\u003e\n\u003ch2\u003e4.11.1 (2026-05-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures Added\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for service API version \u003ccode\u003e2025-07-01\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/pull/46716\"\u003e#46716\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKey Vault API version \u003ccode\u003e2025-07-01\u003c/code\u003e is now the default\u003c/li\u003e\n\u003cli\u003eUpdated minimum \u003ccode\u003ecryptography\u003c/code\u003e version to 44.0.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/18e7c83822d6c4ab36100a52024d7791f5ce99d6\"\u003e\u003ccode\u003e18e7c83\u003c/code\u003e\u003c/a\u003e Update release plan and SDK release skills with improved wording and optional...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/a634fee12332dd64d5d04054db242e82d5de8028\"\u003e\u003ccode\u003ea634fee\u003c/code\u003e\u003c/a\u003e [Key Vault] Regenerated SecurityDomain SDK with new folder structure and API ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/b66e92220423b76fba42bf586034fe08df3b3cfa\"\u003e\u003ccode\u003eb66e922\u003c/code\u003e\u003c/a\u003e Regenerate azure-mgmt-purview with latest code generator tool (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/46980\"\u003e#46980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/209643762d07f7c9c006a7776238b2b03eed34ec\"\u003e\u003ccode\u003e2096437\u003c/code\u003e\u003c/a\u003e Regenerate azure-mgmt-powerbidedicated with latest code generator tool (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/46976\"\u003e#46976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/5ba092498b1af30efad1ebabf2b87b587b89692f\"\u003e\u003ccode\u003e5ba0924\u003c/code\u003e\u003c/a\u003e Regenerate azure-mgmt-recoveryservices with latest code generator tool (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/46984\"\u003e#46984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/e86ae3a548cc9076570575f2a1aafbb1d82b010b\"\u003e\u003ccode\u003ee86ae3a\u003c/code\u003e\u003c/a\u003e [breaking-changes-tool][Feature] Detect changed return type for functions/met...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/2ea6c873aef4d08b6ebc4399f38be065d7228a19\"\u003e\u003ccode\u003e2ea6c87\u003c/code\u003e\u003c/a\u003e Regenerate azure-mgmt-operationsmanagement with latest code generator tool (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/3d4f111b3057824b1158156a690ff67cadd9c777\"\u003e\u003ccode\u003e3d4f111\u003c/code\u003e\u003c/a\u003e Regenerate azure-mgmt-peering with latest code generator tool (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/46974\"\u003e#46974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/02335c5c795cb9f5911eaf3ba54998568847592a\"\u003e\u003ccode\u003e02335c5\u003c/code\u003e\u003c/a\u003e Regenerate azure-mgmt-policyinsights with latest code generator tool (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/46975\"\u003e#46975\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/74fb2fe3cdcb2a4d4b6f281359526214e9f1ee3d\"\u003e\u003ccode\u003e74fb2fe\u003c/code\u003e\u003c/a\u003e Enable A365 tracing and fix W3C baggage propagation in agentserver (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/46754\"\u003e#46754\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Azure/azure-sdk-for-python/compare/azure-keyvault-keys_4.11.0...azure-keyvault-keys_4.11.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `black` from 26.3.1 to 26.5.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/black/releases\"\u003eblack's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.5.1\u003c/h2\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix unstable formatting of annotated assignments whose subscript annotation contains\nan inline comment (e.g. \u003ccode\u003ex: list[  # pyright: ignore[...]\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/psf/black/issues/5130\"\u003e#5130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve inline comments (including \u003ccode\u003e# type: ignore\u003c/code\u003e) immediately before a\n\u003ccode\u003e# fmt: skip\u003c/code\u003e line, avoiding AST equivalence failures (\u003ca href=\"https://redirect.github.com/psf/black/issues/5139\"\u003e#5139\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCorrect the version in the published executables (\u003ca href=\"https://redirect.github.com/psf/black/issues/5137\"\u003e#5137\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Neovim integration guide covering conform.nvim, ALE, and simple command approaches\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/5124\"\u003e#5124\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e26.5.0\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for unpacking in comprehensions (PEP 798) and for lazy imports (PEP 810),\nboth new syntactic features in Python 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5048\"\u003e#5048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePython 3.15 is now supported. Compiled wheels are not yet provided for Python 3.15, so\nperformance may be slower than on existing Python versions. Wheels will be provided\nonce Python 3.15 is later in its release cycle. (\u003ca href=\"https://redirect.github.com/psf/black/issues/5127\"\u003e#5127\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003e# fmt: skip\u003c/code\u003e being ignored in nested \u003ccode\u003eif\u003c/code\u003e expressions with parenthesized \u003ccode\u003ein\u003c/code\u003e\nclauses (\u003ca href=\"https://redirect.github.com/psf/black/issues/4903\"\u003e#4903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd syntactic support for Python 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5048\"\u003e#5048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when an f-string follows a \u003ccode\u003e# fmt: off\u003c/code\u003e comment inside brackets (\u003ca href=\"https://redirect.github.com/psf/black/issues/5097\"\u003e#5097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve multiline compound statement headers when \u003ccode\u003e# fmt: skip\u003c/code\u003e is placed on the\ncolon line (\u003ca href=\"https://redirect.github.com/psf/black/issues/5117\"\u003e#5117\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove heuristics around whether blank lines should appear before, within and after\ngroups of same-name decorated functions (such as \u003ccode\u003e@overload\u003c/code\u003e groups) in \u003ccode\u003e.pyi\u003c/code\u003e stub\nfiles (\u003ca href=\"https://redirect.github.com/psf/black/issues/5021\"\u003e#5021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix blank lines being removed between a function and a decorated class in \u003ccode\u003e.pyi\u003c/code\u003e stub\nfiles (\u003ca href=\"https://redirect.github.com/psf/black/issues/5092\"\u003e#5092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrevent string merger from creating unsplittable long lines when a pragma comment\n(e.g. \u003ccode\u003e# type: ignore\u003c/code\u003e) follows the closing bracket (\u003ca href=\"https://redirect.github.com/psf/black/issues/5096\"\u003e#5096\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRun CI on 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5127\"\u003e#5127\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOutput\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/psf/black/blob/main/CHANGES.md\"\u003eblack's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 26.5.1\u003c/h2\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix unstable formatting of annotated assignments whose subscript annotation contains\nan inline comment (e.g. \u003ccode\u003ex: list[  # pyright: ignore[...]\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/psf/black/issues/5130\"\u003e#5130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve inline comments (including \u003ccode\u003e# type: ignore\u003c/code\u003e) immediately before a\n\u003ccode\u003e# fmt: skip\u003c/code\u003e line, avoiding AST equivalence failures (\u003ca href=\"https://redirect.github.com/psf/black/issues/5139\"\u003e#5139\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCorrect the version in the published executables (\u003ca href=\"https://redirect.github.com/psf/black/issues/5137\"\u003e#5137\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Neovim integration guide covering conform.nvim, ALE, and simple command approaches\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/5124\"\u003e#5124\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 26.5.0\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for unpacking in comprehensions (PEP 798) and for lazy imports (PEP 810),\nboth new syntactic features in Python 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5048\"\u003e#5048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePython 3.15 is now supported. Compiled wheels are not yet provided for Python 3.15, so\nperformance may be slower than on existing Python versions. Wheels will be provided\nonce Python 3.15 is later in its release cycle. (\u003ca href=\"https://redirect.github.com/psf/black/issues/5127\"\u003e#5127\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003e# fmt: skip\u003c/code\u003e being ignored in nested \u003ccode\u003eif\u003c/code\u003e expressions with parenthesized \u003ccode\u003ein\u003c/code\u003e\nclauses (\u003ca href=\"https://redirect.github.com/psf/black/issues/4903\"\u003e#4903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd syntactic support for Python 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5048\"\u003e#5048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when an f-string follows a \u003ccode\u003e# fmt: off\u003c/code\u003e comment inside brackets (\u003ca href=\"https://redirect.github.com/psf/black/issues/5097\"\u003e#5097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve multiline compound statement headers when \u003ccode\u003e# fmt: skip\u003c/code\u003e is placed on the\ncolon line (\u003ca href=\"https://redirect.github.com/psf/black/issues/5117\"\u003e#5117\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove heuristics around whether blank lines should appear before, within and after\ngroups of same-name decorated functions (such as \u003ccode\u003e@overload\u003c/code\u003e groups) in \u003ccode\u003e.pyi\u003c/code\u003e stub\nfiles (\u003ca href=\"https://redirect.github.com/psf/black/issues/5021\"\u003e#5021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix blank lines being removed between a function and a decorated class in \u003ccode\u003e.pyi\u003c/code\u003e stub\nfiles (\u003ca href=\"https://redirect.github.com/psf/black/issues/5092\"\u003e#5092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrevent string merger from creating unsplittable long lines when a pragma comment\n(e.g. \u003ccode\u003e# type: ignore\u003c/code\u003e) follows the closing bracket (\u003ca href=\"https://redirect.github.com/psf/black/issues/5096\"\u003e#5096\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRun CI on 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5127\"\u003e#5127\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/87928e6d6761a4a6d22250e1fee5601b3998086e\"\u003e\u003ccode\u003e87928e6\u003c/code\u003e\u003c/a\u003e Prepare release 26.5.1 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5140\"\u003e#5140\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/c970a49702488739add6c728122deb3a99900803\"\u003e\u003ccode\u003ec970a49\u003c/code\u003e\u003c/a\u003e Preserve comments before fmt: skip lines (\u003ca href=\"https://redirect.github.com/psf/black/issues/5139\"\u003e#5139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/5809338fd5f92d50e80c2ad312292ae6d428a480\"\u003e\u003ccode\u003e5809338\u003c/code\u003e\u003c/a\u003e Preserve inline comments inside annotation subscripts (\u003ca href=\"https://redirect.github.com/psf/black/issues/5130\"\u003e#5130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/61361b71995f6ea44ce01915bacd3ecc50642507\"\u003e\u003ccode\u003e61361b7\u003c/code\u003e\u003c/a\u003e docs: add Neovim integration guide and fix http link (\u003ca href=\"https://redirect.github.com/psf/black/issues/5124\"\u003e#5124\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/ebe6018e3254629788376e619207719fbe34a849\"\u003e\u003ccode\u003eebe6018\u003c/code\u003e\u003c/a\u003e CI Hotfixes (\u003ca href=\"https://redirect.github.com/psf/black/issues/5136\"\u003e#5136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/9cbd95f80e97c1ab4d690d1d41b81579a13bf75c\"\u003e\u003ccode\u003e9cbd95f\u003c/code\u003e\u003c/a\u003e Fix publish binaries again on Windows (\u003ca href=\"https://redirect.github.com/psf/black/issues/5134\"\u003e#5134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/3dc8e6c41911bdaedb4bac8d633979c34a112b78\"\u003e\u003ccode\u003e3dc8e6c\u003c/code\u003e\u003c/a\u003e Add new changelog (\u003ca href=\"https://redirect.github.com/psf/black/issues/5132\"\u003e#5132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/6d0fff0d5a965b9d0d3dbd7c5738d835fd574130\"\u003e\u003ccode\u003e6d0fff0\u003c/code\u003e\u003c/a\u003e Fix publish binaries workflow (\u003ca href=\"https://redirect.github.com/psf/black/issues/5133\"\u003e#5133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/d2490e24dad33b8f68c77602ee29160de0fea24b\"\u003e\u003ccode\u003ed2490e2\u003c/code\u003e\u003c/a\u003e Prepare release 26.5.0 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5131\"\u003e#5131\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/2b13ea76fa69d4923381df65deb1a5c896ca27ad\"\u003e\u003ccode\u003e2b13ea7\u003c/code\u003e\u003c/a\u003e Preserve multiline headers with fmt skip (\u003ca href=\"https://redirect.github.com/psf/black/issues/5117\"\u003e#5117\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/black/compare/26.3.1...26.5.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tox` from 4.52.0 to 4.54.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tox-dev/tox/releases\"\u003etox's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.54.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🧪 test(conftest): strip broken nspkg.pth files under py3.15 by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3937\"\u003etox-dev/tox#3937\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ feat(packaging): declare tox.pytest deps via a testing extra by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3940\"\u003etox-dev/tox#3940\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(schema): cover every replace form in the TOML schema by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3941\"\u003etox-dev/tox#3941\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox/compare/4.53.1...4.54.0\"\u003ehttps://github.com/tox-dev/tox/compare/4.53.1...4.54.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.53.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(security): harden user-facing logs and untrusted inputs by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3924\"\u003etox-dev/tox#3924\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(type): correct argparse override signatures for ty 0.0.33 by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3932\"\u003etox-dev/tox#3932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: allow deps arrays in TOML schema by \u003ca href=\"https://github.com/cyphercodes\"\u003e\u003ccode\u003e@​cyphercodes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3931\"\u003etox-dev/tox#3931\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/cyphercodes\"\u003e\u003ccode\u003e@​cyphercodes\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3931\"\u003etox-dev/tox#3931\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox/compare/4.53.0...4.53.1\"\u003ehttps://github.com/tox-dev/tox/compare/4.53.0...4.53.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.53.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(toml): allow bare range/labeled dicts in env_list by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3923\"\u003etox-dev/tox#3923\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox/compare/4.52.1...4.53.0\"\u003ehttps://github.com/tox-dev/tox/compare/4.52.1...4.53.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.52.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003euse normalize_isa for architecture factor matching by \u003ca href=\"https://github.com/rahuldevikar\"\u003e\u003ccode\u003e@​rahuldevikar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3919\"\u003etox-dev/tox#3919\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(pip): invalidate install cache on resolution env var changes by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3921\"\u003etox-dev/tox#3921\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox/compare/4.52.0...4.52.1\"\u003ehttps://github.com/tox-dev/tox/compare/4.52.0...4.52.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tox-dev/tox/blob/main/docs/changelog.rst\"\u003etox's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eFeatures - 4.54.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDeclare the runtime dependencies of the \u003ccode\u003etox.pytest\u003c/code\u003e plugin (\u003ccode\u003epytest\u003c/code\u003e, \u003ccode\u003edevpi-process\u003c/code\u003e and \u003ccode\u003epytest-mock\u003c/code\u003e)\nunder a new \u003ccode\u003etesting\u003c/code\u003e extra, so plugin authors can pull them in via \u003ccode\u003etox[testing]\u003c/code\u003e - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e.\n(:issue:\u003ccode\u003e3938\u003c/code\u003e, :issue:\u003ccode\u003e3940\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eBug fixes - 4.54.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eExtend the generated TOML schema to cover every \u003ccode\u003ereplace\u003c/code\u003e table form (\u003ccode\u003eenv\u003c/code\u003e, \u003ccode\u003eref\u003c/code\u003e, \u003ccode\u003eposargs\u003c/code\u003e, \u003ccode\u003eglob\u003c/code\u003e,\n\u003ccode\u003eif\u003c/code\u003e), including conditional replacements used inside \u003ccode\u003ecommands\u003c/code\u003e. A guard test asserts the schema stays in sync\nwith the loader implementation so future replace types cannot be added without a corresponding schema entry.\n(:issue:\u003ccode\u003e3939\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003ev4.53.1 (2026-05-02)\u003c/p\u003e\n\u003chr /\u003e\n\u003ch1\u003eBug fixes - 4.53.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eHardening pass on user-facing logging and config parsing:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMask secret-looking \u003ccode\u003e--key=value\u003c/code\u003e flag values in command logs (terminal warnings, \u003ccode\u003e.tox/\u0026lt;env\u0026gt;/log/*.log\u003c/code\u003e, and\n\u003ccode\u003eOutcome\u003c/code\u003e \u003ccode\u003e__repr__\u003c/code\u003e) using the same keyword regex previously applied to environment variable values.\u003c/li\u003e\n\u003cli\u003eResolve PEP 723 \u003ccode\u003escript\u003c/code\u003e paths and reject any that escape \u003ccode\u003etox_root\u003c/code\u003e; cap the script read at 5 MiB so a symlink\nto \u003ccode\u003e/dev/zero\u003c/code\u003e cannot exhaust memory.\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eeval()\u003c/code\u003e of a constructed \u003ccode\u003eLiteral[...]\u003c/code\u003e string in the CLI parser with a direct\n\u003ccode\u003eLiteral[tuple(action.choices)]\u003c/code\u003e subscript.\u003c/li\u003e\n\u003cli\u003ePass \u003ccode\u003etimeout=30\u003c/code\u003e to \u003ccode\u003eurlopen\u003c/code\u003e when fetching a remote requirements file so a slow or unresponsive mirror cannot\nhang \u003ccode\u003etox\u003c/code\u003e indefinitely. (:issue:\u003ccode\u003e3924\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow the generated TOML schema to validate array values for \u003ccode\u003edeps\u003c/code\u003e. (:issue:\u003ccode\u003e3929\u003c/code\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCorrect type annotations for \u003ccode\u003eArgumentParser.parse_args\u003c/code\u003e and \u003ccode\u003eparse_known_args\u003c/code\u003e overrides following \u003ccode\u003etypeshed PR [#15613](https://github.com/tox-dev/tox/issues/15613) \u0026lt;https://github.com/python/typeshed/pull/15613\u0026gt;\u003c/code\u003e_, which widened the \u003ccode\u003eargs\u003c/code\u003e parameter from \u003ccode\u003eSequence[str]\u003c/code\u003e\nto \u003ccode\u003eIterable[str]\u003c/code\u003e. The narrower type in tox's overrides violated the Liskov substitution principle and caused\n\u003ccode\u003einvalid-method-override\u003c/code\u003e errors with \u003ccode\u003ety\u003c/code\u003e 0.0.33. Also correct the \u003ccode\u003eoption_spec\u003c/code\u003e annotation in\n\u003ccode\u003edocs/tox_conf.py\u003c/code\u003e to \u003ccode\u003eClassVar[dict[str, Callable[[str], Any]]]\u003c/code\u003e matching the docutils stubs type.\n(:issue:\u003ccode\u003e3932\u003c/code\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003ev4.53.0 (2026-04-14)\u003c/p\u003e\n\u003chr /\u003e\n\u003ch1\u003eFeatures - 4.53.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eTOML \u003ccode\u003eenv_list\u003c/code\u003e now accepts bare range dicts (\u003ccode\u003e{ prefix = \u0026quot;3.\u0026quot;, start = 12, stop = 14 }\u003c/code\u003e) and bare labeled dicts\n(\u003ccode\u003e{ ecosystem = [\u0026quot;oci\u0026quot;, \u0026quot;python\u0026quot;] }\u003c/code\u003e) as top-level items, removing the \u003ccode\u003e{ product = [...] }\u003c/code\u003e wrapper when there is\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/1f1fcc7a53665a827d8a304190696c6926ebb2eb\"\u003e\u003ccode\u003e1f1fcc7\u003c/code\u003e\u003c/a\u003e release 4.54.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/b35c8eedaf94906ed0e7938c7526dced550e6fa0\"\u003e\u003ccode\u003eb35c8ee\u003c/code\u003e\u003c/a\u003e 🐛 fix(schema): cover every replace form in the TOML schema (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3941\"\u003e#3941\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/6eb5c4f5eec439b3924d6adb3d9d16ea7fc88a20\"\u003e\u003ccode\u003e6eb5c4f\u003c/code\u003e\u003c/a\u003e ✨ feat(packaging): declare tox.pytest deps via a testing extra (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3940\"\u003e#3940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/1ad47ddaab21c891f136a9627d1c6cdb6ea655d7\"\u003e\u003ccode\u003e1ad47dd\u003c/code\u003e\u003c/a\u003e 🧪 test(conftest): strip broken nspkg.pth files under py3.15 (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3937\"\u003e#3937\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/dfba9661b10aa5148daf7267b80fec50f4faa9d2\"\u003e\u003ccode\u003edfba966\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3936\"\u003e#3936\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/21069af5f5b93774f88c271d5deb1389cd2caf12\"\u003e\u003ccode\u003e21069af\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3933\"\u003e#3933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/2b177917e4c0208c3e380e43f8d32d507180d82e\"\u003e\u003ccode\u003e2b17791\u003c/code\u003e\u003c/a\u003e release 4.53.1\u003c/li\u003e\n\u003cli...\n\n_Description has been truncated_","html_url":"https://github.com/repository-service-tuf/repository-service-tuf-cli/pull/953","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/repository-service-tuf%2Frepository-service-tuf-cli/issues/953","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/953/packages"},{"uuid":"4499067379","node_id":"PR_kwDOC_dG4M7eKhGU","number":109,"state":"open","title":"Bump build from 1.4.4 to 1.5.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-22T01:32:59.000Z","updated_at":"2026-05-22T01:33:30.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"build","old_version":"1.4.4","new_version":"1.5.0","repository_url":"https://github.com/pypa/build"}],"path":null,"ecosystem":"pip"},"body":"Bumps [build](https://github.com/pypa/build) from 1.4.4 to 1.5.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/releases\"\u003ebuild's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: try to improve release docs by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1051\"\u003epypa/build#1051\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: drop 3.9, require 3.10+ by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1036\"\u003epypa/build#1036\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: tox toml by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1033\"\u003epypa/build#1033\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: api should not ignore installed, only CLI by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1056\"\u003epypa/build#1056\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.4...1.5.0\"\u003ehttps://github.com/pypa/build/compare/1.4.4...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e####################\n1.5.0 (2026-04-30)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.9 support - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1036\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003e--ignore-installed\u003c/code\u003e opt-in from the API via \u003ccode\u003efresh=True\u003c/code\u003e - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1056\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1033\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.4 (2026-04-22)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eFix release pipeline generating \u003ccode\u003eCHANGELOG.rst\u003c/code\u003e entries with inconsistent heading levels, which broke \u003ccode\u003esphinx -W\u003c/code\u003e\nand pinned Read the Docs \u003ccode\u003estable\u003c/code\u003e at 1.4.0 - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e1031\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRevert :pr:\u003ccode\u003e1039\u003c/code\u003e from build 1.4.3, no longer check direct_url (for now) - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1039\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--ignore-installed\u003c/code\u003e to pip install command to prevent issues with packages already present in the isolated\nbuild environment - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1037\u003c/code\u003e) (:issue:\u003ccode\u003e1040\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePartial revert of :pr:\u003ccode\u003e973\u003c/code\u003e, keeping log messages in one entry, multiple lines. (:issue:\u003ccode\u003e1044\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1048\u003c/code\u003e, :issue:\u003ccode\u003e1049\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.3 (2026-04-10)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/615d04cfc52ac3c1592a463f0afe484fee1cc368\"\u003e\u003ccode\u003e615d04c\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/776f702f84787525df62a5473dd13d4e2f45b977\"\u003e\u003ccode\u003e776f702\u003c/code\u003e\u003c/a\u003e fix: api should not ignore installed, only CLI (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/42da4c4b483563819fabdb8ecf2f6df53ed82123\"\u003e\u003ccode\u003e42da4c4\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1055\"\u003e#1055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b445cd2e736db5f80cde7d952d620a73cc26bf9d\"\u003e\u003ccode\u003eb445cd2\u003c/code\u003e\u003c/a\u003e chore: tox toml (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/c44c143876042ac6e1212a31684a3adca19beda4\"\u003e\u003ccode\u003ec44c143\u003c/code\u003e\u003c/a\u003e feat: drop 3.9, require 3.10+ (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/a9bb4560d213069b11c8068159f1de060abec5b7\"\u003e\u003ccode\u003ea9bb456\u003c/code\u003e\u003c/a\u003e build(deps): bump astral-sh/setup-uv from 8.0.0 to 8.1.0 in the actions group...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/cb3351155ce99902580022acb81dc0adb8124d53\"\u003e\u003ccode\u003ecb33511\u003c/code\u003e\u003c/a\u003e ci: try to improve release docs (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1051\"\u003e#1051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pypa/build/compare/1.4.4...1.5.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=build\u0026package-manager=pip\u0026previous-version=1.4.4\u0026new-version=1.5.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/Senzing/mapper-csv/pull/109","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Senzing%2Fmapper-csv/issues/109","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/109/packages"},{"uuid":"4498859250","node_id":"PR_kwDOJAXBF87eJ3Mh","number":82,"state":"open","title":"Bump build from 1.4.4 to 1.5.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-22T00:43:02.000Z","updated_at":"2026-05-26T07:03:19.300Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"build","old_version":"1.4.4","new_version":"1.5.0","repository_url":"https://github.com/pypa/build"}],"path":null,"ecosystem":"pip"},"body":"Bumps [build](https://github.com/pypa/build) from 1.4.4 to 1.5.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/releases\"\u003ebuild's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: try to improve release docs by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1051\"\u003epypa/build#1051\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: drop 3.9, require 3.10+ by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1036\"\u003epypa/build#1036\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: tox toml by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1033\"\u003epypa/build#1033\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: api should not ignore installed, only CLI by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1056\"\u003epypa/build#1056\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.4...1.5.0\"\u003ehttps://github.com/pypa/build/compare/1.4.4...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e####################\n1.5.0 (2026-04-30)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.9 support - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1036\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003e--ignore-installed\u003c/code\u003e opt-in from the API via \u003ccode\u003efresh=True\u003c/code\u003e - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1056\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1033\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.4 (2026-04-22)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eFix release pipeline generating \u003ccode\u003eCHANGELOG.rst\u003c/code\u003e entries with inconsistent heading levels, which broke \u003ccode\u003esphinx -W\u003c/code\u003e\nand pinned Read the Docs \u003ccode\u003estable\u003c/code\u003e at 1.4.0 - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e1031\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRevert :pr:\u003ccode\u003e1039\u003c/code\u003e from build 1.4.3, no longer check direct_url (for now) - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1039\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--ignore-installed\u003c/code\u003e to pip install command to prevent issues with packages already present in the isolated\nbuild environment - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1037\u003c/code\u003e) (:issue:\u003ccode\u003e1040\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePartial revert of :pr:\u003ccode\u003e973\u003c/code\u003e, keeping log messages in one entry, multiple lines. (:issue:\u003ccode\u003e1044\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1048\u003c/code\u003e, :issue:\u003ccode\u003e1049\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.3 (2026-04-10)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/615d04cfc52ac3c1592a463f0afe484fee1cc368\"\u003e\u003ccode\u003e615d04c\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/776f702f84787525df62a5473dd13d4e2f45b977\"\u003e\u003ccode\u003e776f702\u003c/code\u003e\u003c/a\u003e fix: api should not ignore installed, only CLI (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/42da4c4b483563819fabdb8ecf2f6df53ed82123\"\u003e\u003ccode\u003e42da4c4\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1055\"\u003e#1055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b445cd2e736db5f80cde7d952d620a73cc26bf9d\"\u003e\u003ccode\u003eb445cd2\u003c/code\u003e\u003c/a\u003e chore: tox toml (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/c44c143876042ac6e1212a31684a3adca19beda4\"\u003e\u003ccode\u003ec44c143\u003c/code\u003e\u003c/a\u003e feat: drop 3.9, require 3.10+ (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/a9bb4560d213069b11c8068159f1de060abec5b7\"\u003e\u003ccode\u003ea9bb456\u003c/code\u003e\u003c/a\u003e build(deps): bump astral-sh/setup-uv from 8.0.0 to 8.1.0 in the actions group...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/cb3351155ce99902580022acb81dc0adb8124d53\"\u003e\u003ccode\u003ecb33511\u003c/code\u003e\u003c/a\u003e ci: try to improve release docs (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1051\"\u003e#1051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pypa/build/compare/1.4.4...1.5.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=build\u0026package-manager=pip\u0026previous-version=1.4.4\u0026new-version=1.5.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/Senzing/mapper-open-ownership/pull/82","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Senzing%2Fmapper-open-ownership/issues/82","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/82/packages"},{"uuid":"4496813340","node_id":"PR_kwDOM3t4IM7eDLRy","number":129,"state":"open","title":"Bump build from 1.4.4 to 1.5.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-21T17:57:06.000Z","updated_at":"2026-05-26T22:52:56.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"build","old_version":"1.4.4","new_version":"1.5.0","repository_url":"https://github.com/pypa/build"}],"path":null,"ecosystem":"pip"},"body":"Bumps [build](https://github.com/pypa/build) from 1.4.4 to 1.5.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/releases\"\u003ebuild's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: try to improve release docs by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1051\"\u003epypa/build#1051\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: drop 3.9, require 3.10+ by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1036\"\u003epypa/build#1036\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: tox toml by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1033\"\u003epypa/build#1033\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: api should not ignore installed, only CLI by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1056\"\u003epypa/build#1056\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.4...1.5.0\"\u003ehttps://github.com/pypa/build/compare/1.4.4...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e####################\n1.5.0 (2026-04-30)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.9 support - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1036\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003e--ignore-installed\u003c/code\u003e opt-in from the API via \u003ccode\u003efresh=True\u003c/code\u003e - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1056\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1033\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.4 (2026-04-22)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eFix release pipeline generating \u003ccode\u003eCHANGELOG.rst\u003c/code\u003e entries with inconsistent heading levels, which broke \u003ccode\u003esphinx -W\u003c/code\u003e\nand pinned Read the Docs \u003ccode\u003estable\u003c/code\u003e at 1.4.0 - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e1031\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRevert :pr:\u003ccode\u003e1039\u003c/code\u003e from build 1.4.3, no longer check direct_url (for now) - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1039\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--ignore-installed\u003c/code\u003e to pip install command to prevent issues with packages already present in the isolated\nbuild environment - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1037\u003c/code\u003e) (:issue:\u003ccode\u003e1040\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePartial revert of :pr:\u003ccode\u003e973\u003c/code\u003e, keeping log messages in one entry, multiple lines. (:issue:\u003ccode\u003e1044\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1048\u003c/code\u003e, :issue:\u003ccode\u003e1049\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.3 (2026-04-10)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/615d04cfc52ac3c1592a463f0afe484fee1cc368\"\u003e\u003ccode\u003e615d04c\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/776f702f84787525df62a5473dd13d4e2f45b977\"\u003e\u003ccode\u003e776f702\u003c/code\u003e\u003c/a\u003e fix: api should not ignore installed, only CLI (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/42da4c4b483563819fabdb8ecf2f6df53ed82123\"\u003e\u003ccode\u003e42da4c4\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1055\"\u003e#1055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b445cd2e736db5f80cde7d952d620a73cc26bf9d\"\u003e\u003ccode\u003eb445cd2\u003c/code\u003e\u003c/a\u003e chore: tox toml (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/c44c143876042ac6e1212a31684a3adca19beda4\"\u003e\u003ccode\u003ec44c143\u003c/code\u003e\u003c/a\u003e feat: drop 3.9, require 3.10+ (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/a9bb4560d213069b11c8068159f1de060abec5b7\"\u003e\u003ccode\u003ea9bb456\u003c/code\u003e\u003c/a\u003e build(deps): bump astral-sh/setup-uv from 8.0.0 to 8.1.0 in the actions group...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/cb3351155ce99902580022acb81dc0adb8124d53\"\u003e\u003ccode\u003ecb33511\u003c/code\u003e\u003c/a\u003e ci: try to improve release docs (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1051\"\u003e#1051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pypa/build/compare/1.4.4...1.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n","html_url":"https://github.com/Senzing/mapper-orbis/pull/129","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Senzing%2Fmapper-orbis/issues/129","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/129/packages"},{"uuid":"4490676395","node_id":"PR_kwDONA2LH87dvOvC","number":179,"state":"open","title":"chore(deps): bump the minor-and-patch group across 1 directory with 9 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-20T23:59:01.000Z","updated_at":"2026-05-21T00:02:37.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"minor-and-patch","update_count":9,"packages":[{"name":"cpg-utils","old_version":"5.6.0","new_version":"5.6.1","repository_url":"https://github.com/populationgenomics/cpg-utils"},{"name":"grpcio","old_version":"1.78.0","new_version":"1.80.0","repository_url":"https://github.com/grpc/grpc"},{"name":"grpcio-status","old_version":"1.78.0","new_version":"1.80.0"},{"name":"black","old_version":"26.3.1","new_version":"26.5.1","repository_url":"https://github.com/psf/black"},{"name":"build","old_version":"1.4.2","new_version":"1.5.0","repository_url":"https://github.com/pypa/build"},{"name":"coverage","old_version":"7.13.5","new_version":"7.14.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"ruff","old_version":"0.15.7","new_version":"0.15.13","repository_url":"https://github.com/astral-sh/ruff"},{"name":"mike","old_version":"2.1.4","new_version":"2.2.0","repository_url":"https://github.com/jimporter/mike"},{"name":"pyright","old_version":"1.1.408","new_version":"1.1.409","repository_url":"https://github.com/RobertCraigie/pyright-python"}],"path":null,"ecosystem":"pip"},"body":"Bumps the minor-and-patch group with 9 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [cpg-utils](https://github.com/populationgenomics/cpg-utils) | `5.6.0` | `5.6.1` |\n| [grpcio](https://github.com/grpc/grpc) | `1.78.0` | `1.80.0` |\n| [grpcio-status](https://grpc.io) | `1.78.0` | `1.80.0` |\n| [black](https://github.com/psf/black) | `26.3.1` | `26.5.1` |\n| [build](https://github.com/pypa/build) | `1.4.2` | `1.5.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.5` | `7.14.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.7` | `0.15.13` |\n| [mike](https://github.com/jimporter/mike) | `2.1.4` | `2.2.0` |\n| [pyright](https://github.com/RobertCraigie/pyright-python) | `1.1.408` | `1.1.409` |\n\n\nUpdates `cpg-utils` from 5.6.0 to 5.6.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/populationgenomics/cpg-utils/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `grpcio` from 1.78.0 to 1.80.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003egrpcio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.80.0\u003c/h2\u003e\n\u003cp\u003eThis is release 1.80.0 (\u003ca href=\"https://github.com/grpc/grpc/blob/master/doc/g_stands_for.md\"\u003eglimmering\u003c/a\u003e) of gRPC Core.\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes, with highlights listed below.\u003c/p\u003e\n\u003ch2\u003eCore\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ssl] Implement TLS private key signer in Python. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41701\"\u003e#41701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[TLS Credentials]: Private Key Offload Implementation. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41606\"\u003e#41606\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix max sockaddr struct size on OpenBSD. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40454\"\u003e#40454\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[core] Enable EventEngine for Python by default, and EventEngine fork support in Python and Ruby. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41432\"\u003e#41432\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[TLS Credentials]: Create InMemoryCertificateProvider to update certificates independently. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41484\"\u003e#41484\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[Ruby] Build/test ruby 4.0 and build native gems with Ruby 4.0 support. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41324\"\u003e#41324\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[EventEngine] Remove an incorrect std::move in DNSServiceResolver constructor. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41502\"\u003e#41502\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[RR and WRR] enable change to connect from a random index. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41472\"\u003e#41472\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[xds] Implement gRFC A101. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41051\"\u003e#41051\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eC++\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[C++] Add SNI override option to C++ channel credentials options API. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41460\"\u003e#41460\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eC#\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[C# tools] Option to append Async to server side method names \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/39010\"\u003e#39010\u003c/a\u003e. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/39797\"\u003e#39797\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eObjective-C\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Fix][Compiler] Plugins fall back to the edition 2023 for older protobuf. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41357\"\u003e#41357\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePHP\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[PHP] Disable php infinite recursion check for callback from Core to PHP. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41835\"\u003e#41835\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[PHP] Fix runtime error with PHp8.5 alpha because zend_exception_get_defaul…. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40337\"\u003e#40337\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePython\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Python] Fix \u003ccode\u003eGRPC_TRACE\u003c/code\u003e not working when absl log initialized in cython. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41814\"\u003e#41814\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRevert \u0026quot;[Python] Align GRPC_ENABLE_FORK_SUPPORT env defaults in core and python (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41455\"\u003e#41455\u003c/a\u003e)\u0026quot;. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41769\"\u003e#41769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[Python] Fix AsyncIO Server maximum_concurrent_rpcs enforcement preventing negative active_rpcs count. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41532\"\u003e#41532\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[Python] Docs: correct \u003ccode\u003egrpc.Compression\u003c/code\u003e references. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41705\"\u003e#41705\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[Python] [Typeguard] Part 4 - Add Typeguard to AIO stack in tests . (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40226\"\u003e#40226\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/grpc/grpc/commit/f5e2d6e856176c2f6b7691032adfefe21e5f64c1\"\u003e\u003ccode\u003ef5e2d6e\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.80.0 (on v1.80.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41857\"\u003e#41857\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/938cfecaebfc28b5e6bcdb95d55aba3962d9b55b\"\u003e\u003ccode\u003e938cfec\u003c/code\u003e\u003c/a\u003e [subchannel connection scaling] fix when we reset backoff (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41935\"\u003e#41935\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/91778bec667d7310864420f2b32aeb2e41e1b51c\"\u003e\u003ccode\u003e91778be\u003c/code\u003e\u003c/a\u003e [Backport][v1.80.x][Python] New \u003ccode\u003e_create\u003c/code\u003e method for aio.Metadata (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41888\"\u003e#41888\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f10b9f26933703c5fe3e080f50ef19c858d773e0\"\u003e\u003ccode\u003ef10b9f2\u003c/code\u003e\u003c/a\u003e [bzlmod] upgrade rules_swift to avoid BCR CI breakage on Windows with bazel 7...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/be4c1c55b69493868241bfffd4bc318d3d592656\"\u003e\u003ccode\u003ebe4c1c5\u003c/code\u003e\u003c/a\u003e [subchannel] fix crash in connection scaling code (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41853\"\u003e#41853\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/a71df73eafb18fa0210a13dd6a2ce2cb6594d427\"\u003e\u003ccode\u003ea71df73\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.80.0-pre1 (on v1.80.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41844\"\u003e#41844\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/3ca09e4818f4362e75c9c224f1d4c2065db75a0a\"\u003e\u003ccode\u003e3ca09e4\u003c/code\u003e\u003c/a\u003e [Python] Fix GRPC_TRACE and add test to check the GRPC_TRACE logs print (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41814\"\u003e#41814\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/260c6fd37c502e984836a446c5d90e4a1298036d\"\u003e\u003ccode\u003e260c6fd\u003c/code\u003e\u003c/a\u003e [PHP] Disable php infinite recursion check for callback from Core to PHP (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41\"\u003e#41\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/50957c5c47de1c85637fc9dafe6d4eb4c1224f6b\"\u003e\u003ccode\u003e50957c5\u003c/code\u003e\u003c/a\u003e [Flakiness] Delete flaky iomgr fd_conservation_posix_test and create an Event...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/e1e1d0a8150b5178d4b75e15f4856a4d825a8999\"\u003e\u003ccode\u003ee1e1d0a\u003c/code\u003e\u003c/a\u003e [Bzlmod] Turn off bzlmod for PSM python tests. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41810\"\u003e#41810\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc/compare/v1.78.0...v1.80.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `grpcio-status` from 1.78.0 to 1.80.0\n\nUpdates `black` from 26.3.1 to 26.5.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/black/releases\"\u003eblack's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.5.1\u003c/h2\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix unstable formatting of annotated assignments whose subscript annotation contains\nan inline comment (e.g. \u003ccode\u003ex: list[  # pyright: ignore[...]\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/psf/black/issues/5130\"\u003e#5130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve inline comments (including \u003ccode\u003e# type: ignore\u003c/code\u003e) immediately before a\n\u003ccode\u003e# fmt: skip\u003c/code\u003e line, avoiding AST equivalence failures (\u003ca href=\"https://redirect.github.com/psf/black/issues/5139\"\u003e#5139\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCorrect the version in the published executables (\u003ca href=\"https://redirect.github.com/psf/black/issues/5137\"\u003e#5137\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Neovim integration guide covering conform.nvim, ALE, and simple command approaches\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/5124\"\u003e#5124\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e26.5.0\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for unpacking in comprehensions (PEP 798) and for lazy imports (PEP 810),\nboth new syntactic features in Python 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5048\"\u003e#5048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePython 3.15 is now supported. Compiled wheels are not yet provided for Python 3.15, so\nperformance may be slower than on existing Python versions. Wheels will be provided\nonce Python 3.15 is later in its release cycle. (\u003ca href=\"https://redirect.github.com/psf/black/issues/5127\"\u003e#5127\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003e# fmt: skip\u003c/code\u003e being ignored in nested \u003ccode\u003eif\u003c/code\u003e expressions with parenthesized \u003ccode\u003ein\u003c/code\u003e\nclauses (\u003ca href=\"https://redirect.github.com/psf/black/issues/4903\"\u003e#4903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd syntactic support for Python 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5048\"\u003e#5048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when an f-string follows a \u003ccode\u003e# fmt: off\u003c/code\u003e comment inside brackets (\u003ca href=\"https://redirect.github.com/psf/black/issues/5097\"\u003e#5097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve multiline compound statement headers when \u003ccode\u003e# fmt: skip\u003c/code\u003e is placed on the\ncolon line (\u003ca href=\"https://redirect.github.com/psf/black/issues/5117\"\u003e#5117\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove heuristics around whether blank lines should appear before, within and after\ngroups of same-name decorated functions (such as \u003ccode\u003e@overload\u003c/code\u003e groups) in \u003ccode\u003e.pyi\u003c/code\u003e stub\nfiles (\u003ca href=\"https://redirect.github.com/psf/black/issues/5021\"\u003e#5021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix blank lines being removed between a function and a decorated class in \u003ccode\u003e.pyi\u003c/code\u003e stub\nfiles (\u003ca href=\"https://redirect.github.com/psf/black/issues/5092\"\u003e#5092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrevent string merger from creating unsplittable long lines when a pragma comment\n(e.g. \u003ccode\u003e# type: ignore\u003c/code\u003e) follows the closing bracket (\u003ca href=\"https://redirect.github.com/psf/black/issues/5096\"\u003e#5096\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRun CI on 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5127\"\u003e#5127\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOutput\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/psf/black/blob/main/CHANGES.md\"\u003eblack's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 26.5.1\u003c/h2\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix unstable formatting of annotated assignments whose subscript annotation contains\nan inline comment (e.g. \u003ccode\u003ex: list[  # pyright: ignore[...]\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/psf/black/issues/5130\"\u003e#5130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve inline comments (including \u003ccode\u003e# type: ignore\u003c/code\u003e) immediately before a\n\u003ccode\u003e# fmt: skip\u003c/code\u003e line, avoiding AST equivalence failures (\u003ca href=\"https://redirect.github.com/psf/black/issues/5139\"\u003e#5139\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCorrect the version in the published executables (\u003ca href=\"https://redirect.github.com/psf/black/issues/5137\"\u003e#5137\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Neovim integration guide covering conform.nvim, ALE, and simple command approaches\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/5124\"\u003e#5124\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 26.5.0\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for unpacking in comprehensions (PEP 798) and for lazy imports (PEP 810),\nboth new syntactic features in Python 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5048\"\u003e#5048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePython 3.15 is now supported. Compiled wheels are not yet provided for Python 3.15, so\nperformance may be slower than on existing Python versions. Wheels will be provided\nonce Python 3.15 is later in its release cycle. (\u003ca href=\"https://redirect.github.com/psf/black/issues/5127\"\u003e#5127\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003e# fmt: skip\u003c/code\u003e being ignored in nested \u003ccode\u003eif\u003c/code\u003e expressions with parenthesized \u003ccode\u003ein\u003c/code\u003e\nclauses (\u003ca href=\"https://redirect.github.com/psf/black/issues/4903\"\u003e#4903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd syntactic support for Python 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5048\"\u003e#5048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when an f-string follows a \u003ccode\u003e# fmt: off\u003c/code\u003e comment inside brackets (\u003ca href=\"https://redirect.github.com/psf/black/issues/5097\"\u003e#5097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve multiline compound statement headers when \u003ccode\u003e# fmt: skip\u003c/code\u003e is placed on the\ncolon line (\u003ca href=\"https://redirect.github.com/psf/black/issues/5117\"\u003e#5117\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove heuristics around whether blank lines should appear before, within and after\ngroups of same-name decorated functions (such as \u003ccode\u003e@overload\u003c/code\u003e groups) in \u003ccode\u003e.pyi\u003c/code\u003e stub\nfiles (\u003ca href=\"https://redirect.github.com/psf/black/issues/5021\"\u003e#5021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix blank lines being removed between a function and a decorated class in \u003ccode\u003e.pyi\u003c/code\u003e stub\nfiles (\u003ca href=\"https://redirect.github.com/psf/black/issues/5092\"\u003e#5092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrevent string merger from creating unsplittable long lines when a pragma comment\n(e.g. \u003ccode\u003e# type: ignore\u003c/code\u003e) follows the closing bracket (\u003ca href=\"https://redirect.github.com/psf/black/issues/5096\"\u003e#5096\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRun CI on 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5127\"\u003e#5127\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/87928e6d6761a4a6d22250e1fee5601b3998086e\"\u003e\u003ccode\u003e87928e6\u003c/code\u003e\u003c/a\u003e Prepare release 26.5.1 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5140\"\u003e#5140\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/c970a49702488739add6c728122deb3a99900803\"\u003e\u003ccode\u003ec970a49\u003c/code\u003e\u003c/a\u003e Preserve comments before fmt: skip lines (\u003ca href=\"https://redirect.github.com/psf/black/issues/5139\"\u003e#5139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/5809338fd5f92d50e80c2ad312292ae6d428a480\"\u003e\u003ccode\u003e5809338\u003c/code\u003e\u003c/a\u003e Preserve inline comments inside annotation subscripts (\u003ca href=\"https://redirect.github.com/psf/black/issues/5130\"\u003e#5130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/61361b71995f6ea44ce01915bacd3ecc50642507\"\u003e\u003ccode\u003e61361b7\u003c/code\u003e\u003c/a\u003e docs: add Neovim integration guide and fix http link (\u003ca href=\"https://redirect.github.com/psf/black/issues/5124\"\u003e#5124\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/ebe6018e3254629788376e619207719fbe34a849\"\u003e\u003ccode\u003eebe6018\u003c/code\u003e\u003c/a\u003e CI Hotfixes (\u003ca href=\"https://redirect.github.com/psf/black/issues/5136\"\u003e#5136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/9cbd95f80e97c1ab4d690d1d41b81579a13bf75c\"\u003e\u003ccode\u003e9cbd95f\u003c/code\u003e\u003c/a\u003e Fix publish binaries again on Windows (\u003ca href=\"https://redirect.github.com/psf/black/issues/5134\"\u003e#5134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/3dc8e6c41911bdaedb4bac8d633979c34a112b78\"\u003e\u003ccode\u003e3dc8e6c\u003c/code\u003e\u003c/a\u003e Add new changelog (\u003ca href=\"https://redirect.github.com/psf/black/issues/5132\"\u003e#5132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/6d0fff0d5a965b9d0d3dbd7c5738d835fd574130\"\u003e\u003ccode\u003e6d0fff0\u003c/code\u003e\u003c/a\u003e Fix publish binaries workflow (\u003ca href=\"https://redirect.github.com/psf/black/issues/5133\"\u003e#5133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/d2490e24dad33b8f68c77602ee29160de0fea24b\"\u003e\u003ccode\u003ed2490e2\u003c/code\u003e\u003c/a\u003e Prepare release 26.5.0 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5131\"\u003e#5131\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/2b13ea76fa69d4923381df65deb1a5c896ca27ad\"\u003e\u003ccode\u003e2b13ea7\u003c/code\u003e\u003c/a\u003e Preserve multiline headers with fmt skip (\u003ca href=\"https://redirect.github.com/psf/black/issues/5117\"\u003e#5117\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/black/compare/26.3.1...26.5.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `build` from 1.4.2 to 1.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/releases\"\u003ebuild's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: try to improve release docs by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1051\"\u003epypa/build#1051\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: drop 3.9, require 3.10+ by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1036\"\u003epypa/build#1036\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: tox toml by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1033\"\u003epypa/build#1033\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: api should not ignore installed, only CLI by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1056\"\u003epypa/build#1056\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.4...1.5.0\"\u003ehttps://github.com/pypa/build/compare/1.4.4...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.4.4\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(release): generate consistent CHANGELOG heading levels by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1032\"\u003epypa/build#1032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: move source links by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1034\"\u003epypa/build#1034\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erevert: drop PEP 660 change by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1039\"\u003epypa/build#1039\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: ignore installed when running pip by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1040\"\u003epypa/build#1040\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: revert part of \u003ca href=\"https://redirect.github.com/pypa/build/issues/973\"\u003e#973\u003c/a\u003e by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1044\"\u003epypa/build#1044\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: report coverage failure lines by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1046\"\u003epypa/build#1046\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: fix issue with uv run by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1048\"\u003epypa/build#1048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: reorganize testing docs for copy/paste by \u003ca href=\"https://github.com/abitrolly\"\u003e\u003ccode\u003e@​abitrolly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1043\"\u003epypa/build#1043\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: keep environment from leaking in Python 3.15 by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1049\"\u003epypa/build#1049\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix issue with changelog generation by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1050\"\u003epypa/build#1050\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.3...1.4.4\"\u003ehttps://github.com/pypa/build/compare/1.4.3...1.4.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.4.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(api): resolve thread-safety races in build API by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1015\"\u003epypa/build#1015\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(builder): validate backend-path entries exist on disk by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1016\"\u003epypa/build#1016\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest: cover config settings build paths by \u003ca href=\"https://github.com/terminalchai\"\u003e\u003ccode\u003e@​terminalchai\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/992\"\u003epypa/build#992\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd kind=(step, ) for root messages with * by \u003ca href=\"https://github.com/abitrolly\"\u003e\u003ccode\u003e@​abitrolly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/973\"\u003epypa/build#973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: correct changelog category ordering by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1017\"\u003epypa/build#1017\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(cli): show full dependency chain in missing deps error by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1019\"\u003epypa/build#1019\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: fully annotate by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1020\"\u003epypa/build#1020\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: lazy imports by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1021\"\u003epypa/build#1021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: adding more ruff codes by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1022\"\u003epypa/build#1022\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: improve annotations by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1023\"\u003epypa/build#1023\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 test(coverage): achieve 100% test coverage by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1018\"\u003epypa/build#1018\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: add ruff PT by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1025\"\u003epypa/build#1025\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: add ruff PYI by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1026\"\u003epypa/build#1026\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: add ruff SIM/RET by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1028\"\u003epypa/build#1028\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(env): strip PYTHONPATH from isolated builds by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1024\"\u003epypa/build#1024\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: use ruff ALL by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1029\"\u003epypa/build#1029\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e####################\n1.5.0 (2026-04-30)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.9 support - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1036\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003e--ignore-installed\u003c/code\u003e opt-in from the API via \u003ccode\u003efresh=True\u003c/code\u003e - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1056\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1033\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.4 (2026-04-22)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eFix release pipeline generating \u003ccode\u003eCHANGELOG.rst\u003c/code\u003e entries with inconsistent heading levels, which broke \u003ccode\u003esphinx -W\u003c/code\u003e\nand pinned Read the Docs \u003ccode\u003estable\u003c/code\u003e at 1.4.0 - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e1031\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRevert :pr:\u003ccode\u003e1039\u003c/code\u003e from build 1.4.3, no longer check direct_url (for now) - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1039\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--ignore-installed\u003c/code\u003e to pip install command to prevent issues with packages already present in the isolated\nbuild environment - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1037\u003c/code\u003e) (:issue:\u003ccode\u003e1040\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePartial revert of :pr:\u003ccode\u003e973\u003c/code\u003e, keeping log messages in one entry, multiple lines. (:issue:\u003ccode\u003e1044\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1048\u003c/code\u003e, :issue:\u003ccode\u003e1049\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.3 (2026-04-10)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/615d04cfc52ac3c1592a463f0afe484fee1cc368\"\u003e\u003ccode\u003e615d04c\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/776f702f84787525df62a5473dd13d4e2f45b977\"\u003e\u003ccode\u003e776f702\u003c/code\u003e\u003c/a\u003e fix: api should not ignore installed, only CLI (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/42da4c4b483563819fabdb8ecf2f6df53ed82123\"\u003e\u003ccode\u003e42da4c4\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1055\"\u003e#1055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b445cd2e736db5f80cde7d952d620a73cc26bf9d\"\u003e\u003ccode\u003eb445cd2\u003c/code\u003e\u003c/a\u003e chore: tox toml (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/c44c143876042ac6e1212a31684a3adca19beda4\"\u003e\u003ccode\u003ec44c143\u003c/code\u003e\u003c/a\u003e feat: drop 3.9, require 3.10+ (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/a9bb4560d213069b11c8068159f1de060abec5b7\"\u003e\u003ccode\u003ea9bb456\u003c/code\u003e\u003c/a\u003e build(deps): bump astral-sh/setup-uv from 8.0.0 to 8.1.0 in the actions group...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/cb3351155ce99902580022acb81dc0adb8124d53\"\u003e\u003ccode\u003ecb33511\u003c/code\u003e\u003c/a\u003e ci: try to improve release docs (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1051\"\u003e#1051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/70666a296c2e5bb7451f5a04eef259f6f943d0de\"\u003e\u003ccode\u003e70666a2\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/653d86586dea8b4e020086a276a15a27ac7bd25d\"\u003e\u003ccode\u003e653d865\u003c/code\u003e\u003c/a\u003e docs: fix issue with changelog generation (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1050\"\u003e#1050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/373b9ee171e2f16353365b1a9a02bc408b96ca73\"\u003e\u003ccode\u003e373b9ee\u003c/code\u003e\u003c/a\u003e tests: keep environment from leaking in Python 3.15 (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1049\"\u003e#1049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.4.2...1.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.13.5 to 7.14.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst\"\u003ecoverage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.14.0 — 2026-05-10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFeature: now when running one of the reporting commands, if there are\nparallel data files that need combining, they will be implicitly combined\nbefore creating the report. There is no option to avoid the combination; let\nus know if you have a use case that requires it.  Thanks, \u003ccode\u003eTim Hatch \u0026lt;pull 2162_\u0026gt;\u003c/code\u003e\u003cem\u003e. Closes \u003ccode\u003eissue 1781\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the output from \u003ccode\u003ecombine\u003c/code\u003e was too verbose, listing each file\nconsidered. Now it shows a single line with the counts of files combined,\nfiles skipped, and files with errors. The \u003ccode\u003e-q\u003c/code\u003e flag suppresses this line.\nThe old detailed lines are available with the new \u003ccode\u003e--debug=combine\u003c/code\u003e option.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: running a Python file through a symlink now sets the sys.path correctly,\nmatching regular Python behavior. Fixes \u003ccode\u003eissue 2157\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003eCollector.flush_data\u003c/code\u003e could fail with \u0026quot;RuntimeError: Set changed\nsize during iteration\u0026quot; when a tracer in another thread added a line to the\nper-file set that \u003ccode\u003eadd_lines\u003c/code\u003e (or \u003ccode\u003eadd_arcs\u003c/code\u003e) was iterating. The values\npassed to \u003ccode\u003eCoverageData\u003c/code\u003e are now snapshotted via \u003ccode\u003edict.copy()\u003c/code\u003e and\n\u003ccode\u003eset.copy()\u003c/code\u003e, which are atomic under the GIL. Thanks, \u003ccode\u003eAlex Vandiver \u0026lt;pull 2165_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the soft keyword \u003ccode\u003elazy\u003c/code\u003e is now bolded in HTML reports.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWe are no longer testing eventlet support. Eventlet started issuing stern\ndeprecation warnings that break our tests. Our support code is still there.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1781: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1781\"\u003ecoveragepy/coveragepy#1781\u003c/a\u003e\n.. _issue 2157: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2157\"\u003ecoveragepy/coveragepy#2157\u003c/a\u003e\n.. _pull 2162: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2162\"\u003ecoveragepy/coveragepy#2162\u003c/a\u003e\n.. _pull 2165: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2165\"\u003ecoveragepy/coveragepy#2165\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-13-5:\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/646351b60429f1b5760af6c1b97b28483244a955\"\u003e\u003ccode\u003e646351b\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/39cd015505c8b04369c5b06e34fc22449a697370\"\u003e\u003ccode\u003e39cd015\u003c/code\u003e\u003c/a\u003e docs: prep for 7.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/649e8aa34af7d80c386ae82e8a3a6c9a3acb0dab\"\u003e\u003ccode\u003e649e8aa\u003c/code\u003e\u003c/a\u003e docs: thanks Alex Vandiver for \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2165\"\u003e#2165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/8cd392e3b5c4bc15d534aaec0c21714f9f518469\"\u003e\u003ccode\u003e8cd392e\u003c/code\u003e\u003c/a\u003e fix: snapshot data in Collector.flush_data to avoid threading race (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2165\"\u003e#2165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c48e0edc2ebe44621b0053176e90f77b0c79bec1\"\u003e\u003ccode\u003ec48e0ed\u003c/code\u003e\u003c/a\u003e fix: less output for combining\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c2a3a284078556c911e0d9b6c6af1b7082a363ea\"\u003e\u003ccode\u003ec2a3a28\u003c/code\u003e\u003c/a\u003e docs: explain the change from \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2162\"\u003e#2162\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/1cd47aa6ac1da4e150da44055295d4e4f3a014e8\"\u003e\u003ccode\u003e1cd47aa\u003c/code\u003e\u003c/a\u003e fix: implicit combine-during-report now removes the combined data files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/2d99fd7696e0bccec8037479a4e45c1ecccb8058\"\u003e\u003ccode\u003e2d99fd7\u003c/code\u003e\u003c/a\u003e feat: automatically combine coverage in report, thanks Tim Hatch (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2162\"\u003e#2162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/9fbdcdfee1c122fac43f1bf9a5e2d1f4d835f21c\"\u003e\u003ccode\u003e9fbdcdf\u003c/code\u003e\u003c/a\u003e fix: lazy soft keywords are bolded\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/5de7d0267b9466d59995aaae1a7e707c8c6f66e7\"\u003e\u003ccode\u003e5de7d02\u003c/code\u003e\u003c/a\u003e build: oops, misplaced quote\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.13.5...7.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.7 to 0.15.13\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.13\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-14.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a rule to flag lazy imports that are eagerly evaluated (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25016\"\u003e#25016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Standardize diagnostic message (\u003ccode\u003ePLR0914\u003c/code\u003e, \u003ccode\u003ePLR0917\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24996\"\u003e#24996\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eF811\u003c/code\u003e false positive for class methods (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24933\"\u003e#24933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix setting selection for multi-folder workspace (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24819\"\u003e#24819\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eeradicate\u003c/code\u003e] Fix false positive for lines with leading whitespace (\u003ccode\u003eERA001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25122\"\u003e#25122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix false positive for f-string debug specifier (\u003ccode\u003ePYI016\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24098\"\u003e#24098\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlways include panic payload in panic diagnostic message (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24873\"\u003e#24873\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRestrict \u003ccode\u003ePYI034\u003c/code\u003e for in-place operations to enclosing class (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24511\"\u003e#24511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove error message for parameters that are declared \u003ccode\u003eglobal\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24902\"\u003e#24902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate known stdlib (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25103\"\u003e#25103\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Avoid constructing \u003ccode\u003eglob::Pattern\u003c/code\u003es for literal known modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25123\"\u003e#25123\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd TOML examples to \u003ccode\u003e--config\u003c/code\u003e help text (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25013\"\u003e#25013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eColorize ruff check 'All checks passed' (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25085\"\u003e#25085\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIncrease max allowed value of \u003ccode\u003eline-length\u003c/code\u003e setting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24962\"\u003e#24962\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eD203\u003c/code\u003e to rules that conflict with the formatter (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25044\"\u003e#25044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify \u003ccode\u003eCOM819\u003c/code\u003e and formatter interaction (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25045\"\u003e#25045\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify that \u003ccode\u003eNotImplemented\u003c/code\u003e is a value, not an exception (\u003ccode\u003eF901\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25054\"\u003e#25054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate number of lint rules supported (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24942\"\u003e#24942\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSimplify the playground's markdown template (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24924\"\u003e#24924\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.13\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-14.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a rule to flag lazy imports that are eagerly evaluated (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25016\"\u003e#25016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Standardize diagnostic message (\u003ccode\u003ePLR0914\u003c/code\u003e, \u003ccode\u003ePLR0917\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24996\"\u003e#24996\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eF811\u003c/code\u003e false positive for class methods (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24933\"\u003e#24933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix setting selection for multi-folder workspace (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24819\"\u003e#24819\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eeradicate\u003c/code\u003e] Fix false positive for lines with leading whitespace (\u003ccode\u003eERA001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25122\"\u003e#25122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix false positive for f-string debug specifier (\u003ccode\u003ePYI016\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24098\"\u003e#24098\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlways include panic payload in panic diagnostic message (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24873\"\u003e#24873\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRestrict \u003ccode\u003ePYI034\u003c/code\u003e for in-place operations to enclosing class (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24511\"\u003e#24511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove error message for parameters that are declared \u003ccode\u003eglobal\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24902\"\u003e#24902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate known stdlib (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25103\"\u003e#25103\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Avoid constructing \u003ccode\u003eglob::Pattern\u003c/code\u003es for literal known modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25123\"\u003e#25123\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd TOML examples to \u003ccode\u003e--config\u003c/code\u003e help text (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25013\"\u003e#25013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eColorize ruff check 'All checks passed' (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25085\"\u003e#25085\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIncrease max allowed value of \u003ccode\u003eline-length\u003c/code\u003e setting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24962\"\u003e#24962\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eD203\u003c/code\u003e to rules that conflict with the formatter (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25044\"\u003e#25044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify \u003ccode\u003eCOM819\u003c/code\u003e and formatter interaction (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25045\"\u003e#25045\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify that \u003ccode\u003eNotImplemented\u003c/code\u003e is a value, not an exception (\u003ccode\u003eF901\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25054\"\u003e#25054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate number of lint rules supported (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24942\"\u003e#24942\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSimplify the playground's markdown template (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24924\"\u003e#24924\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MichaReiser\"\u003e\u003ccode\u003e@​MichaReiser\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/2afb467ce397e4a89c13a0a814c62cfecb0e9e49\"\u003e\u003ccode\u003e2afb467\u003c/code\u003e\u003c/a\u003e Bump 0.15.13 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25157\"\u003e#25157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/300879600fa3af7cde1e675c63de6ad9d0797d1b\"\u003e\u003ccode\u003e3008796\u003c/code\u003e\u003c/a\u003e [ty] classify TypeVar semantic tokens as type parameters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24891\"\u003e#24891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/79470e31877acb6074f3bbff2a49e508822ae4e8\"\u003e\u003ccode\u003e79470e3\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eisort\u003c/code\u003e] Avoid constructing \u003ccode\u003eglob::Pattern\u003c/code\u003es for literal known modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25123\"\u003e#25123\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/2522549901d50f18775999f0fb802b19229417f0\"\u003e\u003ccode\u003e2522549\u003c/code\u003e\u003c/a\u003e Remove shellcheck from prek (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25154\"\u003e#25154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7db7170020f539d6d2bc01dbd0b0c09fab91dc06\"\u003e\u003ccode\u003e7db7170\u003c/code\u003e\u003c/a\u003e [ty] Support TypedDict key completions in incomplete, anonymous contexts (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25\"\u003e#25\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/bb3dd535f1c5a83e2e56ac93a771fadbeeceebd0\"\u003e\u003ccode\u003ebb3dd53\u003c/code\u003e\u003c/a\u003e [ty] Run full iteration analysis on narrowed typevars (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25143\"\u003e#25143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/828cdb7732efcb16a53f4ee5f011cf653b834d1a\"\u003e\u003ccode\u003e828cdb7\u003c/code\u003e\u003c/a\u003e [ty] Isolate file-watching test environment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25151\"\u003e#25151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/89e1d8670ea4d3af60c8143ee552dc750200718d\"\u003e\u003ccode\u003e89e1d86\u003c/code\u003e\u003c/a\u003e [ty] Preserve TypedDict keys through dict unpacking (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24523\"\u003e#24523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/86f3064d6fffa5697d174f26b840bd6857b381da\"\u003e\u003ccode\u003e86f3064\u003c/code\u003e\u003c/a\u003e [ty] Avoid accessing \u003ccode\u003eargs[0]\u003c/code\u003e for \u003ccode\u003estatic_assert\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25149\"\u003e#25149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ed819f947dc27e36eac8bb3134153c4668d76a3a\"\u003e\u003ccode\u003eed819f9\u003c/code\u003e\u003c/a\u003e [ty] Treat custom enum \u003ccode\u003e__new__\u003c/code\u003e values as dynamic (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25136\"\u003e#25136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.7...0.15.13\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mike` from 2.1.4 to 2.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jimporter/mike/releases\"\u003emike's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.2.0\u003c/h2\u003e\n\u003ch3\u003eNew features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ca href=\"https://properdocs.org/\"\u003eProperDocs\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse DST timestamps for new commits when DST is in effect\u003c/li\u003e\n\u003cli\u003eSupport ISO8601 and RFC 2822 values for \u003ccode\u003eGIT_COMMITTER_DATE\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jimporter/mike/blob/master/CHANGES.md\"\u003emike's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.2.0 (2026-04-13)\u003c/h2\u003e\n\u003ch3\u003eNew features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ca href=\"https://properdocs.org/\"\u003eProperDocs\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse DST timestamps for new commits when DST is in effect\u003c/li\u003e\n\u003cli\u003eSupport ISO8601 and RFC 2822 values for \u003ccode\u003eGIT_COMMITTER_DATE\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/b01e03075315ebd2d39a93c390cf14b6a83f3d5e\"\u003e\u003ccode\u003eb01e030\u003c/code\u003e\u003c/a\u003e Update version to 2.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/ca60b84ddb200d9d2636dce456e35b8ec5be6a0c\"\u003e\u003ccode\u003eca60b84\u003c/code\u003e\u003c/a\u003e Fix deprecation warning about \u003ccode\u003esplit\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/5b5ed3187337693fabcb3c6f8b524f8bc0348150\"\u003e\u003ccode\u003e5b5ed31\u003c/code\u003e\u003c/a\u003e Add ProperDocs support; resolves \u003ca href=\"https://redirect.github.com/jimporter/mike/issues/259\"\u003e#259\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/2adb1f1104e230ce4c6260ae17c960e21886a7a1\"\u003e\u003ccode\u003e2adb1f1\u003c/code\u003e\u003c/a\u003e Improve \u003ccode\u003emake_when\u003c/code\u003e implementation; resolves \u003ca href=\"https://redirect.github.com/jimporter/mike/issues/260\"\u003e#260\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/7363ce50a2a27ce88198383e43168d08c76f4633\"\u003e\u003ccode\u003e7363ce5\u003c/code\u003e\u003c/a\u003e Update version to 2.2.0.dev0\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/jimporter/mike/compare/v2.1.4...v2.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyright` from 1.1.408 to 1.1.409\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/RobertCraigie/pyright-python/commit/d7508e5425d3d02761d70dab1f9a2086573af429\"\u003e\u003ccode\u003ed7508e5\u003c/code\u003e\u003c/a\u003e [pyright updated to 1.1.409] Update Version (\u003ca href=\"https://redirect.github.com/RobertCraigie/pyright-python/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/RobertCraigie/pyright-python/compare/v1.1.408...v1.1.409\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/populationgenomics/cpg-flow/pull/179","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/populationgenomics%2Fcpg-flow/issues/179","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/179/packages"},{"uuid":"4443317947","node_id":"PR_kwDOC9SUl87bYtL2","number":114,"state":"closed","title":"Bump build from 1.4.3 to 1.4.4","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-14T05:04:22.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-14T05:03:36.000Z","updated_at":"2026-05-14T05:04:23.000Z","time_to_close":46,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"build","old_version":"1.4.3","new_version":"1.4.4","repository_url":"https://github.com/pypa/build"}],"path":null,"ecosystem":"pip"},"body":"Bumps [build](https://github.com/pypa/build) from 1.4.3 to 1.4.4.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/releases\"\u003ebuild's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.4\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(release): generate consistent CHANGELOG heading levels by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1032\"\u003epypa/build#1032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: move source links by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1034\"\u003epypa/build#1034\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erevert: drop PEP 660 change by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1039\"\u003epypa/build#1039\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: ignore installed when running pip by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1040\"\u003epypa/build#1040\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: revert part of \u003ca href=\"https://redirect.github.com/pypa/build/issues/973\"\u003e#973\u003c/a\u003e by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1044\"\u003epypa/build#1044\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: report coverage failure lines by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1046\"\u003epypa/build#1046\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: fix issue with uv run by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1048\"\u003epypa/build#1048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: reorganize testing docs for copy/paste by \u003ca href=\"https://github.com/abitrolly\"\u003e\u003ccode\u003e@​abitrolly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1043\"\u003epypa/build#1043\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: keep environment from leaking in Python 3.15 by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1049\"\u003epypa/build#1049\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix issue with changelog generation by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1050\"\u003epypa/build#1050\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.3...1.4.4\"\u003ehttps://github.com/pypa/build/compare/1.4.3...1.4.4\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e####################\n1.5.0 (2026-04-30)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.9 support - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1036\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003e--ignore-installed\u003c/code\u003e opt-in from the API via \u003ccode\u003efresh=True\u003c/code\u003e - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1056\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1033\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.4 (2026-04-22)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eFix release pipeline generating \u003ccode\u003eCHANGELOG.rst\u003c/code\u003e entries with inconsistent heading levels, which broke \u003ccode\u003esphinx -W\u003c/code\u003e\nand pinned Read the Docs \u003ccode\u003estable\u003c/code\u003e at 1.4.0 - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e1031\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRevert :pr:\u003ccode\u003e1039\u003c/code\u003e from build 1.4.3, no longer check direct_url (for now) - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1039\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--ignore-installed\u003c/code\u003e to pip install command to prevent issues with packages already present in the isolated\nbuild environment - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1037\u003c/code\u003e) (:issue:\u003ccode\u003e1040\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePartial revert of :pr:\u003ccode\u003e973\u003c/code\u003e, keeping log messages in one entry, multiple lines. (:issue:\u003ccode\u003e1044\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1048\u003c/code\u003e, :issue:\u003ccode\u003e1049\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.3 (2026-04-10)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/70666a296c2e5bb7451f5a04eef259f6f943d0de\"\u003e\u003ccode\u003e70666a2\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/653d86586dea8b4e020086a276a15a27ac7bd25d\"\u003e\u003ccode\u003e653d865\u003c/code\u003e\u003c/a\u003e docs: fix issue with changelog generation (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1050\"\u003e#1050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/373b9ee171e2f16353365b1a9a02bc408b96ca73\"\u003e\u003ccode\u003e373b9ee\u003c/code\u003e\u003c/a\u003e tests: keep environment from leaking in Python 3.15 (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1049\"\u003e#1049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/e37e2ae697f9dde82709affb9356281fc2a9b98b\"\u003e\u003ccode\u003ee37e2ae\u003c/code\u003e\u003c/a\u003e docs: reorganize testing docs for copy/paste (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1043\"\u003e#1043\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/e9c194ad54413f1923f727ad07c7faf7dff813c0\"\u003e\u003ccode\u003ee9c194a\u003c/code\u003e\u003c/a\u003e tests: fix issue with uv run (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1048\"\u003e#1048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/03b7d7032ae636be992c917c67f8efbf99527c62\"\u003e\u003ccode\u003e03b7d70\u003c/code\u003e\u003c/a\u003e chore: report coverage failure lines (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1046\"\u003e#1046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/2afa3b59977c7e08dc526f19ab670edf99ce6051\"\u003e\u003ccode\u003e2afa3b5\u003c/code\u003e\u003c/a\u003e fix: revert part of \u003ca href=\"https://redirect.github.com/pypa/build/issues/973\"\u003e#973\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1044\"\u003e#1044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b336f60e8008791b7c492078a0725fdadc5875e8\"\u003e\u003ccode\u003eb336f60\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1045\"\u003e#1045\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/6d8039a4503caa2327657eb288c6ce01dabc3eb7\"\u003e\u003ccode\u003e6d8039a\u003c/code\u003e\u003c/a\u003e fix: ignore installed when running pip (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1040\"\u003e#1040\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/ebf6eba272c732ae7e3136edc78ac2597035edd9\"\u003e\u003ccode\u003eebf6eba\u003c/code\u003e\u003c/a\u003e revert: drop PEP 660 change (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1039\"\u003e#1039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.4.3...1.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=build\u0026package-manager=pip\u0026previous-version=1.4.3\u0026new-version=1.4.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/Senzing/mapper-icij/pull/114","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Senzing%2Fmapper-icij/issues/114","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/114/packages"},{"uuid":"4443213420","node_id":"PR_kwDOC9HVY87bYX0v","number":110,"state":"closed","title":"Bump build from 1.4.3 to 1.4.4","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-14T04:41:15.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-14T04:40:28.000Z","updated_at":"2026-05-14T04:41:16.000Z","time_to_close":47,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"build","old_version":"1.4.3","new_version":"1.4.4","repository_url":"https://github.com/pypa/build"}],"path":null,"ecosystem":"pip"},"body":"Bumps [build](https://github.com/pypa/build) from 1.4.3 to 1.4.4.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/releases\"\u003ebuild's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.4\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(release): generate consistent CHANGELOG heading levels by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1032\"\u003epypa/build#1032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: move source links by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1034\"\u003epypa/build#1034\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erevert: drop PEP 660 change by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1039\"\u003epypa/build#1039\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: ignore installed when running pip by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1040\"\u003epypa/build#1040\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: revert part of \u003ca href=\"https://redirect.github.com/pypa/build/issues/973\"\u003e#973\u003c/a\u003e by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1044\"\u003epypa/build#1044\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: report coverage failure lines by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1046\"\u003epypa/build#1046\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: fix issue with uv run by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1048\"\u003epypa/build#1048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: reorganize testing docs for copy/paste by \u003ca href=\"https://github.com/abitrolly\"\u003e\u003ccode\u003e@​abitrolly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1043\"\u003epypa/build#1043\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: keep environment from leaking in Python 3.15 by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1049\"\u003epypa/build#1049\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix issue with changelog generation by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1050\"\u003epypa/build#1050\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.3...1.4.4\"\u003ehttps://github.com/pypa/build/compare/1.4.3...1.4.4\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e####################\n1.5.0 (2026-04-30)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.9 support - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1036\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003e--ignore-installed\u003c/code\u003e opt-in from the API via \u003ccode\u003efresh=True\u003c/code\u003e - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1056\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1033\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.4 (2026-04-22)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eFix release pipeline generating \u003ccode\u003eCHANGELOG.rst\u003c/code\u003e entries with inconsistent heading levels, which broke \u003ccode\u003esphinx -W\u003c/code\u003e\nand pinned Read the Docs \u003ccode\u003estable\u003c/code\u003e at 1.4.0 - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e1031\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRevert :pr:\u003ccode\u003e1039\u003c/code\u003e from build 1.4.3, no longer check direct_url (for now) - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1039\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--ignore-installed\u003c/code\u003e to pip install command to prevent issues with packages already present in the isolated\nbuild environment - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1037\u003c/code\u003e) (:issue:\u003ccode\u003e1040\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePartial revert of :pr:\u003ccode\u003e973\u003c/code\u003e, keeping log messages in one entry, multiple lines. (:issue:\u003ccode\u003e1044\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1048\u003c/code\u003e, :issue:\u003ccode\u003e1049\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.3 (2026-04-10)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/70666a296c2e5bb7451f5a04eef259f6f943d0de\"\u003e\u003ccode\u003e70666a2\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/653d86586dea8b4e020086a276a15a27ac7bd25d\"\u003e\u003ccode\u003e653d865\u003c/code\u003e\u003c/a\u003e docs: fix issue with changelog generation (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1050\"\u003e#1050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/373b9ee171e2f16353365b1a9a02bc408b96ca73\"\u003e\u003ccode\u003e373b9ee\u003c/code\u003e\u003c/a\u003e tests: keep environment from leaking in Python 3.15 (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1049\"\u003e#1049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/e37e2ae697f9dde82709affb9356281fc2a9b98b\"\u003e\u003ccode\u003ee37e2ae\u003c/code\u003e\u003c/a\u003e docs: reorganize testing docs for copy/paste (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1043\"\u003e#1043\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/e9c194ad54413f1923f727ad07c7faf7dff813c0\"\u003e\u003ccode\u003ee9c194a\u003c/code\u003e\u003c/a\u003e tests: fix issue with uv run (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1048\"\u003e#1048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/03b7d7032ae636be992c917c67f8efbf99527c62\"\u003e\u003ccode\u003e03b7d70\u003c/code\u003e\u003c/a\u003e chore: report coverage failure lines (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1046\"\u003e#1046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/2afa3b59977c7e08dc526f19ab670edf99ce6051\"\u003e\u003ccode\u003e2afa3b5\u003c/code\u003e\u003c/a\u003e fix: revert part of \u003ca href=\"https://redirect.github.com/pypa/build/issues/973\"\u003e#973\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1044\"\u003e#1044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b336f60e8008791b7c492078a0725fdadc5875e8\"\u003e\u003ccode\u003eb336f60\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1045\"\u003e#1045\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/6d8039a4503caa2327657eb288c6ce01dabc3eb7\"\u003e\u003ccode\u003e6d8039a\u003c/code\u003e\u003c/a\u003e fix: ignore installed when running pip (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1040\"\u003e#1040\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/ebf6eba272c732ae7e3136edc78ac2597035edd9\"\u003e\u003ccode\u003eebf6eba\u003c/code\u003e\u003c/a\u003e revert: drop PEP 660 change (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1039\"\u003e#1039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.4.3...1.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=build\u0026package-manager=pip\u0026previous-version=1.4.3\u0026new-version=1.4.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/Senzing/mapper-dowjones/pull/110","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Senzing%2Fmapper-dowjones/issues/110","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/110/packages"},{"uuid":"4426111077","node_id":"PR_kwDOK2DPd87ahE3M","number":336,"state":"closed","title":"CHORE: Bump the development-dependencies group across 1 directory with 7 updates","user":"dependabot[bot]","labels":["maintenance","dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-13T00:30:51.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-12T04:10:38.000Z","updated_at":"2026-05-13T00:30:53.000Z","time_to_close":73213,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"CHORE: Bump","group_name":"development-dependencies","update_count":7,"packages":[{"name":"pre-commit","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"click","old_version":"8.3.2","new_version":"8.3.3","repository_url":"https://github.com/pallets/click"},{"name":"pip","old_version":"26.0.1","new_version":"26.1","repository_url":"https://github.com/pypa/pip"},{"name":"jupyterlab","old_version":"4.5.6","new_version":"4.5.7","repository_url":"https://github.com/jupyterlab/jupyterlab"},{"name":"sphinx-gallery","old_version":"0.20.0","new_version":"0.21.0","repository_url":"https://github.com/sphinx-gallery/sphinx-gallery"},{"name":"matplotlib","old_version":"3.10.8","new_version":"3.10.9","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"build","old_version":"1.4.3","new_version":"1.5.0","repository_url":"https://github.com/pypa/build"}],"path":null,"ecosystem":"pip"},"body":"Bumps the development-dependencies group with 7 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.5.1` | `4.6.0` |\n| [click](https://github.com/pallets/click) | `8.3.2` | `8.3.3` |\n| [pip](https://github.com/pypa/pip) | `26.0.1` | `26.1` |\n| [jupyterlab](https://github.com/jupyterlab/jupyterlab) | `4.5.6` | `4.5.7` |\n| [sphinx-gallery](https://github.com/sphinx-gallery/sphinx-gallery) | `0.20.0` | `0.21.0` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.8` | `3.10.9` |\n| [build](https://github.com/pypa/build) | `1.4.3` | `1.5.0` |\n\n\nUpdates `pre-commit` from 4.5.1 to 4.6.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/releases\"\u003epre-commit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epre-commit v4.6.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: allow \u003ccode\u003e--hook-dir\u003c/code\u003e to be missing to enable easier usage with \u003ccode\u003egit\u003c/code\u003e 2.54+ git hooks.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3662\"\u003e#3662\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: \u003ccode\u003e--hook-type\u003c/code\u003e is required.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3661\"\u003e#3661\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md\"\u003epre-commit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e4.6.0 - 2026-04-21\u003c/h1\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: allow \u003ccode\u003e--hook-dir\u003c/code\u003e to be missing to enable easier\nusage with \u003ccode\u003egit\u003c/code\u003e 2.54+ git hooks.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3662\"\u003e#3662\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: \u003ccode\u003e--hook-type\u003c/code\u003e is required.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3661\"\u003e#3661\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/f35134b05028ec938ac605ae500fdf95462655d3\"\u003e\u003ccode\u003ef35134b\u003c/code\u003e\u003c/a\u003e v4.6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/2a51ffcb81f6c8ed2e6467913c3343a8800f3ab9\"\u003e\u003ccode\u003e2a51ffc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3662\"\u003e#3662\u003c/a\u003e from pre-commit/hook-impl-optional-hook-dir\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/d7dee322abfc765b042f2e3b872aab3c3a867610\"\u003e\u003ccode\u003ed7dee32\u003c/code\u003e\u003c/a\u003e make --hook-dir optional for hook-impl\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/965aeb1c680e8b526342153547f0ec014484c63d\"\u003e\u003ccode\u003e965aeb1\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3661\"\u003e#3661\u003c/a\u003e from pre-commit/hook-impl-required\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/2eacc064aa9b5bb33d3a0d84a234b475e34f3096\"\u003e\u003ccode\u003e2eacc06\u003c/code\u003e\u003c/a\u003e --hook-type is required for hook-impl\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/f5678bf4ac35cffc0ff7174ad85f7fdc2a5c977e\"\u003e\u003ccode\u003ef5678bf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3657\"\u003e#3657\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/054cc5bd6bb1b20faa1eefe09f0de3b68fceee94\"\u003e\u003ccode\u003e054cc5b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/5c0f3024d2524f6e029a4c333392fd9be9fb27f6\"\u003e\u003ccode\u003e5c0f302\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3652\"\u003e#3652\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/a5d91142676630f8130020b35e166e0c0e92b8f4\"\u003e\u003ccode\u003ea5d9114\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/129a1f5ca1eaee0c952a5e7a07faae305c5e15bc\"\u003e\u003ccode\u003e129a1f5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3641\"\u003e#3641\u003c/a\u003e from pre-commit/mxr-patch-1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pre-commit/pre-commit/compare/v4.5.1...v4.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.3.2 to 8.3.3\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.3\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.3 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.3/\"\u003ehttps://pypi.org/project/click/8.3.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-3\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-3\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/30\"\u003ehttps://github.com/pallets/click/milestone/30\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse :func:\u003ccode\u003eshlex.split\u003c/code\u003e to split pager and editor commands into \u003ccode\u003eargv\u003c/code\u003e\nlists for :class:\u003ccode\u003esubprocess.Popen\u003c/code\u003e, removing \u003ccode\u003eshell=True\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/1026\"\u003e#1026\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/1477\"\u003e#1477\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2775\"\u003e#2775\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eTypeError\u003c/code\u003e when rendering help for an option whose default value is\nan object that doesn't support equality comparison with strings, such as\n\u003ccode\u003esemver.Version\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3298\"\u003e#3298\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3299\"\u003e#3299\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix pager test pollution under parallel execution by using pytest's\n\u003ccode\u003etmp_path\u003c/code\u003e fixture instead of a shared temporary file path. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3238\"\u003e#3238\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values in a \u003ccode\u003edefault_map\u003c/code\u003e as absent, so they fall\nthrough to the next default source instead of being used as the value.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3224\"\u003e#3224\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3240\"\u003e#3240\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePatch \u003ccode\u003epdb.Pdb\u003c/code\u003e in \u003ccode\u003eCliRunner\u003c/code\u003e isolation so \u003ccode\u003epdb.set_trace()\u003c/code\u003e,\n\u003ccode\u003ebreakpoint()\u003c/code\u003e, and debuggers subclassing \u003ccode\u003epdb.Pdb\u003c/code\u003e (ipdb, pdbpp) can\ninteract with the real terminal instead of the captured I/O streams.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/654\"\u003e#654\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/824\"\u003e#824\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/843\"\u003e#843\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/951\"\u003e#951\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3235\"\u003e#3235\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd optional randomized parallel test execution using \u003ccode\u003epytest-randomly\u003c/code\u003e and\n\u003ccode\u003epytest-xdist\u003c/code\u003e to detect test pollution and race conditions. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3151\"\u003e#3151\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd contributor documentation for running stress tests, randomized\nparallel tests, and Flask smoke tests. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3151\"\u003e#3151\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3177\"\u003e#3177\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eShow custom \u003ccode\u003eshow_default\u003c/code\u003e string in prompts, matching the existing\nhelp text behavior. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2836\"\u003e#2836\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2837\"\u003e#2837\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3165\"\u003e#3165\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3262\"\u003e#3262\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3280\"\u003e#3280\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3328\"\u003e#3328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003edefault=True\u003c/code\u003e with boolean \u003ccode\u003eflag_value\u003c/code\u003e always returning the\n\u003ccode\u003eflag_value\u003c/code\u003e instead of \u003ccode\u003eTrue\u003c/code\u003e. The \u003ccode\u003edefault=True\u003c/code\u003e to \u003ccode\u003eflag_value\u003c/code\u003e\nsubstitution now only applies to non-boolean flags, where \u003ccode\u003eTrue\u003c/code\u003e acts as a\nsentinel meaning \u0026quot;activate this flag by default\u0026quot;. For boolean flags,\n\u003ccode\u003edefault=True\u003c/code\u003e is returned as a literal value. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3111\"\u003e#3111\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3239\"\u003e#3239\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark \u003ccode\u003emake_default_short_help\u003c/code\u003e as private API. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3189\"\u003e#3189\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3250\"\u003e#3250\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCliRunner\u003c/code\u003e's redirected streams now expose the original file descriptor\nvia \u003ccode\u003efileno()\u003c/code\u003e, so that \u003ccode\u003efaulthandler\u003c/code\u003e, \u003ccode\u003esubprocess\u003c/code\u003e, and other\nC-level consumers no longer crash with \u003ccode\u003eio.UnsupportedOperation\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/2865\"\u003e#2865\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange :class:\u003ccode\u003eParameterSource\u003c/code\u003e to an :class:\u003ccode\u003e~enum.IntEnum\u003c/code\u003e and reorder\nits members from most to least explicit, so values can be compared to\ncheck whether a parameter was explicitly provided. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2879\"\u003e#2879\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3248\"\u003e#3248\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.rst\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.3.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-04-20\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse :func:\u003ccode\u003eshlex.split\u003c/code\u003e to split pager and editor commands into \u003ccode\u003eargv\u003c/code\u003e\nlists for :class:\u003ccode\u003esubprocess.Popen\u003c/code\u003e, removing \u003ccode\u003eshell=True\u003c/code\u003e.\n:issue:\u003ccode\u003e1026\u003c/code\u003e :pr:\u003ccode\u003e1477\u003c/code\u003e :pr:\u003ccode\u003e2775\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eTypeError\u003c/code\u003e when rendering help for an option whose default value is\nan object that doesn't support equality comparison with strings, such as\n\u003ccode\u003esemver.Version\u003c/code\u003e. :issue:\u003ccode\u003e3298\u003c/code\u003e :pr:\u003ccode\u003e3299\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix pager test pollution under parallel execution by using pytest's\n\u003ccode\u003etmp_path\u003c/code\u003e fixture instead of a shared temporary file path. :pr:\u003ccode\u003e3238\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values in a \u003ccode\u003edefault_map\u003c/code\u003e as absent, so they fall\nthrough to the next default source instead of being used as the value.\n:issue:\u003ccode\u003e3224\u003c/code\u003e :pr:\u003ccode\u003e3240\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ePatch \u003ccode\u003epdb.Pdb\u003c/code\u003e in \u003ccode\u003eCliRunner\u003c/code\u003e isolation so \u003ccode\u003epdb.set_trace()\u003c/code\u003e,\n\u003ccode\u003ebreakpoint()\u003c/code\u003e, and debuggers subclassing \u003ccode\u003epdb.Pdb\u003c/code\u003e (ipdb, pdbpp) can\ninteract with the real terminal instead of the captured I/O streams.\n:issue:\u003ccode\u003e654\u003c/code\u003e :issue:\u003ccode\u003e824\u003c/code\u003e :issue:\u003ccode\u003e843\u003c/code\u003e :pr:\u003ccode\u003e951\u003c/code\u003e :pr:\u003ccode\u003e3235\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd optional randomized parallel test execution using \u003ccode\u003epytest-randomly\u003c/code\u003e and\n\u003ccode\u003epytest-xdist\u003c/code\u003e to detect test pollution and race conditions. :pr:\u003ccode\u003e3151\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd contributor documentation for running stress tests, randomized\nparallel tests, and Flask smoke tests. :pr:\u003ccode\u003e3151\u003c/code\u003e :pr:\u003ccode\u003e3177\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eShow custom \u003ccode\u003eshow_default\u003c/code\u003e string in prompts, matching the existing\nhelp text behavior. :issue:\u003ccode\u003e2836\u003c/code\u003e :pr:\u003ccode\u003e2837\u003c/code\u003e :pr:\u003ccode\u003e3165\u003c/code\u003e :pr:\u003ccode\u003e3262\u003c/code\u003e :pr:\u003ccode\u003e3280\u003c/code\u003e\n:pr:\u003ccode\u003e3328\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003edefault=True\u003c/code\u003e with boolean \u003ccode\u003eflag_value\u003c/code\u003e always returning the\n\u003ccode\u003eflag_value\u003c/code\u003e instead of \u003ccode\u003eTrue\u003c/code\u003e. The \u003ccode\u003edefault=True\u003c/code\u003e to \u003ccode\u003eflag_value\u003c/code\u003e\nsubstitution now only applies to non-boolean flags, where \u003ccode\u003eTrue\u003c/code\u003e acts as a\nsentinel meaning \u0026quot;activate this flag by default\u0026quot;. For boolean flags,\n\u003ccode\u003edefault=True\u003c/code\u003e is returned as a literal value. :issue:\u003ccode\u003e3111\u003c/code\u003e :pr:\u003ccode\u003e3239\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark \u003ccode\u003emake_default_short_help\u003c/code\u003e as private API. :issue:\u003ccode\u003e3189\u003c/code\u003e :pr:\u003ccode\u003e3250\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCliRunner\u003c/code\u003e's redirected streams now expose the original file descriptor\nvia \u003ccode\u003efileno()\u003c/code\u003e, so that \u003ccode\u003efaulthandler\u003c/code\u003e, \u003ccode\u003esubprocess\u003c/code\u003e, and other\nC-level consumers no longer crash with \u003ccode\u003eio.UnsupportedOperation\u003c/code\u003e.\n:issue:\u003ccode\u003e2865\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eChange :class:\u003ccode\u003eParameterSource\u003c/code\u003e to an :class:\u003ccode\u003e~enum.IntEnum\u003c/code\u003e and reorder\nits members from most to least explicit, so values can be compared to\ncheck whether a parameter was explicitly provided. :issue:\u003ccode\u003e2879\u003c/code\u003e :pr:\u003ccode\u003e3248\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/c06d2d0a6aee6bcc50bd8257be2a4a592f4e75d0\"\u003e\u003ccode\u003ec06d2d0\u003c/code\u003e\u003c/a\u003e Release 8.3.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/f1f191ecd2c790b161187c78e7c88440e9524e5c\"\u003e\u003ccode\u003ef1f191e\u003c/code\u003e\u003c/a\u003e Apply format guidelines to commits since latest 8.3.2 release (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3343\"\u003e#3343\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/bb59ba0fd279ca085d1113f0499b6a602ca31081\"\u003e\u003ccode\u003ebb59ba0\u003c/code\u003e\u003c/a\u003e Apply format guidelines to commits since latest 8.3.2 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/4a352253c9ff013e36d11e4a6820d36d00ff2cd4\"\u003e\u003ccode\u003e4a35225\u003c/code\u003e\u003c/a\u003e Reduce blast-radius of \u003ccode\u003eUNSET\u003c/code\u003e in \u003ccode\u003edefault_map\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3240\"\u003e#3240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/c07bb936de43fd303f9cfbefe248ab23fd2199c8\"\u003e\u003ccode\u003ec07bb93\u003c/code\u003e\u003c/a\u003e Merge branch 'stable' into unset-in-default-map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/c7e1ba8448cbcb2cdd9c1c7f4a592e863dcc3995\"\u003e\u003ccode\u003ec7e1ba8\u003c/code\u003e\u003c/a\u003e Reorder \u003ccode\u003eParameterSource\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3248\"\u003e#3248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/76552ff1e8c85837f911fc34037e702ae4327eda\"\u003e\u003ccode\u003e76552ff\u003c/code\u003e\u003c/a\u003e Show default string in prompt (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3328\"\u003e#3328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/ac5cec5fe54e5a691e7bac17f441ce9498e0744c\"\u003e\u003ccode\u003eac5cec5\u003c/code\u003e\u003c/a\u003e Reorder ParameterSource from most to least explicit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/8c452e00e6772931b7071d9316b82b77e5b8f280\"\u003e\u003ccode\u003e8c452e0\u003c/code\u003e\u003c/a\u003e Merge branch 'stable' into show-default-string-in-prompt\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/8c95c73bd5ef89eac638f85f1904a104ba4b1a32\"\u003e\u003ccode\u003e8c95c73\u003c/code\u003e\u003c/a\u003e Reconcile default value passing and default activation (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3239\"\u003e#3239\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.3.2...8.3.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pip` from 26.0.1 to 26.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/pip/blob/main/NEWS.rst\"\u003epip's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e26.1 (2026-04-26)\u003c/h1\u003e\n\u003ch2\u003eDeprecations and Removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9. (\u003ccode\u003e[#13795](https://github.com/pypa/pip/issues/13795) \u0026lt;https://github.com/pypa/pip/issues/13795\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd experimental support to read requirements from standardized pylock.toml files (\u003ccode\u003e-r pylock.toml\u003c/code\u003e). (\u003ccode\u003e[#13876](https://github.com/pypa/pip/issues/13876) \u0026lt;https://github.com/pypa/pip/issues/13876\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003e--uploaded-prior-to\u003c/code\u003e to accept a duration in days (e.g., \u003ccode\u003eP3D\u003c/code\u003e for 3 days ago). (\u003ccode\u003e[#13674](https://github.com/pypa/pip/issues/13674) \u0026lt;https://github.com/pypa/pip/issues/13674\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eEnhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up dependency resolution when there are complex conflicts. (\u003ccode\u003e[#13859](https://github.com/pypa/pip/issues/13859) \u0026lt;https://github.com/pypa/pip/issues/13859\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eReduce memory usage when resolving large dependency trees. (\u003ccode\u003e[#13843](https://github.com/pypa/pip/issues/13843) \u0026lt;https://github.com/pypa/pip/issues/13843\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eEmit a deprecation warning when pip imports an unexpected module after\ninstallation of a distribution has started. (\u003ccode\u003e[#13912](https://github.com/pypa/pip/issues/13912) \u0026lt;https://github.com/pypa/pip/issues/13912\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAllow URL constraints to apply to requirements with extras. (\u003ccode\u003e[#12018](https://github.com/pypa/pip/issues/12018) \u0026lt;https://github.com/pypa/pip/issues/12018\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAllow unpinned requirements to use hashes from constraints. Constraints\nlike \u003ccode\u003e{name}=={version} --hash=...\u003c/code\u003e feeds into hash verification for\na corresponding requirement. (\u003ccode\u003e[#9243](https://github.com/pypa/pip/issues/9243) \u0026lt;https://github.com/pypa/pip/issues/9243\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eImprove conflict reports that involve direct URLs. (\u003ccode\u003e[#13932](https://github.com/pypa/pip/issues/13932) \u0026lt;https://github.com/pypa/pip/issues/13932\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eShow all errors instead of first error for faulty \u003ccode\u003edependency_groups\u003c/code\u003e definitions. (\u003ccode\u003e[#13917](https://github.com/pypa/pip/issues/13917) \u0026lt;https://github.com/pypa/pip/issues/13917\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix recovery hint for missing RECORD file to use \u003ccode\u003e--ignore-installed\u003c/code\u003e\ninstead of \u003ccode\u003e--force-reinstall\u003c/code\u003e. (\u003ccode\u003e[#12645](https://github.com/pypa/pip/issues/12645) \u0026lt;https://github.com/pypa/pip/issues/12645\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eFix misleading error message when a constraint file cannot be opened. (\u003ccode\u003e[#13226](https://github.com/pypa/pip/issues/13226) \u0026lt;https://github.com/pypa/pip/issues/13226\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eShow the filename rather than the full URL when downloading files from non-PyPI indexes in non-verbose mode. (\u003ccode\u003e[#13494](https://github.com/pypa/pip/issues/13494) \u0026lt;https://github.com/pypa/pip/issues/13494\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eRemove the adjacent \u003ccode\u003e__pycache__\u003c/code\u003e directory when a .py file is removed. (\u003ccode\u003e[#13725](https://github.com/pypa/pip/issues/13725) \u0026lt;https://github.com/pypa/pip/issues/13725\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eForce UTF-8 encoding for :pep:\u003ccode\u003e723\u003c/code\u003e metadata. (\u003ccode\u003e[#13861](https://github.com/pypa/pip/issues/13861) \u0026lt;https://github.com/pypa/pip/issues/13861\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eMinor performance improvement when filtering candidates during resolution. (\u003ccode\u003e[#13916](https://github.com/pypa/pip/issues/13916) \u0026lt;https://github.com/pypa/pip/issues/13916\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eFix a hang on Windows when stdout is closed during verbose output. (\u003ccode\u003e[#13927](https://github.com/pypa/pip/issues/13927) \u0026lt;https://github.com/pypa/pip/issues/13927\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eCommon path prefixes are determined by path segment, not character by character. (\u003ccode\u003e[#13847](https://github.com/pypa/pip/issues/13847) \u0026lt;https://github.com/pypa/pip/issues/13847\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eFix installing \u003ccode\u003e.tar.gz\u003c/code\u003e source distributions that look like a zip file. (\u003ccode\u003e[#13867](https://github.com/pypa/pip/issues/13867) \u0026lt;https://github.com/pypa/pip/issues/13867\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVendored Libraries\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade certifi to 2026.2.25\u003c/li\u003e\n\u003cli\u003eUpgrade packaging to 26.2\u003c/li\u003e\n\u003cli\u003eUpgrade requests to 2.33.1\u003c/li\u003e\n\u003cli\u003eUpgrade tomli to 2.3.1\u003c/li\u003e\n\u003cli\u003eUpgrade urllib3 to 2.6.3\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/90b2b3e0f7ef75c485155716d904e51654575803\"\u003e\u003ccode\u003e90b2b3e\u003c/code\u003e\u003c/a\u003e Bump for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/193f289a6201f801b23885297332461ac8a65b6b\"\u003e\u003ccode\u003e193f289\u003c/code\u003e\u003c/a\u003e Update AUTHORS.txt\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/63c3709071c9596d7f4676502a90a3b06f241772\"\u003e\u003ccode\u003e63c3709\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pypa/pip/issues/13876\"\u003e#13876\u003c/a\u003e from sbidoul/install-from-pylock-reqs-sbi\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/e5fe7023ffe74a5895571eaf57bdd2989018fbf2\"\u003e\u003ccode\u003ee5fe702\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pypa/pip/issues/13949\"\u003e#13949\u003c/a\u003e from pypa/revert-13888-resolver-editable-links\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/122a14a8cd3dae7b3e959641f0b45849d4b21618\"\u003e\u003ccode\u003e122a14a\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Allow editable installs to satisfy direct-URL dependencies (\u003ca href=\"https://redirect.github.com/pypa/pip/issues/13888\"\u003e#13888\u003c/a\u003e)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/c3352524aae95ae959d4727dda5b5c65752261b3\"\u003e\u003ccode\u003ec335252\u003c/code\u003e\u003c/a\u003e -r pylock.toml: add pip-wheel -r pylock.toml test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/ba2fc12b7f386d89e233bdfd49e7b89d1af57ad1\"\u003e\u003ccode\u003eba2fc12\u003c/code\u003e\u003c/a\u003e -r pylock.toml: proper error with remote pylock.toml containing directory ent...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/747c4ae88837a8bb13946fe9d1b612c162a2e3df\"\u003e\u003ccode\u003e747c4ae\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pypa/pip/issues/13948\"\u003e#13948\u003c/a\u003e from ichard26/reword-news\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/3517841c5e2d92e04dbef52c61a8fa967c059efa\"\u003e\u003ccode\u003e3517841\u003c/code\u003e\u003c/a\u003e -r pylock: refine filename pylock-ness test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/2f7ad8caeed4471e63958df6cacba3a66a215588\"\u003e\u003ccode\u003e2f7ad8c\u003c/code\u003e\u003c/a\u003e -r pylock.toml: fix crash with pip wheel and pip lock\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/pip/compare/26.0.1...26.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jupyterlab` from 4.5.6 to 4.5.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jupyterlab/jupyterlab/releases\"\u003ejupyterlab's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.5.7\u003c/h2\u003e\n\u003ch2\u003e4.5.7\u003c/h2\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/jupyterlab/jupyterlab/compare/v4.5.6...66fe9adfc1d501d1368404037f26925870741933\"\u003eFull Changelog\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eSecurity patches\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2026-42557 \u003ca href=\"https://github.com/jupyterlab/jupyterlab/security/advisories/GHSA-mqcg-5x36-vfcg\"\u003ehttps://github.com/jupyterlab/jupyterlab/security/advisories/GHSA-mqcg-5x36-vfcg\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCVE-2026-42266 \u003ca href=\"https://github.com/jupyterlab/jupyterlab/security/advisories/GHSA-37w4-hwhx-4rc4\"\u003ehttps://github.com/jupyterlab/jupyterlab/security/advisories/GHSA-37w4-hwhx-4rc4\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCVE-2026-40171 \u003ca href=\"https://github.com/jupyter/notebook/security/advisories/GHSA-rch3-82jr-f9w9\"\u003ehttps://github.com/jupyter/notebook/security/advisories/GHSA-rch3-82jr-f9w9\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBugs fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eVideo and Audio Content Providers: Fix JupyterLite support \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18652\"\u003e#18652\u003c/a\u003e (\u003ca href=\"https://github.com/martinRenou\"\u003e\u003ccode\u003e@​martinRenou\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix notebook hang when dropping cells \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18808\"\u003e#18808\u003c/a\u003e (\u003ca href=\"https://github.com/MUFFANUJ\"\u003e\u003ccode\u003e@​MUFFANUJ\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Contextual Help keyboard shortcut reliability and menu Help functionality \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18747\"\u003e#18747\u003c/a\u003e (\u003ca href=\"https://github.com/itsmejay80\"\u003e\u003ccode\u003e@​itsmejay80\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix focusing input element when opening a dialog from Command Palette \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18735\"\u003e#18735\u003c/a\u003e (\u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix native context menu blocked even when context menu is suppressed \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18753\"\u003e#18753\u003c/a\u003e (\u003ca href=\"https://github.com/utsav-develops\"\u003e\u003ccode\u003e@​utsav-develops\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix flaky toolbar item placement in popup \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18618\"\u003e#18618\u003c/a\u003e (\u003ca href=\"https://github.com/filipeoliveira05\"\u003e\u003ccode\u003e@​filipeoliveira05\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate terminal default font family to honor macOS system-wide ui-monospace \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18647\"\u003e#18647\u003c/a\u003e (\u003ca href=\"https://github.com/flaviomartins\"\u003e\u003ccode\u003e@​flaviomartins\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance and upkeep improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix linting issue \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18819\"\u003e#18819\u003c/a\u003e (\u003ca href=\"https://github.com/krassowski\"\u003e\u003ccode\u003e@​krassowski\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix syntax for Python 3.9 on \u003ccode\u003e4.5.x\u003c/code\u003e branch \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18817\"\u003e#18817\u003c/a\u003e (\u003ca href=\"https://github.com/krassowski\"\u003e\u003ccode\u003e@​krassowski\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove unused CodeMirror v5 CSS rule \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18785\"\u003e#18785\u003c/a\u003e (\u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove unused CSS rule forgotten after CodeMirror migration \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18763\"\u003e#18763\u003c/a\u003e (\u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove unused progress bar CSS rule in execution indicator \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18759\"\u003e#18759\u003c/a\u003e (\u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove dead \u003ccode\u003e.jp-VariableRenderer-TrustButton\u003c/code\u003e CSS rule \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18762\"\u003e#18762\u003c/a\u003e (\u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove used \u003ccode\u003e.jp-Cell-Placeholder\u003c/code\u003e CSS rules \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18761\"\u003e#18761\u003c/a\u003e (\u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix name of option for extension manager implementation in docs \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18788\"\u003e#18788\u003c/a\u003e (\u003ca href=\"https://github.com/krassowski\"\u003e\u003ccode\u003e@​krassowski\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove 4.5.0 announcement from docs \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18740\"\u003e#18740\u003c/a\u003e (\u003ca href=\"https://github.com/krassowski\"\u003e\u003ccode\u003e@​krassowski\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors to this release\u003c/h3\u003e\n\u003cp\u003eThe following people contributed discussions, new ideas, code and documentation contributions, and review.\nSee \u003ca href=\"https://github-activity.readthedocs.io/en/latest/use/#how-does-this-tool-define-contributions-in-the-reports\"\u003eour definition of contributors\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/jupyterlab/jupyterlab/graphs/contributors?from=2026-03-11\u0026amp;to=2026-04-29\u0026amp;type=c\"\u003eGitHub contributors page for this release\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3ACarreau+updated%3A2026-03-11..2026-04-29\u0026amp;type=Issues\"\u003eactivity\u003c/a\u003e) | \u003ca href=\"https://github.com/filipeoliveira05\"\u003e\u003ccode\u003e@​filipeoliveira05\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Afilipeoliveira05+updated%3A2026-03-11..2026-04-29\u0026amp;type=Issues\"\u003eactivity\u003c/a\u003e) | \u003ca href=\"https://github.com/flaviomartins\"\u003e\u003ccode\u003e@​flaviomartins\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Aflaviomartins+updated%3A2026-03-11..2026-04-29\u0026amp;type=Issues\"\u003eactivity\u003c/a\u003e) | \u003ca href=\"https://github.com/itsmejay80\"\u003e\u003ccode\u003e@​itsmejay80\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Aitsmejay80+updated%3A2026-03-11..2026-04-29\u0026amp;type=Issues\"\u003eactivity\u003c/a\u003e) | \u003ca href=\"https://github.com/jtpio\"\u003e\u003ccode\u003e@​jtpio\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Ajtpio+updated%3A2026-03-11..2026-04-29\u0026amp;type=Issues\"\u003eactivity\u003c/a\u003e) | \u003ca href=\"https://github.com/krassowski\"\u003e\u003ccode\u003e@​krassowski\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Akrassowski+updated%3A2026-03-11..2026-04-29\u0026amp;type=Issues\"\u003eactivity\u003c/a\u003e) | \u003ca href=\"https://github.com/martinRenou\"\u003e\u003ccode\u003e@​martinRenou\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3AmartinRenou+updated%3A2026-03-11..2026-04-29\u0026amp;type=Issues\"\u003eactivity\u003c/a\u003e) | \u003ca href=\"https://github.com/MUFFANUJ\"\u003e\u003ccode\u003e@​MUFFANUJ\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3AMUFFANUJ+updated%3A2026-03-11..2026-04-29\u0026amp;type=Issues\"\u003eactivity\u003c/a\u003e) | \u003ca href=\"https://github.com/utsav-develops\"\u003e\u003ccode\u003e@​utsav-develops\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Autsav-develops+updated%3A2026-03-11..2026-04-29\u0026amp;type=Issues\"\u003eactivity\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/jupyterlab/jupyterlab/commit/f51404192bf6d0ff79187c884f21e1f91b928146\"\u003e\u003ccode\u003ef514041\u003c/code\u003e\u003c/a\u003e [ci skip] Publish 4.5.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/66fe9adfc1d501d1368404037f26925870741933\"\u003e\u003ccode\u003e66fe9ad\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18652\"\u003e#18652\u003c/a\u003e on branch 4.5.x (Video and Audio Content Providers: Fix Ju...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/f4455fac1b3c5b3ac4f06c95f78cfd39fb3157ed\"\u003e\u003ccode\u003ef4455fa\u003c/code\u003e\u003c/a\u003e Fix syntax for Python 3.9 on \u003ccode\u003e4.5.x\u003c/code\u003e branch (\u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18817\"\u003e#18817\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/d2322b5f54c61945d1cfbaebfcfba1a76a1bce79\"\u003e\u003ccode\u003ed2322b5\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18819\"\u003e#18819\u003c/a\u003e on branch 4.5.x (Fix linting issue) (\u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18820\"\u003e#18820\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/5d9cb8c634e081028ea6df4dd7149a1b1a84ec56\"\u003e\u003ccode\u003e5d9cb8c\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/1de120b5fe52f1148b45ca6ccbb03754e259b792\"\u003e\u003ccode\u003e1de120b\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/6926100ea09e41a48446406c0b8cc02539c6ede1\"\u003e\u003ccode\u003e6926100\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18808\"\u003e#18808\u003c/a\u003e on branch 4.5.x (Fix notebook hang when dropping cells) (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/67e6e88f7c4ec02a064f24b7a0d3f09af7eaab70\"\u003e\u003ccode\u003e67e6e88\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18647\"\u003e#18647\u003c/a\u003e on branch 4.5.x (Update default font family to honor macOS...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/bf21eb97eb2d61f1a084a0562be73108fe8ddb4f\"\u003e\u003ccode\u003ebf21eb9\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18747\"\u003e#18747\u003c/a\u003e on branch 4.5.x (Fix Contextual Help keyboard shortcut rel...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/73cafa54f9dbaa5e7034223cd0961a9eb0195995\"\u003e\u003ccode\u003e73cafa5\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18788\"\u003e#18788\u003c/a\u003e on branch 4.5.x (Fix name of option for extension manager ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jupyterlab/jupyterlab/compare/@jupyterlab/lsp@4.5.6...@jupyterlab/lsp@4.5.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sphinx-gallery` from 0.20.0 to 0.21.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sphinx-gallery/sphinx-gallery/releases\"\u003esphinx-gallery's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v0.21.0\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/sphinx-gallery/sphinx-gallery/compare/v0.20.0...v0.21.0\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eSupport for Sphinx 5 dropped in this release. Requirement is now Sphinx \u0026gt;= 6.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eImplemented enhancements:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for dynamic filtering by tag \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1555\"\u003e#1555\u003c/a\u003e (\u003ca href=\"https://github.com/Cadair\"\u003eCadair\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed bugs:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix subsection header sanitization when \u003ccode\u003enested_sections=False\u003c/code\u003e \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1550\"\u003e#1550\u003c/a\u003e (\u003ca href=\"https://github.com/lucyleeow\"\u003elucyleeow\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003egenerate_gallery_rst\u003c/code\u003e when \u003ccode\u003enested_sections=False\u003c/code\u003e user provides own \u003ccode\u003eindex.rst\u003c/code\u003e \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1549\"\u003e#1549\u003c/a\u003e (\u003ca href=\"https://github.com/lucyleeow\"\u003elucyleeow\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDocumentation\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDOC Add v0.20.0 to CHANGES.rst \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1567\"\u003e#1567\u003c/a\u003e (\u003ca href=\"https://github.com/lucyleeow\"\u003elucyleeow\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDOC Note sphinx bump in changes \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1560\"\u003e#1560\u003c/a\u003e (\u003ca href=\"https://github.com/lucyleeow\"\u003elucyleeow\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDOC Fix typos in nested_sections docs \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1547\"\u003e#1547\u003c/a\u003e (\u003ca href=\"https://github.com/lucyleeow\"\u003elucyleeow\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSmall typo on the configuration page of documentation \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1537\"\u003e#1537\u003c/a\u003e (\u003ca href=\"https://github.com/floffy-f\"\u003efloffy-f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate the list of projects \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1532\"\u003e#1532\u003c/a\u003e (\u003ca href=\"https://github.com/timhoffm\"\u003etimhoffm\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eProject maintenance\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1602\"\u003e#1602\u003c/a\u003e (\u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003epre-commit-ci[bot]\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTST: Use tmp_path fixture instead of tempfile \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1601\"\u003e#1601\u003c/a\u003e (\u003ca href=\"https://github.com/QuLogic\"\u003eQuLogic\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRe-enable Sphinx dev CI \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1599\"\u003e#1599\u003c/a\u003e (\u003ca href=\"https://github.com/lucyleeow\"\u003elucyleeow\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eENH: Accept Paths in split_code_and_text_blocks \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1598\"\u003e#1598\u003c/a\u003e (\u003ca href=\"https://github.com/QuLogic\"\u003eQuLogic\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTYP: Fix typing for back references \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1597\"\u003e#1597\u003c/a\u003e (\u003ca href=\"https://github.com/QuLogic\"\u003eQuLogic\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1596\"\u003e#1596\u003c/a\u003e (\u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003epre-commit-ci[bot]\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTST Amend \u003ccode\u003eadd_rst\u003c/code\u003e to \u003ccode\u003eadd_file\u003c/code\u003e and make flexible \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1595\"\u003e#1595\u003c/a\u003e (\u003ca href=\"https://github.com/lucyleeow\"\u003elucyleeow\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSwitch from codecs.open to plain open \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1594\"\u003e#1594\u003c/a\u003e (\u003ca href=\"https://github.com/QuLogic\"\u003eQuLogic\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTST: Prefer Path over os.path in all test code \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1593\"\u003e#1593\u003c/a\u003e (\u003ca href=\"https://github.com/QuLogic\"\u003eQuLogic\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTST: Switch from tmpdir to tmp_path \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1592\"\u003e#1592\u003c/a\u003e (\u003ca href=\"https://github.com/QuLogic\"\u003eQuLogic\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove unused imports \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1591\"\u003e#1591\u003c/a\u003e (\u003ca href=\"https://github.com/QuLogic\"\u003eQuLogic\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1590\"\u003e#1590\u003c/a\u003e (\u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003epre-commit-ci[bot]\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1589\"\u003e#1589\u003c/a\u003e (\u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003epre-commit-ci[bot]\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump the actions group with 2 updates \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1588\"\u003e#1588\u003c/a\u003e (\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1586\"\u003e#1586\u003c/a\u003e (\u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003epre-commit-ci[bot]\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1585\"\u003e#1585\u003c/a\u003e (\u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003epre-commit-ci[bot]\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(projects): add the atomistic cookbook \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1584\"\u003e#1584\u003c/a\u003e (\u003ca href=\"https://github.com/HaoZeke\"\u003eHaoZeke\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1583\"\u003e#1583\u003c/a\u003e (\u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003epre-commit-ci[bot]\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1582\"\u003e#1582\u003c/a\u003e (\u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003epre-commit-ci[bot]\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump the actions group with 2 updates \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1581\"\u003e#1581\u003c/a\u003e (\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMNT: Extract test-related functionality from utils into _testing \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1580\"\u003e#1580\u003c/a\u003e (\u003ca href=\"https://github.com/timhoffm\"\u003etimhoffm\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMAINT: Autolabel fix (maybe) \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1579\"\u003e#1579\u003c/a\u003e (\u003ca href=\"https://github.com/larsoner\"\u003elarsoner\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMNT: Extract character length calculation from _format_for_writing \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1578\"\u003e#1578\u003c/a\u003e (\u003ca href=\"https://github.com/timhoffm\"\u003etimhoffm\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMNT: Refactor costs to an explicit data class ExampleCost \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1577\"\u003e#1577\u003c/a\u003e (\u003ca href=\"https://github.com/timhoffm\"\u003etimhoffm\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMNT: Add type annotations to gen_gallery.py \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1575\"\u003e#1575\u003c/a\u003e (\u003ca href=\"https://github.com/timhoffm\"\u003etimhoffm\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1574\"\u003e#1574\u003c/a\u003e (\u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003epre-commit-ci[bot]\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sphinx-gallery/sphinx-gallery/blob/master/CHANGES.rst\"\u003esphinx-gallery's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.21.0\u003c/h2\u003e\n\u003cp\u003eSupport for Sphinx 5 dropped in this release. Requirement is now Sphinx \u0026gt;= 6.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eImplemented enhancements:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for dynamic filtering by tag \u003ccode\u003e[#1555](https://github.com/sphinx-gallery/sphinx-gallery/issues/1555) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1555\u0026gt;\u003c/code\u003e__ (\u003ccode\u003eCadair \u0026lt;https://github.com/Cadair\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed bugs:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix subsection header sanitization when \u003ccode\u003enested_sections=False\u003c/code\u003e \u003ccode\u003e[#1550](https://github.com/sphinx-gallery/sphinx-gallery/issues/1550) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1550\u0026gt;\u003c/code\u003e__ (\u003ccode\u003elucyleeow \u0026lt;https://github.com/lucyleeow\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003egenerate_gallery_rst\u003c/code\u003e when \u003ccode\u003enested_sections=False\u003c/code\u003e user provides own \u003ccode\u003eindex.rst\u003c/code\u003e \u003ccode\u003e[#1549](https://github.com/sphinx-gallery/sphinx-gallery/issues/1549) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1549\u0026gt;\u003c/code\u003e__ (\u003ccode\u003elucyleeow \u0026lt;https://github.com/lucyleeow\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDocumentation\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDOC Add v0.20.0 to CHANGES.rst \u003ccode\u003e[#1567](https://github.com/sphinx-gallery/sphinx-gallery/issues/1567) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1567\u0026gt;\u003c/code\u003e__ (\u003ccode\u003elucyleeow \u0026lt;https://github.com/lucyleeow\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eDOC Note sphinx bump in changes \u003ccode\u003e[#1560](https://github.com/sphinx-gallery/sphinx-gallery/issues/1560) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1560\u0026gt;\u003c/code\u003e__ (\u003ccode\u003elucyleeow \u0026lt;https://github.com/lucyleeow\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eDOC Fix typos in nested_sections docs \u003ccode\u003e[#1547](https://github.com/sphinx-gallery/sphinx-gallery/issues/1547) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1547\u0026gt;\u003c/code\u003e__ (\u003ccode\u003elucyleeow \u0026lt;https://github.com/lucyleeow\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eSmall typo on the configuration page of documentation \u003ccode\u003e[#1537](https://github.com/sphinx-gallery/sphinx-gallery/issues/1537) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1537\u0026gt;\u003c/code\u003e__ (\u003ccode\u003efloffy-f \u0026lt;https://github.com/floffy-f\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eUpdate the list of projects \u003ccode\u003e[#1532](https://github.com/sphinx-gallery/sphinx-gallery/issues/1532) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1532\u0026gt;\u003c/code\u003e__ (\u003ccode\u003etimhoffm \u0026lt;https://github.com/timhoffm\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eProject maintenance\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate \u003ccode\u003e[#1602](https://github.com/sphinx-gallery/sphinx-gallery/issues/1602) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1602\u0026gt;\u003c/code\u003e__ (\u003ccode\u003epre-commit-ci[bot] \u0026lt;https://github.com/apps/pre-commit-ci\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eTST: Use tmp_path fixture instead of tempfile \u003ccode\u003e[#1601](https://github.com/sphinx-gallery/sphinx-gallery/issues/1601) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1601\u0026gt;\u003c/code\u003e__ (\u003ccode\u003eQuLogic \u0026lt;https://github.com/QuLogic\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eRe-enable Sphinx dev CI \u003ccode\u003e[#1599](https://github.com/sphinx-gallery/sphinx-gallery/issues/1599) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1599\u0026gt;\u003c/code\u003e__ (\u003ccode\u003elucyleeow \u0026lt;https://github.com/lucyleeow\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eENH: Accept Paths in split_code_and_text_blocks \u003ccode\u003e[#1598](https://github.com/sphinx-gallery/sphinx-gallery/issues/1598) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1598\u0026gt;\u003c/code\u003e__ (\u003ccode\u003eQuLogic \u0026lt;https://github.com/QuLogic\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eTYP: Fix typing for back references \u003ccode\u003e[#1597](https://github.com/sphinx-gallery/sphinx-gallery/issues/1597) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1597\u0026gt;\u003c/code\u003e__ (\u003ccode\u003eQuLogic \u0026lt;https://github.com/QuLogic\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate \u003ccode\u003e[#1596](https://github.com/sphinx-gallery/sphinx-gallery/issues/1596) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1596\u0026gt;\u003c/code\u003e__ (\u003ccode\u003epre-commit-ci[bot] \u0026lt;https://github.com/apps/pre-commit-ci\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eTST Amend \u003ccode\u003eadd_rst\u003c/code\u003e to \u003ccode\u003eadd_file\u003c/code\u003e and make flexible \u003ccode\u003e[#1595](https://github.com/sphinx-gallery/sphinx-gallery/issues/1595) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1595\u0026gt;\u003c/code\u003e__ (\u003ccode\u003elucyleeow \u0026lt;https://github.com/lucyleeow\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eSwitch from codecs.open to plain open \u003ccode\u003e[#1594](https://github.com/sphinx-gallery/sphinx-gallery/issues/1594) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1594\u0026gt;\u003c/code\u003e__ (\u003ccode\u003eQuLogic \u0026lt;https://github.com/QuLogic\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eTST: Prefer Path over os.path in all test code \u003ccode\u003e[#1593](https://github.com/sphinx-gallery/sphinx-gallery/issues/1593) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1593\u0026gt;\u003c/code\u003e__ (\u003ccode\u003eQuLogic \u0026lt;https://github.com/QuLogic\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eTST: Switch from tmpdir to tmp_path \u003ccode\u003e[#1592](https://github.com/sphinx-gallery/sphinx-gallery/issues/1592) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1592\u0026gt;\u003c/code\u003e__ (\u003ccode\u003eQuLogic \u0026lt;https://github.com/QuLogic\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eRemove unused imports \u003ccode\u003e[#1591](https://github.com/sphinx-gallery/sphinx-gallery/issues/1591) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1591\u0026gt;\u003c/code\u003e__ (\u003ccode\u003eQuLogic \u0026lt;https://github.com/QuLogic\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate \u003ccode\u003e[#1590](https://github.com/sphinx-gallery/sphinx-gallery/issues/1590) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1590\u0026gt;\u003c/code\u003e__ (\u003ccode\u003epre-commit-ci[bot] \u0026lt;https://github.com/apps/pre-commit-ci\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate \u003ccode\u003e[#1589](https://github.com/sphinx-gallery/sphinx-gallery/issues/1589) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1589\u0026gt;\u003c/code\u003e__ (\u003ccode\u003epre-commit-ci[bot] \u0026lt;https://github.com/apps/pre-commit-ci\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eBump the actions group with 2 updates \u003ccode\u003e[#1588](https://github.com/sphinx-gallery/sphinx-gallery/issues/1588) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1588\u0026gt;\u003c/code\u003e__ (\u003ccode\u003edependabot[bot] \u0026lt;https://github.com/apps/dependabot\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate \u003ccode\u003e[#1586](https://github.com/sphinx-gallery/sphinx-gallery/issues/1586) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1586\u0026gt;\u003c/code\u003e__ (\u003ccode\u003epre-commit-ci[bot] \u0026lt;https://github.com/apps/pre-commit-ci\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate \u003ccode\u003e[#1585](https://github.com/sphinx-gallery/sphinx-gallery/issues/1585) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1585\u0026gt;\u003c/code\u003e__ (\u003ccode\u003epre-commit-ci[bot] \u0026lt;https://github.com/apps/pre-commit-ci\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003echore(projects): add the atomistic cookbook \u003ccode\u003e[#1584](https://github.com/sphinx-gallery/sphinx-gallery/issues/1584) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1584\u0026gt;\u003c/code\u003e__ (\u003ccode\u003eHaoZeke \u0026lt;https://github.com/HaoZeke\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate \u003ccode\u003e[#1583](https://github.com/sphinx-gallery/sphinx-gallery/issues/1583) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1583\u0026gt;\u003c/code\u003e__ (\u003ccode\u003epre-commit-ci[bot] \u0026lt;https://github.com/apps/pre-commit-ci\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate \u003ccode\u003e[#1582](https://github.com/sphinx-gallery/sphinx-gallery/issues/1582) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1582\u0026gt;\u003c/code\u003e__ (\u003ccode\u003epre-commit-ci[bot] \u0026lt;https://github.com/apps/pre-commit-ci\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eBump the actions group with 2 updates \u003ccode\u003e[#1581](https://github.com/sphinx-gallery/sphinx-gallery/issues/1581) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1581\u0026gt;\u003c/code\u003e__ (\u003ccode\u003edependabot[bot] \u0026lt;https://github.com/apps/dependabot\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eMNT: Extract test-related functionality from utils into _testing \u003ccode\u003e[#1580](https://github.com/sphinx-gallery/sphinx-gallery/issues/1580) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1580\u0026gt;\u003c/code\u003e__ (\u003ccode\u003etimhoffm \u0026lt;https://github.com/timhoffm\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eMAINT: Autolabel fix (maybe) \u003ccode\u003e[#1579](https://github.com/sphinx-gallery/sphinx-gallery/issues/1579) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1579\u0026gt;\u003c/code\u003e__ (\u003ccode\u003elarsoner \u0026lt;https://github.com/larsoner\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eMNT: Extract character length calculation from _format_for_writing \u003ccode\u003e[#1578](https://github.com/sphinx-gallery/sphinx-gallery/issues/1578) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1578\u0026gt;\u003c/code\u003e__ (\u003ccode\u003etimhoffm \u0026lt;https://github.com/timhoffm\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eMNT: Refactor costs to an explicit data class ExampleCost \u003ccode\u003e[#1577](https://github.com/sphinx-gallery/sphinx-gallery/issues/1577) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1577\u0026gt;\u003c/code\u003e__ (\u003ccode\u003etimhoffm \u0026lt;https://github.com/timhoffm\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eMNT: Add type annotations to gen_gallery.py \u003ccode\u003e[#1575](https://github.com/sphinx-gallery/sphinx-gallery/issues/1575) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1575\u0026gt;\u003c/code\u003e__ (\u003ccode\u003etimhoffm \u0026lt;https://github.com/timhoffm\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate \u003ccode\u003e[#1574](https://github.com/sphinx-gallery/sphinx-gallery/issues/1574) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1574\u0026gt;\u003c/code\u003e__ (\u003ccode\u003epre-commit-ci[bot] \u0026lt;https://github.com/apps/pre-commit-ci\u0026gt;\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/sphinx-gallery/sphinx-gallery/commit/eb1adbd18712e463e5d58ae0aac370492bff2366\"\u003e\u003ccode\u003eeb1adbd\u003c/code\u003e\u003c/a\u003e MNT Release 0.21 (\u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/issues/1603\"\u003e#1603\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-gallery/sphinx-gallery/commit/fd6dd59ddbc549405e364423cc0dc226ba2e5824\"\u003e\u003ccode\u003efd6dd59\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/issues/1602\"\u003e#1602\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-gallery/sphinx-gallery/commit/0ca9e4f5e648d4e7ecf1ccf96e6a35fa2505726e\"\u003e\u003ccode\u003e0ca9e4f\u003c/code\u003e\u003c/a\u003e TST: Use tmp_path fixture instead of tempfile (\u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/issues/1601\"\u003e#1601\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-gallery/sphinx-gallery/commit/ddee9abca662107db763fa222414d8ff08ef64ff\"\u003e\u003ccode\u003eddee9ab\u003c/code\u003e\u003c/a\u003e ENH: Accept Paths in split_code_and_text_blocks (\u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/issues/1598\"\u003e#1598\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-gallery/sphinx-gallery/commit/f651486ce3008d7a2ea5ff14c3576c38afddf143\"\u003e\u003ccode\u003ef651486\u003c/code\u003e\u003c/a\u003e Re-enable Sphinx dev CI (\u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/issues/1599\"\u003e#1599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-gallery/sphinx-gallery/commit/690479dafb7abd742b6af46fcd205193b3c720d9\"\u003e\u003ccode\u003e690479d\u003c/code\u003e\u003c/a\u003e TYP: Fix typing for back references (\u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/issues/1597\"\u003e#1597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-gallery/sphinx-gallery/commit/af56c30e027d8d6e24a9cbfc7b38385196339eb1\"\u003e\u003ccode\u003eaf56c30\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/issues/1596\"\u003e#1596\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-gallery/sphinx-gallery/commit/a37d9d00892fbe07e26ea75049366cfb47067b54\"\u003e\u003ccode\u003ea37d9d0\u003c/code\u003e\u003c/a\u003e TST Amend \u003ccode\u003eadd_rst\u003c/code\u003e to \u003ccode\u003eadd_file\u003c/code\u003e and make flexible (\u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/issues/1595\"\u003e#1595\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-gallery/sphinx-gallery/commit/deb9a0498f332f9b4dd80413a0b57403734b081b\"\u003e\u003ccode\u003edeb9a04\u003c/code\u003e\u003c/a\u003e TST: Prefer Path over os.path in all test code (\u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/issues/1593\"\u003e#1593\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-gallery/sphinx-gallery/commit/919cf069a1d9dc55989ea546b16694979ee1d528\"\u003e\u003ccode\u003e919cf06\u003c/code\u003e\u003c/a\u003e Switch from codecs.open to plain open (\u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/issues/1594\"\u003e#1594\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sphinx-gallery/sphinx-gallery/compare/v0.20.0...v0.21.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `matplotlib` from 3.10.8 to 3.10.9\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/matplotlib/matplotlib/releases\"\u003ematplotlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.10.9\u003c/h2\u003e\n\u003cp\u003eThis is a micro release of the v3.10.x series.\nHighlights of this release include:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVarious minor bug and doc fixes\u003c/li\u003e\n\u003cli\u003eSecurity hardening validation of cyclers - Removing eval usage\u003c/li\u003e\n\u003cli\u003eSecurity hardening in Latex and PS calls - Removing shell escapes\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/dd8d78b8dce60b6c8db86132892577a0b9dbe469\"\u003e\u003ccode\u003edd8d78b\u003c/code\u003e\u003c/a\u003e REL: v3.10.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/2fb18915bcfe69a188832c776fe18d88337de9bc\"\u003e\u003ccode\u003e2fb1891\u003c/code\u003e\u003c/a\u003e REL: Release prep v3.10.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/d0e923abfa016c04901fe4e315b9d215949f6fc5\"\u003e\u003ccode\u003ed0e923a\u003c/code\u003e\u003c/a\u003e Merge branch 'v3.10.8-doc' into v3.10.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/163793248a5fc9f23a560e45551c44351a8bd716\"\u003e\u003ccode\u003e1637932\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31558\"\u003e#31558\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-31556-on-v...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/a83faacb0dbe7edd1bae38e1e715b77b6aaebb84\"\u003e\u003ccode\u003ea83faac\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31556\"\u003e#31556\u003c/a\u003e: FIX: Inverted PyErr_Occurred check in enum type caster (_...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/a4f57ab0623f9d26be29e0a3b0de904667c7eeb7\"\u003e\u003ccode\u003ea4f57ab\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31545\"\u003e#31545\u003c/a\u003e from ksunden/backport-of-pr-31282-on-v3.10.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/063288d0cc912aa2af5cc1b7e7ca3d228d9f8976\"\u003e\u003ccode\u003e063288d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31544\"\u003e#31544\u003c/a\u003e from ksunden/backport-of-pr-31248-on-v3.10.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/b2ed1969191a03ec8927f96573664474662ab4c1\"\u003e\u003ccode\u003eb2ed196\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31248\"\u003e#31248\u003c/a\u003e: SEC: Remove eval() from validate_cycler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/acc60241a70b920eaf04fce41a8cf0a77010fb7d\"\u003e\u003ccode\u003eacc6024\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31282\"\u003e#31282\u003c/a\u003e from scottshambaugh/tex_no_shell\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/e3fb54163b1ce9dbc1a9e8e0973289dc14e366c2\"\u003e\u003ccode\u003ee3fb541\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31078\"\u003e#31078\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-31075-on-v...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/matplotlib/matplotlib/compare/v3.10.8...v3.10.9\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `build` from 1.4.3 to 1.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/releases\"\u003ebuild's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: try to improve release docs by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1051\"\u003epypa/build#1051\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: drop 3.9, require 3.10+ by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1036\"\u003epypa/build#1036\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: tox toml by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1033\"\u003epypa/build#1033\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: api should not ignore installed, only CLI by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1056\"\u003epypa/build#1056\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.4...1.5.0\"\u003ehttps://github.com/pypa/build/compare/1.4.4...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.4.4\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(release): generate consistent CHANGELOG heading levels by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1032\"\u003epypa/build#1032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: move source links by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1034\"\u003epypa/build#1034\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erevert: drop PEP 660 change by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1039\"\u003epypa/build#1039\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: ignore installed when running pip by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1040\"\u003epypa/build#1040\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: revert part of \u003ca href=\"https://redirect.github.com/pypa/build/issues/973\"\u003e#973\u003c/a\u003e by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1044\"\u003epypa/build#1044\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: report coverage failure lines by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1046\"\u003epypa/build#1046\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: fix issue with uv run by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1048\"\u003epypa/build#1048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: reorganize testing docs for copy/paste by \u003ca href=\"https://github.com/abitrolly\"\u003e\u003ccode\u003e@​abitrolly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1043\"\u003epypa/build#1043\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: keep environment from leaking in Python 3.15 by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1049\"\u003epypa/build#1049\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix issue with changelog generation by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1050\"\u003epypa/build#1050\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.3...1.4.4\"\u003ehttps://github.com/pypa/build/compare/1.4.3...1.4.4\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e####################\n1.5.0 (2026-04-30)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.9 support - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1036\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003e--ignore-installed\u003c/code\u003e opt-in from the API via \u003ccode\u003efresh=True\u003c/code\u003e - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1056\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1033\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.4 (2026-04-22)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eFix release pipeline generating \u003ccode\u003eCHANGELOG.rst\u003c/code\u003e entries with inconsistent heading levels, which broke \u003ccode\u003esphinx -W\u003c/code\u003e\nand pinned Read the Docs \u003ccode\u003estable\u003c/code\u003e at 1.4.0 - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e1031\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRevert :pr:\u003ccode\u003e1039\u003c/code\u003e from build 1.4.3, no longer check direct_url (for now) - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1039\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--ignore-installed\u003c/code\u003e to pip install command to prevent issues with packages already present in the isolated\nbuild environment - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1037\u003c/code\u003e) (:issue:\u003ccode\u003e1040\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePartial revert of :pr:\u003ccode\u003e973\u003c/code\u003e, keeping log messages in one entry, multiple lines. (:issue:\u003ccode\u003e1044\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1048\u003c/code\u003e, :issue:\u003ccode\u003e1049\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.3 (2026-04-10)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/615d04cfc52ac3c1592a463f0afe484fee1cc368\"\u003e\u003ccode\u003e615d04c\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/776f702f84787525df62a5473dd13d4e2f45b977\"\u003e\u003ccode\u003e776f702\u003c/code\u003e\u003c/a\u003e fix: api should not ignore installed, only CLI (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/42da4c4b483563819fabdb8ecf2f6df53ed82123\"\u003e\u003ccode\u003e42da4c4\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1055\"\u003e#1055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b445cd2e736db5f80cde7d952d620a73cc26bf9d\"\u003e\u003ccode\u003eb445cd2\u003c/code\u003e\u003c/a\u003e chore: tox toml (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/c44c143876042ac6e1212a31684a3adca19beda4\"\u003e\u003ccode\u003ec44c143\u003c/code\u003e\u003c/a\u003e feat: drop 3.9, require 3.10+ (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/a9bb4560d213069b11c8068159f1de060abec5b7\"\u003e\u003ccode\u003ea9bb456\u003c/code\u003e\u003c/a\u003e build(deps): bump astral-sh/setup-uv from 8.0.0 to 8.1.0 in the actions group...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/cb3351155ce99902580022acb81dc0adb8124d53\"\u003e\u003ccode\u003ecb33511\u003c/code\u003e\u003c/a\u003e ci: try to improve release docs (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1051\"\u003e#1051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/70666a296c2e5bb7451f5a04eef259f6f943d0de\"\u003e\u003ccode\u003e70666a2\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/653d86586dea8b4e020086a276a15a27ac7bd25d\"\u003e\u003ccode\u003e653d865\u003c/code\u003e\u003c/a\u003e docs: fix issue with changelog generation (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1050\"\u003e#1050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/373b9ee171e2f16353365b1a9a02bc408b96ca73\"\u003e\u003ccode\u003e373b9ee\u003c/code\u003e\u003c/a\u003e tests: keep environment from leaking in Python 3.15 (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1049\"\u003e#1049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.4.3...1.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/ansys/pyconceptev/pull/336","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ansys%2Fpyconceptev/issues/336","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/336/packages"},{"uuid":"4424780976","node_id":"PR_kwDOK8S49c7acy-_","number":91,"state":"open","title":":arrow_up: Bump the all group across 1 directory with 11 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-11T22:36:44.000Z","updated_at":"2026-05-11T22:38:12.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":":arrow_up: Bump","group_name":"all","update_count":11,"packages":[{"name":"mypy","old_version":"1.20.2","new_version":"2.1.0","repository_url":"https://github.com/python/mypy"},{"name":"backrefs","old_version":"6.2","new_version":"7.0","repository_url":"https://github.com/facelessuser/backrefs"},{"name":"build","old_version":"1.4.4","new_version":"1.5.0","repository_url":"https://github.com/pypa/build"},{"name":"coverage","old_version":"7.13.5","new_version":"7.14.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cryptography","old_version":"47.0.0","new_version":"48.0.0","repository_url":"https://github.com/pyca/cryptography"},{"name":"idna","old_version":"3.13","new_version":"3.14","repository_url":"https://github.com/kjd/idna"},{"name":"requests","old_version":"2.33.1","new_version":"2.34.0","repository_url":"https://github.com/psf/requests"},{"name":"tomlkit","old_version":"0.14.0","new_version":"0.15.0","repository_url":"https://github.com/python-poetry/tomlkit"},{"name":"trove-classifiers","old_version":"2026.1.14.14","new_version":"2026.5.7.17","repository_url":"https://github.com/pypa/trove-classifiers"},{"name":"urllib3","old_version":"2.6.3","new_version":"2.7.0","repository_url":"https://github.com/urllib3/urllib3"}],"path":null,"ecosystem":"pip"},"body":"Bumps the all group with 10 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [mypy](https://github.com/python/mypy) | `1.20.2` | `2.1.0` |\n| [backrefs](https://github.com/facelessuser/backrefs) | `6.2` | `7.0` |\n| [build](https://github.com/pypa/build) | `1.4.4` | `1.5.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.5` | `7.14.0` |\n| [cryptography](https://github.com/pyca/cryptography) | `47.0.0` | `48.0.0` |\n| [idna](https://github.com/kjd/idna) | `3.13` | `3.14` |\n| [requests](https://github.com/psf/requests) | `2.33.1` | `2.34.0` |\n| [tomlkit](https://github.com/python-poetry/tomlkit) | `0.14.0` | `0.15.0` |\n| [trove-classifiers](https://github.com/pypa/trove-classifiers) | `2026.1.14.14` | `2026.5.7.17` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.6.3` | `2.7.0` |\n\n\nUpdates `mypy` from 1.20.2 to 2.1.0\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\u003ch1\u003eMypy Release Notes\u003c/h1\u003e\n\u003ch2\u003eNext Release\u003c/h2\u003e\n\u003ch2\u003eMypy 2.1\u003c/h2\u003e\n\u003cp\u003eWe’ve just uploaded mypy 2.1.0 to the Python Package Index (\u003ca href=\"https://pypi.org/project/mypy/\"\u003ePyPI\u003c/a\u003e).\nMypy is a static type checker for Python. This release includes new features, performance\nimprovements and bug fixes. You can install it as follows:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install -U mypy\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eYou can read the full documentation for this release on \u003ca href=\"http://mypy.readthedocs.io\"\u003eRead the Docs\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003elibrt.vecs: Fast Growable Array Type for Mypyc\u003c/h3\u003e\n\u003cp\u003eThe new \u003ccode\u003elibrt.vecs\u003c/code\u003e module provides an efficient growable array type \u003ccode\u003evec\u003c/code\u003e that is\noptimized for mypyc use. It provides fast, packed arrays with integer and floating point\nvalue types, which can be \u003cstrong\u003eseveral times faster\u003c/strong\u003e than \u003ccode\u003elist\u003c/code\u003e, and tens of times faster\nthan \u003ccode\u003earray.array\u003c/code\u003e in code compiled using mypyc. It also supports nested \u003ccode\u003evec\u003c/code\u003e objects and\nnon-value-type items, such as \u003ccode\u003evec[vec[str]]\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eRefer to the \u003ca href=\"https://mypyc.readthedocs.io/en/latest/librt_vecs.html\"\u003edocumentation\u003c/a\u003e for\nthe details.\u003c/p\u003e\n\u003cp\u003eContributed by Jukka Lehtosalo.\u003c/p\u003e\n\u003ch3\u003elibrt.random: Fast Pseudo-Random Number Generation\u003c/h3\u003e\n\u003cp\u003eThe new \u003ccode\u003elibrt.random\u003c/code\u003e module provides fast pseudo-random number generation that is\noptimized for code compiled using mypyc. It can be 3x to 10x faster than the stdlib\n\u003ccode\u003erandom\u003c/code\u003e module in compiled code.\u003c/p\u003e\n\u003cp\u003eRefer to the \u003ca href=\"https://mypyc.readthedocs.io/en/latest/librt_random.html\"\u003edocumentation\u003c/a\u003e for\nthe details.\u003c/p\u003e\n\u003cp\u003eContributed by Jukka Lehtosalo (PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21433\"\u003e21433\u003c/a\u003e).\u003c/p\u003e\n\u003ch3\u003eMypyc Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMake compilation order with multiple files consistent (Piotr Sawicki, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21419\"\u003e21419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on accessing \u003ccode\u003eStopAsyncIteration\u003c/code\u003e (Piotr Sawicki, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21406\"\u003e21406\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix incremental compilation with \u003ccode\u003eseparate\u003c/code\u003e flag (Vaggelis Danias, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21299\"\u003e21299\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes to Crashes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix crash on partial type with \u003ccode\u003e--allow-redefinition\u003c/code\u003e and \u003ccode\u003eglobal\u003c/code\u003e declaration (Jukka Lehtosalo, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21428\"\u003e21428\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix broken awaitable generator patching (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21435\"\u003e21435\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanges to Messages\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/python/mypy/commit/c1c336d7e34eb313080c79b156518c58d27c7234\"\u003e\u003ccode\u003ec1c336d\u003c/code\u003e\u003c/a\u003e Remove +dev from version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/74df14b7cbf08140236aa45bbb7f42219b0b1df7\"\u003e\u003ccode\u003e74df14b\u003c/code\u003e\u003c/a\u003e Add changelog for mypy 2.1 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21464\"\u003e#21464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/022d9bc96f86c40f338a5cf150f1806cc8f300ff\"\u003e\u003ccode\u003e022d9bc\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;TypeForm: Enable by default (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21262\"\u003e#21262\u003c/a\u003e)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/8826288214f1cb31496e610667481221e025359c\"\u003e\u003ccode\u003e8826288\u003c/code\u003e\u003c/a\u003e [mypyc] Document librt.random (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21463\"\u003e#21463\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/3f4067b699dbe52d08e42ef3b3ebfdebdc06bd96\"\u003e\u003ccode\u003e3f4067b\u003c/code\u003e\u003c/a\u003e Bump librt version to 0.11.0 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21458\"\u003e#21458\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/2b1eb58a250c5f1eb4ef5fb1f312ff528c5a1d4e\"\u003e\u003ccode\u003e2b1eb58\u003c/code\u003e\u003c/a\u003e [mypyc] Enable incremental self-compilation (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21369\"\u003e#21369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/8152f4af3f6c03beaf2660026240f0fdce7feecc\"\u003e\u003ccode\u003e8152f4a\u003c/code\u003e\u003c/a\u003e Respect file config comments for stale modules (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21444\"\u003e#21444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/116d60bdd3fdfe8d97c6afe99370910db56f1b92\"\u003e\u003ccode\u003e116d60b\u003c/code\u003e\u003c/a\u003e Fix nondeterminism from nonassociativity of overload joins (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21455\"\u003e#21455\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/6c4af8e42110cea3f84bc02add2ca7b89c268210\"\u003e\u003ccode\u003e6c4af8e\u003c/code\u003e\u003c/a\u003e Fix function call message change for small number of args (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21432\"\u003e#21432\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/4b8fdcaf24032592510e8f15421fb32d82a71800\"\u003e\u003ccode\u003e4b8fdca\u003c/code\u003e\u003c/a\u003e [mypyc] Add librt.random module (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21433\"\u003e#21433\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.20.2...v2.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `backrefs` from 6.2 to 7.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facelessuser/backrefs/releases\"\u003ebackrefs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eBREAK\u003c/strong\u003e: Remove deprecated \u003ccode\u003e\\e\u003c/code\u003e and \u003ccode\u003e\\h\u003c/code\u003e support.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Drop Python 3.9 support.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Lazy load Unicode tables as required.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Fix bad name for value for Joining Group, which was previously \u003ccode\u003enon_joining\u003c/code\u003e, but should have been\n\u003ccode\u003eno_joining_group\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Update Unicode script to handle unexpected changes in alias of non-explicit value names.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/02197c06bf41a4a05d890061d94739d8d705fe9a\"\u003e\u003ccode\u003e02197c0\u003c/code\u003e\u003c/a\u003e Lazy load tables as needed (\u003ca href=\"https://redirect.github.com/facelessuser/backrefs/issues/201\"\u003e#201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/0a687333ac915dbbc6d524976fcd91c87d1dfba9\"\u003e\u003ccode\u003e0a68733\u003c/code\u003e\u003c/a\u003e remove deprecated support for \\e and \\h (\u003ca href=\"https://redirect.github.com/facelessuser/backrefs/issues/200\"\u003e#200\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/bfcafc7104a02983efa066e0d2f9763585e27b6a\"\u003e\u003ccode\u003ebfcafc7\u003c/code\u003e\u003c/a\u003e Drop Python 3.9 support (\u003ca href=\"https://redirect.github.com/facelessuser/backrefs/issues/199\"\u003e#199\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/7780144ca340e9c0332aa9f5e54bcec114b1a8cd\"\u003e\u003ccode\u003e7780144\u003c/code\u003e\u003c/a\u003e Fix Unicode property generator script in relation to property values (\u003ca href=\"https://redirect.github.com/facelessuser/backrefs/issues/197\"\u003e#197\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/facelessuser/backrefs/compare/6.2...7.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `build` from 1.4.4 to 1.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/releases\"\u003ebuild's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: try to improve release docs by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1051\"\u003epypa/build#1051\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: drop 3.9, require 3.10+ by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1036\"\u003epypa/build#1036\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: tox toml by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1033\"\u003epypa/build#1033\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: api should not ignore installed, only CLI by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1056\"\u003epypa/build#1056\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.4...1.5.0\"\u003ehttps://github.com/pypa/build/compare/1.4.4...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e####################\n1.5.0 (2026-04-30)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.9 support - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1036\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003e--ignore-installed\u003c/code\u003e opt-in from the API via \u003ccode\u003efresh=True\u003c/code\u003e - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1056\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1033\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.4 (2026-04-22)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eFix release pipeline generating \u003ccode\u003eCHANGELOG.rst\u003c/code\u003e entries with inconsistent heading levels, which broke \u003ccode\u003esphinx -W\u003c/code\u003e\nand pinned Read the Docs \u003ccode\u003estable\u003c/code\u003e at 1.4.0 - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e1031\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRevert :pr:\u003ccode\u003e1039\u003c/code\u003e from build 1.4.3, no longer check direct_url (for now) - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1039\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--ignore-installed\u003c/code\u003e to pip install command to prevent issues with packages already present in the isolated\nbuild environment - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1037\u003c/code\u003e) (:issue:\u003ccode\u003e1040\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePartial revert of :pr:\u003ccode\u003e973\u003c/code\u003e, keeping log messages in one entry, multiple lines. (:issue:\u003ccode\u003e1044\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1048\u003c/code\u003e, :issue:\u003ccode\u003e1049\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.3 (2026-04-10)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/615d04cfc52ac3c1592a463f0afe484fee1cc368\"\u003e\u003ccode\u003e615d04c\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/776f702f84787525df62a5473dd13d4e2f45b977\"\u003e\u003ccode\u003e776f702\u003c/code\u003e\u003c/a\u003e fix: api should not ignore installed, only CLI (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/42da4c4b483563819fabdb8ecf2f6df53ed82123\"\u003e\u003ccode\u003e42da4c4\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1055\"\u003e#1055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b445cd2e736db5f80cde7d952d620a73cc26bf9d\"\u003e\u003ccode\u003eb445cd2\u003c/code\u003e\u003c/a\u003e chore: tox toml (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/c44c143876042ac6e1212a31684a3adca19beda4\"\u003e\u003ccode\u003ec44c143\u003c/code\u003e\u003c/a\u003e feat: drop 3.9, require 3.10+ (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/a9bb4560d213069b11c8068159f1de060abec5b7\"\u003e\u003ccode\u003ea9bb456\u003c/code\u003e\u003c/a\u003e build(deps): bump astral-sh/setup-uv from 8.0.0 to 8.1.0 in the actions group...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/cb3351155ce99902580022acb81dc0adb8124d53\"\u003e\u003ccode\u003ecb33511\u003c/code\u003e\u003c/a\u003e ci: try to improve release docs (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1051\"\u003e#1051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pypa/build/compare/1.4.4...1.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.13.5 to 7.14.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst\"\u003ecoverage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.14.0 — 2026-05-10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFeature: now when running one of the reporting commands, if there are\nparallel data files that need combining, they will be implicitly combined\nbefore creating the report. There is no option to avoid the combination; let\nus know if you have a use case that requires it.  Thanks, \u003ccode\u003eTim Hatch \u0026lt;pull 2162_\u0026gt;\u003c/code\u003e\u003cem\u003e. Closes \u003ccode\u003eissue 1781\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the output from \u003ccode\u003ecombine\u003c/code\u003e was too verbose, listing each file\nconsidered. Now it shows a single line with the counts of files combined,\nfiles skipped, and files with errors. The \u003ccode\u003e-q\u003c/code\u003e flag suppresses this line.\nThe old detailed lines are available with the new \u003ccode\u003e--debug=combine\u003c/code\u003e option.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: running a Python file through a symlink now sets the sys.path correctly,\nmatching regular Python behavior. Fixes \u003ccode\u003eissue 2157\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003eCollector.flush_data\u003c/code\u003e could fail with \u0026quot;RuntimeError: Set changed\nsize during iteration\u0026quot; when a tracer in another thread added a line to the\nper-file set that \u003ccode\u003eadd_lines\u003c/code\u003e (or \u003ccode\u003eadd_arcs\u003c/code\u003e) was iterating. The values\npassed to \u003ccode\u003eCoverageData\u003c/code\u003e are now snapshotted via \u003ccode\u003edict.copy()\u003c/code\u003e and\n\u003ccode\u003eset.copy()\u003c/code\u003e, which are atomic under the GIL. Thanks, \u003ccode\u003eAlex Vandiver \u0026lt;pull 2165_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the soft keyword \u003ccode\u003elazy\u003c/code\u003e is now bolded in HTML reports.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWe are no longer testing eventlet support. Eventlet started issuing stern\ndeprecation warnings that break our tests. Our support code is still there.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1781: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1781\"\u003ecoveragepy/coveragepy#1781\u003c/a\u003e\n.. _issue 2157: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2157\"\u003ecoveragepy/coveragepy#2157\u003c/a\u003e\n.. _pull 2162: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2162\"\u003ecoveragepy/coveragepy#2162\u003c/a\u003e\n.. _pull 2165: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2165\"\u003ecoveragepy/coveragepy#2165\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-13-5:\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/646351b60429f1b5760af6c1b97b28483244a955\"\u003e\u003ccode\u003e646351b\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/39cd015505c8b04369c5b06e34fc22449a697370\"\u003e\u003ccode\u003e39cd015\u003c/code\u003e\u003c/a\u003e docs: prep for 7.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/649e8aa34af7d80c386ae82e8a3a6c9a3acb0dab\"\u003e\u003ccode\u003e649e8aa\u003c/code\u003e\u003c/a\u003e docs: thanks Alex Vandiver for \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2165\"\u003e#2165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/8cd392e3b5c4bc15d534aaec0c21714f9f518469\"\u003e\u003ccode\u003e8cd392e\u003c/code\u003e\u003c/a\u003e fix: snapshot data in Collector.flush_data to avoid threading race (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2165\"\u003e#2165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c48e0edc2ebe44621b0053176e90f77b0c79bec1\"\u003e\u003ccode\u003ec48e0ed\u003c/code\u003e\u003c/a\u003e fix: less output for combining\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c2a3a284078556c911e0d9b6c6af1b7082a363ea\"\u003e\u003ccode\u003ec2a3a28\u003c/code\u003e\u003c/a\u003e docs: explain the change from \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2162\"\u003e#2162\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/1cd47aa6ac1da4e150da44055295d4e4f3a014e8\"\u003e\u003ccode\u003e1cd47aa\u003c/code\u003e\u003c/a\u003e fix: implicit combine-during-report now removes the combined data files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/2d99fd7696e0bccec8037479a4e45c1ecccb8058\"\u003e\u003ccode\u003e2d99fd7\u003c/code\u003e\u003c/a\u003e feat: automatically combine coverage in report, thanks Tim Hatch (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2162\"\u003e#2162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/9fbdcdfee1c122fac43f1bf9a5e2d1f4d835f21c\"\u003e\u003ccode\u003e9fbdcdf\u003c/code\u003e\u003c/a\u003e fix: lazy soft keywords are bolded\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/5de7d0267b9466d59995aaae1a7e707c8c6f66e7\"\u003e\u003ccode\u003e5de7d02\u003c/code\u003e\u003c/a\u003e build: oops, misplaced quote\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.13.5...7.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cryptography` from 47.0.0 to 48.0.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst\"\u003ecryptography's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e48.0.0 - 2026-05-04\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* **BACKWARDS INCOMPATIBLE:** Support for Python 3.8 has been removed.\n  ``cryptography`` now requires Python 3.9 or later.\n* **BACKWARDS INCOMPATIBLE:** Loading an X.509 CRL whose inner\n  ``TBSCertList.signature`` algorithm does not match the outer\n  ``signatureAlgorithm`` now raises ``ValueError``. Previously, such CRLs\n  were parsed successfully and only rejected during signature validation.\n* Added support for :doc:`/hazmat/primitives/asymmetric/mlkem` and\n  :doc:`/hazmat/primitives/asymmetric/mldsa` when using OpenSSL 3.5.0 or\n  later, in addition to the existing AWS-LC and BoringSSL support. This means\n  post-quantum algorithms are now available to users of our wheels.\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNote:\u003c/strong\u003e Going forward, we do not guarantee that all functionality\u003cbr /\u003e\nin \u003ccode\u003ecryptography\u003c/code\u003e will be available when building against\u003cbr /\u003e\nOpenSSL. See :doc:\u003ccode\u003e/statements/state-of-openssl\u003c/code\u003e for more information.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v47-0-0:\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\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/pyca/cryptography/commit/8e03e30e3aae01632a697e903e3593c924f0139d\"\u003e\u003ccode\u003e8e03e30\u003c/code\u003e\u003c/a\u003e bump for 48.0.0 release (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14796\"\u003e#14796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/295e0d254ef31ab864730aa41312ec355416ee71\"\u003e\u003ccode\u003e295e0d2\u003c/code\u003e\u003c/a\u003e Add AGENTS.md with CLAUDE.md symlink (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14794\"\u003e#14794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/104a2de19e268a433e6da92be9cb872dcf0003c8\"\u003e\u003ccode\u003e104a2de\u003c/code\u003e\u003c/a\u003e Bump BoringSSL, OpenSSL, AWS-LC in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14793\"\u003e#14793\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/67ec1e51988195e17993d2edef5258b27509b926\"\u003e\u003ccode\u003e67ec1e5\u003c/code\u003e\u003c/a\u003e call check_length early on AesSiv::encrypt (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14792\"\u003e#14792\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/b2da57a0d9e4bfd2b95364299091a18f74127b26\"\u003e\u003ccode\u003eb2da57a\u003c/code\u003e\u003c/a\u003e changelog for mldsa/mlkem for openssl (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14791\"\u003e#14791\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/3cf44adee25c368d4a136e072fa9f80465d91eb0\"\u003e\u003ccode\u003e3cf44ad\u003c/code\u003e\u003c/a\u003e ML-KEM OpenSSL support (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14781\"\u003e#14781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/2e31639666766f846fbab2c605879db0fa64fe83\"\u003e\u003ccode\u003e2e31639\u003c/code\u003e\u003c/a\u003e ML-DSA OpenSSL support (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14773\"\u003e#14773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/5affe5a286a986fdf512c4a5cb280d28a96c10e3\"\u003e\u003ccode\u003e5affe5a\u003c/code\u003e\u003c/a\u003e fix rust nightly clippy (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14790\"\u003e#14790\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/2e73ca448eaf64b6f0d4ffbb794cf96170cef5ec\"\u003e\u003ccode\u003e2e73ca4\u003c/code\u003e\u003c/a\u003e bump rust-openssl dep and update EcPoint::mul_generator to mul_generator2 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/1\"\u003e#1\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/82ebd3b9f49d49ad5fd8b4b1f1dd02487b6e1466\"\u003e\u003ccode\u003e82ebd3b\u003c/code\u003e\u003c/a\u003e Bump BoringSSL, OpenSSL, AWS-LC in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14785\"\u003e#14785\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/cryptography/compare/47.0.0...48.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `idna` from 3.13 to 3.14\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/blob/master/HISTORY.rst\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e3.14 (2026-05-10)\n+++++++++++++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved opportunity to process long inputs into quadratic\ntime by rejecting oversize inputs up-front. Closes a bypass\nof the CVE-2024-3651 mitigation. [GHSA-65pc-fj4g-8rjx]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Stan Ulbrych for reporting the issue.\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/kjd/idna/commit/37b6b7497aee4805f7a74a7d86206ac05be9669a\"\u003e\u003ccode\u003e37b6b74\u003c/code\u003e\u003c/a\u003e Release v3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/628fef84d3eda59321c21127e73dcd873db23ead\"\u003e\u003ccode\u003e628fef8\u003c/code\u003e\u003c/a\u003e Use valid_string_length() for early oversized-input check\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/1e26c7fd93c67995422af9d1f071f45ee6433fd0\"\u003e\u003ccode\u003e1e26c7f\u003c/code\u003e\u003c/a\u003e Tweak release wording\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/ab5668fb6eaf4254d91d6993c0b23e98e21202fb\"\u003e\u003ccode\u003eab5668f\u003c/code\u003e\u003c/a\u003e Pre-release 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/c0dda4501df5d91c3181ce6f962dc5de74e82cc1\"\u003e\u003ccode\u003ec0dda45\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/b7391f4c240bf2eae80eaed0a2ef7c2e0496af96\"\u003e\u003ccode\u003eb7391f4\u003c/code\u003e\u003c/a\u003e Add docstrings to package (\u003ca href=\"https://redirect.github.com/kjd/idna/issues/226\"\u003e#226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/0f4a28d88f8cce54269f0b6a42edf5e6a5424319\"\u003e\u003ccode\u003e0f4a28d\u003c/code\u003e\u003c/a\u003e Raise IDNAError on non-string input to encode/decode (\u003ca href=\"https://redirect.github.com/kjd/idna/issues/224\"\u003e#224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/7e6df7196e6396b5b84b9530eab8272b5ad51898\"\u003e\u003ccode\u003e7e6df71\u003c/code\u003e\u003c/a\u003e Address type issues found by \u003ccode\u003ety\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/kjd/idna/issues/225\"\u003e#225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/6ebfaab9ea718dce38a7c17ddafd7fb28b0468d4\"\u003e\u003ccode\u003e6ebfaab\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/221\"\u003e#221\u003c/a\u003e from kjd/release-3.13\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/kjd/idna/compare/v3.13...v3.14\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `librt` from 0.9.0 to 0.11.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mypyc/librt/commit/862679a0492f4433a286b2d53965ec2603623be1\"\u003e\u003ccode\u003e862679a\u003c/code\u003e\u003c/a\u003e Sync mypy and bump version to 0.11.0 (\u003ca href=\"https://redirect.github.com/mypyc/librt/issues/40\"\u003e#40\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mypyc/librt/commit/1d5e9b240ac073f10ef389e9e27a2f2647fcd653\"\u003e\u003ccode\u003e1d5e9b2\u003c/code\u003e\u003c/a\u003e Bump version to 0.10.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mypyc/librt/commit/963673e91ad7482aa46df25f7c68d4a5ced8a712\"\u003e\u003ccode\u003e963673e\u003c/code\u003e\u003c/a\u003e Sync mypy and add smoke tests (\u003ca href=\"https://redirect.github.com/mypyc/librt/issues/38\"\u003e#38\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/mypyc/librt/compare/v0.9.0...v0.11.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.33.1 to 2.34.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.34.0\u003c/h2\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. \u003cstrong\u003eWe believe types are comprehensive but if you find issues, please\nreport them to the \u003ca href=\"https://redirect.github.com/psf/requests/issues/7271\"\u003epinned tracking issue\u003c/a\u003e.\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be able to start testing prior to its release in October. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.14t. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResponse.history\u003c/code\u003e no longer contains a reference to itself, preventing\naccidental looping when traversing the history list. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7328\"\u003e#7328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer performs greedy matching on no_proxy domains. The\nproxy_bypass implementation has been updated with CPython's fix from\nbpo-39057. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer incorrectly strips duplicate leading slashes in\nURI paths. This should address user issues with specific presigned\nURLs. Note the full fix requires urllib3 2.7.0+. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7315\"\u003e#7315\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cjriches\"\u003e\u003ccode\u003e@​cjriches\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7365\"\u003epsf/requests#7365\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dsanader\"\u003e\u003ccode\u003e@​dsanader\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7376\"\u003epsf/requests#7376\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DimitriPapadopoulos\"\u003e\u003ccode\u003e@​DimitriPapadopoulos\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7393\"\u003epsf/requests#7393\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joshua-51\"\u003e\u003ccode\u003e@​joshua-51\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7416\"\u003epsf/requests#7416\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eggsort\"\u003e\u003ccode\u003e@​eggsort\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7421\"\u003epsf/requests#7421\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typhon8\"\u003e\u003ccode\u003e@​typhon8\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7315\"\u003epsf/requests#7315\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7425\"\u003epsf/requests#7425\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2340-2026-05-11\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2340-2026-05-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/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. We believe types are comprehensive but if you find issues, please\nreport them to the pinned tracking issue.\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be able to start testing prior to its release in October. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.14t. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResponse.history\u003c/code\u003e no longer contains a reference to itself, preventing\naccidental looping when traversing the history list. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7328\"\u003e#7328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer performs greedy matching on no_proxy domains. The\nproxy_bypass implementation has been updated with CPython's fix from\nbpo-39057. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer incorrectly strips duplicate leading slashes in\nURI paths. This should address user issues with specific presigned\nURLs. Note the full fix requires urllib3 2.7.0+. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7315\"\u003e#7315\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\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/0b401c76b6e80a4eecf3c690085b2553f6e261ca\"\u003e\u003ccode\u003e0b401c7\u003c/code\u003e\u003c/a\u003e v2.34.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/86b378d3f60f828daa13ca50aa82e287ff7b66b4\"\u003e\u003ccode\u003e86b378d\u003c/code\u003e\u003c/a\u003e Align Session.get parameters with requests.get (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7429\"\u003e#7429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/a4f9a5999bdb9bf2d6e7c8aa973b28cacb17134f\"\u003e\u003ccode\u003ea4f9a59\u003c/code\u003e\u003c/a\u003e Port bpo-39057 to Requests (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/3816cfa1abd42dca21b9e837f26c59b246016aaf\"\u003e\u003ccode\u003e3816cfa\u003c/code\u003e\u003c/a\u003e Parameterize SupportsItems to handle Mapping key invariance (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7426\"\u003e#7426\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b684dcb9bbf3aa557d1238e72062c4a29737dd1c\"\u003e\u003ccode\u003eb684dcb\u003c/code\u003e\u003c/a\u003e sessions: fix hooks type (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7425\"\u003e#7425\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/dc9dbdfb3434c6e58d48fd102f93e5342308817e\"\u003e\u003ccode\u003edc9dbdf\u003c/code\u003e\u003c/a\u003e Formalize 3.15 support (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/25340ebad09a38e0748aeb26232102022a03ec94\"\u003e\u003ccode\u003e25340eb\u003c/code\u003e\u003c/a\u003e Clear proxy env vars before every test run (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7423\"\u003e#7423\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/fd628095d7b9ddbf3e987d8a4bf0e6062768916f\"\u003e\u003ccode\u003efd62809\u003c/code\u003e\u003c/a\u003e Preserve leading slashes in request path_url (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7315\"\u003e#7315\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/e8d2c015eecda8273612dd4562425e00cd164ba5\"\u003e\u003ccode\u003ee8d2c01\u003c/code\u003e\u003c/a\u003e docs: Fix missing hook output in docs example (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7421\"\u003e#7421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/eb173bc819c72580deed2d54190d340cc769e529\"\u003e\u003ccode\u003eeb173bc\u003c/code\u003e\u003c/a\u003e Add 3.14t support to CI (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.33.1...v2.34.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tomlkit` from 0.14.0 to 0.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-poetry/tomlkit/releases\"\u003etomlkit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat(spec): update to toml spec v1.1 by \u003ca href=\"https://github.com/frostming\"\u003e\u003ccode\u003e@​frostming\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-poetry/tomlkit/pull/456\"\u003epython-poetry/tomlkit#456\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/python-poetry/tomlkit/pull/455\"\u003epython-poetry/tomlkit#455\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps-dev): bump virtualenv from 20.26.6 to 20.36.1 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/python-poetry/tomlkit/pull/454\"\u003epython-poetry/tomlkit#454\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/python-poetry/tomlkit/pull/458\"\u003epython-poetry/tomlkit#458\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump pygments from 2.18.0 to 2.20.0 in /docs 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/python-poetry/tomlkit/pull/464\"\u003epython-poetry/tomlkit#464\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps-dev): bump pygments from 2.17.2 to 2.20.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-poetry/tomlkit/pull/463\"\u003epython-poetry/tomlkit#463\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump requests from 2.32.4 to 2.33.0 in /docs 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/python-poetry/tomlkit/pull/462\"\u003epython-poetry/tomlkit#462\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/python-poetry/tomlkit/pull/461\"\u003epython-poetry/tomlkit#461\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eType annotations by \u003ca href=\"https://github.com/dimbleby\"\u003e\u003ccode\u003e@​dimbleby\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-poetry/tomlkit/pull/460\"\u003epython-poetry/tomlkit#460\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHonor sort_keys for parsed TOML documents by \u003ca href=\"https://github.com/ShipItAndPray\"\u003e\u003ccode\u003e@​ShipItAndPray\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-poetry/tomlkit/pull/471\"\u003epython-poetry/tomlkit#471\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/python-poetry/tomlkit/pull/469\"\u003epython-poetry/tomlkit#469\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: fix a parser hang by \u003ca href=\"https://github.com/dimbleby\"\u003e\u003ccode\u003e@​dimbleby\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-poetry/tomlkit/pull/470\"\u003epython-poetry/tomlkit#470\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/python-poetry/tomlkit/pull/472\"\u003epython-poetry/tomlkit#472\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: bump version to 0.15.0 and update changelog for release by \u003ca href=\"https://github.com/frostming\"\u003e\u003ccode\u003e@​frostming\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-poetry/tomlkit/pull/473\"\u003epython-poetry/tomlkit#473\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/dimbleby\"\u003e\u003ccode\u003e@​dimbleby\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-poetry/tomlkit/pull/460\"\u003epython-poetry/tomlkit#460\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ShipItAndPray\"\u003e\u003ccode\u003e@​ShipItAndPray\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-poetry/tomlkit/pull/471\"\u003epython-poetry/tomlkit#471\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-poetry/tomlkit/compare/0.14.0...0.15.0\"\u003ehttps://github.com/python-poetry/tomlkit/compare/0.14.0...0.15.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-poetry/tomlkit/blob/master/CHANGELOG.md\"\u003etomlkit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.15.0] - 2026-05-10\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate parser to support TOML spec v1.1.0. (\u003ca href=\"https://redirect.github.com/python-poetry/tomlkit/pull/456\"\u003e#456\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-poetry/tomlkit/commit/8694e4d3323df68eb325bf3d5ab7caa66f8c206a\"\u003e\u003ccode\u003e8694e4d\u003c/code\u003e\u003c/a\u003e chore: bump version to 0.15.0 and update changelog for release (\u003ca href=\"https://redirect.github.com/python-poetry/tomlkit/issues/473\"\u003e#473\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-poetry/tomlkit/commit/e636a5121260e811dba9fd1c33656021f6855490\"\u003e\u003ccode\u003ee636a51\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-poetry/tomlkit/issues/472\"\u003e#472\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-poetry/tomlkit/commit/96a4d22fdd07e25742009a6bcd8a2d23e9b5574a\"\u003e\u003ccode\u003e96a4d22\u003c/code\u003e\u003c/a\u003e fix: fix a parser hang (\u003ca href=\"https://redirect.github.com/python-poetry/tomlkit/issues/470\"\u003e#470\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-poetry/tomlkit/commit/843f79992139ec56266f52161b27a3eadd1f6a35\"\u003e\u003ccode\u003e843f799\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-poetry/tomlkit/issues/469\"\u003e#469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-poetry/tomlkit/commit/2c87eafe7c852d19c1b91a1c9bed4d47bd03816f\"\u003e\u003ccode\u003e2c87eaf\u003c/code\u003e\u003c/a\u003e Honor sort_keys for parsed TOML documents (\u003ca href=\"https://redirect.github.com/python-poetry/tomlkit/issues/471\"\u003e#471\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-poetry/tomlkit/commit/8e32f9cb7fcfbc45e893c34e0e9a590a26675fd6\"\u003e\u003ccode\u003e8e32f9c\u003c/code\u003e\u003c/a\u003e Type annotations (\u003ca href=\"https://redirect.github.com/python-poetry/tomlkit/issues/460\"\u003e#460\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-poetry/tomlkit/commit/df98af48778f865d270d2f53e816d3b0948c8927\"\u003e\u003ccode\u003edf98af4\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-poetry/tomlkit/issues/461\"\u003e#461\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-poetry/tomlkit/commit/4bd97db2c8fda5cbffc01acc586e3328168bac36\"\u003e\u003ccode\u003e4bd97db\u003c/code\u003e\u003c/a\u003e chore(deps): bump requests from 2.32.4 to 2.33.0 in /docs (\u003ca href=\"https://redirect.github.com/python-poetry/tomlkit/issues/462\"\u003e#462\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-poetry/tomlkit/commit/b2d703032bf2e44e680b67f2897c3a7c67be55eb\"\u003e\u003ccode\u003eb2d7030\u003c/code\u003e\u003c/a\u003e chore(deps-dev): bump pygments from 2.17.2 to 2.20.0 (\u003ca href=\"https://redirect.github.com/python-poetry/tomlkit/issues/463\"\u003e#463\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-poetry/tomlkit/commit/87d98b1d0100c5bd39736eda4cd9cc3d8e24bf48\"\u003e\u003ccode\u003e87d98b1\u003c/code\u003e\u003c/a\u003e chore(deps): bump pygments from 2.18.0 to 2.20.0 in /docs (\u003ca href=\"https://redirect.github.com/python-poetry/tomlkit/issues/464\"\u003e#464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-poetry/tomlkit/compare/0.14.0...0.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `trove-classifiers` from 2026.1.14.14 to 2026.5.7.17\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/trove-classifiers/commit/a1105aa00670c8fc241e0bc2149a236b8be43b7a\"\u003e\u003ccode\u003ea1105aa\u003c/code\u003e\u003c/a\u003e Add Trove classifier for Python 3.16 (\u003ca href=\"https://redirect.github.com/pypa/trove-classifiers/issues/243\"\u003e#243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/trove-classifiers/commit/eca370658f6e81c8911567eab8209aaca2924493\"\u003e\u003ccode\u003eeca3706\u003c/code\u003e\u003c/a\u003e feat: add \u003ccode\u003elitestar\u003c/code\u003e classifier (\u003ca href=\"https://redirect.github.com/pypa/trove-classifiers/issues/148\"\u003e#148\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pypa/trove-classifiers/compare/2026.1.14.14...2026.5.7.17\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `urllib3` from 2.6.3 to 2.7.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/urllib3/urllib3/releases\"\u003eurllib3's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.7.0\u003c/h2\u003e\n\u003ch2\u003e🚀 urllib3 is fundraising for HTTP/2 support\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://sethmlarson.dev/urllib3-is-fundraising-for-http2-support\"\u003eurllib3 is raising ~$40,000 USD\u003c/a\u003e to release HTTP/2 support and ensure long-term sustainable maintenance of the project after a sharp decline in financial support. If your company or organization uses Python and would benefit from HTTP/2 support in Requests, pip, cloud SDKs, and thousands of other projects \u003ca href=\"https://opencollective.com/urllib3\"\u003eplease consider contributing financially\u003c/a\u003e to ensure HTTP/2 support is developed sustainably and maintained for the long-haul.\u003c/p\u003e\n\u003cp\u003eThank you for your support.\u003c/p\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cp\u003eAddressed high-severity security issues. Impact was limited to specific use cases detailed in the accompanying advisories; overall user exposure was estimated to be marginal.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eDecompression-bomb safeguards of the streaming API were bypassed:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eWhen \u003ccode\u003eHTTPResponse.drain_conn()\u003c/code\u003e was called after the response had been read and decompressed partially. (Reported by \u003ca href=\"https://github.com/Cycloctane\"\u003e\u003ccode\u003e@​Cycloctane\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDuring the second \u003ccode\u003eHTTPResponse.read(amt=N)\u003c/code\u003e or \u003ccode\u003eHTTPResponse.stream(amt=N)\u003c/code\u003e call when the response was decompressed using the official \u003ca href=\"https://pypi.org/project/brotli/\"\u003eBrotli\u003c/a\u003e library. (Reported by \u003ca href=\"https://github.com/kimkou2024\"\u003e\u003ccode\u003e@​kimkou2024\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eSee GHSA-mf9v-mfxr-j63j for details.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eHTTP pools created using \u003ccode\u003eProxyManager.connection_from_url\u003c/code\u003e did not strip sensitive headers specified in \u003ccode\u003eRetry.remove_headers_on_redirect\u003c/code\u003e when redirecting to a different host. (GHSA-qccp-gfcp-xxvc reported by \u003ca href=\"https://github.com/christos-spearbit\"\u003e\u003ccode\u003e@​christos-spearbit\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDeprecations and Removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUsed \u003ccode\u003eFutureWarning\u003c/code\u003e instead of \u003ccode\u003eDeprecationWarning\u003c/code\u003e for better visibility of existing deprecation notices. Rescheduled the removal of deprecated features to version 3.0. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3763\"\u003eurllib3/urllib3#3763\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoved support for end-of-life Python 3.9. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3720\"\u003eurllib3/urllib3#3720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoved support for end-of-life PyPy3.10. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/4979\"\u003eurllib3/urllib3#4979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped the minimum supported pyOpenSSL version to 19.0.0. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3777\"\u003eurllib3/urllib3#3777\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a bug where \u003ccode\u003eHTTPResponse.read(amt=None)\u003c/code\u003e was ignoring decompressed data buffered from previous partial reads. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3636\"\u003eurllib3/urllib3#3636\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where \u003ccode\u003eHTTPResponse.read()\u003c/code\u003e could cache only part of the response after a partial read when \u003ccode\u003ecache_content=True\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/4967\"\u003eurllib3/urllib3#4967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eHTTPResponse.stream()\u003c/code\u003e and \u003ccode\u003eHTTPResponse.read_chunked()\u003c/code\u003e to handle \u003ccode\u003eamt=0\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3793\"\u003eurllib3/urllib3#3793\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003e_TYPE_BODY\u003c/code\u003e type alias to include missing \u003ccode\u003eIterable[str]\u003c/code\u003e, matching the documented and runtime behavior of chunked request bodies. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3798\"\u003eurllib3/urllib3#3798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eLocationParseError\u003c/code\u003e when paths resembling schemeless URIs were passed to \u003ccode\u003eHTTPConnectionPool.urlopen()\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3352\"\u003eurllib3/urllib3#3352\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eBaseHTTPResponse.readinto()\u003c/code\u003e type annotation to accept \u003ccode\u003ememoryview\u003c/code\u003e in addition to \u003ccode\u003ebytearray\u003c/code\u003e, matching the \u003ccode\u003eio.RawIOBase.readinto\u003c/code\u003e contract and enabling use with \u003ccode\u003eio.BufferedReader\u003c/code\u003e without type errors. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3764\"\u003eurllib3/urllib3#3764\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/urllib3/urllib3/blob/main/CHANGES.rst\"\u003eurllib3's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.7.0 (2026-05-07)\u003c/h1\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cp\u003eAddressed high-severity security issues.\nImpact was limited to specific use cases detailed in the accompanying\nadvisories; overall user exposure was estimated to be marginal.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eDecompression-bomb safeguards of the streaming API were bypassed:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eWhen \u003ccode\u003eHTTPResponse.drain_conn()\u003c/code\u003e was called after the response had been\nread and decompressed partially.\u003c/li\u003e\n\u003cli\u003eDuring the second \u003ccode\u003eHTTPResponse.read(amt=N)\u003c/code\u003e or\n\u003ccode\u003eHTTPResponse.stream(amt=N)\u003c/code\u003e call when the response was decompressed\nusing the official \u003ccode\u003eBrotli \u0026lt;https://pypi.org/project/brotli/\u0026gt;\u003c/code\u003e__ library.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eSee \u003ccode\u003eGHSA-mf9v-mfxr-j63j \u0026lt;https://github.com/urllib3/urllib3/security/advisories/GHSA-mf9v-mfxr-j63j\u0026gt;\u003c/code\u003e__\nfor details.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eHTTP pools created using \u003ccode\u003eProxyManager.connection_from_url\u003c/code\u003e did not strip\nsensitive headers specified in \u003ccode\u003eRetry.remove_headers_on_redirect\u003c/code\u003e when\nredirecting to a different host.\n(\u003ccode\u003eGHSA-qccp-gfcp-xxvc \u0026lt;https://github.com/urllib3/urllib3/security/advisories/GHSA-qccp-gfcp-xxvc\u0026gt;\u003c/code\u003e__)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDeprecations and Removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUsed \u003ccode\u003eFutureWarning\u003c/code\u003e instead of \u003ccode\u003eDeprecationWarning\u003c/code\u003e for better\nvisibility of existing deprecation notices. Rescheduled the removal of\ndeprecated features to version 3.0.\n(\u003ccode\u003e[#3763](https://github.com/urllib3/urllib3/issues/3763) \u0026lt;https://github.com/urllib3/urllib3/issues/3763\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eRemoved support for end-of-life Python 3.9.\n(\u003ccode\u003e[#3720](https://github.com/urllib3/urllib3/issues/3720) \u0026lt;https://github.com/urllib3/urllib3/issues/3720\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eRemoved support for end-of-life PyPy3.10.\n(\u003ccode\u003e[#4979](https://github.com/urllib3/urllib3/issues/4979) \u0026lt;https://github.com/urllib3/urllib3/issues/4979\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eBumped the minimum supported pyOpenSSL version to 19.0.0.\n(\u003ccode\u003e[#3777](https://github.com/urllib3/urllib3/issues/3777) \u0026lt;https://github.com/urllib3/urllib3/issues/3777\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a bug where \u003ccode\u003eHTTPResponse.read(amt=None)\u003c/code\u003e was ignoring decompressed\ndata buffered from previous partial reads.\n(\u003ccode\u003e[#3636](https://github.com/urllib3/urllib3/issues/3636) \u0026lt;https://github.com/urllib3/urllib3/issues/3636\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eFixed a bug where \u003ccode\u003eHTTPResponse.read()\u003c/code\u003e could cache only part of the\nresponse after a partial read when \u003ccode\u003ecache_content=True\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/urllib3/urllib3/commit/9a950b92d999f906b6020bb2d1076ee56cddd5d2\"\u003e\u003ccode\u003e9a950b9\u003c/code\u003e\u003c/a\u003e Release 2.7.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/5ec0de499b9166ca71c65ab04f2a7e4eb0d66fcc\"\u003e\u003ccode\u003e5ec0de4\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/2bdcc44d1e163fb5cc48a8662425e35e15adfe6a\"\u003e\u003ccode\u003e2bdcc44\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/f45b0df09d8620ac6ed0491eb9362c8c87b7bc2c\"\u003e\u003ccode\u003ef45b0df\u003c/code\u003e\u003c/a\u003e Fix a misleading example for \u003ccode\u003eProxyManager\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/4970\"\u003e#4970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/577193ca029872384f82c133449e0935f6d8a64b\"\u003e\u003ccode\u003e577193c\u003c/code\u003e\u003c/a\u003e Switch to nightly PyPy3.11 in CI for now (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/4984\"\u003e#4984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/e90af45bb006c3a452a3a21644a2681523f5c7fc\"\u003e\u003ccode\u003ee90af45\u003c/code\u003e\u003c/a\u003e Avoid infinite loop in \u003ccode\u003eHTTPResponse.read_chunked\u003c/code\u003e when \u003ccode\u003eamt=0\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/4974\"\u003e#4974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/67ed74fdaec6659a6534621ec8e3aaaa6f976210\"\u003e\u003ccode\u003e67ed74f\u003c/code\u003e\u003c/a\u003e Bump dev dependencies (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/4972\"\u003e#4972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/3abd481097b54d87b574ac7ea593c3f40938a84d\"\u003e\u003ccode\u003e3abd481\u003c/code\u003e\u003c/a\u003e Upgrade mypy to version 1.20.2 (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/4978\"\u003e#4978\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/2b8725dfcac4f21d4d93cc0cc3a64a33af08f890\"\u003e\u003ccode\u003e2b8725d\u003c/code\u003e\u003c/a\u003e Drop support for EOL PyPy3.10 (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/4979\"\u003e#4979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/2944b2a0a6c573f5548a39cfd17196f98ee21b33\"\u003e\u003ccode\u003e2944b2a\u003c/code\u003e\u003c/a\u003e Upgrade \u003ccode\u003esetup-chrome\u003c/code\u003e and \u003ccode\u003esetup-firefox\u003c/code\u003e to fix warnings (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/4973\"\u003e#4973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/urllib3/urllib3/compare/2.6.3...2.7.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/dribia/poetry-git-branch-plugin/pull/91","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/dribia%2Fpoetry-git-branch-plugin/issues/91","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/91/packages"},{"uuid":"4422511484","node_id":"PR_kwDOSONHgM7aVZPf","number":23,"state":"closed","title":"chore(deps-dev): update build requirement from \u003c2,\u003e=1 to \u003e=1.5.0,\u003c2","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-05-11T22:00:43.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-11T16:31:29.000Z","updated_at":"2026-05-11T22:00:45.000Z","time_to_close":19754,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev): update","packages":[{"name":"build","old_version":"\u003c2,\u003e=1","new_version":"\u003e=1.5.0,\u003c2","repository_url":"https://github.com/pypa/build"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [build](https://github.com/pypa/build) 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/pypa/build/releases\"\u003ebuild's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: try to improve release docs by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1051\"\u003epypa/build#1051\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: drop 3.9, require 3.10+ by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1036\"\u003epypa/build#1036\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: tox toml by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1033\"\u003epypa/build#1033\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: api should not ignore installed, only CLI by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1056\"\u003epypa/build#1056\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.4...1.5.0\"\u003ehttps://github.com/pypa/build/compare/1.4.4...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e####################\n1.5.0 (2026-04-30)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.9 support - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1036\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003e--ignore-installed\u003c/code\u003e opt-in from the API via \u003ccode\u003efresh=True\u003c/code\u003e - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1056\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1033\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.4 (2026-04-22)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eFix release pipeline generating \u003ccode\u003eCHANGELOG.rst\u003c/code\u003e entries with inconsistent heading levels, which broke \u003ccode\u003esphinx -W\u003c/code\u003e\nand pinned Read the Docs \u003ccode\u003estable\u003c/code\u003e at 1.4.0 - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e1031\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRevert :pr:\u003ccode\u003e1039\u003c/code\u003e from build 1.4.3, no longer check direct_url (for now) - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1039\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--ignore-installed\u003c/code\u003e to pip install command to prevent issues with packages already present in the isolated\nbuild environment - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1037\u003c/code\u003e) (:issue:\u003ccode\u003e1040\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePartial revert of :pr:\u003ccode\u003e973\u003c/code\u003e, keeping log messages in one entry, multiple lines. (:issue:\u003ccode\u003e1044\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1048\u003c/code\u003e, :issue:\u003ccode\u003e1049\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.3 (2026-04-10)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/615d04cfc52ac3c1592a463f0afe484fee1cc368\"\u003e\u003ccode\u003e615d04c\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/776f702f84787525df62a5473dd13d4e2f45b977\"\u003e\u003ccode\u003e776f702\u003c/code\u003e\u003c/a\u003e fix: api should not ignore installed, only CLI (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/42da4c4b483563819fabdb8ecf2f6df53ed82123\"\u003e\u003ccode\u003e42da4c4\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1055\"\u003e#1055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b445cd2e736db5f80cde7d952d620a73cc26bf9d\"\u003e\u003ccode\u003eb445cd2\u003c/code\u003e\u003c/a\u003e chore: tox toml (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/c44c143876042ac6e1212a31684a3adca19beda4\"\u003e\u003ccode\u003ec44c143\u003c/code\u003e\u003c/a\u003e feat: drop 3.9, require 3.10+ (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/a9bb4560d213069b11c8068159f1de060abec5b7\"\u003e\u003ccode\u003ea9bb456\u003c/code\u003e\u003c/a\u003e build(deps): bump astral-sh/setup-uv from 8.0.0 to 8.1.0 in the actions group...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/cb3351155ce99902580022acb81dc0adb8124d53\"\u003e\u003ccode\u003ecb33511\u003c/code\u003e\u003c/a\u003e ci: try to improve release docs (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1051\"\u003e#1051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/70666a296c2e5bb7451f5a04eef259f6f943d0de\"\u003e\u003ccode\u003e70666a2\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/653d86586dea8b4e020086a276a15a27ac7bd25d\"\u003e\u003ccode\u003e653d865\u003c/code\u003e\u003c/a\u003e docs: fix issue with changelog generation (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1050\"\u003e#1050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/373b9ee171e2f16353365b1a9a02bc408b96ca73\"\u003e\u003ccode\u003e373b9ee\u003c/code\u003e\u003c/a\u003e tests: keep environment from leaking in Python 3.15 (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1049\"\u003e#1049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.0.0...1.5.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/atomadictech/atomadic-forge/pull/23","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/atomadictech%2Fatomadic-forge/issues/23","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/23/packages"},{"uuid":"4418312184","node_id":"PR_kwDOR9Jo_c7aHnn4","number":7,"state":"closed","title":"build(deps-dev): bump build from 1.4.2 to 1.4.4","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-11T05:34:35.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-11T05:33:44.000Z","updated_at":"2026-05-11T05:34:43.000Z","time_to_close":51,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps-dev)","packages":[{"name":"build","old_version":"1.4.2","new_version":"1.4.4","repository_url":"https://github.com/pypa/build"}],"path":null,"ecosystem":"pip"},"body":"Bumps [build](https://github.com/pypa/build) from 1.4.2 to 1.4.4.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/releases\"\u003ebuild's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.4\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(release): generate consistent CHANGELOG heading levels by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1032\"\u003epypa/build#1032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: move source links by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1034\"\u003epypa/build#1034\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erevert: drop PEP 660 change by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1039\"\u003epypa/build#1039\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: ignore installed when running pip by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1040\"\u003epypa/build#1040\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: revert part of \u003ca href=\"https://redirect.github.com/pypa/build/issues/973\"\u003e#973\u003c/a\u003e by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1044\"\u003epypa/build#1044\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: report coverage failure lines by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1046\"\u003epypa/build#1046\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: fix issue with uv run by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1048\"\u003epypa/build#1048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: reorganize testing docs for copy/paste by \u003ca href=\"https://github.com/abitrolly\"\u003e\u003ccode\u003e@​abitrolly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1043\"\u003epypa/build#1043\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: keep environment from leaking in Python 3.15 by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1049\"\u003epypa/build#1049\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix issue with changelog generation by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1050\"\u003epypa/build#1050\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.3...1.4.4\"\u003ehttps://github.com/pypa/build/compare/1.4.3...1.4.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.4.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(api): resolve thread-safety races in build API by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1015\"\u003epypa/build#1015\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(builder): validate backend-path entries exist on disk by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1016\"\u003epypa/build#1016\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest: cover config settings build paths by \u003ca href=\"https://github.com/terminalchai\"\u003e\u003ccode\u003e@​terminalchai\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/992\"\u003epypa/build#992\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd kind=(step, ) for root messages with * by \u003ca href=\"https://github.com/abitrolly\"\u003e\u003ccode\u003e@​abitrolly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/973\"\u003epypa/build#973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: correct changelog category ordering by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1017\"\u003epypa/build#1017\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(cli): show full dependency chain in missing deps error by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1019\"\u003epypa/build#1019\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: fully annotate by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1020\"\u003epypa/build#1020\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: lazy imports by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1021\"\u003epypa/build#1021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: adding more ruff codes by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1022\"\u003epypa/build#1022\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: improve annotations by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1023\"\u003epypa/build#1023\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 test(coverage): achieve 100% test coverage by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1018\"\u003epypa/build#1018\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: add ruff PT by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1025\"\u003epypa/build#1025\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: add ruff PYI by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1026\"\u003epypa/build#1026\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: add ruff SIM/RET by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1028\"\u003epypa/build#1028\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(env): strip PYTHONPATH from isolated builds by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1024\"\u003epypa/build#1024\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: use ruff ALL by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1029\"\u003epypa/build#1029\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(env): prevent pip credential hang with private indexes by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1030\"\u003epypa/build#1030\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(check_dependency): verify URL reqs via PEP 610 by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1027\"\u003epypa/build#1027\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/terminalchai\"\u003e\u003ccode\u003e@​terminalchai\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pypa/build/pull/992\"\u003epypa/build#992\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.2...1.4.3\"\u003ehttps://github.com/pypa/build/compare/1.4.2...1.4.3\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e####################\n1.5.0 (2026-04-30)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.9 support - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1036\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003e--ignore-installed\u003c/code\u003e opt-in from the API via \u003ccode\u003efresh=True\u003c/code\u003e - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1056\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1033\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.4 (2026-04-22)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eFix release pipeline generating \u003ccode\u003eCHANGELOG.rst\u003c/code\u003e entries with inconsistent heading levels, which broke \u003ccode\u003esphinx -W\u003c/code\u003e\nand pinned Read the Docs \u003ccode\u003estable\u003c/code\u003e at 1.4.0 - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e1031\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRevert :pr:\u003ccode\u003e1039\u003c/code\u003e from build 1.4.3, no longer check direct_url (for now) - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1039\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--ignore-installed\u003c/code\u003e to pip install command to prevent issues with packages already present in the isolated\nbuild environment - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1037\u003c/code\u003e) (:issue:\u003ccode\u003e1040\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePartial revert of :pr:\u003ccode\u003e973\u003c/code\u003e, keeping log messages in one entry, multiple lines. (:issue:\u003ccode\u003e1044\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1048\u003c/code\u003e, :issue:\u003ccode\u003e1049\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.3 (2026-04-10)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/70666a296c2e5bb7451f5a04eef259f6f943d0de\"\u003e\u003ccode\u003e70666a2\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/653d86586dea8b4e020086a276a15a27ac7bd25d\"\u003e\u003ccode\u003e653d865\u003c/code\u003e\u003c/a\u003e docs: fix issue with changelog generation (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1050\"\u003e#1050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/373b9ee171e2f16353365b1a9a02bc408b96ca73\"\u003e\u003ccode\u003e373b9ee\u003c/code\u003e\u003c/a\u003e tests: keep environment from leaking in Python 3.15 (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1049\"\u003e#1049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/e37e2ae697f9dde82709affb9356281fc2a9b98b\"\u003e\u003ccode\u003ee37e2ae\u003c/code\u003e\u003c/a\u003e docs: reorganize testing docs for copy/paste (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1043\"\u003e#1043\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/e9c194ad54413f1923f727ad07c7faf7dff813c0\"\u003e\u003ccode\u003ee9c194a\u003c/code\u003e\u003c/a\u003e tests: fix issue with uv run (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1048\"\u003e#1048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/03b7d7032ae636be992c917c67f8efbf99527c62\"\u003e\u003ccode\u003e03b7d70\u003c/code\u003e\u003c/a\u003e chore: report coverage failure lines (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1046\"\u003e#1046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/2afa3b59977c7e08dc526f19ab670edf99ce6051\"\u003e\u003ccode\u003e2afa3b5\u003c/code\u003e\u003c/a\u003e fix: revert part of \u003ca href=\"https://redirect.github.com/pypa/build/issues/973\"\u003e#973\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1044\"\u003e#1044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b336f60e8008791b7c492078a0725fdadc5875e8\"\u003e\u003ccode\u003eb336f60\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1045\"\u003e#1045\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/6d8039a4503caa2327657eb288c6ce01dabc3eb7\"\u003e\u003ccode\u003e6d8039a\u003c/code\u003e\u003c/a\u003e fix: ignore installed when running pip (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1040\"\u003e#1040\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/ebf6eba272c732ae7e3136edc78ac2597035edd9\"\u003e\u003ccode\u003eebf6eba\u003c/code\u003e\u003c/a\u003e revert: drop PEP 660 change (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1039\"\u003e#1039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.4.2...1.4.4\"\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=build\u0026package-manager=pip\u0026previous-version=1.4.2\u0026new-version=1.4.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/fhafqi3uq/Honeypot-Monitor/pull/7","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/fhafqi3uq%2FHoneypot-Monitor/issues/7","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/7/packages"},{"uuid":"4417786468","node_id":"PR_kwDOBXYo-M7aF9uV","number":13135,"state":"open","title":"chore(deps-dev): bump build from 1.4.4 to 1.5.0","user":"dependabot[bot]","labels":["Dependencies","Python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-11T03:04:17.000Z","updated_at":"2026-05-11T03:36:30.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"build","old_version":"1.4.4","new_version":"1.5.0","repository_url":"https://github.com/pypa/build"}],"path":null,"ecosystem":"pip"},"body":"Bumps [build](https://github.com/pypa/build) from 1.4.4 to 1.5.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/releases\"\u003ebuild's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: try to improve release docs by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1051\"\u003epypa/build#1051\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: drop 3.9, require 3.10+ by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1036\"\u003epypa/build#1036\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: tox toml by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1033\"\u003epypa/build#1033\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: api should not ignore installed, only CLI by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1056\"\u003epypa/build#1056\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.4...1.5.0\"\u003ehttps://github.com/pypa/build/compare/1.4.4...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e####################\n1.5.0 (2026-04-30)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.9 support - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1036\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003e--ignore-installed\u003c/code\u003e opt-in from the API via \u003ccode\u003efresh=True\u003c/code\u003e - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1056\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1033\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.4 (2026-04-22)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eFix release pipeline generating \u003ccode\u003eCHANGELOG.rst\u003c/code\u003e entries with inconsistent heading levels, which broke \u003ccode\u003esphinx -W\u003c/code\u003e\nand pinned Read the Docs \u003ccode\u003estable\u003c/code\u003e at 1.4.0 - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e1031\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRevert :pr:\u003ccode\u003e1039\u003c/code\u003e from build 1.4.3, no longer check direct_url (for now) - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1039\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--ignore-installed\u003c/code\u003e to pip install command to prevent issues with packages already present in the isolated\nbuild environment - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1037\u003c/code\u003e) (:issue:\u003ccode\u003e1040\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePartial revert of :pr:\u003ccode\u003e973\u003c/code\u003e, keeping log messages in one entry, multiple lines. (:issue:\u003ccode\u003e1044\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1048\u003c/code\u003e, :issue:\u003ccode\u003e1049\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.3 (2026-04-10)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/615d04cfc52ac3c1592a463f0afe484fee1cc368\"\u003e\u003ccode\u003e615d04c\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/776f702f84787525df62a5473dd13d4e2f45b977\"\u003e\u003ccode\u003e776f702\u003c/code\u003e\u003c/a\u003e fix: api should not ignore installed, only CLI (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/42da4c4b483563819fabdb8ecf2f6df53ed82123\"\u003e\u003ccode\u003e42da4c4\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1055\"\u003e#1055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b445cd2e736db5f80cde7d952d620a73cc26bf9d\"\u003e\u003ccode\u003eb445cd2\u003c/code\u003e\u003c/a\u003e chore: tox toml (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/c44c143876042ac6e1212a31684a3adca19beda4\"\u003e\u003ccode\u003ec44c143\u003c/code\u003e\u003c/a\u003e feat: drop 3.9, require 3.10+ (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/a9bb4560d213069b11c8068159f1de060abec5b7\"\u003e\u003ccode\u003ea9bb456\u003c/code\u003e\u003c/a\u003e build(deps): bump astral-sh/setup-uv from 8.0.0 to 8.1.0 in the actions group...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/cb3351155ce99902580022acb81dc0adb8124d53\"\u003e\u003ccode\u003ecb33511\u003c/code\u003e\u003c/a\u003e ci: try to improve release docs (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1051\"\u003e#1051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pypa/build/compare/1.4.4...1.5.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=build\u0026package-manager=pip\u0026previous-version=1.4.4\u0026new-version=1.5.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/freqtrade/freqtrade/pull/13135","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/freqtrade%2Ffreqtrade/issues/13135","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/13135/packages"},{"uuid":"4411445358","node_id":"PR_kwDOQnuBaM7ZyxlG","number":111,"state":"closed","title":"chore(deps): bump the python-dependencies group across 1 directory with 45 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-16T06:15:40.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-09T06:18:46.000Z","updated_at":"2026-05-16T06:15:41.000Z","time_to_close":604614,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-dependencies","update_count":45,"packages":[{"name":"anthropic","old_version":"0.83.0","new_version":"0.100.0","repository_url":"https://github.com/anthropics/anthropic-sdk-python"},{"name":"anyio","old_version":"4.12.1","new_version":"4.13.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"attrs","old_version":"25.4.0","new_version":"26.1.0","repository_url":"https://github.com/python-attrs/attrs"},{"name":"build","old_version":"1.4.0","new_version":"1.5.0","repository_url":"https://github.com/pypa/build"},{"name":"certifi","old_version":"2026.1.4","new_version":"2026.4.22","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.4","new_version":"3.4.7","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.3.1","new_version":"8.3.3","repository_url":"https://github.com/pallets/click"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [setuptools](https://github.com/pypa/setuptools), [anthropic](https://github.com/anthropics/anthropic-sdk-python), [anyio](https://github.com/agronholm/anyio), [attrs](https://github.com/python-attrs/attrs), [build](https://github.com/pypa/build), [certifi](https://github.com/certifi/python-certifi), [charset-normalizer](https://github.com/jawah/charset_normalizer), [click](https://github.com/pallets/click), [coverage](https://github.com/coveragepy/coveragepy), [cryptography](https://github.com/pyca/cryptography), [docstring-parser](https://github.com/rr-/docstring_parser), [idna](https://github.com/kjd/idna), [jiter](https://github.com/pydantic/jiter), [jsonpointer](https://github.com/stefankoegl/python-json-pointer), [langchain-anthropic](https://github.com/langchain-ai/langchain), [langchain-core](https://github.com/langchain-ai/langchain), [langchain-ollama](https://github.com/langchain-ai/langchain), [langchain-openai](https://github.com/langchain-ai/langchain), [langsmith](https://github.com/langchain-ai/langsmith-sdk), [librt](https://github.com/mypyc/librt), [mcp](https://github.com/modelcontextprotocol/python-sdk), [mypy](https://github.com/python/mypy), [ollama](https://github.com/ollama/ollama-python), [openai](https://github.com/openai/openai-python), [orjson](https://github.com/ijl/orjson), [packaging](https://github.com/pypa/packaging), [pathspec](https://github.com/cpburnz/python-pathspec), [posthog](https://github.com/posthog/posthog-python), [pydantic](https://github.com/pydantic/pydantic), [pydantic-settings](https://github.com/pydantic/pydantic-settings), [pydantic-core](https://github.com/pydantic/pydantic), [pyjwt](https://github.com/jpadilla/pyjwt), [pyright](https://github.com/RobertCraigie/pyright-python), [pytest-cov](https://github.com/pytest-dev/pytest-cov), [types-pyyaml](https://github.com/python/typeshed), [types-defusedxml](https://github.com/python/typeshed), [regex](https://github.com/mrabarnett/mrab-regex), [requests](https://github.com/psf/requests), [sse-starlette](https://github.com/sysid/sse-starlette), [starlette](https://github.com/Kludex/starlette), [urllib3](https://github.com/urllib3/urllib3), [uvicorn](https://github.com/Kludex/uvicorn), [wcwidth](https://github.com/jquast/wcwidth), [ruff](https://github.com/astral-sh/ruff) and [pyinstaller](https://github.com/pyinstaller/pyinstaller) to permit the latest version.\nUpdates `setuptools` to 82.0.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/setuptools/blob/main/NEWS.rst\"\u003esetuptools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev82.0.1\u003c/h1\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix the loading of \u003ccode\u003elauncher manifest.xml\u003c/code\u003e file. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5047\"\u003e#5047\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReplaced deprecated \u003ccode\u003ejson.__version__\u003c/code\u003e with fixture in tests. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5186\"\u003e#5186\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImproved Documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd advice about how to improve predictability when installing sdists. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5168\"\u003e#5168\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMisc\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/4941\"\u003e#4941\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5157\"\u003e#5157\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5169\"\u003e#5169\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5175\"\u003e#5175\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev82.0.0\u003c/h1\u003e\n\u003ch2\u003eDeprecations and Removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epkg_resources\u003c/code\u003e has been removed from Setuptools. Most common uses of \u003ccode\u003epkg_resources\u003c/code\u003e have been superseded by the \u003ccode\u003eimportlib.resources \u0026lt;https://docs.python.org/3/library/importlib.resources.html\u0026gt;\u003c/code\u003e_ and \u003ccode\u003eimportlib.metadata \u0026lt;https://docs.python.org/3/library/importlib.metadata.html\u0026gt;\u003c/code\u003e_ projects. Projects and environments relying on \u003ccode\u003epkg_resources\u003c/code\u003e for namespace packages or other behavior should depend on older versions of \u003ccode\u003esetuptools\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/3085\"\u003e#3085\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev81.0.0\u003c/h1\u003e\n\u003ch2\u003eDeprecations and Removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved support for the --dry-run parameter to setup.py. This one feature by its nature threads through lots of core and ancillary functionality, adding complexity and friction. Removal of this parameter will help decouple the compiler functionality from distutils and thus the eventual full integration of distutils. These changes do affect some class and function signatures, so any derivative functionality may require some compatibility shims to support their expected interface. Please report any issues to the Setuptools project for investigation. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/4872\"\u003e#4872\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev80.10.2\u003c/h1\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate vendored dependencies. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5159\"\u003e#5159\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMisc\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/5a13876673a41e3cd21d4d6e587f53d0fb4fd8e5\"\u003e\u003ccode\u003e5a13876\u003c/code\u003e\u003c/a\u003e Bump version: 82.0.0 → 82.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/51ab8f183f1c4112675d8d6ec6b004406d518ee8\"\u003e\u003ccode\u003e51ab8f1\u003c/code\u003e\u003c/a\u003e Avoid using (deprecated) 'json.\u003cstrong\u003eversion\u003c/strong\u003e' in tests (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5194\"\u003e#5194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/f9c37b20bb0ed11203f676f9683452a4c3ace6f6\"\u003e\u003ccode\u003ef9c37b2\u003c/code\u003e\u003c/a\u003e Docs/CI: Fix intersphinx references (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5195\"\u003e#5195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/8173db2a4fc0f6cb28926b3dba59116b79f435c8\"\u003e\u003ccode\u003e8173db2\u003c/code\u003e\u003c/a\u003e Docs: Fix intersphinx references\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/09bafbc74923f2a3591b5b098be75d6af6ca5141\"\u003e\u003ccode\u003e09bafbc\u003c/code\u003e\u003c/a\u003e Fix past tense on newsfragment\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/461ea56c8e629819a23920f44d9298d4f041abde\"\u003e\u003ccode\u003e461ea56\u003c/code\u003e\u003c/a\u003e Add news fragment\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/c4ffe535b58235ff9f9ebe90d24a2cffb57e70ae\"\u003e\u003ccode\u003ec4ffe53\u003c/code\u003e\u003c/a\u003e Avoid using (deprecated) 'json.\u003cstrong\u003eversion\u003c/strong\u003e' in tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/749258b1a96c7accc05ea7d842fb19fc378866fe\"\u003e\u003ccode\u003e749258b\u003c/code\u003e\u003c/a\u003e Cleanup \u003ccode\u003epkg_resources\u003c/code\u003e dependencies and configuration (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5175\"\u003e#5175\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/2019c16701667db1010c62ec11c6ef78c2e58206\"\u003e\u003ccode\u003e2019c16\u003c/code\u003e\u003c/a\u003e Parse \u003ccode\u003eext-module.define-macros\u003c/code\u003e from \u003ccode\u003epyproject.toml\u003c/code\u003e as list of tuples (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5169\"\u003e#5169\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/b809c86a37d97fcce290d5f51d4c293ab40bc685\"\u003e\u003ccode\u003eb809c86\u003c/code\u003e\u003c/a\u003e Sync setuptools schema with validate-pyproject (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5157\"\u003e#5157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/setuptools/compare/v61.0.0...v82.0.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `anthropic` from 0.83.0 to 0.100.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/releases\"\u003eanthropic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.100.0\u003c/h2\u003e\n\u003ch2\u003e0.100.0 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.99.0...v0.100.0\"\u003ev0.99.0...v0.100.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add support for Managed Agents multiagents and outcomes, webhooks, vault validation (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/3b3deee9c479ce5b54411a8572b66c5a90f1d50f\"\u003e3b3deee\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e Adjust webhook configuration (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/8c3339e532458e93585f2faf4f284ccbb5829717\"\u003e8c3339e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.99.0\u003c/h2\u003e\n\u003ch2\u003e0.99.0 (2026-05-05)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.98.1...v0.99.0\"\u003ev0.98.1...v0.99.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e allow targeting a workspace for OIDC federation token exchange (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/4ba8067daa634691ea8c8a3b970d42bdaf5f04eb\"\u003e4ba8067\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.98.1\u003c/h2\u003e\n\u003ch2\u003e0.98.1 (2026-05-04)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.98.0...v0.98.1\"\u003ev0.98.0...v0.98.1\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix typo in example (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1754\"\u003e#1754\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/de8ba13769837f92ff00be8a1b1e9ad0749eae2f\"\u003ede8ba13\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.98.0\u003c/h2\u003e\n\u003ch2\u003e0.98.0 (2026-05-04)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.97.0...v0.98.0\"\u003ev0.97.0...v0.98.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e improve Managed Agents APIs (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/7faf3939a803420e7efd85cc18b67b97b429c172\"\u003e7faf393\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e add Workload Identity Federation, interactive OAuth, and auth profiles (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/6458bcc28e83adcd96cd084ed19ec113d5462c80\"\u003e6458bcc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport setting headers via env (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/52eb8cdd6e9a899519010d7e6ebc4a74a88f82cd\"\u003e52eb8cd\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003estreaming:\u003c/strong\u003e propagate stop_details from message_delta onto accumulated Message (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1725\"\u003e#1725\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/900dd9b4376fd7a32d6e59d028b143558340d619\"\u003e900dd9b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003euse correct field name format for multipart file arrays (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/8350bdced9599d023565c0cca93ff2d05560f991\"\u003e8350bdc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evertex:\u003c/strong\u003e async client missing us/eu multi-region base_url branches (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1734\"\u003e#1734\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/3e78f71c0ab3f3ff0e5402477cff06771c94864c\"\u003e3e78f71\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/blob/main/CHANGELOG.md\"\u003eanthropic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.100.0 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.99.0...v0.100.0\"\u003ev0.99.0...v0.100.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add support for Managed Agents multiagents and outcomes, webhooks, vault validation (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/3b3deee9c479ce5b54411a8572b66c5a90f1d50f\"\u003e3b3deee\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e Adjust webhook configuration (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/8c3339e532458e93585f2faf4f284ccbb5829717\"\u003e8c3339e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.99.0 (2026-05-05)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.98.1...v0.99.0\"\u003ev0.98.1...v0.99.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e allow targeting a workspace for OIDC federation token exchange (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/4ba8067daa634691ea8c8a3b970d42bdaf5f04eb\"\u003e4ba8067\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.98.1 (2026-05-04)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.98.0...v0.98.1\"\u003ev0.98.0...v0.98.1\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix typo in example (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1754\"\u003e#1754\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/de8ba13769837f92ff00be8a1b1e9ad0749eae2f\"\u003ede8ba13\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.98.0 (2026-05-04)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.97.0...v0.98.0\"\u003ev0.97.0...v0.98.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e improve Managed Agents APIs (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/7faf3939a803420e7efd85cc18b67b97b429c172\"\u003e7faf393\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e add Workload Identity Federation, interactive OAuth, and auth profiles (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/6458bcc28e83adcd96cd084ed19ec113d5462c80\"\u003e6458bcc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport setting headers via env (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/52eb8cdd6e9a899519010d7e6ebc4a74a88f82cd\"\u003e52eb8cd\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003estreaming:\u003c/strong\u003e propagate stop_details from message_delta onto accumulated Message (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1725\"\u003e#1725\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/900dd9b4376fd7a32d6e59d028b143558340d619\"\u003e900dd9b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003euse correct field name format for multipart file arrays (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/8350bdced9599d023565c0cca93ff2d05560f991\"\u003e8350bdc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evertex:\u003c/strong\u003e async client missing us/eu multi-region base_url branches (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1734\"\u003e#1734\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/3e78f71c0ab3f3ff0e5402477cff06771c94864c\"\u003e3e78f71\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e reformat pyproject.toml (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/5a9d5fd106c52643b87881d341b27dc7b12d5975\"\u003e5a9d5fd\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/04b468daf76e4b95a949cecb03e29f4a1374d3b5\"\u003e\u003ccode\u003e04b468d\u003c/code\u003e\u003c/a\u003e release: 0.100.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/2c154079bf6a885b3acf1b91be45e12ff61d994e\"\u003e\u003ccode\u003e2c15407\u003c/code\u003e\u003c/a\u003e fix(api): Adjust webhook configuration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/dc0ce48d7525261275f197d3ff194034bb79387b\"\u003e\u003ccode\u003edc0ce48\u003c/code\u003e\u003c/a\u003e feat(api): add support for Managed Agents multiagents and outcomes, webhooks,...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/d573b82855d125f0ba133383670b6c4b5cb58dd5\"\u003e\u003ccode\u003ed573b82\u003c/code\u003e\u003c/a\u003e release: 0.99.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/119e1233e2f01cfd9decd748ed399208675524d4\"\u003e\u003ccode\u003e119e123\u003c/code\u003e\u003c/a\u003e feat(client): allow targeting a workspace for OIDC federation token exchange\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/637560c5b14d7bba15872cb1b2485f632e8d5cf2\"\u003e\u003ccode\u003e637560c\u003c/code\u003e\u003c/a\u003e release: 0.98.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/4fb779f015b77a4b22011db2b07b2ea4526d30ad\"\u003e\u003ccode\u003e4fb779f\u003c/code\u003e\u003c/a\u003e chore: fix typo in example (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1754\"\u003e#1754\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/11b87bc79308b0293f1a24b85901bb0bdc302441\"\u003e\u003ccode\u003e11b87bc\u003c/code\u003e\u003c/a\u003e release: 0.98.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/b669ad4c5d3604d614fe03d1c96fb5770f7ad5fd\"\u003e\u003ccode\u003eb669ad4\u003c/code\u003e\u003c/a\u003e codegen metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/3be1e8996f3364d11fe8cc1d4154a1939aa89282\"\u003e\u003ccode\u003e3be1e89\u003c/code\u003e\u003c/a\u003e feat(client): add Workload Identity Federation, interactive OAuth, and auth p...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.83.0...v0.100.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `anyio` from 4.12.1 to 4.13.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.13.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ettl\u003c/code\u003e parameter to the \u003ccode\u003eanyio.functools.lru_cache\u003c/code\u003e wrapper (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1073\"\u003e#1073\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWidened the type annotations of file I/O streams to accept \u003ccode\u003eIO[bytes]\u003c/code\u003e instead of just \u003ccode\u003eBinaryIO\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1078\"\u003e#1078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path\u003c/code\u003e not being compatible with Python 3.15 due to the removal of \u003ccode\u003epathlib.Path.is_reserved()\u003c/code\u003e and the addition of \u003ccode\u003epathlib.Path.__vfspath__()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1061\"\u003e#1061\u003c/a\u003e; PR by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the \u003ccode\u003eBrokenResourceError\u003c/code\u003e raised by the asyncio \u003ccode\u003eSocketStream\u003c/code\u003e not having the original exception as its cause (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1055\"\u003e#1055\u003c/a\u003e; PR by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the \u003ccode\u003eTypeError\u003c/code\u003e raised when using \u0026quot;func\u0026quot; as a parameter name in \u003ccode\u003epytest.mark.parametrize\u003c/code\u003e when using the pytest plugin (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1068\"\u003e#1068\u003c/a\u003e; PR by \u003ca href=\"https://github.com/JohnnyDeuss\"\u003e\u003ccode\u003e@​JohnnyDeuss\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the pytest plugin not running tests that had the \u003ccode\u003eanyio\u003c/code\u003e marker added programmatically via \u003ccode\u003epytest_collection_modifyitems\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/422\"\u003e#422\u003c/a\u003e; PR by \u003ca href=\"https://github.com/chbndrhnns\"\u003e\u003ccode\u003e@​chbndrhnns\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed cancellation exceptions leaking from a \u003ccode\u003eCancelScope\u003c/code\u003e on asyncio when they are contained in an exception group alongside non-cancellation exceptions (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1091\"\u003e#1091\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\u003eCondition.wait()\u003c/code\u003e not passing on a notification when the task is cancelled but already received a notification\u003c/li\u003e\n\u003cli\u003eFixed inverted condition in the process pool shutdown phase which would cause still-running pooled processes not to be terminated (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1074\"\u003e#1074\u003c/a\u003e; PR by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\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/agronholm/anyio/commit/afbe93ca9d0c447adf26e9c1715ac20870622bf2\"\u003e\u003ccode\u003eafbe93c\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/33bdf2e4b4f40c2df178123746147a6d2471808d\"\u003e\u003ccode\u003e33bdf2e\u003c/code\u003e\u003c/a\u003e Rearranged the changelog entries\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/19e09e25bc5a23dd78a577d8c3909dd377057c78\"\u003e\u003ccode\u003e19e09e2\u003c/code\u003e\u003c/a\u003e Fixed inverted condition in _forcibly_shutdown_process_pool_on_exit (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1074\"\u003e#1074\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9369d80b9e8292f2a892a9d5c73923c6a28aa08c\"\u003e\u003ccode\u003e9369d80\u003c/code\u003e\u003c/a\u003e Fixed Condition.wait() not handing over notification when cancelled\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6f122abdc6f6b166c6b6ac27d36d55cdf8fa08e8\"\u003e\u003ccode\u003e6f122ab\u003c/code\u003e\u003c/a\u003e Fixed cancellation exceptions leaking from a \u003ccode\u003eCancelScope\u003c/code\u003e on asyncio when th...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/beaa45aff568a4020f2faf317321dd92f0e1f4a0\"\u003e\u003ccode\u003ebeaa45a\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1097\"\u003e#1097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/602f6606dcf3f37702686a4f3e161328c537b07f\"\u003e\u003ccode\u003e602f660\u003c/code\u003e\u003c/a\u003e Widened type annotations to accept IO[bytes] in file streams\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b5dcd45170701a756ba634197398f05d4710cab3\"\u003e\u003ccode\u003eb5dcd45\u003c/code\u003e\u003c/a\u003e Added note about erasing the template\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d68670b3b4e0917d4caff2de082e03220f3e05a1\"\u003e\u003ccode\u003ed68670b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1090\"\u003e#1090\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/fc17a22dd948e6a3d90d99908813f0010dfc3d2c\"\u003e\u003ccode\u003efc17a22\u003c/code\u003e\u003c/a\u003e tweak to_thread docs about abandon_on_cancel (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1088\"\u003e#1088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.12.1...4.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `attrs` from 25.4.0 to 26.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-attrs/attrs/releases\"\u003eattrs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.1.0\u003c/h2\u003e\n\u003ch2\u003eHighlights\u003c/h2\u003e\n\u003cp\u003eThe main outward change here only affects people using field transformers, but it should be a nice quality of life improvement!\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eFull changelog below!\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eSpecial Thanks\u003c/h2\u003e\n\u003cp\u003eThis release would not be possible without my generous sponsors! Thank you to all of you making sustainable maintenance possible! If \u003cem\u003eyou\u003c/em\u003e would like to join them, go to \u003ca href=\"https://github.com/sponsors/hynek\"\u003ehttps://github.com/sponsors/hynek\u003c/a\u003e and check out the sweet perks!\u003c/p\u003e\n\u003ch3\u003eAbove and Beyond\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://www.variomedia.de/\"\u003eVariomedia AG\u003c/a\u003e (@\u003ca href=\"https://github.com/variomedia\"\u003evariomedia\u003c/a\u003e), \u003ca href=\"https://www.tidelift.com/\"\u003eTidelift\u003c/a\u003e (@\u003ca href=\"https://github.com/tidelift\"\u003etidelift\u003c/a\u003e), \u003ca href=\"https://kraken.tech\"\u003eKraken Tech\u003c/a\u003e (@\u003ca href=\"https://github.com/kraken-tech\"\u003ekraken-tech\u003c/a\u003e), \u003ca href=\"https://privacy-solutions.org\"\u003ePrivacy Solutions GmbH\u003c/a\u003e (@\u003ca href=\"https://github.com/privacy-solutions\"\u003eprivacy-solutions\u003c/a\u003e), \u003ca href=\"http://filepreviews.io/\"\u003eFilePreviews\u003c/a\u003e (@\u003ca href=\"https://github.com/filepreviews\"\u003efilepreviews\u003c/a\u003e), \u003ca href=\"https://ecosyste.ms\"\u003eEcosystems\u003c/a\u003e (@\u003ca href=\"https://github.com/ecosyste-ms\"\u003eecosyste-ms\u003c/a\u003e), \u003ca href=\"https://www.lambdatest.com\"\u003eTestMu AI Open Source Office (Formerly LambdaTest)\u003c/a\u003e (@\u003ca href=\"https://github.com/LambdaTest-Inc\"\u003eLambdaTest-Inc\u003c/a\u003e), \u003ca href=\"https://doist.com/\"\u003eDoist\u003c/a\u003e (@\u003ca href=\"https://github.com/Doist\"\u003eDoist\u003c/a\u003e), Daniel Fortunov (@\u003ca href=\"https://github.com/asqui\"\u003easqui\u003c/a\u003e), and Kevin P. Fleming (@\u003ca href=\"https://github.com/kpfleming\"\u003ekpfleming\u003c/a\u003e).\u003c/p\u003e\n\u003ch3\u003eMaintenance Sustainers\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://buttondown.com\"\u003eButtondown\u003c/a\u003e (@\u003ca href=\"https://github.com/buttondown\"\u003ebuttondown\u003c/a\u003e), \u003ca href=\"https://christopher.xyz\"\u003eChristopher Dignam\u003c/a\u003e (@\u003ca href=\"https://github.com/chdsbd\"\u003echdsbd\u003c/a\u003e), Magnus Watn (@\u003ca href=\"https://github.com/magnuswatn\"\u003emagnuswatn\u003c/a\u003e), \u003ca href=\"https://cra.mr\"\u003eDavid Cramer\u003c/a\u003e (@\u003ca href=\"https://github.com/dcramer\"\u003edcramer\u003c/a\u003e), \u003ca href=\"https://rivolaks.com\"\u003eRivo Laks\u003c/a\u003e (@\u003ca href=\"https://github.com/rivol\"\u003erivol\u003c/a\u003e), \u003ca href=\"https://polar.sh\"\u003ePolar\u003c/a\u003e (@\u003ca href=\"https://github.com/polarsource\"\u003epolarsource\u003c/a\u003e), \u003ca href=\"https://miketheman.dev\"\u003eMike Fiedler\u003c/a\u003e (@\u003ca href=\"https://github.com/miketheman\"\u003emiketheman\u003c/a\u003e), Duncan Hill (@\u003ca href=\"https://github.com/cricalix\"\u003ecricalix\u003c/a\u003e), Colin Marquardt (@\u003ca href=\"https://github.com/cmarqu\"\u003ecmarqu\u003c/a\u003e), \u003ca href=\"https://blog.journeythatcounts.nl\"\u003ePieter Swinkels\u003c/a\u003e (@\u003ca href=\"https://github.com/swinkels\"\u003eswinkels\u003c/a\u003e), Nick Libertini (@\u003ca href=\"https://github.com/libertininick\"\u003elibertininick\u003c/a\u003e), \u003ca href=\"https://bmdphd.info/\"\u003eBrian M. Dennis\u003c/a\u003e (@\u003ca href=\"https://github.com/crossjam\"\u003ecrossjam\u003c/a\u003e), Celebrity News AG (@\u003ca href=\"https://github.com/celebritynewsag\"\u003ecelebritynewsag\u003c/a\u003e), \u003ca href=\"https://westervelt.com\"\u003eThe Westervelt Company\u003c/a\u003e (@\u003ca href=\"https://github.com/westerveltco\"\u003ewesterveltco\u003c/a\u003e), \u003ca href=\"https://slafs.net\"\u003eSławomir Ehlert\u003c/a\u003e (@\u003ca href=\"https://github.com/slafs\"\u003eslafs\u003c/a\u003e), Mostafa Khalil (@\u003ca href=\"https://github.com/khadrawy\"\u003ekhadrawy\u003c/a\u003e), \u003ca href=\"https://fmularczyk.pl\"\u003eFilip Mularczyk\u003c/a\u003e (@\u003ca href=\"https://github.com/mukiblejlok\"\u003emukiblejlok\u003c/a\u003e), Thomas Klinger (@\u003ca href=\"https://github.com/thmsklngr\"\u003ethmsklngr\u003c/a\u003e), \u003ca href=\"https://poehlmann.io\"\u003eAndreas Poehlmann\u003c/a\u003e (@\u003ca href=\"https://github.com/ap--\"\u003eap--\u003c/a\u003e), \u003ca href=\"https://atbigelow.com\"\u003eAugust Trapper Bigelow\u003c/a\u003e (@\u003ca href=\"https://github.com/atbigelow\"\u003eatbigelow\u003c/a\u003e), \u003ca href=\"https://noumenal.es/\"\u003eCarlton Gibson\u003c/a\u003e (@\u003ca href=\"https://github.com/carltongibson\"\u003ecarltongibson\u003c/a\u003e), and \u003ca href=\"https://roboflow.com\"\u003eRoboflow\u003c/a\u003e (@\u003ca href=\"https://github.com/roboflow\"\u003eroboflow\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003eFull Changelog\u003c/h2\u003e\n\u003ch3\u003eBackwards-incompatible Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eField aliases are now resolved \u003cem\u003ebefore\u003c/em\u003e calling \u003ccode\u003efield_transformer\u003c/code\u003e, so transformers receive fully populated \u003ccode\u003eAttribute\u003c/code\u003e objects with usable \u003ccode\u003ealias\u003c/code\u003e values instead of \u003ccode\u003eNone\u003c/code\u003e. The new \u003ccode\u003eAttribute.alias_is_default\u003c/code\u003e flag indicates whether the alias was auto-generated (\u003ccode\u003eTrue\u003c/code\u003e) or explicitly set by the user (\u003ccode\u003eFalse\u003c/code\u003e). \u003ca href=\"https://redirect.github.com/python-attrs/attrs/issues/1509\"\u003e#1509\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanges\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix type annotations for \u003ccode\u003eattrs.validators.optional()\u003c/code\u003e, so it no longer rejects tuples with more than one validator. \u003ca href=\"https://redirect.github.com/python-attrs/attrs/issues/1496\"\u003e#1496\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003eattrs.validators.disabled()\u003c/code\u003e contextmanager can now be nested. \u003ca href=\"https://redirect.github.com/python-attrs/attrs/issues/1513\"\u003e#1513\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFrozen classes can set \u003ccode\u003eon_setattr=attrs.setters.NO_OP\u003c/code\u003e in addition to \u003ccode\u003eNone\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/python-attrs/attrs/issues/1515\"\u003e#1515\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIt's now possible to pass \u003cem\u003eattrs\u003c/em\u003e \u003cstrong\u003einstances\u003c/strong\u003e in addition to \u003cem\u003eattrs\u003c/em\u003e \u003cstrong\u003eclasses\u003c/strong\u003e to \u003ccode\u003eattrs.fields()\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/python-attrs/attrs/issues/1529\"\u003e#1529\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eThis release contains contributions from \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/DavidCEllis\"\u003e\u003ccode\u003e@​DavidCEllis\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/finite-state-machine\"\u003e\u003ccode\u003e@​finite-state-machine\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/hynek\"\u003e\u003ccode\u003e@​hynek\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/vstinner\"\u003e\u003ccode\u003e@​vstinner\u003c/code\u003e\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eArtifact Attestations\u003c/h2\u003e\n\u003cp\u003eYou can verify this release's \u003ca href=\"https://docs.github.com/en/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds\"\u003eartifact attestions\u003c/a\u003e using \u003ca href=\"https://cli.github.com\"\u003eGitHub's CLI tool\u003c/a\u003e by downloading the sdist and wheel from \u003ca href=\"https://pypi.org/project/attrs\"\u003ePyPI\u003c/a\u003e and running:\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003e$ gh attestation verify --owner python-attrs attrs-26.1.0.tar.gz\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-attrs/attrs/blob/main/CHANGELOG.md\"\u003eattrs's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/python-attrs/attrs/tree/26.1.0\"\u003e26.1.0\u003c/a\u003e - 2026-03-19\u003c/h2\u003e\n\u003ch3\u003eBackwards-incompatible Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eField aliases are now resolved \u003cem\u003ebefore\u003c/em\u003e calling \u003ccode\u003efield_transformer\u003c/code\u003e, so transformers receive fully populated \u003ccode\u003eAttribute\u003c/code\u003e objects with usable \u003ccode\u003ealias\u003c/code\u003e values instead of \u003ccode\u003eNone\u003c/code\u003e.\nThe new \u003ccode\u003eAttribute.alias_is_default\u003c/code\u003e flag indicates whether the alias was auto-generated (\u003ccode\u003eTrue\u003c/code\u003e) or explicitly set by the user (\u003ccode\u003eFalse\u003c/code\u003e).\n\u003ca href=\"https://redirect.github.com/python-attrs/attrs/issues/1509\"\u003e#1509\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanges\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix type annotations for \u003ccode\u003eattrs.validators.optional()\u003c/code\u003e, so it no longer rejects tuples with more than one validator.\n\u003ca href=\"https://redirect.github.com/python-attrs/attrs/issues/1496\"\u003e#1496\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003eattrs.validators.disabled()\u003c/code\u003e contextmanager can now be nested.\n\u003ca href=\"https://redirect.github.com/python-attrs/attrs/issues/1513\"\u003e#1513\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFrozen classes can set \u003ccode\u003eon_setattr=attrs.setters.NO_OP\u003c/code\u003e in addition to \u003ccode\u003eNone\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/python-attrs/attrs/issues/1515\"\u003e#1515\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIt's now possible to pass \u003cem\u003eattrs\u003c/em\u003e \u003cstrong\u003einstances\u003c/strong\u003e in addition to \u003cem\u003eattrs\u003c/em\u003e \u003cstrong\u003eclasses\u003c/strong\u003e to \u003ccode\u003eattrs.fields()\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/python-attrs/attrs/issues/1529\"\u003e#1529\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-attrs/attrs/commit/7bfc49e9b22d5ba25b6e429524c3d49fee27cb36\"\u003e\u003ccode\u003e7bfc49e\u003c/code\u003e\u003c/a\u003e Prepare 26.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-attrs/attrs/commit/31e02869da10824b492c378c1dc87ccc720ee5ad\"\u003e\u003ccode\u003e31e0286\u003c/code\u003e\u003c/a\u003e Update test_validators.py for Python 3.15a7 (\u003ca href=\"https://redirect.github.com/python-attrs/attrs/issues/1530\"\u003e#1530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-attrs/attrs/commit/48b8611c27779811d161200e17de8da24aae7feb\"\u003e\u003ccode\u003e48b8611\u003c/code\u003e\u003c/a\u003e Add instance support to attrs.fields() (\u003ca href=\"https://redirect.github.com/python-attrs/attrs/issues/1529\"\u003e#1529\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-attrs/attrs/commit/3a68d4913221abc6f8ad3be50937f7ae49300a98\"\u003e\u003ccode\u003e3a68d49\u003c/code\u003e\u003c/a\u003e dev: document missing git tags failure mode\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-attrs/attrs/commit/a572c3a4c558a8b9b48cf989fcd956ab1a279439\"\u003e\u003ccode\u003ea572c3a\u003c/code\u003e\u003c/a\u003e Allow field(on_setattr=NO_OP) on frozen classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-attrs/attrs/commit/af9c510912ce604a94896cc35c27368d5baf6ae6\"\u003e\u003ccode\u003eaf9c510\u003c/code\u003e\u003c/a\u003e Fix validators.disabled() to save/restore state on nesting (\u003ca href=\"https://redirect.github.com/python-attrs/attrs/issues/1513\"\u003e#1513\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-attrs/attrs/commit/ab7f8b2f4c0f747d5b1575247ce35e5adaad182e\"\u003e\u003ccode\u003eab7f8b2\u003c/code\u003e\u003c/a\u003e update dev\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-attrs/attrs/commit/ce89f5d11feb0805da9ed10bb165238cc959f1bb\"\u003e\u003ccode\u003ece89f5d\u003c/code\u003e\u003c/a\u003e Fix message passing in frozen errors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-attrs/attrs/commit/eccd966d80aff5196efc959316961cfa780439f9\"\u003e\u003ccode\u003eeccd966\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eoptional\u003c/code\u003e validator to accept tuples of len \u0026gt; 1 (\u003ca href=\"https://redirect.github.com/python-attrs/attrs/issues/1496\"\u003e#1496\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-attrs/attrs/commit/e92fe52dfe1eb07167e6473724c5a8ada978add0\"\u003e\u003ccode\u003ee92fe52\u003c/code\u003e\u003c/a\u003e policies: tighten screws (\u003ca href=\"https://redirect.github.com/python-attrs/attrs/issues/1528\"\u003e#1528\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-attrs/attrs/compare/25.4.0...26.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `build` from 1.4.0 to 1.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/releases\"\u003ebuild's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: try to improve release docs by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1051\"\u003epypa/build#1051\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: drop 3.9, require 3.10+ by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1036\"\u003epypa/build#1036\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: tox toml by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1033\"\u003epypa/build#1033\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: api should not ignore installed, only CLI by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1056\"\u003epypa/build#1056\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.4...1.5.0\"\u003ehttps://github.com/pypa/build/compare/1.4.4...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.4.4\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(release): generate consistent CHANGELOG heading levels by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1032\"\u003epypa/build#1032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: move source links by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1034\"\u003epypa/build#1034\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erevert: drop PEP 660 change by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1039\"\u003epypa/build#1039\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: ignore installed when running pip by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1040\"\u003epypa/build#1040\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: revert part of \u003ca href=\"https://redirect.github.com/pypa/build/issues/973\"\u003e#973\u003c/a\u003e by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1044\"\u003epypa/build#1044\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: report coverage failure lines by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1046\"\u003epypa/build#1046\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: fix issue with uv run by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1048\"\u003epypa/build#1048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: reorganize testing docs for copy/paste by \u003ca href=\"https://github.com/abitrolly\"\u003e\u003ccode\u003e@​abitrolly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1043\"\u003epypa/build#1043\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: keep environment from leaking in Python 3.15 by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1049\"\u003epypa/build#1049\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix issue with changelog generation by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1050\"\u003epypa/build#1050\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.3...1.4.4\"\u003ehttps://github.com/pypa/build/compare/1.4.3...1.4.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.4.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(api): resolve thread-safety races in build API by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1015\"\u003epypa/build#1015\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(builder): validate backend-path entries exist on disk by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1016\"\u003epypa/build#1016\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest: cover config settings build paths by \u003ca href=\"https://github.com/terminalchai\"\u003e\u003ccode\u003e@​terminalchai\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/992\"\u003epypa/build#992\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd kind=(step, ) for root messages with * by \u003ca href=\"https://github.com/abitrolly\"\u003e\u003ccode\u003e@​abitrolly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/973\"\u003epypa/build#973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: correct changelog category ordering by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1017\"\u003epypa/build#1017\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(cli): show full dependency chain in missing deps error by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1019\"\u003epypa/build#1019\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: fully annotate by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1020\"\u003epypa/build#1020\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: lazy imports by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1021\"\u003epypa/build#1021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: adding more ruff codes by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1022\"\u003epypa/build#1022\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: improve annotations by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1023\"\u003epypa/build#1023\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 test(coverage): achieve 100% test coverage by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1018\"\u003epypa/build#1018\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: add ruff PT by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1025\"\u003epypa/build#1025\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: add ruff PYI by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1026\"\u003epypa/build#1026\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: add ruff SIM/RET by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1028\"\u003epypa/build#1028\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(env): strip PYTHONPATH from isolated builds by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1024\"\u003epypa/build#1024\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: use ruff ALL by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1029\"\u003epypa/build#1029\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e####################\n1.5.0 (2026-04-30)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.9 support - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1036\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003e--ignore-installed\u003c/code\u003e opt-in from the API via \u003ccode\u003efresh=True\u003c/code\u003e - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1056\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1033\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.4 (2026-04-22)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eFix release pipeline generating \u003ccode\u003eCHANGELOG.rst\u003c/code\u003e entries with inconsistent heading levels, which broke \u003ccode\u003esphinx -W\u003c/code\u003e\nand pinned Read the Docs \u003ccode\u003estable\u003c/code\u003e at 1.4.0 - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e1031\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRevert :pr:\u003ccode\u003e1039\u003c/code\u003e from build 1.4.3, no longer check direct_url (for now) - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1039\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--ignore-installed\u003c/code\u003e to pip install command to prevent issues with packages already present in the isolated\nbuild environment - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1037\u003c/code\u003e) (:issue:\u003ccode\u003e1040\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePartial revert of :pr:\u003ccode\u003e973\u003c/code\u003e, keeping log messages in one entry, multiple lines. (:issue:\u003ccode\u003e1044\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1048\u003c/code\u003e, :issue:\u003ccode\u003e1049\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.3 (2026-04-10)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/615d04cfc52ac3c1592a463f0afe484fee1cc368\"\u003e\u003ccode\u003e615d04c\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/776f702f84787525df62a5473dd13d4e2f45b977\"\u003e\u003ccode\u003e776f702\u003c/code\u003e\u003c/a\u003e fix: api should not ignore installed, only CLI (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/42da4c4b483563819fabdb8ecf2f6df53ed82123\"\u003e\u003ccode\u003e42da4c4\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1055\"\u003e#1055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b445cd2e736db5f80cde7d952d620a73cc26bf9d\"\u003e\u003ccode\u003eb445cd2\u003c/code\u003e\u003c/a\u003e chore: tox toml (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/c44c143876042ac6e1212a31684a3adca19beda4\"\u003e\u003ccode\u003ec44c143\u003c/code\u003e\u003c/a\u003e feat: drop 3.9, require 3.10+ (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/a9bb4560d213069b11c8068159f1de060abec5b7\"\u003e\u003ccode\u003ea9bb456\u003c/code\u003e\u003c/a\u003e build(deps): bump astral-sh/setup-uv from 8.0.0 to 8.1.0 in the actions group...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/cb3351155ce99902580022acb81dc0adb8124d53\"\u003e\u003ccode\u003ecb33511\u003c/code\u003e\u003c/a\u003e ci: try to improve release docs (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1051\"\u003e#1051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/70666a296c2e5bb7451f5a04eef259f6f943d0de\"\u003e\u003ccode\u003e70666a2\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/653d86586dea8b4e020086a276a15a27ac7bd25d\"\u003e\u003ccode\u003e653d865\u003c/code\u003e\u003c/a\u003e docs: fix issue with changelog generation (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1050\"\u003e#1050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/373b9ee171e2f16353365b1a9a02bc408b96ca73\"\u003e\u003ccode\u003e373b9ee\u003c/code\u003e\u003c/a\u003e tests: keep environment from leaking in Python 3.15 (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1049\"\u003e#1049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.4.0...1.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2026.1.4 to 2026.4.22\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/5dddfb072243da27adde885b73ba9b809c3224ca\"\u003e\u003ccode\u003e5dddfb0\u003c/code\u003e\u003c/a\u003e 2026.04.22 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/410\"\u003e#410\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/f99eccdaf87f7c10e521a58a700ca3eb94a0787e\"\u003e\u003ccode\u003ef99eccd\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 8.1.0 to 8.1.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/404\"\u003e#404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/918bed055f7291719512af186c1c24710f845660\"\u003e\u003ccode\u003e918bed0\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 7.0.0 to 7.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/405\"\u003e#405\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/0a49067eb434e53e1f8df5f7707d5dc05ef9def4\"\u003e\u003ccode\u003e0a49067\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish from 1.13.0 to 1.14.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/403\"\u003e#403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/acf6ce8e39e3b125f4349e11904295e4fe4c1bed\"\u003e\u003ccode\u003eacf6ce8\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 8.0.0 to 8.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/398\"\u003e#398\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/feb0ed26163a9417ea0fb8eb52d47e79fcf202ab\"\u003e\u003ccode\u003efeb0ed2\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 7.0.0 to 8.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/397\"\u003e#397\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d9c11a50369cc377abb40f7909ded3d6da4d98a3\"\u003e\u003ccode\u003ed9c11a5\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 6.0.0 to 7.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/396\"\u003e#396\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/8571a4ba5205675107f9026d0008ad2d7a2778bf\"\u003e\u003ccode\u003e8571a4b\u003c/code\u003e\u003c/a\u003e 2026.02.25 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/395\"\u003e#395\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6f7de00579d292af565bbb8a947643219794eb6d\"\u003e\u003ccode\u003e6f7de00\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 8.0.0 to 8.1.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/390\"\u003e#390\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a1de59b15105cad768afed4f066b36171134f04a\"\u003e\u003ccode\u003ea1de59b\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.1 to 6.0.2 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2026.01.04...2026.04.22\"\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.4 to 3.4.7\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.7\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.6...3.4.7\"\u003e3.4.7\u003c/a\u003e (2026-04-02)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePre-built optimized version using mypy[c] v1.20.\u003c/li\u003e\n\u003cli\u003eRelax \u003ccode\u003esetuptools\u003c/code\u003e constraint to \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;82.1\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCorrectly remove SIG remnant in utf-7 decoded string. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/718\"\u003e#718\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/716\"\u003e#716\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.6\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.5...3.4.6\"\u003e3.4.6\u003c/a\u003e (2026-03-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFlattened the logic in \u003ccode\u003echarset_normalizer.md\u003c/code\u003e for higher performance. Removed \u003ccode\u003eeligible(..)\u003c/code\u003e and \u003ccode\u003efeed(...)\u003c/code\u003e\nin favor of \u003ccode\u003efeed_info(...)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound for mypy[c] to 1.20, for our optimized version.\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eUNICODE_RANGES_COMBINED\u003c/code\u003e using Unicode blocks v17.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEdge case where noise difference between two candidates can be almost insignificant. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/672\"\u003e#672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCLI \u003ccode\u003e--normalize\u003c/code\u003e writing to wrong path when passing multiple files in. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/702\"\u003e#702\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFreethreaded pre-built wheels now shipped in PyPI starting with 3.14t. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/616\"\u003e#616\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.5\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.4...3.4.5\"\u003e3.4.5\u003c/a\u003e (2026-03-06)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003esetuptools\u003c/code\u003e constraint to \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=82\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.19.1\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd explicit link to lib math in our optimized build. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/692\"\u003e#692\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLogger level not restored correctly for empty byte sequences. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/701\"\u003e#701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTypeError when passing bytearray to from_bytes. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/703\"\u003e#703\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eApplied safe micro-optimizations in both our noise detector and language detector.\u003c/li\u003e\n\u003cli\u003eRewrote the \u003ccode\u003equery_yes_no\u003c/code\u003e function (inside CLI) to avoid using ambiguous licensed code.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ecd.py\u003c/code\u003e submodule into mypyc optional compilation to reduce further the performance impact.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003cbr /\u003e\nmypyc changed the usual binary output for the optimized wheel. Beware, especially if using PyInstaller or alike. See \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/714\"\u003ejawah/charset_normalizer#714\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.6...3.4.7\"\u003e3.4.7\u003c/a\u003e (2026-04-02)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePre-built optimized version using mypy[c] v1.20.\u003c/li\u003e\n\u003cli\u003eRelax \u003ccode\u003esetuptools\u003c/code\u003e constraint to \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;82.1\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCorrectly remove SIG remnant in utf-7 decoded string. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/718\"\u003e#718\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/716\"\u003e#716\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.5...3.4.6\"\u003e3.4.6\u003c/a\u003e (2026-03-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFlattened the logic in \u003ccode\u003echarset_normalizer.md\u003c/code\u003e for higher performance. Removed \u003ccode\u003eeligible(..)\u003c/code\u003e and \u003ccode\u003efeed(...)\u003c/code\u003e\nin favor of \u003ccode\u003efeed_info(...)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound for mypy[c] to 1.20, for our optimized version.\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eUNICODE_RANGES_COMBINED\u003c/code\u003e using Unicode blocks v17.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEdge case where noise difference between two candidates can be almost insignificant. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/672\"\u003e#672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCLI \u003ccode\u003e--normalize\u003c/code\u003e writing to wrong path when passing multiple files in. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/702\"\u003e#702\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFreethreaded pre-built wheels now shipped in PyPI starting with 3.14t. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/616\"\u003e#616\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.4...3.4.5\"\u003e3.4.5\u003c/a\u003e (2026-03-06)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003esetuptools\u003c/code\u003e constraint to \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=82\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.19.1\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd explicit link to lib math in our optimized build. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/692\"\u003e#692\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLogger level not restored correctly for empty byte sequences. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/701\"\u003e#701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTypeError when passing bytearray to from_bytes. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/703\"\u003e#703\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eApplied safe micro-optimizations in both our noise detector and language detector.\u003c/li\u003e\n\u003cli\u003eRewrote the \u003ccode\u003equery_yes_no\u003c/code\u003e function (inside CLI) to avoid using ambiguous licensed code.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ecd.py\u003c/code\u003e submodule into mypyc optional compilation to reduce further the performance impact.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0f07891bf516b5d5231f1bd4dd2d8da7d4d09a9a\"\u003e\u003ccode\u003e0f07891\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/729\"\u003e#729\u003c/a\u003e from jawah/release-3.4.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/fdbeb299479e8f4d737e4d227cd0b2bd5d273dc0\"\u003e\u003ccode\u003efdbeb29\u003c/code\u003e\u003c/a\u003e chore: update dev, and ci requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b66f922bfbdbdd9dd46af18a8964d4fb888756d4\"\u003e\u003ccode\u003eb66f922\u003c/code\u003e\u003c/a\u003e chore: add ft classifier\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f94249d0a2c712f2d03124f4de6b77f5e03aaa96\"\u003e\u003ccode\u003ef94249d\u003c/code\u003e\u003c/a\u003e chore: add test cases for utf_7 recent fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/95c866f6c984bbd043e7e3ed0628aa4f3f8d5a26\"\u003e\u003ccode\u003e95c866f\u003c/code\u003e\u003c/a\u003e chore: bump version to 3.4.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/4f429bb764c7e893f99bb4bceb60856da1baacfb\"\u003e\u003ccode\u003e4f429bb\u003c/code\u003e\u003c/a\u003e chore: bump mypy pre-commit to v1.20\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b579cd6cab9bd83aa3fc0ca169d4df022bf4888c\"\u003e\u003ccode\u003eb579cd6\u003c/code\u003e\u003c/a\u003e fix: correctly remove SIG remnant in utf-7 decoded string\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/58bf944a77cc0883fc46a6ee8edac3549fea5d59\"\u003e\u003ccode\u003e58bf944\u003c/code\u003e\u003c/a\u003e :arrow_up: Bump github/codeql-action from 4.32.4 to 4.35.1 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/728\"\u003e#728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/44cf8a1b676a2532a8f1694e62e4f4f98f9132e1\"\u003e\u003ccode\u003e44cf8a1\u003c/code\u003e\u003c/a\u003e :arrow_up: Bump actions/download-artifact from 8.0.0 to 8.0.1 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/726\"\u003e#726\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/362bc20073f737b1ba4ca2f68cffb0c4cc024d20\"\u003e\u003ccode\u003e362bc20\u003c/code\u003e\u003c/a\u003e :arrow_up: Bump docker/setup-qemu-action from 3.7.0 to 4.0.0 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/725\"\u003e#725\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.4...3.4.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.3.1 to 8.3.3\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.3\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.3 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.3/\"\u003ehttps://pypi.org/project/click/8.3.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-3\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-3\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/30\"\u003ehttps://github.com/pallets/click/milestone/30\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse :func:\u003ccode\u003eshlex.split\u003c/code\u003e to split pager and editor commands into \u003ccode\u003eargv\u003c/code\u003e\nlists for :class:\u003ccode\u003esubprocess.Popen\u003c/code\u003e, removing \u003ccode\u003eshell=True\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/1026\"\u003e#1026\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/1477\"\u003e#1477\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2775\"\u003e#2775\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eTypeError\u003c/code\u003e when rendering help for an option whose default value is\nan object that doesn't support equality comparison with strings, such as\n\u003ccode\u003esemver.Version\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3298\"\u003e#3298\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3299\"\u003e#3299\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix pager test pollution under parallel execution by using pytest's\n\u003ccode\u003etmp_path\u003c/code\u003e fixture instead of a shared temporary file path. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3238\"\u003e#3238\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values in a \u003ccode\u003edefault_map\u003c/code\u003e as absent, so they fall\nthrough to the next default source instead of being used as the value.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3224\"\u003e#3224\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3240\"\u003e#3240\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePatch \u003ccode\u003epdb.Pdb\u003c/code\u003e in \u003ccode\u003eCliRunner\u003c/code\u003e isolation so \u003ccode\u003epdb.set_trace()\u003c/code\u003e,\n\u003ccode\u003ebreakpoint()\u003c/code\u003e, and debuggers subclassing \u003ccode\u003epdb.Pdb\u003c/code\u003e (ipdb, pdbpp) can\ninteract with the real terminal instead of the captured I/O streams.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/654\"\u003e#654\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/824\"\u003e#824\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/843\"\u003e#843\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/951\"\u003e#951\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3235\"\u003e#3235\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd optional randomized parallel test execution using \u003ccode\u003epytest-randomly\u003c/code\u003e and\n\u003ccode\u003epytest-xdist\u003c/code\u003e to detect test pollution and race conditions. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3151\"\u003e#3151\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd contributor documentation for running stress tests, randomized\nparallel tests, and Flask smoke tests. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3151\"\u003e#3151\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3177\"\u003e#3177\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eShow custom \u003ccode\u003eshow_default\u003c/code\u003e string in prompts, matching the existing\nhelp text behavior. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2836\"\u003e#2836\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2837\"\u003e#2837\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3165\"\u003e#3165\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3262\"\u003e#3262\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3280\"\u003e#3280\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3328\"\u003e#3328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003edefault=True\u003c/code\u003e with boolean \u003ccode\u003eflag_value\u003c/code\u003e always returning the\n\u003ccode\u003eflag_value\u003c/code\u003e instead of \u003ccode\u003eTrue\u003c/code\u003e. The \u003ccode\u003edefault=True\u003c/code\u003e to \u003ccode\u003eflag_value\u003c/code\u003e\nsubstitution now only applies to non-boolean flags, where \u003ccode\u003eTrue\u003c/code\u003e acts as a\nsentinel meaning \u0026quot;activate this flag by default\u0026quot;. For boolean flags,\n\u003ccode\u003edefault=True\u003c/code\u003e is returned as a literal value. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3111\"\u003e#3111\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3239\"\u003e#3239\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark \u003ccode\u003emake_default_short_help\u003c/code\u003e as private API. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3189\"\u003e#3189\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3250\"\u003e#3250\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCliRunner\u003c/code\u003e's redirected streams now expose the original file descriptor\nvia \u003ccode\u003efileno()\u003c/code\u003e, so that \u003ccode\u003efaulthandler\u003c/code\u003e, \u003ccode\u003esubprocess\u003c/code\u003e, and other\nC-level consumers no longer crash with \u003ccode\u003eio.UnsupportedOperation\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/2865\"\u003e#2865\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange :class:\u003ccode\u003eParameterSource\u003c/code\u003e to an :class:\u003ccode\u003e~enum.IntEnum\u003c/code\u003e and reorder\nits members from most to least explicit, so values can be compared to\ncheck whether a parameter was explicitly provided. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2879\"\u003e#2879\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3248\"\u003e#3248\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.3.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.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.3.2/\"\u003ehttps://pypi.org/project/click/8.3.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-2\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/29\"\u003ehttps://github.com/pallets/click/milestone/29\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.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-04-20\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse :func:\u003ccode\u003eshlex.split\u003c/code\u003e to split pager and editor commands into \u003ccode\u003eargv\u003c/code\u003e\nlists for :class:\u003ccode\u003esubprocess.Popen\u003c/code\u003e, removing \u003ccode\u003eshell=True\u003c/code\u003e.\n:issue:\u003ccode\u003e1026\u003c/code\u003e :pr:\u003ccode\u003e1477\u003c/code\u003e :pr:\u003ccode\u003e2775\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eTypeError\u003c/code\u003e when rendering help for an option whose default value is\nan object that doesn't support equality comparison with strings, such as\n\u003ccode\u003esemver.Version\u003c/code\u003e. :issue:\u003ccode\u003e3298\u003c/code\u003e :pr:\u003ccode\u003e3299\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix pager test pollution under parallel execution by using pytest's\n\u003ccode\u003etmp_path\u003c/code\u003e fixture instead of a shared temporary file path. :pr:\u003ccode\u003e3238\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values in a \u003ccode\u003edefault_map\u003c/code\u003e as absent, so they fall\nthrough to the next default source instead of being used as the value.\n:issue:\u003ccode\u003e3224\u003c/code\u003e :pr:\u003ccode\u003e3240\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ePatch \u003ccode\u003epdb.Pdb\u003c/code\u003e in \u003ccode\u003eCliRunner\u003c/code\u003e isolation so \u003ccode\u003epdb.set_trace()\u003c/code\u003e,\n\u003ccode\u003ebreakpoint()\u003c/code\u003e, and debuggers subclassing \u003ccode\u003epdb.Pdb\u003c/code\u003e (ipdb, pdbpp) can\ninteract with the real terminal instead of the captured I/O streams.\n:issue:\u003ccode\u003e654\u003c/code\u003e :issue:\u003ccode\u003e824\u003c/code\u003e :issue:\u003ccode\u003e843\u003c/code\u003e :pr:\u003ccode\u003e951\u003c/code\u003e :pr:\u003ccode\u003e3235\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd optional randomized parallel test execution using \u003ccode\u003epytest-randomly\u003c/code\u003e and\n\u003ccode\u003epytest-xdist\u003c/code\u003e to detect test pollution and race conditions. :pr:\u003ccode\u003e3151\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd contributor documentation for running stress tests, randomized\nparallel tests, and Flask smoke tests. :pr:\u003ccode\u003e3151\u003c/code\u003e :pr:\u003ccode\u003e3177\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eShow custom \u003ccode\u003eshow_default\u003c/code\u003e string in prompts, matching the existing\nhelp text behavior. :issue:\u003ccode\u003e2836\u003c/code\u003e :pr:\u003ccode\u003e2837\u003c/code\u003e :pr:\u003ccode\u003e3165\u003c/code\u003e :pr:\u003ccode\u003e3262\u003c/code\u003e :pr:\u003ccode\u003e3280\u003c/code\u003e\n:pr:\u003ccode\u003e3328\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003edefault=True\u003c/code\u003e with boolean \u003ccode\u003eflag_value\u003c/code\u003e always returning the\n\u003ccode\u003eflag_value\u003c/code\u003e instead of \u003ccode\u003eTrue\u003c/code\u003e. The \u003ccode\u003edefault=True\u003c/code\u003e to \u003ccode\u003eflag_value\u003c/code\u003e\nsubstitution now only applies to non-boolean flags, where \u003ccode\u003eTrue\u003c/code\u003e acts as a\nsentinel meaning \u0026quot;activate this flag by default\u0026quot;. For boolean flags,\n\u003ccode\u003edefault=True\u003c/code\u003e is returned as a literal value. :issue:\u003ccode\u003e3111\u003c/code\u003e :pr:\u003ccode\u003e3239\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark \u003ccode\u003emake_default_short_help\u003c/code\u003e as private API. :issue:\u003ccode\u003e3189\u003c/code\u003e :pr:\u003ccode\u003e3250\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCliRunner\u003c/code\u003e's redirected streams now expose the original file descriptor\nvia \u003ccode\u003efileno()\u003c/code\u003e, so that \u003ccode\u003efaulthandler\u003c/code\u003e, \u003ccode\u003esubprocess\u003c/code\u003e, and other\nC-level consumers no longer crash with \u003ccode\u003eio.UnsupportedOperation\u003c/code\u003e.\n:issue:\u003ccode\u003e2865\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eChange :class:\u003ccode\u003eParameterSource\u003c/code\u003e to an :class:\u003ccode\u003e~enum.IntEnum\u003c/code\u003e and reorder\nits members from most to least explicit, so values can be compared to\ncheck whether a parameter was explicitly provided. :issue:\u003ccode\u003e2879\u003c/code\u003e :pr:\u003ccode\u003e3248\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.3.2\u003c/h2\u003e\n\u003cp\u003eReleased 2026-04-02\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eflag_value\u003c/code\u003e when \u003ccode\u003eis_flag=False\u003c/code\u003e to allow such options to be\nused without an explicit value. :issue:\u003ccode\u003e3084\u003c/code\u003e :pr:\u003ccode\u003e3152\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when using \u003ccode\u003elookup_default()\u003c/code\u003e.\n:issue:\u003ccode\u003e3136\u003c/code\u003e :pr:\u003ccode\u003e3199\u003c/code\u003e :pr:\u003ccode\u003e3202\u003c/code\u003e :pr:\u003ccode\u003e3209\u003c/code\u003e :pr:\u003ccode\u003e3212\u003c/code\u003e :pr:\u003ccode\u003e3224\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/c06d2d0a6aee6bcc50bd8257be2a4a592f4e75d0\"\u003e\u003ccode\u003ec06d2d0\u003c/code\u003e\u003c/a\u003e Release 8.3.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/f1f191ecd2c790b161187c78e7c88440e9524e5c\"\u003e\u003ccode\u003ef1f191e\u003c/code\u003e\u003c/a\u003e Apply format guidelines to commits since latest 8.3.2 release (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3343\"\u003e#3343\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/bb59ba0fd279ca085d1113f0499b6a602ca31081\"\u003e\u003ccode\u003ebb59ba0\u003c/code\u003e\u003c/a\u003e Apply format guidelines to commits since latest 8.3.2 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/4a352253c9ff013e36d11e4a6820d36d00ff2cd4\"\u003e\u003ccode\u003e4a35225\u003c/code\u003e\u003c/a\u003e Reduce blast-radius of \u003ccode\u003eUNSET\u003c/code\u003e in \u003ccode\u003edefault_map\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3240\"\u003e#3240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/c07bb936de43fd303f9cfbefe248ab23fd2199c8\"\u003e\u003ccode\u003ec07bb93\u003c/code\u003e\u003c/a\u003e Merge branch 'stable' into unset-in-default-map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/c7e1ba8448cbcb2cdd9c1c7f4a592e863dcc3995\"\u003e\u003ccode\u003ec7e1ba8\u003c/code\u003e\u003c/a\u003e Reorder \u003ccode\u003eParameterSource\u003c/code\u003e (\u003ca href=\"https://...\n\n_Description has been truncated_","html_url":"https://github.com/toniantunovi/lucidshark/pull/111","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/toniantunovi%2Flucidshark/issues/111","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/111/packages"},{"uuid":"4409576139","node_id":"PR_kwDONrwnDc7ZslCF","number":581,"state":"closed","title":"chore(deps): bump the production group across 1 directory with 52 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":5,"pull_request":true,"closed_at":"2026-05-29T23:35:55.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-08T21:42:28.000Z","updated_at":"2026-05-29T23:35:57.000Z","time_to_close":1821207,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"production","update_count":52,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.13.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"build","old_version":"1.2.2.post1","new_version":"1.5.0","repository_url":"https://github.com/pypa/build"},{"name":"certifi","old_version":"2025.1.31","new_version":"2026.4.22","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.7","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.3","repository_url":"https://github.com/pallets/click"},{"name":"cryptography","old_version":"46.0.7","new_version":"48.0.0","repository_url":"https://github.com/pyca/cryptography"},{"name":"dnspython","old_version":"2.7.0","new_version":"2.8.0","repository_url":"https://github.com/rthalley/dnspython"},{"name":"email-validator","old_version":"2.2.0","new_version":"2.3.0","repository_url":"https://github.com/JoshData/python-email-validator"},{"name":"exceptiongroup","old_version":"1.2.2","new_version":"1.3.1","repository_url":"https://github.com/agronholm/exceptiongroup"},{"name":"fastapi","old_version":"0.120.3","new_version":"0.136.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"fastapi-cli","old_version":"0.0.7","new_version":"0.0.24","repository_url":"https://github.com/fastapi/fastapi-cli"},{"name":"fastapi-keycloak-middleware","old_version":"1.2.0","new_version":"1.6.0"},{"name":"greenlet","old_version":"3.1.1","new_version":"3.5.0","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"httptools","old_version":"0.6.4","new_version":"0.7.1","repository_url":"https://github.com/MagicStack/httptools"},{"name":"idna","old_version":"3.10","new_version":"3.13","repository_url":"https://github.com/kjd/idna"},{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"jwcrypto","old_version":"1.5.6","new_version":"1.5.7","repository_url":"https://github.com/latchset/jwcrypto"},{"name":"markdown-it-py","old_version":"3.0.0","new_version":"4.2.0","repository_url":"https://github.com/executablebooks/markdown-it-py"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"packaging","old_version":"24.2","new_version":"26.2","repository_url":"https://github.com/pypa/packaging"},{"name":"pluggy","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pluggy"},{"name":"psycopg2-binary","old_version":"2.9.10","new_version":"2.9.12","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"pycparser","old_version":"2.22","new_version":"3.0","repository_url":"https://github.com/eliben/pycparser"},{"name":"pydantic","old_version":"2.11.2","new_version":"2.13.4","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-core","old_version":"2.33.1","new_version":"2.46.4","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pytest-asyncio","old_version":"0.15.1","new_version":"1.3.0","repository_url":"https://github.com/pytest-dev/pytest-asyncio"},{"name":"python-multipart","old_version":"0.0.26","new_version":"0.0.27","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"requests","old_version":"2.33.0","new_version":"2.33.1","repository_url":"https://github.com/psf/requests"},{"name":"rfc3986","old_version":"1.5.0","new_version":"2.0.0","repository_url":"https://github.com/python-hyper/rfc3986"},{"name":"rich","old_version":"14.0.0","new_version":"15.0.0","repository_url":"https://github.com/Textualize/rich"},{"name":"rich-toolkit","old_version":"0.14.1","new_version":"0.19.7"},{"name":"sqlalchemy","old_version":"2.0.40","new_version":"2.0.49","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"sqlmodel","old_version":"0.0.22","new_version":"0.0.38","repository_url":"https://github.com/fastapi/sqlmodel"},{"name":"starlette","old_version":"0.49.1","new_version":"1.0.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"tomli","old_version":"2.0.1","new_version":"2.4.1","repository_url":"https://github.com/hukkin/tomli"},{"name":"typer","old_version":"0.15.2","new_version":"0.25.1","repository_url":"https://github.com/fastapi/typer"},{"name":"typing-extensions","old_version":"4.13.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.6.3","new_version":"2.7.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uvicorn","old_version":"0.30.6","new_version":"0.46.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"uvloop","old_version":"0.21.0","new_version":"0.22.1","repository_url":"https://github.com/MagicStack/uvloop"},{"name":"watchfiles","old_version":"1.0.4","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"websockets","old_version":"14.2","new_version":"16.0","repository_url":"https://github.com/python-websockets/websockets"},{"name":"jsonschema","old_version":"4.25.1","new_version":"4.26.0","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"attrs","old_version":"25.3.0","new_version":"26.1.0","repository_url":"https://github.com/python-attrs/attrs"},{"name":"cached-property","old_version":"1.5.2","new_version":"2.0.1","repository_url":"https://github.com/pydanny/cached-property"},{"name":"filelock","old_version":"3.20.3","new_version":"3.29.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"httpx","old_version":"0.26.0","new_version":"0.28.1","repository_url":"https://github.com/encode/httpx"},{"name":"python-keycloak","old_version":"4.7.3","new_version":"7.1.1","repository_url":"https://github.com/marcospereirampj/python-keycloak"},{"name":"referencing","old_version":"0.36.2","new_version":"0.37.0","repository_url":"https://github.com/python-jsonschema/referencing"},{"name":"rpds-py","old_version":"0.27.1","new_version":"0.30.0","repository_url":"https://github.com/crate-py/rpds"},{"name":"typing-inspection","old_version":"0.4.1","new_version":"0.4.2","repository_url":"https://github.com/pydantic/typing-inspection"}],"path":null,"ecosystem":"pip"},"body":"Bumps the production group with 52 updates in the /ichub-backend directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.13.0` |\n| [build](https://github.com/pypa/build) | `1.2.2.post1` | `1.5.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2026.4.22` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.7` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.3` |\n| [cryptography](https://github.com/pyca/cryptography) | `46.0.7` | `48.0.0` |\n| [dnspython](https://github.com/rthalley/dnspython) | `2.7.0` | `2.8.0` |\n| [email-validator](https://github.com/JoshData/python-email-validator) | `2.2.0` | `2.3.0` |\n| [exceptiongroup](https://github.com/agronholm/exceptiongroup) | `1.2.2` | `1.3.1` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.120.3` | `0.136.1` |\n| [fastapi-cli](https://github.com/fastapi/fastapi-cli) | `0.0.7` | `0.0.24` |\n| fastapi-keycloak-middleware | `1.2.0` | `1.6.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.5.0` |\n| [httptools](https://github.com/MagicStack/httptools) | `0.6.4` | `0.7.1` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.13` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.0` |\n| [jwcrypto](https://github.com/latchset/jwcrypto) | `1.5.6` | `1.5.7` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `3.0.0` | `4.2.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [packaging](https://github.com/pypa/packaging) | `24.2` | `26.2` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [psycopg2-binary](https://github.com/psycopg/psycopg2) | `2.9.10` | `2.9.12` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `3.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.2` | `2.13.4` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.33.1` | `2.46.4` |\n| [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) | `0.15.1` | `1.3.0` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.26` | `0.0.27` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [requests](https://github.com/psf/requests) | `2.33.0` | `2.33.1` |\n| [rfc3986](https://github.com/python-hyper/rfc3986) | `1.5.0` | `2.0.0` |\n| [rich](https://github.com/Textualize/rich) | `14.0.0` | `15.0.0` |\n| rich-toolkit | `0.14.1` | `0.19.7` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.40` | `2.0.49` |\n| [sqlmodel](https://github.com/fastapi/sqlmodel) | `0.0.22` | `0.0.38` |\n| [starlette](https://github.com/Kludex/starlette) | `0.49.1` | `1.0.0` |\n| [tomli](https://github.com/hukkin/tomli) | `2.0.1` | `2.4.1` |\n| [typer](https://github.com/fastapi/typer) | `0.15.2` | `0.25.1` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.1` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.6.3` | `2.7.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.30.6` | `0.46.0` |\n| [uvloop](https://github.com/MagicStack/uvloop) | `0.21.0` | `0.22.1` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.0.4` | `1.1.1` |\n| [websockets](https://github.com/python-websockets/websockets) | `14.2` | `16.0` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.25.1` | `4.26.0` |\n| [attrs](https://github.com/python-attrs/attrs) | `25.3.0` | `26.1.0` |\n| [cached-property](https://github.com/pydanny/cached-property) | `1.5.2` | `2.0.1` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.20.3` | `3.29.0` |\n| [httpx](https://github.com/encode/httpx) | `0.26.0` | `0.28.1` |\n| [python-keycloak](https://github.com/marcospereirampj/python-keycloak) | `4.7.3` | `7.1.1` |\n| [referencing](https://github.com/python-jsonschema/referencing) | `0.36.2` | `0.37.0` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.27.1` | `0.30.0` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.1` | `0.4.2` |\n\n\nUpdates `anyio` from 4.9.0 to 4.13.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.13.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ettl\u003c/code\u003e parameter to the \u003ccode\u003eanyio.functools.lru_cache\u003c/code\u003e wrapper (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1073\"\u003e#1073\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWidened the type annotations of file I/O streams to accept \u003ccode\u003eIO[bytes]\u003c/code\u003e instead of just \u003ccode\u003eBinaryIO\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1078\"\u003e#1078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path\u003c/code\u003e not being compatible with Python 3.15 due to the removal of \u003ccode\u003epathlib.Path.is_reserved()\u003c/code\u003e and the addition of \u003ccode\u003epathlib.Path.__vfspath__()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1061\"\u003e#1061\u003c/a\u003e; PR by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the \u003ccode\u003eBrokenResourceError\u003c/code\u003e raised by the asyncio \u003ccode\u003eSocketStream\u003c/code\u003e not having the original exception as its cause (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1055\"\u003e#1055\u003c/a\u003e; PR by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the \u003ccode\u003eTypeError\u003c/code\u003e raised when using \u0026quot;func\u0026quot; as a parameter name in \u003ccode\u003epytest.mark.parametrize\u003c/code\u003e when using the pytest plugin (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1068\"\u003e#1068\u003c/a\u003e; PR by \u003ca href=\"https://github.com/JohnnyDeuss\"\u003e\u003ccode\u003e@​JohnnyDeuss\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the pytest plugin not running tests that had the \u003ccode\u003eanyio\u003c/code\u003e marker added programmatically via \u003ccode\u003epytest_collection_modifyitems\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/422\"\u003e#422\u003c/a\u003e; PR by \u003ca href=\"https://github.com/chbndrhnns\"\u003e\u003ccode\u003e@​chbndrhnns\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed cancellation exceptions leaking from a \u003ccode\u003eCancelScope\u003c/code\u003e on asyncio when they are contained in an exception group alongside non-cancellation exceptions (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1091\"\u003e#1091\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\u003eCondition.wait()\u003c/code\u003e not passing on a notification when the task is cancelled but already received a notification\u003c/li\u003e\n\u003cli\u003eFixed inverted condition in the process pool shutdown phase which would cause still-running pooled processes not to be terminated (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1074\"\u003e#1074\u003c/a\u003e; PR by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\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\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/afbe93ca9d0c447adf26e9c1715ac20870622bf2\"\u003e\u003ccode\u003eafbe93c\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/33bdf2e4b4f40c2df178123746147a6d2471808d\"\u003e\u003ccode\u003e33bdf2e\u003c/code\u003e\u003c/a\u003e Rearranged the changelog entries\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/19e09e25bc5a23dd78a577d8c3909dd377057c78\"\u003e\u003ccode\u003e19e09e2\u003c/code\u003e\u003c/a\u003e Fixed inverted condition in _forcibly_shutdown_process_pool_on_exit (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1074\"\u003e#1074\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9369d80b9e8292f2a892a9d5c73923c6a28aa08c\"\u003e\u003ccode\u003e9369d80\u003c/code\u003e\u003c/a\u003e Fixed Condition.wait() not handing over notification when cancelled\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6f122abdc6f6b166c6b6ac27d36d55cdf8fa08e8\"\u003e\u003ccode\u003e6f122ab\u003c/code\u003e\u003c/a\u003e Fixed cancellation exceptions leaking from a \u003ccode\u003eCancelScope\u003c/code\u003e on asyncio when th...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/beaa45aff568a4020f2faf317321dd92f0e1f4a0\"\u003e\u003ccode\u003ebeaa45a\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1097\"\u003e#1097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/602f6606dcf3f37702686a4f3e161328c537b07f\"\u003e\u003ccode\u003e602f660\u003c/code\u003e\u003c/a\u003e Widened type annotations to accept IO[bytes] in file streams\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b5dcd45170701a756ba634197398f05d4710cab3\"\u003e\u003ccode\u003eb5dcd45\u003c/code\u003e\u003c/a\u003e Added note about erasing the template\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d68670b3b4e0917d4caff2de082e03220f3e05a1\"\u003e\u003ccode\u003ed68670b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1090\"\u003e#1090\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/fc17a22dd948e6a3d90d99908813f0010dfc3d2c\"\u003e\u003ccode\u003efc17a22\u003c/code\u003e\u003c/a\u003e tweak to_thread docs about abandon_on_cancel (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1088\"\u003e#1088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `build` from 1.2.2.post1 to 1.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/releases\"\u003ebuild's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: try to improve release docs by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1051\"\u003epypa/build#1051\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: drop 3.9, require 3.10+ by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1036\"\u003epypa/build#1036\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: tox toml by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1033\"\u003epypa/build#1033\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: api should not ignore installed, only CLI by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1056\"\u003epypa/build#1056\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.4...1.5.0\"\u003ehttps://github.com/pypa/build/compare/1.4.4...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.4.4\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(release): generate consistent CHANGELOG heading levels by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1032\"\u003epypa/build#1032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: move source links by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1034\"\u003epypa/build#1034\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erevert: drop PEP 660 change by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1039\"\u003epypa/build#1039\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: ignore installed when running pip by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1040\"\u003epypa/build#1040\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: revert part of \u003ca href=\"https://redirect.github.com/pypa/build/issues/973\"\u003e#973\u003c/a\u003e by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1044\"\u003epypa/build#1044\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: report coverage failure lines by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1046\"\u003epypa/build#1046\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: fix issue with uv run by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1048\"\u003epypa/build#1048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: reorganize testing docs for copy/paste by \u003ca href=\"https://github.com/abitrolly\"\u003e\u003ccode\u003e@​abitrolly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1043\"\u003epypa/build#1043\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: keep environment from leaking in Python 3.15 by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1049\"\u003epypa/build#1049\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix issue with changelog generation by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1050\"\u003epypa/build#1050\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.3...1.4.4\"\u003ehttps://github.com/pypa/build/compare/1.4.3...1.4.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.4.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(api): resolve thread-safety races in build API by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1015\"\u003epypa/build#1015\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(builder): validate backend-path entries exist on disk by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1016\"\u003epypa/build#1016\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest: cover config settings build paths by \u003ca href=\"https://github.com/terminalchai\"\u003e\u003ccode\u003e@​terminalchai\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/992\"\u003epypa/build#992\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd kind=(step, ) for root messages with * by \u003ca href=\"https://github.com/abitrolly\"\u003e\u003ccode\u003e@​abitrolly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/973\"\u003epypa/build#973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: correct changelog category ordering by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1017\"\u003epypa/build#1017\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(cli): show full dependency chain in missing deps error by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1019\"\u003epypa/build#1019\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: fully annotate by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1020\"\u003epypa/build#1020\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: lazy imports by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1021\"\u003epypa/build#1021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: adding more ruff codes by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1022\"\u003epypa/build#1022\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: improve annotations by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1023\"\u003epypa/build#1023\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 test(coverage): achieve 100% test coverage by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1018\"\u003epypa/build#1018\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: add ruff PT by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1025\"\u003epypa/build#1025\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: add ruff PYI by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1026\"\u003epypa/build#1026\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: add ruff SIM/RET by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1028\"\u003epypa/build#1028\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(env): strip PYTHONPATH from isolated builds by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1024\"\u003epypa/build#1024\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: use ruff ALL by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1029\"\u003epypa/build#1029\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e####################\n1.5.0 (2026-04-30)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.9 support - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1036\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003e--ignore-installed\u003c/code\u003e opt-in from the API via \u003ccode\u003efresh=True\u003c/code\u003e - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1056\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1033\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.4 (2026-04-22)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eFix release pipeline generating \u003ccode\u003eCHANGELOG.rst\u003c/code\u003e entries with inconsistent heading levels, which broke \u003ccode\u003esphinx -W\u003c/code\u003e\nand pinned Read the Docs \u003ccode\u003estable\u003c/code\u003e at 1.4.0 - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e1031\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRevert :pr:\u003ccode\u003e1039\u003c/code\u003e from build 1.4.3, no longer check direct_url (for now) - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1039\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--ignore-installed\u003c/code\u003e to pip install command to prevent issues with packages already present in the isolated\nbuild environment - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1037\u003c/code\u003e) (:issue:\u003ccode\u003e1040\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePartial revert of :pr:\u003ccode\u003e973\u003c/code\u003e, keeping log messages in one entry, multiple lines. (:issue:\u003ccode\u003e1044\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1048\u003c/code\u003e, :issue:\u003ccode\u003e1049\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.3 (2026-04-10)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/615d04cfc52ac3c1592a463f0afe484fee1cc368\"\u003e\u003ccode\u003e615d04c\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/776f702f84787525df62a5473dd13d4e2f45b977\"\u003e\u003ccode\u003e776f702\u003c/code\u003e\u003c/a\u003e fix: api should not ignore installed, only CLI (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/42da4c4b483563819fabdb8ecf2f6df53ed82123\"\u003e\u003ccode\u003e42da4c4\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1055\"\u003e#1055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b445cd2e736db5f80cde7d952d620a73cc26bf9d\"\u003e\u003ccode\u003eb445cd2\u003c/code\u003e\u003c/a\u003e chore: tox toml (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/c44c143876042ac6e1212a31684a3adca19beda4\"\u003e\u003ccode\u003ec44c143\u003c/code\u003e\u003c/a\u003e feat: drop 3.9, require 3.10+ (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/a9bb4560d213069b11c8068159f1de060abec5b7\"\u003e\u003ccode\u003ea9bb456\u003c/code\u003e\u003c/a\u003e build(deps): bump astral-sh/setup-uv from 8.0.0 to 8.1.0 in the actions group...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/cb3351155ce99902580022acb81dc0adb8124d53\"\u003e\u003ccode\u003ecb33511\u003c/code\u003e\u003c/a\u003e ci: try to improve release docs (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1051\"\u003e#1051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/70666a296c2e5bb7451f5a04eef259f6f943d0de\"\u003e\u003ccode\u003e70666a2\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/653d86586dea8b4e020086a276a15a27ac7bd25d\"\u003e\u003ccode\u003e653d865\u003c/code\u003e\u003c/a\u003e docs: fix issue with changelog generation (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1050\"\u003e#1050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/373b9ee171e2f16353365b1a9a02bc408b96ca73\"\u003e\u003ccode\u003e373b9ee\u003c/code\u003e\u003c/a\u003e tests: keep environment from leaking in Python 3.15 (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1049\"\u003e#1049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.2.2.post1...1.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2025.1.31 to 2026.4.22\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/5dddfb072243da27adde885b73ba9b809c3224ca\"\u003e\u003ccode\u003e5dddfb0\u003c/code\u003e\u003c/a\u003e 2026.04.22 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/410\"\u003e#410\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/f99eccdaf87f7c10e521a58a700ca3eb94a0787e\"\u003e\u003ccode\u003ef99eccd\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 8.1.0 to 8.1.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/404\"\u003e#404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/918bed055f7291719512af186c1c24710f845660\"\u003e\u003ccode\u003e918bed0\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 7.0.0 to 7.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/405\"\u003e#405\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/0a49067eb434e53e1f8df5f7707d5dc05ef9def4\"\u003e\u003ccode\u003e0a49067\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish from 1.13.0 to 1.14.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/403\"\u003e#403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/acf6ce8e39e3b125f4349e11904295e4fe4c1bed\"\u003e\u003ccode\u003eacf6ce8\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 8.0.0 to 8.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/398\"\u003e#398\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/feb0ed26163a9417ea0fb8eb52d47e79fcf202ab\"\u003e\u003ccode\u003efeb0ed2\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 7.0.0 to 8.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/397\"\u003e#397\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d9c11a50369cc377abb40f7909ded3d6da4d98a3\"\u003e\u003ccode\u003ed9c11a5\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 6.0.0 to 7.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/396\"\u003e#396\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/8571a4ba5205675107f9026d0008ad2d7a2778bf\"\u003e\u003ccode\u003e8571a4b\u003c/code\u003e\u003c/a\u003e 2026.02.25 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/395\"\u003e#395\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6f7de00579d292af565bbb8a947643219794eb6d\"\u003e\u003ccode\u003e6f7de00\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 8.0.0 to 8.1.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/390\"\u003e#390\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a1de59b15105cad768afed4f066b36171134f04a\"\u003e\u003ccode\u003ea1de59b\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.1 to 6.0.2 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.01.31...2026.04.22\"\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.7\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.7\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.6...3.4.7\"\u003e3.4.7\u003c/a\u003e (2026-04-02)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePre-built optimized version using mypy[c] v1.20.\u003c/li\u003e\n\u003cli\u003eRelax \u003ccode\u003esetuptools\u003c/code\u003e constraint to \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;82.1\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCorrectly remove SIG remnant in utf-7 decoded string. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/718\"\u003e#718\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/716\"\u003e#716\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.6\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.5...3.4.6\"\u003e3.4.6\u003c/a\u003e (2026-03-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFlattened the logic in \u003ccode\u003echarset_normalizer.md\u003c/code\u003e for higher performance. Removed \u003ccode\u003eeligible(..)\u003c/code\u003e and \u003ccode\u003efeed(...)\u003c/code\u003e\nin favor of \u003ccode\u003efeed_info(...)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound for mypy[c] to 1.20, for our optimized version.\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eUNICODE_RANGES_COMBINED\u003c/code\u003e using Unicode blocks v17.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEdge case where noise difference between two candidates can be almost insignificant. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/672\"\u003e#672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCLI \u003ccode\u003e--normalize\u003c/code\u003e writing to wrong path when passing multiple files in. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/702\"\u003e#702\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFreethreaded pre-built wheels now shipped in PyPI starting with 3.14t. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/616\"\u003e#616\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.5\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.4...3.4.5\"\u003e3.4.5\u003c/a\u003e (2026-03-06)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003esetuptools\u003c/code\u003e constraint to \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=82\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.19.1\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd explicit link to lib math in our optimized build. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/692\"\u003e#692\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLogger level not restored correctly for empty byte sequences. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/701\"\u003e#701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTypeError when passing bytearray to from_bytes. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/703\"\u003e#703\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eApplied safe micro-optimizations in both our noise detector and language detector.\u003c/li\u003e\n\u003cli\u003eRewrote the \u003ccode\u003equery_yes_no\u003c/code\u003e function (inside CLI) to avoid using ambiguous licensed code.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ecd.py\u003c/code\u003e submodule into mypyc optional compilation to reduce further the performance impact.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003cbr /\u003e\nmypyc changed the usual binary output for the optimized wheel. Beware, especially if using PyInstaller or alike. See \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/714\"\u003ejawah/charset_normalizer#714\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eVersion 3.4.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.3...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.6...3.4.7\"\u003e3.4.7\u003c/a\u003e (2026-04-02)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePre-built optimized version using mypy[c] v1.20.\u003c/li\u003e\n\u003cli\u003eRelax \u003ccode\u003esetuptools\u003c/code\u003e constraint to \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;82.1\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCorrectly remove SIG remnant in utf-7 decoded string. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/718\"\u003e#718\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/716\"\u003e#716\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.5...3.4.6\"\u003e3.4.6\u003c/a\u003e (2026-03-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFlattened the logic in \u003ccode\u003echarset_normalizer.md\u003c/code\u003e for higher performance. Removed \u003ccode\u003eeligible(..)\u003c/code\u003e and \u003ccode\u003efeed(...)\u003c/code\u003e\nin favor of \u003ccode\u003efeed_info(...)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound for mypy[c] to 1.20, for our optimized version.\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eUNICODE_RANGES_COMBINED\u003c/code\u003e using Unicode blocks v17.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEdge case where noise difference between two candidates can be almost insignificant. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/672\"\u003e#672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCLI \u003ccode\u003e--normalize\u003c/code\u003e writing to wrong path when passing multiple files in. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/702\"\u003e#702\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFreethreaded pre-built wheels now shipped in PyPI starting with 3.14t. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/616\"\u003e#616\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.4...3.4.5\"\u003e3.4.5\u003c/a\u003e (2026-03-06)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003esetuptools\u003c/code\u003e constraint to \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=82\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.19.1\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd explicit link to lib math in our optimized build. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/692\"\u003e#692\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLogger level not restored correctly for empty byte sequences. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/701\"\u003e#701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTypeError when passing bytearray to from_bytes. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/703\"\u003e#703\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eApplied safe micro-optimizations in both our noise detector and language detector.\u003c/li\u003e\n\u003cli\u003eRewrote the \u003ccode\u003equery_yes_no\u003c/code\u003e function (inside CLI) to avoid using ambiguous licensed code.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ecd.py\u003c/code\u003e submodule into mypyc optional compilation to reduce further the performance impact.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0f07891bf516b5d5231f1bd4dd2d8da7d4d09a9a\"\u003e\u003ccode\u003e0f07891\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/729\"\u003e#729\u003c/a\u003e from jawah/release-3.4.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/fdbeb299479e8f4d737e4d227cd0b2bd5d273dc0\"\u003e\u003ccode\u003efdbeb29\u003c/code\u003e\u003c/a\u003e chore: update dev, and ci requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b66f922bfbdbdd9dd46af18a8964d4fb888756d4\"\u003e\u003ccode\u003eb66f922\u003c/code\u003e\u003c/a\u003e chore: add ft classifier\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f94249d0a2c712f2d03124f4de6b77f5e03aaa96\"\u003e\u003ccode\u003ef94249d\u003c/code\u003e\u003c/a\u003e chore: add test cases for utf_7 recent fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/95c866f6c984bbd043e7e3ed0628aa4f3f8d5a26\"\u003e\u003ccode\u003e95c866f\u003c/code\u003e\u003c/a\u003e chore: bump version to 3.4.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/4f429bb764c7e893f99bb4bceb60856da1baacfb\"\u003e\u003ccode\u003e4f429bb\u003c/code\u003e\u003c/a\u003e chore: bump mypy pre-commit to v1.20\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b579cd6cab9bd83aa3fc0ca169d4df022bf4888c\"\u003e\u003ccode\u003eb579cd6\u003c/code\u003e\u003c/a\u003e fix: correctly remove SIG remnant in utf-7 decoded string\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/58bf944a77cc0883fc46a6ee8edac3549fea5d59\"\u003e\u003ccode\u003e58bf944\u003c/code\u003e\u003c/a\u003e :arrow_up: Bump github/codeql-action from 4.32.4 to 4.35.1 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/728\"\u003e#728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/44cf8a1b676a2532a8f1694e62e4f4f98f9132e1\"\u003e\u003ccode\u003e44cf8a1\u003c/code\u003e\u003c/a\u003e :arrow_up: Bump actions/download-artifact from 8.0.0 to 8.0.1 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/726\"\u003e#726\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/362bc20073f737b1ba4ca2f68cffb0c4cc024d20\"\u003e\u003ccode\u003e362bc20\u003c/code\u003e\u003c/a\u003e :arrow_up: Bump docker/setup-qemu-action from 3.7.0 to 4.0.0 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/725\"\u003e#725\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.1...3.4.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.1.8 to 8.3.3\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.3\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.3 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.3/\"\u003ehttps://pypi.org/project/click/8.3.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-3\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-3\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/30\"\u003ehttps://github.com/pallets/click/milestone/30\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse :func:\u003ccode\u003eshlex.split\u003c/code\u003e to split pager and editor commands into \u003ccode\u003eargv\u003c/code\u003e\nlists for :class:\u003ccode\u003esubprocess.Popen\u003c/code\u003e, removing \u003ccode\u003eshell=True\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/1026\"\u003e#1026\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/1477\"\u003e#1477\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2775\"\u003e#2775\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eTypeError\u003c/code\u003e when rendering help for an option whose default value is\nan object that doesn't support equality comparison with strings, such as\n\u003ccode\u003esemver.Version\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3298\"\u003e#3298\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3299\"\u003e#3299\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix pager test pollution under parallel execution by using pytest's\n\u003ccode\u003etmp_path\u003c/code\u003e fixture instead of a shared temporary file path. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3238\"\u003e#3238\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values in a \u003ccode\u003edefault_map\u003c/code\u003e as absent, so they fall\nthrough to the next default source instead of being used as the value.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3224\"\u003e#3224\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3240\"\u003e#3240\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePatch \u003ccode\u003epdb.Pdb\u003c/code\u003e in \u003ccode\u003eCliRunner\u003c/code\u003e isolation so \u003ccode\u003epdb.set_trace()\u003c/code\u003e,\n\u003ccode\u003ebreakpoint()\u003c/code\u003e, and debuggers subclassing \u003ccode\u003epdb.Pdb\u003c/code\u003e (ipdb, pdbpp) can\ninteract with the real terminal instead of the captured I/O streams.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/654\"\u003e#654\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/824\"\u003e#824\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/843\"\u003e#843\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/951\"\u003e#951\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3235\"\u003e#3235\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd optional randomized parallel test execution using \u003ccode\u003epytest-randomly\u003c/code\u003e and\n\u003ccode\u003epytest-xdist\u003c/code\u003e to detect test pollution and race conditions. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3151\"\u003e#3151\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd contributor documentation for running stress tests, randomized\nparallel tests, and Flask smoke tests. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3151\"\u003e#3151\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3177\"\u003e#3177\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eShow custom \u003ccode\u003eshow_default\u003c/code\u003e string in prompts, matching the existing\nhelp text behavior. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2836\"\u003e#2836\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2837\"\u003e#2837\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3165\"\u003e#3165\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3262\"\u003e#3262\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3280\"\u003e#3280\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3328\"\u003e#3328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003edefault=True\u003c/code\u003e with boolean \u003ccode\u003eflag_value\u003c/code\u003e always returning the\n\u003ccode\u003eflag_value\u003c/code\u003e instead of \u003ccode\u003eTrue\u003c/code\u003e. The \u003ccode\u003edefault=True\u003c/code\u003e to \u003ccode\u003eflag_value\u003c/code\u003e\nsubstitution now only applies to non-boolean flags, where \u003ccode\u003eTrue\u003c/code\u003e acts as a\nsentinel meaning \u0026quot;activate this flag by default\u0026quot;. For boolean flags,\n\u003ccode\u003edefault=True\u003c/code\u003e is returned as a literal value. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3111\"\u003e#3111\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3239\"\u003e#3239\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark \u003ccode\u003emake_default_short_help\u003c/code\u003e as private API. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3189\"\u003e#3189\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3250\"\u003e#3250\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCliRunner\u003c/code\u003e's redirected streams now expose the original file descriptor\nvia \u003ccode\u003efileno()\u003c/code\u003e, so that \u003ccode\u003efaulthandler\u003c/code\u003e, \u003ccode\u003esubprocess\u003c/code\u003e, and other\nC-level consumers no longer crash with \u003ccode\u003eio.UnsupportedOperation\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/2865\"\u003e#2865\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange :class:\u003ccode\u003eParameterSource\u003c/code\u003e to an :class:\u003ccode\u003e~enum.IntEnum\u003c/code\u003e and reorder\nits members from most to least explicit, so values can be compared to\ncheck whether a parameter was explicitly provided. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2879\"\u003e#2879\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3248\"\u003e#3248\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.3.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.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.3.2/\"\u003ehttps://pypi.org/project/click/8.3.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-2\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/29\"\u003ehttps://github.com/pallets/click/milestone/29\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.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-04-20\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse :func:\u003ccode\u003eshlex.split\u003c/code\u003e to split pager and editor commands into \u003ccode\u003eargv\u003c/code\u003e\nlists for :class:\u003ccode\u003esubprocess.Popen\u003c/code\u003e, removing \u003ccode\u003eshell=True\u003c/code\u003e.\n:issue:\u003ccode\u003e1026\u003c/code\u003e :pr:\u003ccode\u003e1477\u003c/code\u003e :pr:\u003ccode\u003e2775\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eTypeError\u003c/code\u003e when rendering help for an option whose default value is\nan object that doesn't support equality comparison with strings, such as\n\u003ccode\u003esemver.Version\u003c/code\u003e. :issue:\u003ccode\u003e3298\u003c/code\u003e :pr:\u003ccode\u003e3299\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix pager test pollution under parallel execution by using pytest's\n\u003ccode\u003etmp_path\u003c/code\u003e fixture instead of a shared temporary file path. :pr:\u003ccode\u003e3238\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values in a \u003ccode\u003edefault_map\u003c/code\u003e as absent, so they fall\nthrough to the next default source instead of being used as the value.\n:issue:\u003ccode\u003e3224\u003c/code\u003e :pr:\u003ccode\u003e3240\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ePatch \u003ccode\u003epdb.Pdb\u003c/code\u003e in \u003ccode\u003eCliRunner\u003c/code\u003e isolation so \u003ccode\u003epdb.set_trace()\u003c/code\u003e,\n\u003ccode\u003ebreakpoint()\u003c/code\u003e, and debuggers subclassing \u003ccode\u003epdb.Pdb\u003c/code\u003e (ipdb, pdbpp) can\ninteract with the real terminal instead of the captured I/O streams.\n:issue:\u003ccode\u003e654\u003c/code\u003e :issue:\u003ccode\u003e824\u003c/code\u003e :issue:\u003ccode\u003e843\u003c/code\u003e :pr:\u003ccode\u003e951\u003c/code\u003e :pr:\u003ccode\u003e3235\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd optional randomized parallel test execution using \u003ccode\u003epytest-randomly\u003c/code\u003e and\n\u003ccode\u003epytest-xdist\u003c/code\u003e to detect test pollution and race conditions. :pr:\u003ccode\u003e3151\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd contributor documentation for running stress tests, randomized\nparallel tests, and Flask smoke tests. :pr:\u003ccode\u003e3151\u003c/code\u003e :pr:\u003ccode\u003e3177\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eShow custom \u003ccode\u003eshow_default\u003c/code\u003e string in prompts, matching the existing\nhelp text behavior. :issue:\u003ccode\u003e2836\u003c/code\u003e :pr:\u003ccode\u003e2837\u003c/code\u003e :pr:\u003ccode\u003e3165\u003c/code\u003e :pr:\u003ccode\u003e3262\u003c/code\u003e :pr:\u003ccode\u003e3280\u003c/code\u003e\n:pr:\u003ccode\u003e3328\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003edefault=True\u003c/code\u003e with boolean \u003ccode\u003eflag_value\u003c/code\u003e always returning the\n\u003ccode\u003eflag_value\u003c/code\u003e instead of \u003ccode\u003eTrue\u003c/code\u003e. The \u003ccode\u003edefault=True\u003c/code\u003e to \u003ccode\u003eflag_value\u003c/code\u003e\nsubstitution now only applies to non-boolean flags, where \u003ccode\u003eTrue\u003c/code\u003e acts as a\nsentinel meaning \u0026quot;activate this flag by default\u0026quot;. For boolean flags,\n\u003ccode\u003edefault=True\u003c/code\u003e is returned as a literal value. :issue:\u003ccode\u003e3111\u003c/code\u003e :pr:\u003ccode\u003e3239\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark \u003ccode\u003emake_default_short_help\u003c/code\u003e as private API. :issue:\u003ccode\u003e3189\u003c/code\u003e :pr:\u003ccode\u003e3250\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCliRunner\u003c/code\u003e's redirected streams now expose the original file descriptor\nvia \u003ccode\u003efileno()\u003c/code\u003e, so that \u003ccode\u003efaulthandler\u003c/code\u003e, \u003ccode\u003esubprocess\u003c/code\u003e, and other\nC-level consumers no longer crash with \u003ccode\u003eio.UnsupportedOperation\u003c/code\u003e.\n:issue:\u003ccode\u003e2865\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eChange :class:\u003ccode\u003eParameterSource\u003c/code\u003e to an :class:\u003ccode\u003e~enum.IntEnum\u003c/code\u003e and reorder\nits members from most to least explicit, so values can be compared to\ncheck whether a parameter was explicitly provided. :issue:\u003ccode\u003e2879\u003c/code\u003e :pr:\u003ccode\u003e3248\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.3.2\u003c/h2\u003e\n\u003cp\u003eReleased 2026-04-02\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eflag_value\u003c/code\u003e when \u003ccode\u003eis_flag=False\u003c/code\u003e to allow such options to be\nused without an explicit value. :issue:\u003ccode\u003e3084\u003c/code\u003e :pr:\u003ccode\u003e3152\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when using \u003ccode\u003elookup_default()\u003c/code\u003e.\n:issue:\u003ccode\u003e3136\u003c/code\u003e :pr:\u003ccode\u003e3199\u003c/code\u003e :pr:\u003ccode\u003e3202\u003c/code\u003e :pr:\u003ccode\u003e3209\u003c/code\u003e :pr:\u003ccode\u003e3212\u003c/code\u003e :pr:\u003ccode\u003e3224\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/c06d2d0a6aee6bcc50bd8257be2a4a592f4e75d0\"\u003e\u003ccode\u003ec06d2d0\u003c/code\u003e\u003c/a\u003e Release 8.3.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/f1f191ecd2c790b161187c78e7c88440e9524e5c\"\u003e\u003ccode\u003ef1f191e\u003c/code\u003e\u003c/a\u003e Apply format guidelines to commits since latest 8.3.2 release (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3343\"\u003e#3343\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/bb59ba0fd279ca085d1113f0499b6a602ca31081\"\u003e\u003ccode\u003ebb59ba0\u003c/code\u003e\u003c/a\u003e Apply format guidelines to commits since latest 8.3.2 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/4a352253c9ff013e36d11e4a6820d36d00ff2cd4\"\u003e\u003ccode\u003e4a35225\u003c/code\u003e\u003c/a\u003e Reduce blast-radius of \u003ccode\u003eUNSET\u003c/code\u003e in \u003ccode\u003edefault_map\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3240\"\u003e#3240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/c07bb936de43fd303f9cfbefe248ab23fd2199c8\"\u003e\u003ccode\u003ec07bb93\u003c/code\u003e\u003c/a\u003e Merge branch 'stable' into unset-in-default-map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/c7e1ba8448cbcb2cdd9c1c7f4a592e863dcc3995\"\u003e\u003ccode\u003ec7e1ba8\u003c/code\u003e\u003c/a\u003e Reorder \u003ccode\u003eParameterSource\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3248\"\u003e#3248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/76552ff1e8c85837f911fc34037e702ae4327eda\"\u003e\u003ccode\u003e76552ff\u003c/code\u003e\u003c/a\u003e Show default string in prompt (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3328\"\u003e#3328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/ac5cec5fe54e5a691e7bac17f441ce9498e0744c\"\u003e\u003ccode\u003eac5cec5\u003c/code\u003e\u003c/a\u003e Reorder ParameterSource from most to least explicit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/8c452e00e6772931b7071d9316b82b77e5b8f280\"\u003e\u003ccode\u003e8c452e0\u003c/code\u003e\u003c/a\u003e Merge branch 'stable' into show-default-string-in-prompt\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/8c95c73bd5ef89eac638f85f1904a104ba4b1a32\"\u003e\u003ccode\u003e8c95c73\u003c/code\u003e\u003c/a\u003e Reconcile default value passing and default activation (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3239\"\u003e#3239\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.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cryptography` from 46.0.7 to 48.0.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst\"\u003ecryptography's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e48.0.0 - 2026-05-04\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* **BACKWARDS INCOMPATIBLE:** Support for Python 3.8 has been removed.\n  ``cryptography`` now requires Python 3.9 or later.\n* **BACKWARDS INCOMPATIBLE:** Loading an X.509 CRL whose inner\n  ``TBSCertList.signature`` algorithm does not match the outer\n  ``signatureAlgorithm`` now raises ``ValueError``. Previously, such CRLs\n  were parsed successfully and only rejected during signature validation.\n* Added support for :doc:`/hazmat/primitives/asymmetric/mlkem` and\n  :doc:`/hazmat/primitives/asymmetric/mldsa` when using OpenSSL 3.5.0 or\n  later, in addition to the existing AWS-LC and BoringSSL support. This means\n  post-quantum algorithms are now available to users of our wheels.\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNote:\u003c/strong\u003e Going forward, we do not guarantee that all functionality\u003cbr /\u003e\nin \u003ccode\u003ecryptography\u003c/code\u003e will be available when building against\u003cbr /\u003e\nOpenSSL. See :doc:\u003ccode\u003e/statements/state-of-openssl\u003c/code\u003e for more information.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v47-0-0:\u003c/p\u003e\n\u003cp\u003e47.0.0 - 2026-04-24\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.8 is deprecated and will be removed in the next\n\u003ccode\u003ecryptography\u003c/code\u003e release.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Support for binary elliptic curves\n(\u003ccode\u003eSECT*\u003c/code\u003e classes) has been removed. These curves are rarely used and\nhave additional security considerations that make them undesirable.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Support for OpenSSL 1.1.x has been removed.\nOpenSSL 3.0.0 or later is now required. LibreSSL, BoringSSL, and AWS-LC\ncontinue to be supported.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Dropped support for LibreSSL \u0026lt; 4.1.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Loading keys with unsupported algorithms or\nkeys with unsupported explicit curve encodings now raises\n:class:\u003ccode\u003e~cryptography.exceptions.UnsupportedAlgorithm\u003c/code\u003e instead of\n\u003ccode\u003eValueError\u003c/code\u003e. This change affects\n:func:\u003ccode\u003e~cryptography.hazmat.primitives.serialization.load_pem_private_key\u003c/code\u003e,\n:func:\u003ccode\u003e~cryptography.hazmat.primitives.serialization.load_der_private_key\u003c/code\u003e,\n:func:\u003ccode\u003e~cryptography.hazmat.primitives.serialization.load_pem_public_key\u003c/code\u003e,\n:func:\u003ccode\u003e~cryptography.hazmat.primitives.serialization.load_der_public_key\u003c/code\u003e,\nand :meth:\u003ccode\u003e~cryptography.x509.Certificate.public_key\u003c/code\u003e when called on\ncertificates with unsupported public key algorithms.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e When parsing elliptic curve private keys, we now\nreject keys that incorrectly encode a private key of the wrong length because\nsuch keys are impossible to process in a constant-time manner. We do not\nbelieve keys with this problem are in wide use, however we may revert this\nchange based on the feedback we receive.\u003c/li\u003e\n\u003cli\u003eDeprecated passing 64-bit (8-byte) and 128-bit (16-byte) keys to\n:class:\u003ccode\u003e~cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES\u003c/code\u003e. In a\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/8e03e30e3aae01632a697e903e3593c924f0139d\"\u003e\u003ccode\u003e8e03e30\u003c/code\u003e\u003c/a\u003e bump for 48.0.0 release (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14796\"\u003e#14796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/295e0d254ef31ab864730aa41312ec355416ee71\"\u003e\u003ccode\u003e295e0d2\u003c/code\u003e\u003c/a\u003e Add AGENTS.md with CLAUDE.md symlink (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14794\"\u003e#14794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/104a2de19e268a433e6da92be9cb872dcf0003c8\"\u003e\u003ccode\u003e104a2de\u003c/code\u003e\u003c/a\u003e Bump BoringSSL, OpenSSL, AWS-LC in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14793\"\u003e#14793\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/67ec1e51988195e17993d2edef5258b27509b926\"\u003e\u003ccode\u003e67ec1e5\u003c/code\u003e\u003c/a\u003e call check_length early on AesSiv::encrypt (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14792\"\u003e#14792\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/b2da57a0d9e4bfd2b95364299091a18f74127b26\"\u003e\u003ccode\u003eb2da57a\u003c/code\u003e\u003c/a\u003e changelog for mldsa/mlkem for openssl (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14791\"\u003e#14791\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/3cf44adee25c368d4a136e072fa9f80465d91eb0\"\u003e\u003ccode\u003e3cf44ad\u003c/code\u003e\u003c/a\u003e ML-KEM OpenSSL support (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14781\"\u003e#14781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/2e31639666766f846fbab2c605879db0fa64fe83\"\u003e\u003ccode\u003e2e31639\u003c/code\u003e\u003c/a\u003e ML-DSA OpenSSL support (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14773\"\u003e#14773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/5affe5a286a986fdf512c4a5cb280d28a96c10e3\"\u003e\u003ccode\u003e5affe5a\u003c/code\u003e\u003c/a\u003e fix rust nightly clippy (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14790\"\u003e#14790\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/2e73ca448eaf64b6f0d4ffbb794cf96170cef5ec\"\u003e\u003ccode\u003e2e73ca4\u003c/code\u003e\u003c/a\u003e bump rust-openssl dep and update EcPoint::mul_generator to mul_generator2 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/1\"\u003e#1\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/82ebd3b9f49d49ad5fd8b4b1f1dd02487b6e1466\"\u003e\u003ccode\u003e82ebd3b\u003c/code\u003e\u003c/a\u003e Bump BoringSSL, OpenSSL, AWS-LC in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14785\"\u003e#14785\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/cryptography/compare/46.0.7...48.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `dnspython` from 2.7.0 to 2.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/rthalley/dnspython/releases\"\u003ednspython's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ednspython 2.8.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://dnspython.readthedocs.io/en/stable/whatsnew.html\"\u003eWhat's New\u003c/a\u003e for details.\u003c/p\u003e\n\u003cp\u003eThe minimum supported version of Python is 3.10.\u003c/p\u003e\n\u003cp\u003eMy thanks to the many people who have contributed to this release. Also thanks to my co-maintainers: Tomáš Křížek, Petr Špaček, and Brian Wellington.\u003c/p\u003e\n\u003cp\u003eThis release was published to PyPI using Trusted Publishing.\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/rthalley/dnspython/blob/main/doc/whatsnew.rst\"\u003ednspython's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.8.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003edns/btreezone.py provides another zone versioned implementation built on top of a\nB-tree.  It maintains DNSSEC sort order, labels nodes as delegation points or glue,\nand can find the \u0026quot;bounds\u0026quot; of a name (useful for DNSSEC responses).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003edns/query.py now provides make_socket(), make_ssl_socket(), and make_ssl_context()\nto make using persistent connections with the query code easier.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003edns/win32util.py now supports explicitly setting the configuration method used to get\nsystem dns info, using the set_config_method() function.   There is a new configuration\nmethod that uses the Win32 API, which can be set using\nset_config_method(ConfigMethod.Win32).  We are considering making the Win32 API\nthe default in the future as we believe it to be the most accurate.  Any feedback on\nit compared to the other methods is welcome.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe DSYNC record is now supported.  This type is still in draft stage at the IETF\nand is subject to change.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe minimum supported Python version is now 3.10.\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/rthalley/dnspython/commit/77fd94cd9716faf23e0a6e333f6568fc24284402\"\u003e\u003ccode\u003e77fd94c\u003c/code\u003e\u003c/a\u003e 2.8.0 versioning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/884f38345a8152342fe8ab5da8db9aab654051ba\"\u003e\u003ccode\u003e884f383\u003c/code\u003e\u003c/a\u003e update 2.8 branch workflows\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/1938fe331f97376bf91c028fbfb8c7588c1b84f4\"\u003e\u003ccode\u003e1938fe3\u003c/code\u003e\u003c/a\u003e update 2.8 branch workflows\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/a35d6925efe20744e8cf7545d19d03ba06e7ab6f\"\u003e\u003ccode\u003ea35d692\u003c/code\u003e\u003c/a\u003e 2.8.0rc1 prep\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/c862baaf0d0aa36d2e7003dfe226cd6ad4d827c4\"\u003e\u003ccode\u003ec862baa\u003c/code\u003e\u003c/a\u003e 2.8.0rc1 prep\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/0945d5923d58048c17325975f70f0738c87570b4\"\u003e\u003ccode\u003e0945d59\u003c/code\u003e\u003c/a\u003e more lint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/8fa6766d2f7a2431372fc912fb334e752290ebf2\"\u003e\u003ccode\u003e8fa6766\u003c/code\u003e\u003c/a\u003e lint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/641633503ee6b07bf382594ac04707072b90de18\"\u003e\u003ccode\u003e6416335\u003c/code\u003e\u003c/a\u003e Type syntax (\u003ca href=\"https://redirect.github.com/rthalley/dnspython/issues/1218\"\u003e#1218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/a4591447b7d6e38479bcddb14de3b69f314e7009\"\u003e\u003ccode\u003ea459144\u003c/code\u003e\u003c/a\u003e lint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/a0d5f172e89f30709b47b59fb0919d8cf137f611\"\u003e\u003ccode\u003ea0d5f17\u003c/code\u003e\u003c/a\u003e fix the all entries\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/rthalley/dnspython/compare/v2.7.0...v2.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `email-validator` from 2.2.0 to 2.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JoshData/python-email-validator/releases\"\u003eemail-validator's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.3.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThe package name is changed from using an underscore (email_validator) to a dash (email-validator) to match PyPi's normalized package name.\u003c/li\u003e\n\u003cli\u003eThe library no longer checks that the local part is at most 64 characters because a more careful reading of RFC 5321 indicates the limit is optional and such email addresses have been found in the wild. However the check can be restored using a new \u003ccode\u003estrict=True\u003c/code\u003e parameter, and the overall 254 character email address length limit is still in place.\u003c/li\u003e\n\u003cli\u003eNew EmailSyntaxError messages are used for some exiting syntax errors related to @-sign homoglyphs and invalid characters in internationalized domains.\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003eallow_display_name=True\u003c/code\u003e, display names are now returned with Unicode NFC normalization.\u003c/li\u003e\n\u003cli\u003eTypeError is now raised if something other than str (or bytes) is passed as the email address.\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/JoshData/python-email-validator/blob/main/CHANGELOG.md\"\u003eemail-validator's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.3.0 (August 26, 2025)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThe package name is changed from using an underscore (email_validator) to a dash (email-validator) to match PyPi's normalized package name.\u003c/li\u003e\n\u003cli\u003eThe library no longer checks that the local part is at most 64 characters because a more careful reading of RFC 5321 indicates the limit is optional and such email addresses have been found in the wild. However the check can be restored using a new \u003ccode\u003estrict=True\u003c/code\u003e parameter, and the overall 254 character email address length limit is still in place.\u003c/li\u003e\n\u003cli\u003eNew EmailSyntaxError messages are used for some exiting syntax errors related to @-sign homoglyphs and invalid characters in internationalized domains.\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003eallow_display_name=True\u003c/code\u003e, display names are now returned with Unicode NFC normalization.\u003c/li\u003e\n\u003cli\u003eTypeError is now raised if something other than str (or bytes) is passed as the email address.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/030a63a183a6a66450e98381ca9a23ab9769706a\"\u003e\u003ccode\u003e030a63a\u003c/code\u003e\u003c/a\u003e Version 2.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/e943a0f07f5c130b4a419e0cd79f705f36bf24fe\"\u003e\u003ccode\u003ee943a0f\u003c/code\u003e\u003c/a\u003e Raise TypeError when an invalid argument is passed for email, closes \u003ca href=\"https://redirect.github.com/JoshData/python-email-validator/issues/155\"\u003e#155\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/f90d256045dc1ccbcffd5514189267d14a9e3ea1\"\u003e\u003ccode\u003ef90d256\u003c/code\u003e\u003c/a\u003e Remove local part length check unless new strict flag is given, fixes \u003ca href=\"https://redirect.github.com/JoshData/python-email-validator/issues/158\"\u003e#158\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/98800bac023b8713351393a5043034065f1ea6cb\"\u003e\u003ccode\u003e98800ba\u003c/code\u003e\u003c/a\u003e Add explicit checks for internationalized domain name characters invalid unde...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/936aead3bf5c608f8561954e0d2955b7f97bfdad\"\u003e\u003ccode\u003e936aead\u003c/code\u003e\u003c/a\u003e Fix final syntax checks on normalized internationalized domains checking the ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/8043de49596f08d54a07e2bc7c442ced074216a6\"\u003e\u003ccode\u003e8043de4\u003c/code\u003e\u003c/a\u003e NFC-normalize display names per UTS \u003ca href=\"https://redirect.github.com/JoshData/python-email-validator/issues/39\"\u003e#39\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/bc08faa2a74b51a9e7ba7ff4f995c0b475cb5b12\"\u003e\u003ccode\u003ebc08faa\u003c/code\u003e\u003c/a\u003e Add one-off error messages for full-width-at and small-commercial-at which ar...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/a1c90ab58fb0f5d969a8351a68ca15bff068527c\"\u003e\u003ccode\u003ea1c90ab\u003c/code\u003e\u003c/a\u003e Split exceptions_types.py into exceptions.py and types.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/dbcf07cc5c8066c14b6dc58d2dbb4a1e582eeefd\"\u003e\u003ccode\u003edbcf07c\u003c/code\u003e\u003c/a\u003e Change package name from using underscore to dash to match PyPi normalized pa...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/7c22208ee5b82c377e960ddcea5293691eadc6cc\"\u003e\u003ccode\u003e7c22208\u003c/code\u003e\u003c/a\u003e Support ALLOW_DISPLAY_NAME and ALLOW_EMPTY_LOCAL in the CLI (\u003ca href=\"https://redirect.github.com/JoshData/python-email-validator/issues/145\"\u003e#145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JoshData/python-email-validator/compare/v2.2.0...v2.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `exceptiongroup` from 1.2.2 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/agronholm/exceptiongroup/releases\"\u003eexceptiongroup's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.3.1\u003c...\n\n_Description has been truncated_","html_url":"https://github.com/eclipse-tractusx/industry-core-hub/pull/581","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-tractusx%2Findustry-core-hub/issues/581","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/581/packages"},{"uuid":"4405898798","node_id":"PR_kwDOLzgXB87ZgWuw","number":731,"state":"open","title":"Bump the allpip group across 1 directory with 59 updates","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-08T11:08:27.000Z","updated_at":"2026-05-08T11:08:48.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"allpip","update_count":59,"packages":[{"name":"fastapi","old_version":"0.121.3","new_version":"0.136.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"alembic","old_version":"1.18.3","new_version":"1.18.4","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"pydantic","old_version":"2.11.9","new_version":"2.13.4","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.12.0","new_version":"2.14.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"psycopg2-binary","old_version":"2.9.11","new_version":"2.9.12","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"uvicorn","old_version":"0.35.0","new_version":"0.46.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"click","old_version":"8.3.1","new_version":"8.3.3","repository_url":"https://github.com/pallets/click"},{"name":"sqlalchemy","old_version":"2.0.46","new_version":"2.0.49","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"authlib","old_version":"1.6.11","new_version":"1.7.2","repository_url":"https://github.com/authlib/authlib"},{"name":"aiosqlite","old_version":"0.21.0","new_version":"0.22.1","repository_url":"https://github.com/omnilib/aiosqlite"},{"name":"asyncpg","old_version":"0.30.0","new_version":"0.31.0","repository_url":"https://github.com/MagicStack/asyncpg"},{"name":"async-lru","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/aio-libs/async-lru"},{"name":"poetry","old_version":"2.3.4","new_version":"2.4.0","repository_url":"https://github.com/python-poetry/poetry"},{"name":"urllib3","old_version":"2.6.3","new_version":"2.7.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"aenum","old_version":"3.1.16","new_version":"3.1.17","repository_url":"https://github.com/ethanfurman/aenum"},{"name":"coverage","old_version":"7.13.2","new_version":"7.13.5","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"playwright","old_version":"1.58.0","new_version":"1.59.0","repository_url":"https://github.com/microsoft/playwright-python"},{"name":"ruff","old_version":"0.14.14","new_version":"0.15.12","repository_url":"https://github.com/astral-sh/ruff"},{"name":"pre-commit","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"pyright","old_version":"1.1.408","new_version":"1.1.409","repository_url":"https://github.com/RobertCraigie/pyright-python"},{"name":"setuptools","old_version":"80.10.2","new_version":"82.0.1","repository_url":"https://github.com/pypa/setuptools"},{"name":"types-pyyaml","old_version":"6.0.12.20250915","new_version":"6.0.12.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"anyio","old_version":"4.12.1","new_version":"4.13.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"blessed","old_version":"1.29.0","new_version":"1.39.0","repository_url":"https://github.com/jquast/blessed"},{"name":"build","old_version":"1.4.0","new_version":"1.5.0","repository_url":"https://github.com/pypa/build"},{"name":"certifi","old_version":"2026.1.4","new_version":"2026.4.22","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.4","new_version":"3.4.7","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"cryptography","old_version":"46.0.7","new_version":"48.0.0","repository_url":"https://github.com/pyca/cryptography"},{"name":"dulwich","old_version":"1.0.0","new_version":"1.2.1","repository_url":"https://github.com/dulwich/dulwich"},{"name":"filelock","old_version":"3.20.3","new_version":"3.29.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"findpython","old_version":"0.7.1","new_version":"0.8.0","repository_url":"https://github.com/frostming/findpython"},{"name":"fsspec","old_version":"2026.1.0","new_version":"2026.4.0","repository_url":"https://github.com/fsspec/filesystem_spec"},{"name":"greenlet","old_version":"3.3.1","new_version":"3.5.0","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"identify","old_version":"2.6.16","new_version":"2.6.19","repository_url":"https://github.com/pre-commit/identify"},{"name":"idna","old_version":"3.11","new_version":"3.13","repository_url":"https://github.com/kjd/idna"},{"name":"jaraco-context","old_version":"6.1.0","new_version":"6.1.2","repository_url":"https://github.com/jaraco/jaraco.context"},{"name":"json5","old_version":"0.13.0","new_version":"0.14.0","repository_url":"https://github.com/dpranke/pyjson5"},{"name":"mako","old_version":"1.3.10","new_version":"1.3.12","repository_url":"https://github.com/sqlalchemy/mako"},{"name":"more-itertools","old_version":"10.8.0","new_version":"11.0.2","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"ovld","old_version":"0.5.14","new_version":"0.5.15","repository_url":"https://github.com/breuleux/ovld"},{"name":"packaging","old_version":"26.0","new_version":"26.2","repository_url":"https://github.com/pypa/packaging"},{"name":"pathspec","old_version":"1.0.4","new_version":"1.1.1","repository_url":"https://github.com/cpburnz/python-pathspec"},{"name":"pbs-installer","old_version":"2026.1.27","new_version":"2026.5.4","repository_url":"https://github.com/frostming/pbs-installer"},{"name":"platformdirs","old_version":"4.5.1","new_version":"4.9.6","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"prometheus-client","old_version":"0.24.1","new_version":"0.25.0","repository_url":"https://github.com/prometheus/client_python"},{"name":"pyee","old_version":"13.0.0","new_version":"13.0.1","repository_url":"https://github.com/jfhbrook/pyee"},{"name":"rapidfuzz","old_version":"3.14.3","new_version":"3.14.5","repository_url":"https://github.com/rapidfuzz/RapidFuzz"},{"name":"regex","old_version":"2026.1.15","new_version":"2026.4.4","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"requests","old_version":"2.33.0","new_version":"2.33.1","repository_url":"https://github.com/psf/requests"},{"name":"starlette","old_version":"0.50.0","new_version":"0.52.1","repository_url":"https://github.com/Kludex/starlette"},{"name":"tqdm","old_version":"4.67.2","new_version":"4.67.3","repository_url":"https://github.com/tqdm/tqdm"},{"name":"trove-classifiers","old_version":"2026.1.14.14","new_version":"2026.5.7.17","repository_url":"https://github.com/pypa/trove-classifiers"},{"name":"virtualenv","old_version":"20.36.1","new_version":"21.3.1","repository_url":"https://github.com/pypa/virtualenv"},{"name":"wrapt","old_version":"2.1.0","new_version":"2.1.2","repository_url":"https://github.com/GrahamDumpleton/wrapt"}],"path":null,"ecosystem":"pip"},"body":"Bumps the allpip group with 54 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.121.3` | `0.136.1` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.18.3` | `1.18.4` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.9` | `2.13.4` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.12.0` | `2.14.0` |\n| [psycopg2-binary](https://github.com/psycopg/psycopg2) | `2.9.11` | `2.9.12` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.35.0` | `0.46.0` |\n| [click](https://github.com/pallets/click) | `8.3.1` | `8.3.3` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.46` | `2.0.49` |\n| [authlib](https://github.com/authlib/authlib) | `1.6.11` | `1.7.2` |\n| [aiosqlite](https://github.com/omnilib/aiosqlite) | `0.21.0` | `0.22.1` |\n| [asyncpg](https://github.com/MagicStack/asyncpg) | `0.30.0` | `0.31.0` |\n| [async-lru](https://github.com/aio-libs/async-lru) | `2.1.0` | `2.3.0` |\n| [poetry](https://github.com/python-poetry/poetry) | `2.3.4` | `2.4.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.6.3` | `2.7.0` |\n| [aenum](https://github.com/ethanfurman/aenum) | `3.1.16` | `3.1.17` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.2` | `7.13.5` |\n| [playwright](https://github.com/microsoft/playwright-python) | `1.58.0` | `1.59.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.14` | `0.15.12` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.5.1` | `4.6.0` |\n| [pyright](https://github.com/RobertCraigie/pyright-python) | `1.1.408` | `1.1.409` |\n| [setuptools](https://github.com/pypa/setuptools) | `80.10.2` | `82.0.1` |\n| [types-pyyaml](https://github.com/python/typeshed) | `6.0.12.20250915` | `6.0.12.20260508` |\n| [anyio](https://github.com/agronholm/anyio) | `4.12.1` | `4.13.0` |\n| [blessed](https://github.com/jquast/blessed) | `1.29.0` | `1.39.0` |\n| [build](https://github.com/pypa/build) | `1.4.0` | `1.5.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2026.1.4` | `2026.4.22` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.4` | `3.4.7` |\n| [cryptography](https://github.com/pyca/cryptography) | `46.0.7` | `48.0.0` |\n| [dulwich](https://github.com/dulwich/dulwich) | `1.0.0` | `1.2.1` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.20.3` | `3.29.0` |\n| [findpython](https://github.com/frostming/findpython) | `0.7.1` | `0.8.0` |\n| [fsspec](https://github.com/fsspec/filesystem_spec) | `2026.1.0` | `2026.4.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.3.1` | `3.5.0` |\n| [identify](https://github.com/pre-commit/identify) | `2.6.16` | `2.6.19` |\n| [idna](https://github.com/kjd/idna) | `3.11` | `3.13` |\n| [jaraco-context](https://github.com/jaraco/jaraco.context) | `6.1.0` | `6.1.2` |\n| [json5](https://github.com/dpranke/pyjson5) | `0.13.0` | `0.14.0` |\n| [mako](https://github.com/sqlalchemy/mako) | `1.3.10` | `1.3.12` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.8.0` | `11.0.2` |\n| [ovld](https://github.com/breuleux/ovld) | `0.5.14` | `0.5.15` |\n| [packaging](https://github.com/pypa/packaging) | `26.0` | `26.2` |\n| [pathspec](https://github.com/cpburnz/python-pathspec) | `1.0.4` | `1.1.1` |\n| [pbs-installer](https://github.com/frostming/pbs-installer) | `2026.1.27` | `2026.5.4` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.5.1` | `4.9.6` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.24.1` | `0.25.0` |\n| [pyee](https://github.com/jfhbrook/pyee) | `13.0.0` | `13.0.1` |\n| [rapidfuzz](https://github.com/rapidfuzz/RapidFuzz) | `3.14.3` | `3.14.5` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2026.1.15` | `2026.4.4` |\n| [requests](https://github.com/psf/requests) | `2.33.0` | `2.33.1` |\n| [starlette](https://github.com/Kludex/starlette) | `0.50.0` | `0.52.1` |\n| [tqdm](https://github.com/tqdm/tqdm) | `4.67.2` | `4.67.3` |\n| [trove-classifiers](https://github.com/pypa/trove-classifiers) | `2026.1.14.14` | `2026.5.7.17` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.36.1` | `21.3.1` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `2.1.0` | `2.1.2` |\n\n\nUpdates `fastapi` from 0.121.3 to 0.136.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.136.1\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Update Pydantic v2 code to address deprecations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15101\"\u003e#15101\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔨 Tweak translation script. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15174\"\u003e#15174\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump mkdocs-material from 9.7.1 to 9.7.6. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15408\"\u003e#15408\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump inline-snapshot from 0.31.1 to 0.32.6. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15409\"\u003e#15409\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pytest-codspeed from 4.3.0 to 4.4.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15407\"\u003e#15407\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pytest-cov from 7.0.0 to 7.1.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15406\"\u003e#15406\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump cloudflare/wrangler-action from 3.14.1 to 3.15.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15405\"\u003e#15405\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump mypy from 1.19.1 to 1.20.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15410\"\u003e#15410\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump python-dotenv from 1.2.1 to 1.2.2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15400\"\u003e#15400\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump starlette from 0.52.1 to 1.0.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15397\"\u003e#15397\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pygithub from 2.8.1 to 2.9.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15396\"\u003e#15396\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pyjwt from 2.12.0 to 2.12.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15393\"\u003e#15393\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump zizmor from 1.23.1 to 1.24.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15394\"\u003e#15394\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump strawberry-graphql from 0.312.3 to 0.314.3. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15395\"\u003e#15395\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump python-multipart from 0.0.22 to 0.0.26. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15360\"\u003e#15360\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump authlib from 1.6.9 to 1.6.11. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15373\"\u003e#15373\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump aiohttp from 3.13.3 to 3.13.4. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15282\"\u003e#15282\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pygments from 2.19.2 to 2.20.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15263\"\u003e#15263\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pymdown-extensions from 10.20.1 to 10.21.2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15391\"\u003e#15391\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pillow from 12.1.1 to 12.2.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15333\"\u003e#15333\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pytest from 9.0.2 to 9.0.3. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15334\"\u003e#15334\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/upload-artifact from 7.0.0 to 7.0.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15374\"\u003e#15374\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/cache from 5.0.4 to 5.0.5. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15385\"\u003e#15385\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Zuplo. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15369\"\u003e#15369\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Speakeasy. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15368\"\u003e#15368\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Add zizmor and fix audit findings. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15316\"\u003e#15316\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.136.0\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Support free-threaded Python 3.14t. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15149\"\u003e#15149\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.135.4\u003c/h2\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔥 Remove April Fool's \u003ccode\u003e@app.vibe()\u003c/code\u003e 🤪. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15363\"\u003e#15363\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ Bump cryptography from 46.0.5 to 46.0.7. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15314\"\u003e#15314\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump strawberry-graphql from 0.307.1 to 0.312.3. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15309\"\u003e#15309\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Add pre-commit hook to ensure latest release header has date. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15293\"\u003e#15293\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.135.3\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/fastapi/fastapi/commit/e54e5a8980ffa6d7ff68ee7b25a1c46036375521\"\u003e\u003ccode\u003ee54e5a8\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.136.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9a8a5fd99902c3b80d4cc94b85e120e2b808825f\"\u003e\u003ccode\u003e9a8a5fd\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/7815a32f2ed177b8b786a48b3e0712c05b5c644f\"\u003e\u003ccode\u003e7815a32\u003c/code\u003e\u003c/a\u003e ⬆️ Update Pydantic v2 code to address deprecations (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15101\"\u003e#15101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ef1c927b0558d414e199a666833942a6fabb3a51\"\u003e\u003ccode\u003eef1c927\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/38039e12a86e67f2001b9b7d96c219691d6cb4af\"\u003e\u003ccode\u003e38039e1\u003c/code\u003e\u003c/a\u003e 🔨 Tweak translation script (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15174\"\u003e#15174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4fa826ce0a3b16884a04f51e5aac95d01790b599\"\u003e\u003ccode\u003e4fa826c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c39415673e621665fdb7bbdde69beba7eb1dfd12\"\u003e\u003ccode\u003ec394156\u003c/code\u003e\u003c/a\u003e ⬆ Bump mkdocs-material from 9.7.1 to 9.7.6 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15408\"\u003e#15408\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ae230ad2f9d90a4e3f6222ff1a5d6e8da41ec0ad\"\u003e\u003ccode\u003eae230ad\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d9eb39d1a1bf2f6e6e5d3a55088f61c712cb864e\"\u003e\u003ccode\u003ed9eb39d\u003c/code\u003e\u003c/a\u003e ⬆ Bump inline-snapshot from 0.31.1 to 0.32.6 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15409\"\u003e#15409\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4f8b5d14d324ae8e15cfae8d85adb4186d4c2175\"\u003e\u003ccode\u003e4f8b5d1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.121.3...0.136.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `alembic` from 1.18.3 to 1.18.4\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.4\u003c/h1\u003e\n\u003cp\u003eReleased: February 10, 2026\u003c/p\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [operations]\u003c/strong\u003e Reverted the behavior of \u003ccode\u003eOperations.add_column()\u003c/code\u003e that would\nautomatically render the \u0026quot;PRIMARY KEY\u0026quot; keyword inline when a\n\u003ccode\u003eColumn\u003c/code\u003e with \u003ccode\u003eprimary_key=True\u003c/code\u003e is added. The automatic\nbehavior, added in version 1.18.2, is now opt-in via the new\n\u003ccode\u003eOperations.add_column.inline_primary_key\u003c/code\u003e parameter. This\nchange restores the ability to render a PostgreSQL SERIAL column, which is\nrequired to be \u003ccode\u003eprimary_key=True\u003c/code\u003e, while not impacting the ability to\nrender a separate primary key constraint. This also provides consistency\nwith the \u003ccode\u003eOperations.add_column.inline_references\u003c/code\u003e parameter and\ngives users explicit control over SQL generation.\u003c/p\u003e\n\u003cp\u003eTo render PRIMARY KEY inline, use the\n\u003ccode\u003eOperations.add_column.inline_primary_key\u003c/code\u003e parameter set to\n\u003ccode\u003eTrue\u003c/code\u003e:\u003c/p\u003e\n\u003cp\u003eop.add_column(\n\u0026quot;my_table\u0026quot;,\nColumn(\u0026quot;id\u0026quot;, Integer, primary_key=True),\ninline_primary_key=True\n)References: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1232\"\u003e#1232\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.9 to 2.13.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.13.4 2026-05-06\u003c/h2\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.3 2026-04-20\u003c/h2\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.2 2026-04-17\u003c/h2\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.1 2026-04-15\u003c/h2\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.data\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\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/pull/13079\"\u003e#13079\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.0...v2.13.1\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.0...v2.13.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.0 2026-04-13\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/v2.13.4/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.3\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.2\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.1\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.data\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\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/pull/13079\"\u003e#13079\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.0 (2026-04-13)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.0\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe highlights of the v2.13 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-13-release\"\u003eblog post\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/cf67d4b3193c3fe43ede18612ed62785eee11382\"\u003e\u003ccode\u003ecf67d4b\u003c/code\u003e\u003c/a\u003e Fix linting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/f0d8a214a5803036db46a56b1f62f1e56b81d662\"\u003e\u003ccode\u003ef0d8a21\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/5e3fe1d41a00f441204241c66078003ae0391f9a\"\u003e\u003ccode\u003e5e3fe1d\u003c/code\u003e\u003c/a\u003e Check for pydantic tag pattern in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7f9edcc2a191d2eaa9751220eb910914e716a686\"\u003e\u003ccode\u003e7f9edcc\u003c/code\u003e\u003c/a\u003e Document tagging conventions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b46a0c9b8a4dd967fda8ec1a92f6437076bf262c\"\u003e\u003ccode\u003eb46a0c9\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/50629c851e61d887d5420452c311ec6203f1f400\"\u003e\u003ccode\u003e50629c8\u003c/code\u003e\u003c/a\u003e Update to PyPy 7.3.22\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/8522ebb71e5e9a6f7188af5f009f01785b8cf725\"\u003e\u003ccode\u003e8522ebb\u003c/code\u003e\u003c/a\u003e Preserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a37f3aff090ca342dc5f48304889963530b993f8\"\u003e\u003ccode\u003ea37f3af\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003eMISSING\u003c/code\u003e sentinel test to work with unreleased \u003ccode\u003etyping_extensions\u003c/code\u003e ver...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/909259a9df660518033aa686b689f045a6eaf9d2\"\u003e\u003ccode\u003e909259a\u003c/code\u003e\u003c/a\u003e Remove Logfire example in documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2c4174c366606fc2dc46cb806833a080aefa77df\"\u003e\u003ccode\u003e2c4174c\u003c/code\u003e\u003c/a\u003e Bump libc from 0.2.155 to 0.2.185\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.11.9...v2.13.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic-settings` from 2.12.0 to 2.14.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic-settings/releases\"\u003epydantic-settings's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.14.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix parsing env vars into Optional Strict types by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/792\"\u003epydantic/pydantic-settings#792\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix RecursionError with mutually recursive models in CLI by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/794\"\u003epydantic/pydantic-settings#794\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix env_file from model_config ignored in CliApp.run() (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/795\"\u003e#795\u003c/a\u003e) by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/796\"\u003epydantic/pydantic-settings#796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependencies by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/798\"\u003epydantic/pydantic-settings#798\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Dependabot configuration by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/801\"\u003epydantic/pydantic-settings#801\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump samuelcolvin/check-python-version from 4.1 to 5 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/802\"\u003epydantic/pydantic-settings#802\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact from 4 to 7 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/pydantic/pydantic-settings/pull/803\"\u003epydantic/pydantic-settings#803\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/804\"\u003epydantic/pydantic-settings#804\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump astral-sh/setup-uv from 5 to 7 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/pydantic/pydantic-settings/pull/805\"\u003epydantic/pydantic-settings#805\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/setup-python from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/806\"\u003epydantic/pydantic-settings#806\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIgnore chardet and group GitHub Actions in Dependabot by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/808\"\u003epydantic/pydantic-settings#808\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact from 4 to 8 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/pydantic/pydantic-settings/pull/809\"\u003epydantic/pydantic-settings#809\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages 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/pydantic/pydantic-settings/pull/810\"\u003epydantic/pydantic-settings#810\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport reading .env files from FIFOs (e.g. 1Password Environments) by \u003ca href=\"https://github.com/JacobHayes\"\u003e\u003ccode\u003e@​JacobHayes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/776\"\u003epydantic/pydantic-settings#776\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix AliasChoices ignored when changing provider priority by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/813\"\u003epydantic/pydantic-settings#813\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: resolve KeyError in run_subcommand for underscore field names by \u003ca href=\"https://github.com/bradykieffer\"\u003e\u003ccode\u003e@​bradykieffer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/799\"\u003epydantic/pydantic-settings#799\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages 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/pydantic/pydantic-settings/pull/814\"\u003epydantic/pydantic-settings#814\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eLiteral[numeric Enum]\u003c/code\u003e coercion for CLI and env vars by \u003ca href=\"https://github.com/m9810223\"\u003e\u003ccode\u003e@​m9810223\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/811\"\u003epydantic/pydantic-settings#811\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix nested discriminated unions not discovered by env/CLI providers by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/816\"\u003epydantic/pydantic-settings#816\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages 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/pydantic/pydantic-settings/pull/820\"\u003epydantic/pydantic-settings#820\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI ensure env nested max split internally. by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/821\"\u003epydantic/pydantic-settings#821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 4 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/824\"\u003epydantic/pydantic-settings#824\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMigrate \u003ccode\u003eboto3-stubs\u003c/code\u003e to \u003ccode\u003etypes-boto3\u003c/code\u003e by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/831\"\u003epydantic/pydantic-settings#831\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix CLI not recognizing field name with validate_by_name and AliasChoices by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/826\"\u003epydantic/pydantic-settings#826\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow customisation of the dotevn setting source to filter variables by \u003ca href=\"https://github.com/CaselIT\"\u003e\u003ccode\u003e@​CaselIT\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/832\"\u003epydantic/pydantic-settings#832\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages 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/pydantic/pydantic-settings/pull/833\"\u003epydantic/pydantic-settings#833\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIntroduce yamlfmt 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-settings/pull/836\"\u003epydantic/pydantic-settings#836\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump boto3 from 1.42.82 to 1.42.83 in the python-packages 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/pydantic/pydantic-settings/pull/837\"\u003epydantic/pydantic-settings#837\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIntroduce zizmor 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-settings/pull/838\"\u003epydantic/pydantic-settings#838\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix CliPositionalArg[list[CustomType]] crash for custom types by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/839\"\u003epydantic/pydantic-settings#839\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd note about Mypy plugin for \u003ccode\u003eBaseSettings.__init__()\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-settings/pull/842\"\u003epydantic/pydantic-settings#842\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ecli_ignore_unknown_args=True\u003c/code\u003e not working on subcommands by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/844\"\u003epydantic/pydantic-settings#844\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 4 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/847\"\u003epydantic/pydantic-settings#847\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix CLI descriptions lost under \u003ccode\u003epython -OO\u003c/code\u003e by falling back to \u003ccode\u003ejson_schema_extra\u003c/code\u003e by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/843\"\u003epydantic/pydantic-settings#843\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare release 2.14.0 by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/848\"\u003epydantic/pydantic-settings#848\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/pydantic/pydantic-settings/pull/802\"\u003epydantic/pydantic-settings#802\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JacobHayes\"\u003e\u003ccode\u003e@​JacobHayes\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/776\"\u003epydantic/pydantic-settings#776\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bradykieffer\"\u003e\u003ccode\u003e@​bradykieffer\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/799\"\u003epydantic/pydantic-settings#799\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/CaselIT\"\u003e\u003ccode\u003e@​CaselIT\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/832\"\u003epydantic/pydantic-settings#832\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-settings/compare/v2.13.1...v2.14.0\"\u003ehttps://github.com/pydantic/pydantic-settings/compare/v2.13.1...v2.14.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression for bool fields since 2.13.0 by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/784\"\u003epydantic/pydantic-settings#784\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix RecursionError with self-referential models in CliApp by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/783\"\u003epydantic/pydantic-settings#783\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/pydantic/pydantic-settings/commit/8916beeecc6d0510e3d0532a0ed839937400ddc3\"\u003e\u003ccode\u003e8916bee\u003c/code\u003e\u003c/a\u003e Prepare release 2.14.0 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/848\"\u003e#848\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/39e551c0910c85505b608ff85a103b2c9f7396c5\"\u003e\u003ccode\u003e39e551c\u003c/code\u003e\u003c/a\u003e Fix CLI descriptions lost under \u003ccode\u003epython -OO\u003c/code\u003e by falling back to `json_schema_...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/9ed7f48ea2c90f436a03b01f721fe6656c869b14\"\u003e\u003ccode\u003e9ed7f48\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 4 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/847\"\u003e#847\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/617c690fb16c95eb0fb98fc88c0d6d82b9af4fa9\"\u003e\u003ccode\u003e617c690\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003ecli_ignore_unknown_args=True\u003c/code\u003e not working on subcommands (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/844\"\u003e#844\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/577c05f7e8ac25904da2381db51ed4ddd4b3e4fe\"\u003e\u003ccode\u003e577c05f\u003c/code\u003e\u003c/a\u003e Add note about Mypy plugin for \u003ccode\u003eBaseSettings.__init__()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/842\"\u003e#842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/2355bc54e9d442ca7916f02de28d0c936e75441c\"\u003e\u003ccode\u003e2355bc5\u003c/code\u003e\u003c/a\u003e Fix CliPositionalArg[list[CustomType]] crash for custom types (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/839\"\u003e#839\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/16bd6fd230d6280d52db6ce2a0ffef8f908cc89d\"\u003e\u003ccode\u003e16bd6fd\u003c/code\u003e\u003c/a\u003e Introduce zizmor (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/838\"\u003e#838\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/df8b239fe09ba712767bdf378bc90627df375f04\"\u003e\u003ccode\u003edf8b239\u003c/code\u003e\u003c/a\u003e Bump boto3 from 1.42.82 to 1.42.83 in the python-packages group (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/837\"\u003e#837\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/c5401a27999cd6c0e93925deb0660cd51013c8b1\"\u003e\u003ccode\u003ec5401a2\u003c/code\u003e\u003c/a\u003e Introduce yamlfmt (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/836\"\u003e#836\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/953e28e6cfe9a9e536375d771a4ffd48535a4ab2\"\u003e\u003ccode\u003e953e28e\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 3 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/833\"\u003e#833\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.12.0...v2.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psycopg2-binary` from 2.9.11 to 2.9.12\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-binary'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.12\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix infinite loop with malformed interval (:ticket:\u003ccode\u003e1835\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\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\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/3a6d9d6ddc6b53eaa80b712f5fa6b23abbdc38db\"\u003e\u003ccode\u003e3a6d9d6\u003c/code\u003e\u003c/a\u003e ci: include almalinux in whieel building\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/ebca6bf0f86bc6cbdc86de1eb3a53eaf49966d86\"\u003e\u003ccode\u003eebca6bf\u003c/code\u003e\u003c/a\u003e chore: bump to version 3.9.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/0196f02cc9512df8de3c941f87d27bda98f9f7af\"\u003e\u003ccode\u003e0196f02\u003c/code\u003e\u003c/a\u003e build(deps): bump pypa/cibuildwheel from 3.3.1 to 3.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/d157bdc2235a42dc1742936dbb0f5cfc8e4d2eb7\"\u003e\u003ccode\u003ed157bdc\u003c/code\u003e\u003c/a\u003e build(deps): bump docker/setup-qemu-action from 3 to 4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/7fccc0f5066a40dea530512abbf02621f4182b81\"\u003e\u003ccode\u003e7fccc0f\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 6 to 7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/d52a61eb2e6095fc1b9891bfcca44ebfac509e55\"\u003e\u003ccode\u003ed52a61e\u003c/code\u003e\u003c/a\u003e chore: bump dependency libraries\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/b231d726a01d55e07ec3620b2b82f4a2da37ba62\"\u003e\u003ccode\u003eb231d72\u003c/code\u003e\u003c/a\u003e chore: fix building binary images\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/6d76e8479f0f522c2e07ce0e2701030d8fd63785\"\u003e\u003ccode\u003e6d76e84\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg2/issues/1836\"\u003e#1836\u003c/a\u003e from psycopg/fix-1835\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/f7e314c7ab418ab9b9956e694956089a49c5c3b9\"\u003e\u003ccode\u003ef7e314c\u003c/code\u003e\u003c/a\u003e fix: overflow in malformed interval\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/eb905c124b75f2a5183d22177b85af20914b0f17\"\u003e\u003ccode\u003eeb905c1\u003c/code\u003e\u003c/a\u003e docs: replace bare except clause with except Exception\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psycopg/psycopg2/compare/2.9.11...2.9.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn` from 0.35.0 to 0.46.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.46.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003ews_max_size\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2915\"\u003eKludex/uvicorn#2915\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003ews_ping_interval\u003c/code\u003e and \u003ccode\u003ews_ping_timeout\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2916\"\u003eKludex/uvicorn#2916\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ebytearray\u003c/code\u003e for incoming WebSocket message buffer in websockets-sansio by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2917\"\u003eKludex/uvicorn#2917\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.45.0...0.46.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.45.0...0.46.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.45.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve forwarded client ports in proxy headers middleware by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2903\"\u003eKludex/uvicorn#2903\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003eos.PathLike\u003c/code\u003e for \u003ccode\u003elog_config\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2905\"\u003eKludex/uvicorn#2905\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003elog_level\u003c/code\u003e strings case-insensitively by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2907\"\u003eKludex/uvicorn#2907\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRaise helpful \u003ccode\u003eImportError\u003c/code\u003e when PyYAML is missing for YAML log config by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2906\"\u003eKludex/uvicorn#2906\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert empty context for ASGI runs by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2911\"\u003eKludex/uvicorn#2911\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--reset-contextvars\u003c/code\u003e flag to isolate ASGI request context by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2912\"\u003eKludex/uvicorn#2912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert \u0026quot;Emit \u003ccode\u003ehttp.disconnect\u003c/code\u003e on server shutdown for streaming responses\u0026quot; (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2829\"\u003e#2829\u003c/a\u003e) by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2913\"\u003eKludex/uvicorn#2913\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/Krishnachaitanyakc\"\u003e\u003ccode\u003e@​Krishnachaitanyakc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2870\"\u003eKludex/uvicorn#2870\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.44.0...0.45.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.44.0...0.45.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.44.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImplement websocket keepalive pings for websockets-sansio by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2888\"\u003eKludex/uvicorn#2888\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.43.0...0.44.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.43.0...0.44.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.43.0\u003c/h2\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEmit \u003ccode\u003ehttp.disconnect\u003c/code\u003e ASGI \u003ccode\u003ereceive()\u003c/code\u003e event on server shutting down for streaming responses (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2829\"\u003e#2829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse native \u003ccode\u003econtext\u003c/code\u003e parameter for \u003ccode\u003ecreate_task\u003c/code\u003e on Python 3.11+ (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2859\"\u003e#2859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop cast in ASGI types (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2875\"\u003e#2875\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.42.0...0.43.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.42.0...0.43.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.42.0\u003c/h2\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003ebytearray\u003c/code\u003e for request body accumulation to avoid O(n^2) allocation on fragmented bodies (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2845\"\u003e#2845\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixed\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.46.0 (April 23, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003ews_max_size\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2915\"\u003e#2915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003ews_ping_interval\u003c/code\u003e and \u003ccode\u003ews_ping_timeout\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2916\"\u003e#2916\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003ebytearray\u003c/code\u003e for incoming WebSocket message buffer in \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2917\"\u003e#2917\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.45.0 (April 21, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--reset-contextvars\u003c/code\u003e flag to isolate ASGI request context (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2912\"\u003e#2912\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003eos.PathLike\u003c/code\u003e for \u003ccode\u003elog_config\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2905\"\u003e#2905\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003elog_level\u003c/code\u003e strings case-insensitively (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2907\"\u003e#2907\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRevert \u0026quot;Emit \u003ccode\u003ehttp.disconnect\u003c/code\u003e on server shutdown for streaming responses\u0026quot; (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2913\"\u003e#2913\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRevert \u0026quot;Explicitly start ASGI run with empty context\u0026quot; (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2911\"\u003e#2911\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve forwarded client ports in proxy headers middleware (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2903\"\u003e#2903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRaise helpful \u003ccode\u003eImportError\u003c/code\u003e when PyYAML is missing for YAML log config (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2906\"\u003e#2906\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.44.0 (April 6, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement websocket keepalive pings for websockets-sansio (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2888\"\u003e#2888\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.43.0 (April 3, 2026)\u003c/h2\u003e\n\u003cp\u003eYou can quit Uvicorn now. We heard you, \u003ca href=\"https://github.com/pamelafox\"\u003e\u003ccode\u003e@​pamelafox\u003c/code\u003e\u003c/a\u003e - all 47 of your Ctrl+C's (thanks for flagging it, and thanks to \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e for the fix 🙏). \u003ca href=\"https://x.com/pamelafox/status/2039097686155227623\"\u003eSee the tweet\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEmit \u003ccode\u003ehttp.disconnect\u003c/code\u003e ASGI \u003ccode\u003ereceive()\u003c/code\u003e event on server shutting down for streaming responses (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2829\"\u003e#2829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse native \u003ccode\u003econtext\u003c/code\u003e parameter for \u003ccode\u003ecreate_task\u003c/code\u003e on Python 3.11+ (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2859\"\u003e#2859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop cast in ASGI types (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2875\"\u003e#2875\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.42.0 (March 16, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003ebytearray\u003c/code\u003e for request body accumulation to avoid O(n^2) allocation on fragmented bodies (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2845\"\u003e#2845\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/b224045f5900b7f766743bcb16ba9fc3adea2606\"\u003e\u003ccode\u003eb224045\u003c/code\u003e\u003c/a\u003e Version 0.46.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2918\"\u003e#2918\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/7375b5bf66d962186d663e85615d4b4d956bf880\"\u003e\u003ccode\u003e7375b5b\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003ebytearray\u003c/code\u003e for incoming WebSocket message buffer in websockets-sansio (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/d438fb16fe2d23c7bbc2ca7094645cff1f116458\"\u003e\u003ccode\u003ed438fb1\u003c/code\u003e\u003c/a\u003e Support \u003ccode\u003ews_ping_interval\u003c/code\u003e and \u003ccode\u003ews_ping_timeout\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3e6b96446653d0156434bce529a14c80764c9eda\"\u003e\u003ccode\u003e3e6b964\u003c/code\u003e\u003c/a\u003e Support \u003ccode\u003ews_max_size\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2915\"\u003e#2915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/2c423bd82be169459ea254a61476de34767e0326\"\u003e\u003ccode\u003e2c423bd\u003c/code\u003e\u003c/a\u003e Version 0.45.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2914\"\u003e#2914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/7f027f8e25e47668a9c2ce8b5c21b35054c48d02\"\u003e\u003ccode\u003e7f027f8\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Emit \u003ccode\u003ehttp.disconnect\u003c/code\u003e on server shutdown for streaming responses\u0026quot; (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/73a80c3cc87de269ed016e584a25e585ae6f2b44\"\u003e\u003ccode\u003e73a80c3\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003e--reset-contextvars\u003c/code\u003e flag to isolate ASGI request context (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2912\"\u003e#2912\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/45c0b568d38e9bf4f2f036bc2d79eb98b0e72f72\"\u003e\u003ccode\u003e45c0b56\u003c/code\u003e\u003c/a\u003e Revert empty context for ASGI runs (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2911\"\u003e#2911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/850d92656de0cb5859ee5f6ba252e19ad3d38989\"\u003e\u003ccode\u003e850d926\u003c/code\u003e\u003c/a\u003e Raise helpful \u003ccode\u003eImportError\u003c/code\u003e when PyYAML is missing for YAML log config (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2906\"\u003e#2906\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/fdcacb4b83bc686ea1ba9e50ffe5b8cfe49b3e00\"\u003e\u003ccode\u003efdcacb4\u003c/code\u003e\u003c/a\u003e Accept \u003ccode\u003elog_level\u003c/code\u003e strings case-insensitively (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2907\"\u003e#2907\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.35.0...0.46.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.3.1 to 8.3.3\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.3\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.3 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.3/\"\u003ehttps://pypi.org/project/click/8.3.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-3\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-3\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/30\"\u003ehttps://github.com/pallets/click/milestone/30\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse :func:\u003ccode\u003eshlex.split\u003c/code\u003e to split pager and editor commands into \u003ccode\u003eargv\u003c/code\u003e\nlists for :class:\u003ccode\u003esubprocess.Popen\u003c/code\u003e, removing \u003ccode\u003eshell=True\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/1026\"\u003e#1026\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/1477\"\u003e#1477\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2775\"\u003e#2775\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eTypeError\u003c/code\u003e when rendering help for an option whose default value is\nan object that doesn't support equality comparison with strings, such as\n\u003ccode\u003esemver.Version\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3298\"\u003e#3298\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3299\"\u003e#3299\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix pager test pollution under parallel execution by using pytest's\n\u003ccode\u003etmp_path\u003c/code\u003e fixture instead of a shared temporary file path. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3238\"\u003e#3238\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values in a \u003ccode\u003edefault_map\u003c/code\u003e as absent, so they fall\nthrough to the next default source instead of being used as the value.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3224\"\u003e#3224\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3240\"\u003e#3240\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePatch \u003ccode\u003epdb.Pdb\u003c/code\u003e in \u003ccode\u003eCliRunner\u003c/code\u003e isolation so \u003ccode\u003epdb.set_trace()\u003c/code\u003e,\n\u003ccode\u003ebreakpoint()\u003c/code\u003e, and debuggers subclassing \u003ccode\u003epdb.Pdb\u003c/code\u003e (ipdb, pdbpp) can\ninteract with the real terminal instead of the captured I/O streams.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/654\"\u003e#654\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/824\"\u003e#824\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/843\"\u003e#843\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/951\"\u003e#951\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3235\"\u003e#3235\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd optional randomized parallel test execution using \u003ccode\u003epytest-randomly\u003c/code\u003e and\n\u003ccode\u003epytest-xdist\u003c/code\u003e to detect test pollution and race conditions. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3151\"\u003e#3151\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd contributor documentation for running stress tests, randomized\nparallel tests, and Flask smoke tests. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3151\"\u003e#3151\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3177\"\u003e#3177\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eShow custom \u003ccode\u003eshow_default\u003c/code\u003e string in prompts, matching the existing\nhelp text behavior. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2836\"\u003e#2836\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2837\"\u003e#2837\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3165\"\u003e#3165\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3262\"\u003e#3262\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3280\"\u003e#3280\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3328\"\u003e#3328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003edefault=True\u003c/code\u003e with boolean \u003ccode\u003eflag_value\u003c/code\u003e always returning the\n\u003ccode\u003eflag_value\u003c/code\u003e instead of \u003ccode\u003eTrue\u003c/code\u003e. The \u003ccode\u003edefault=True\u003c/code\u003e to \u003ccode\u003eflag_value\u003c/code\u003e\nsubstitution now only applies to non-boolean flags, where \u003ccode\u003eTrue\u003c/code\u003e acts as a\nsentinel meaning \u0026quot;activate this flag by default\u0026quot;. For boolean flags,\n\u003ccode\u003edefault=True\u003c/code\u003e is returned as a literal value. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3111\"\u003e#3111\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3239\"\u003e#3239\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark \u003ccode\u003emake_default_short_help\u003c/code\u003e as private API. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3189\"\u003e#3189\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3250\"\u003e#3250\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCliRunner\u003c/code\u003e's redirected streams now expose the original file descriptor\nvia \u003ccode\u003efileno()\u003c/code\u003e, so that \u003ccode\u003efaulthandler\u003c/code\u003e, \u003ccode\u003esubprocess\u003c/code\u003e, and other\nC-level consumers no longer crash with \u003ccode\u003eio.UnsupportedOperation\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/2865\"\u003e#2865\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange :class:\u003ccode\u003eParameterSource\u003c/code\u003e to an :class:\u003ccode\u003e~enum.IntEnum\u003c/code\u003e and reorder\nits members from most to least explicit, so values can be compared to\ncheck whether a parameter was explicitly provided. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2879\"\u003e#2879\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3248\"\u003e#3248\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.3.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.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.3.2/\"\u003ehttps://pypi.org/project/click/8.3.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-2\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/29\"\u003ehttps://github.com/pallets/click/milestone/29\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.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-04-20\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse :func:\u003ccode\u003eshlex.split\u003c/code\u003e to split pager and editor commands into \u003ccode\u003eargv\u003c/code\u003e\nlists for :class:\u003ccode\u003esubprocess.Popen\u003c/code\u003e, removing \u003ccode\u003eshell=True\u003c/code\u003e.\n:issue:\u003ccode\u003e1026\u003c/code\u003e :pr:\u003ccode\u003e1477\u003c/code\u003e :pr:\u003ccode\u003e2775\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eTypeError\u003c/code\u003e when rendering help for an option whose default value is\nan object that doesn't support equality comparison with strings, such as\n\u003ccode\u003esemver.Version\u003c/code\u003e. :issue:\u003ccode\u003e3298\u003c/code\u003e :pr:\u003ccode\u003e3299\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix pager test pollution under parallel execution by using pytest's\n\u003ccode\u003etmp_path\u003c/code\u003e fixture instead of a shared temporary file path. :pr:\u003ccode\u003e3238\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values in a \u003ccode\u003edefault_map\u003c/code\u003e as absent, so they fall\nthrough to the next default source instead of being used as the value.\n:issue:\u003ccode\u003e3224\u003c/code\u003e :pr:\u003ccode\u003e3240\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ePatch \u003ccode\u003epdb.Pdb\u003c/code\u003e in \u003ccode\u003eCliRunner\u003c/code\u003e isolation so \u003ccode\u003epdb.set_trace()\u003c/code\u003e,\n\u003ccode\u003ebreakpoint()\u003c/code\u003e, and debuggers subclassing \u003ccode\u003epdb.Pdb\u003c/code\u003e (ipdb, pdbpp) can\ninteract with the real terminal instead of the captured I/O streams.\n:issue:\u003ccode\u003e654\u003c/code\u003e :issue:\u003ccode\u003e824\u003c/code\u003e :issue:\u003ccode\u003e843\u003c/code\u003e :pr:\u003ccode\u003e951\u003c/code\u003e :pr:\u003ccode\u003e3235\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd optional randomized parallel test execution using \u003ccode\u003epytest-randomly\u003c/code\u003e and\n\u003ccode\u003epytest-xdist\u003c/code\u003e to detect test pollution and race conditions. :pr:\u003ccode\u003e3151\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd contributor documentation for running stress tests, randomized\nparallel tests, and Flask smoke tests. :pr:\u003ccode\u003e3151\u003c/code\u003e :pr:\u003ccode\u003e3177\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eShow custom \u003ccode\u003eshow_default\u003c/code\u003e string in prompts, matching the existing\nhelp text behavior. :issue:\u003ccode\u003e2836\u003c/code\u003e :pr:\u003ccode\u003e2837\u003c/code\u003e :pr:\u003ccode\u003e3165\u003c/code\u003e :pr:\u003ccode\u003e3262\u003c/code\u003e :pr:\u003ccode\u003e3280\u003c/code\u003e\n:pr:\u003ccode\u003e3328\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003edefault=True\u003c/code\u003e with boolean \u003ccode\u003eflag_value\u003c/code\u003e always returning the\n\u003ccode\u003eflag_value\u003c/code\u003e instead of \u003ccode\u003eTrue\u003c/code\u003e. The \u003ccode\u003edefault=True\u003c/code\u003e to \u003ccode\u003eflag_value\u003c/code\u003e\nsubstitution now only applies to non-boolean flags, where \u003ccode\u003eTrue\u003c/code\u003e acts as a\nsentinel meaning \u0026quot;activate this flag by default\u0026quot;. For boolean flags,\n\u003ccode\u003edefault=True\u003c/code\u003e is returned as a literal value. :issue:\u003ccode\u003e3111\u003c/code\u003e :pr:\u003ccode\u003e3239\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark \u003ccode\u003emake_default_short_help\u003c/code\u003e as private API. :issue:\u003ccode\u003e3189\u003c/code\u003e :pr:\u003ccode\u003e3250\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCliRunner\u003c/code\u003e's redirected streams now expose the original file descriptor\nvia \u003ccode\u003efileno()\u003c/code\u003e, so that \u003ccode\u003efaulthandler\u003c/code\u003e, \u003ccode\u003esubprocess\u003c/code\u003e, and other\nC-level consumers no longer crash with \u003ccode\u003eio.UnsupportedOperation\u003c/code\u003e.\n:issue:\u003ccode\u003e2865\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eChange :class:\u003ccode\u003eParameterSource\u003c/code\u003e to an :class:\u003ccode\u003e~enum.IntEnum\u003c/code\u003e and reorder\nits members from most to least explicit, so values can be compared to\ncheck whether a parameter was explicitly provided. :issue:\u003ccode\u003e2879\u003c/code\u003e :pr:\u003ccode\u003e3248\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.3.2\u003c/h2\u003e\n\u003cp\u003eReleased 2026-04-02\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eflag_value\u003c/code\u003e when \u003ccode\u003eis_flag=False\u003c/code\u003e to allow such options to be\nused without an explicit value. :issue:\u003ccode\u003e3084\u003c/code\u003e :pr:\u003ccode\u003e3152\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when using \u003ccode\u003elookup_default()\u003c/code\u003e.\n:issue:\u003ccode\u003e3136\u003c/code\u003e :pr:\u003ccode\u003e3199\u003c/code\u003e :pr:\u003ccode\u003e3202\u003c/code\u003e :pr:\u003ccode\u003e3209\u003c/code\u003e :pr:\u003ccode\u003e3212\u003c/code\u003e :pr:\u003ccode\u003e3224\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/c06d2d0a6aee6bcc50bd8257be2a4a592f4e75d0\"\u003e\u003ccode\u003ec06d2d0\u003c/code\u003e\u003c/a\u003e Release 8.3.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/f1f191ecd2c790b161187c78e7c88440e9524e5c\"\u003e\u003ccode\u003ef1f191e\u003c/code\u003e\u003c/a\u003e Apply format guidelines to commits since latest 8.3.2 release (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3343\"\u003e#3343\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/bb59ba0fd279ca085d1113f0499b6a602ca31081\"\u003e\u003ccode\u003ebb59ba0\u003c/code\u003e\u003c/a\u003e Apply format guidelines to commits since latest 8.3.2 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/4a352253c9ff013e36d11e4a6820d36d00ff2cd4\"\u003e\u003ccode\u003e4a35225\u003c/code\u003e\u003c/a\u003e Reduce blast-radius of \u003ccode\u003eUNSET\u003c/code\u003e in \u003ccode\u003edefault_map\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3240\"\u003e#3240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/c07bb936de43fd303f9cfbefe248ab23fd2199c8\"\u003e\u003ccode\u003ec07bb93\u003c/code\u003e\u003c/a\u003e Merge branch 'stable' into unset-in-default-map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/c7e1ba8448cbcb2cdd9c1c7f4a592e863dcc3995\"\u003e\u003ccode\u003ec7e1ba8\u003c/code\u003e\u003c/a\u003e Reorder \u003ccode\u003eParameterSource\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3248\"\u003e#3248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/76552ff1e8c85837f911fc34037e702ae4327eda\"\u003e\u003ccode\u003e76552ff\u003c/code\u003e\u003c/a\u003e Show default string in prompt (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3328\"\u003e#3328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/ac5cec5fe54e5a691e7bac17f441ce9498e0744c\"\u003e\u003ccode\u003eac5cec5\u003c/code\u003e\u003c/a\u003e Reorder ParameterSource from most to least explicit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/8c452e00e6772931b7071d9316b82b77e5b8f280\"\u003e\u003ccode\u003e8c452e0\u003c/code\u003e\u003c/a\u003e Merge branch 'stable' into show-default-string-in-prompt\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/8c95c73bd5ef89eac638f85f1904a104ba4b1a32\"\u003e\u003ccode\u003e8c95c73\u003c/code\u003e\u003c/a\u003e Reconcile default value passing and default activation (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3239\"\u003e#3239\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.3.1...8.3.3\"\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.46 to 2.0.49\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.49\u003c/h1\u003e\n\u003cp\u003eReleased: April 3, 2026\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 \u003ccode\u003e_orm.Session.get()\u003c/code\u003e would bypass the identity map\nand emit unnecessary SQL when \u003ccode\u003ewith_for_update=False\u003c/code\u003e was passed,\nrather than treating it equivalently to the default of \u003ccode\u003eNone\u003c/code\u003e.\nPull request courtesy of Joshua Swanson.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13176\"\u003e#13176\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 chained \u003ccode\u003e_orm.joinedload()\u003c/code\u003e options would not be\napplied correctly when the final relationship in the chain is declared on a\nbase mapper and accessed through a subclass mapper in a\n\u003ccode\u003e_orm.with_polymorphic()\u003c/code\u003e query. The path registry now correctly\ncomputes the natural path when a property declared on a base class is\naccessed through a path containing a subclass mapper, ensuring the loader\noption can be located during query compilation.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13193\"\u003e#13193\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug] [inheritance]\u003c/strong\u003e Fixed issue where using \u003ccode\u003e_orm.Load.options()\u003c/code\u003e to apply a chained loader\noption such as \u003ccode\u003e_orm.joinedload()\u003c/code\u003e or \u003ccode\u003e_orm.selectinload()\u003c/code\u003e with\n\u003ccode\u003e_orm.PropComparator.of_type()\u003c/code\u003e for a polymorphic relationship would\nnot generate the necessary clauses for the polymorphic subclasses. The\npolymorphic loading strategy is now correctly propagated when using a call\nsuch as \u003ccode\u003ejoinedload(A.b).options(joinedload(B.c.of_type(poly)))\u003c/code\u003e to match\nthe behavior of direct chaining e.g.\n\u003ccode\u003ejoinedload(A.b).joinedload(B.c.of_type(poly))\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13202\"\u003e#13202\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug] [inheritance]\u003c/strong\u003e Fixed issue where using chained loader options such as\n\u003ccode\u003e_orm.selectinload()\u003c/code\u003e after \u003ccode\u003e_orm.joinedload()\u003c/code\u003e with\n\u003ccode\u003e_orm.PropComparator.of_type()\u003c/code\u003e for a polymorphic relationship would\nnot properly apply the chained loader option. The loader option is now\ncorrectly applied when using a call such as\n\u003ccode\u003ejoinedload(A.b.of_type(poly)).selectinload(poly.SubClass.c)\u003c/code\u003e to eagerly\nload related objects.\u003c/p\u003e\n\u003c...\n\n_Description has been truncated_","html_url":"https://github.com/MinBZK/amt/pull/731","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/MinBZK%2Famt/issues/731","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/731/packages"},{"uuid":"4405549370","node_id":"PR_kwDOAh2bWs7ZfMqk","number":40106,"state":"closed","title":"build(deps-dev): bump build from 1.4.3 to 1.4.4","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-08T10:07:57.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-08T10:04:39.000Z","updated_at":"2026-05-08T10:07:59.000Z","time_to_close":198,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps-dev)","packages":[{"name":"build","old_version":"1.4.3","new_version":"1.4.4","repository_url":"https://github.com/pypa/build"}],"path":null,"ecosystem":"pip"},"body":"Bumps [build](https://github.com/pypa/build) from 1.4.3 to 1.4.4.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/releases\"\u003ebuild's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.4\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(release): generate consistent CHANGELOG heading levels by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1032\"\u003epypa/build#1032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: move source links by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1034\"\u003epypa/build#1034\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erevert: drop PEP 660 change by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1039\"\u003epypa/build#1039\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: ignore installed when running pip by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1040\"\u003epypa/build#1040\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: revert part of \u003ca href=\"https://redirect.github.com/pypa/build/issues/973\"\u003e#973\u003c/a\u003e by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1044\"\u003epypa/build#1044\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: report coverage failure lines by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1046\"\u003epypa/build#1046\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: fix issue with uv run by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1048\"\u003epypa/build#1048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: reorganize testing docs for copy/paste by \u003ca href=\"https://github.com/abitrolly\"\u003e\u003ccode\u003e@​abitrolly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1043\"\u003epypa/build#1043\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: keep environment from leaking in Python 3.15 by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1049\"\u003epypa/build#1049\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix issue with changelog generation by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1050\"\u003epypa/build#1050\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.3...1.4.4\"\u003ehttps://github.com/pypa/build/compare/1.4.3...1.4.4\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e####################\n1.5.0 (2026-04-30)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.9 support - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1036\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003e--ignore-installed\u003c/code\u003e opt-in from the API via \u003ccode\u003efresh=True\u003c/code\u003e - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1056\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1033\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.4 (2026-04-22)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eFix release pipeline generating \u003ccode\u003eCHANGELOG.rst\u003c/code\u003e entries with inconsistent heading levels, which broke \u003ccode\u003esphinx -W\u003c/code\u003e\nand pinned Read the Docs \u003ccode\u003estable\u003c/code\u003e at 1.4.0 - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e1031\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRevert :pr:\u003ccode\u003e1039\u003c/code\u003e from build 1.4.3, no longer check direct_url (for now) - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1039\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--ignore-installed\u003c/code\u003e to pip install command to prevent issues with packages already present in the isolated\nbuild environment - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1037\u003c/code\u003e) (:issue:\u003ccode\u003e1040\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePartial revert of :pr:\u003ccode\u003e973\u003c/code\u003e, keeping log messages in one entry, multiple lines. (:issue:\u003ccode\u003e1044\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1048\u003c/code\u003e, :issue:\u003ccode\u003e1049\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.3 (2026-04-10)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/70666a296c2e5bb7451f5a04eef259f6f943d0de\"\u003e\u003ccode\u003e70666a2\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/653d86586dea8b4e020086a276a15a27ac7bd25d\"\u003e\u003ccode\u003e653d865\u003c/code\u003e\u003c/a\u003e docs: fix issue with changelog generation (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1050\"\u003e#1050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/373b9ee171e2f16353365b1a9a02bc408b96ca73\"\u003e\u003ccode\u003e373b9ee\u003c/code\u003e\u003c/a\u003e tests: keep environment from leaking in Python 3.15 (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1049\"\u003e#1049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/e37e2ae697f9dde82709affb9356281fc2a9b98b\"\u003e\u003ccode\u003ee37e2ae\u003c/code\u003e\u003c/a\u003e docs: reorganize testing docs for copy/paste (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1043\"\u003e#1043\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/e9c194ad54413f1923f727ad07c7faf7dff813c0\"\u003e\u003ccode\u003ee9c194a\u003c/code\u003e\u003c/a\u003e tests: fix issue with uv run (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1048\"\u003e#1048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/03b7d7032ae636be992c917c67f8efbf99527c62\"\u003e\u003ccode\u003e03b7d70\u003c/code\u003e\u003c/a\u003e chore: report coverage failure lines (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1046\"\u003e#1046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/2afa3b59977c7e08dc526f19ab670edf99ce6051\"\u003e\u003ccode\u003e2afa3b5\u003c/code\u003e\u003c/a\u003e fix: revert part of \u003ca href=\"https://redirect.github.com/pypa/build/issues/973\"\u003e#973\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1044\"\u003e#1044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b336f60e8008791b7c492078a0725fdadc5875e8\"\u003e\u003ccode\u003eb336f60\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1045\"\u003e#1045\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/6d8039a4503caa2327657eb288c6ce01dabc3eb7\"\u003e\u003ccode\u003e6d8039a\u003c/code\u003e\u003c/a\u003e fix: ignore installed when running pip (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1040\"\u003e#1040\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/ebf6eba272c732ae7e3136edc78ac2597035edd9\"\u003e\u003ccode\u003eebf6eba\u003c/code\u003e\u003c/a\u003e revert: drop PEP 660 change (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1039\"\u003e#1039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.4.3...1.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=build\u0026package-manager=pip\u0026previous-version=1.4.3\u0026new-version=1.4.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/cowrie/cowrie/pull/40106","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/cowrie%2Fcowrie/issues/40106","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/40106/packages"},{"uuid":"4404007221","node_id":"PR_kwDOLzxzKM7ZaFVT","number":323,"state":"open","title":"chore(deps): bump the dependencies group across 2 directories with 47 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":["matmair"],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-08T05:28:38.000Z","updated_at":"2026-05-08T05:31:32.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"dependencies","update_count":47,"packages":[{"name":"bleach","old_version":"4.1.0","new_version":"6.3.0","repository_url":"https://github.com/mozilla/bleach"},{"name":"boto3","old_version":"1.42.87","new_version":"1.43.1","repository_url":"https://github.com/boto/boto3"},{"name":"botocore","old_version":"1.42.87","new_version":"1.43.1","repository_url":"https://github.com/boto/botocore"},{"name":"certifi","old_version":"2026.2.25","new_version":"2026.4.22","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cryptography","old_version":"46.0.7","new_version":"47.0.0","repository_url":"https://github.com/pyca/cryptography"},{"name":"django","old_version":"5.2.13","new_version":"6.0.4","repository_url":"https://github.com/django/django"},{"name":"django-allauth","old_version":"65.14.3","new_version":"65.16.1","repository_url":"https://github.com/sponsors/pennersr"},{"name":"django-anymail","old_version":"14.0","new_version":"15.0","repository_url":"https://github.com/anymail/django-anymail"},{"name":"django-otp","old_version":"1.3.0","new_version":"1.7.0","repository_url":"https://github.com/django-otp/django-otp"},{"name":"dulwich","old_version":"1.1.0","new_version":"1.2.1","repository_url":"https://github.com/dulwich/dulwich"},{"name":"fido2","old_version":"2.1.1","new_version":"2.2.0","repository_url":"https://github.com/Yubico/python-fido2"},{"name":"icalendar","old_version":"7.0.3","new_version":"7.1.0","repository_url":"https://github.com/collective/icalendar"},{"name":"idna","old_version":"3.11","new_version":"3.13","repository_url":"https://github.com/kjd/idna"},{"name":"importlib-metadata","old_version":"8.7.1","new_version":"9.0.0","repository_url":"https://github.com/python/importlib_metadata"},{"name":"lxml","old_version":"6.0.3","new_version":"6.1.0","repository_url":"https://github.com/lxml/lxml"},{"name":"nh3","old_version":"0.3.4","new_version":"0.3.5","repository_url":"https://github.com/messense/nh3"},{"name":"opentelemetry-exporter-otlp-proto-common","old_version":"1.40.0","new_version":"1.41.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.40.0","new_version":"1.41.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-http","old_version":"1.40.0","new_version":"1.41.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.61b0","new_version":"0.62b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-dbapi","old_version":"0.61b0","new_version":"0.62b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.40.0","new_version":"1.41.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.61b0","new_version":"0.62b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.61b0","new_version":"0.62b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"packaging","old_version":"26.0","new_version":"26.2","repository_url":"https://github.com/pypa/packaging"},{"name":"protobuf","old_version":"6.33.6","new_version":"7.34.1","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"s3transfer","old_version":"0.16.0","new_version":"0.17.0","repository_url":"https://github.com/boto/s3transfer"},{"name":"sentry-sdk","old_version":"2.57.0","new_version":"2.58.0","repository_url":"https://github.com/getsentry/sentry-python"},{"name":"tzdata","old_version":"2026.1","new_version":"2026.2","repository_url":"https://github.com/python/tzdata"},{"name":"wrapt","old_version":"1.17.3","new_version":"2.1.2","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"zipp","old_version":"3.23.0","new_version":"3.23.1","repository_url":"https://github.com/jaraco/zipp"},{"name":"build","old_version":"1.4.2","new_version":"1.5.0","repository_url":"https://github.com/pypa/build"},{"name":"click","old_version":"8.3.2","new_version":"8.3.3","repository_url":"https://github.com/pallets/click"},{"name":"django-stubs","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/typeddjango/django-stubs"},{"name":"django-stubs-ext","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/typeddjango/django-stubs"},{"name":"django-types","old_version":"0.23.0","new_version":"0.24.0","repository_url":"https://github.com/sbdchd/django-types"},{"name":"filelock","old_version":"3.25.2","new_version":"3.29.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"identify","old_version":"2.6.18","new_version":"2.6.19","repository_url":"https://github.com/pre-commit/identify"},{"name":"pip","old_version":"26.0.1","new_version":"26.1","repository_url":"https://github.com/pypa/pip"},{"name":"pre-commit","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"pytest-codspeed","old_version":"4.3.0","new_version":"4.5.0","repository_url":"https://github.com/CodSpeedHQ/pytest-codspeed"},{"name":"rich","old_version":"14.3.3","new_version":"15.0.0","repository_url":"https://github.com/Textualize/rich"},{"name":"ty","old_version":"0.0.1a21","new_version":"0.0.33","repository_url":"https://github.com/astral-sh/ty"},{"name":"types-psycopg2","old_version":"2.9.21.20260408","new_version":"2.9.21.20260422","repository_url":"https://github.com/python/typeshed"},{"name":"virtualenv","old_version":"21.2.1","new_version":"21.3.0","repository_url":"https://github.com/pypa/virtualenv"},{"name":"wheel","old_version":"0.46.3","new_version":"0.47.0","repository_url":"https://github.com/pypa/wheel"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dependencies group with 1 update in the /docs directory: [mkdocstrings](https://github.com/mkdocstrings/mkdocstrings).\nBumps the dependencies group with 46 updates in the /src/backend directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [bleach](https://github.com/mozilla/bleach) | `4.1.0` | `6.3.0` |\n| [boto3](https://github.com/boto/boto3) | `1.42.87` | `1.43.1` |\n| [botocore](https://github.com/boto/botocore) | `1.42.87` | `1.43.1` |\n| [certifi](https://github.com/certifi/python-certifi) | `2026.2.25` | `2026.4.22` |\n| [cryptography](https://github.com/pyca/cryptography) | `46.0.7` | `47.0.0` |\n| [django](https://github.com/django/django) | `5.2.13` | `6.0.4` |\n| [django-allauth](https://github.com/sponsors/pennersr) | `65.14.3` | `65.16.1` |\n| [django-anymail](https://github.com/anymail/django-anymail) | `14.0` | `15.0` |\n| [django-otp](https://github.com/django-otp/django-otp) | `1.3.0` | `1.7.0` |\n| [dulwich](https://github.com/dulwich/dulwich) | `1.1.0` | `1.2.1` |\n| [fido2](https://github.com/Yubico/python-fido2) | `2.1.1` | `2.2.0` |\n| [icalendar](https://github.com/collective/icalendar) | `7.0.3` | `7.1.0` |\n| [idna](https://github.com/kjd/idna) | `3.11` | `3.13` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `8.7.1` | `9.0.0` |\n| [lxml](https://github.com/lxml/lxml) | `6.0.3` | `6.1.0` |\n| [nh3](https://github.com/messense/nh3) | `0.3.4` | `0.3.5` |\n| [opentelemetry-exporter-otlp-proto-common](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.41.1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.41.1` |\n| [opentelemetry-exporter-otlp-proto-http](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.41.1` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.62b1` |\n| [opentelemetry-instrumentation-dbapi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.62b1` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.41.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.61b0` | `0.62b1` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.62b1` |\n| [packaging](https://github.com/pypa/packaging) | `26.0` | `26.2` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `6.33.6` | `7.34.1` |\n| [s3transfer](https://github.com/boto/s3transfer) | `0.16.0` | `0.17.0` |\n| [sentry-sdk](https://github.com/getsentry/sentry-python) | `2.57.0` | `2.58.0` |\n| [tzdata](https://github.com/python/tzdata) | `2026.1` | `2026.2` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.3` | `2.1.2` |\n| [zipp](https://github.com/jaraco/zipp) | `3.23.0` | `3.23.1` |\n| [build](https://github.com/pypa/build) | `1.4.2` | `1.5.0` |\n| [click](https://github.com/pallets/click) | `8.3.2` | `8.3.3` |\n| [django-stubs](https://github.com/typeddjango/django-stubs) | `6.0.2` | `6.0.3` |\n| [django-stubs-ext](https://github.com/typeddjango/django-stubs) | `6.0.2` | `6.0.3` |\n| [django-types](https://github.com/sbdchd/django-types) | `0.23.0` | `0.24.0` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.25.2` | `3.29.0` |\n| [identify](https://github.com/pre-commit/identify) | `2.6.18` | `2.6.19` |\n| [pip](https://github.com/pypa/pip) | `26.0.1` | `26.1` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.5.1` | `4.6.0` |\n| [pytest-codspeed](https://github.com/CodSpeedHQ/pytest-codspeed) | `4.3.0` | `4.5.0` |\n| [rich](https://github.com/Textualize/rich) | `14.3.3` | `15.0.0` |\n| [ty](https://github.com/astral-sh/ty) | `0.0.1a21` | `0.0.33` |\n| [types-psycopg2](https://github.com/python/typeshed) | `2.9.21.20260408` | `2.9.21.20260422` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `21.2.1` | `21.3.0` |\n| [wheel](https://github.com/pypa/wheel) | `0.46.3` | `0.47.0` |\n\n\nUpdates `mkdocstrings` from 1.0.3 to 1.0.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/releases\"\u003emkdocstrings's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.0.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/releases/tag/1.0.4\"\u003e1.0.4\u003c/a\u003e - 2026-04-15\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/compare/1.0.3...1.0.4\"\u003eCompare with 1.0.3\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd timeout when downloading inventories (10 seconds) (\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/3d1969a279ea396792c682810d029503e48d8fcd\"\u003e3d1969a\u003c/a\u003e by Simon Lloyd). \u003ca href=\"https://redirect.github.com/mkdocstrings/mkdocstrings/issues/819\"\u003eIssue-819\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/blob/main/CHANGELOG.md\"\u003emkdocstrings's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/releases/tag/1.0.4\"\u003e1.0.4\u003c/a\u003e - 2026-04-15\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/compare/1.0.3...1.0.4\"\u003eCompare with 1.0.3\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd timeout when downloading inventories (10 seconds) (\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/3d1969a279ea396792c682810d029503e48d8fcd\"\u003e3d1969a\u003c/a\u003e by Simon Lloyd). \u003ca href=\"https://redirect.github.com/mkdocstrings/mkdocstrings/issues/819\"\u003eIssue-819\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/a938528b51b42cde52465d06d8b1a52484837366\"\u003e\u003ccode\u003ea938528\u003c/code\u003e\u003c/a\u003e chore: Prepare release 1.0.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/1eaa2242ec33e4b6ce666f0bbc25391f2a72c1d2\"\u003e\u003ccode\u003e1eaa224\u003c/code\u003e\u003c/a\u003e ci: Lint and type-check\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/80e090d0bfbfa5688639e78559a4bb7bd3f7a55b\"\u003e\u003ccode\u003e80e090d\u003c/code\u003e\u003c/a\u003e Merge branch 'main' of github.com:mkdocstrings/mkdocstrings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/5f82a5822c50dc928ee4a133c1445543d3afa393\"\u003e\u003ccode\u003e5f82a58\u003c/code\u003e\u003c/a\u003e chore: Template upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/3d1969a279ea396792c682810d029503e48d8fcd\"\u003e\u003ccode\u003e3d1969a\u003c/code\u003e\u003c/a\u003e fix: Add timeout when downloading inventories (10 seconds)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/a0c47b9992416cf02b8dfc7a76a6c5503e98cd9c\"\u003e\u003ccode\u003ea0c47b9\u003c/code\u003e\u003c/a\u003e docs: Fix broken link in README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/e500a2b416656ede76aac316304415e428dd0aa1\"\u003e\u003ccode\u003ee500a2b\u003c/code\u003e\u003c/a\u003e chore: Update sponsors section in README\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/compare/1.0.3...1.0.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bleach` from 4.1.0 to 6.3.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mozilla/bleach/blob/main/CHANGES\"\u003ebleach's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.3.0 (October 27th, 2025)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBackwards incompatible changes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/756\"\u003e#756\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eNone\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/758\"\u003e#758\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix wbr handling. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/488\"\u003e#488\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 6.2.0 (October 29th, 2024)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBackwards incompatible changes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.8. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/737\"\u003e#737\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eNone\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.13. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/736\"\u003e#736\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove six depdenncy. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/618\"\u003e#618\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate known-good versions for tinycss2. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/732\"\u003e#732\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix additional \u0026lt; followed by characters and EOF issues. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/728\"\u003e#728\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 6.1.0 (October 6th, 2023)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBackwards incompatible changes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.7. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/709\"\u003e#709\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eNone\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.12. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/710\"\u003e#710\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/mozilla/bleach/commit/5546d5dbce60d08ccb99d981778d74044d646d4e\"\u003e\u003ccode\u003e5546d5d\u003c/code\u003e\u003c/a\u003e chore: prep for 6.3.0 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/88df3ff23fb2a43e174b3fdfe9191ef516de868a\"\u003e\u003ccode\u003e88df3ff\u003c/code\u003e\u003c/a\u003e chore: fix readthedocs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/d8b2fb45b2606515c58787c223d6605c6c70868f\"\u003e\u003ccode\u003ed8b2fb4\u003c/code\u003e\u003c/a\u003e fix: fix wbr handling (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/488\"\u003e#488\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/55e48cedb20bda23940ab34753a1fb378d5d30b9\"\u003e\u003ccode\u003e55e48ce\u003c/code\u003e\u003c/a\u003e chore: add support for Python 3.14 (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/758\"\u003e#758\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/a4d6cddac6e338c3d6f84c755a5fcb32e9e18fba\"\u003e\u003ccode\u003ea4d6cdd\u003c/code\u003e\u003c/a\u003e chore: drop support for Python 3.9 (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/756\"\u003e#756\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/172d92faef543a83c6760c63c32749586cdd564b\"\u003e\u003ccode\u003e172d92f\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.6.0 to 6.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/df88612f2e9daf8f4ee23cf0e29b712d9d9147b6\"\u003e\u003ccode\u003edf88612\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.2 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/cbcf6b18d19aeb7777699f9385013d0a04052b68\"\u003e\u003ccode\u003ecbcf6b1\u003c/code\u003e\u003c/a\u003e Bump actions/cache from 4.2.3 to 4.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/d9aa7ef592d57dda56e26ba31d06e1b279c58eca\"\u003e\u003ccode\u003ed9aa7ef\u003c/code\u003e\u003c/a\u003e Switch from dependabot reviewers to CODEOWNERS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/06f0f76cc68112bda3fa101d1730d5ba914d54a1\"\u003e\u003ccode\u003e06f0f76\u003c/code\u003e\u003c/a\u003e Update setuptools, wheel, and twine for devs\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/mozilla/bleach/compare/v4.1.0...v6.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3` from 1.42.87 to 1.43.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/753bcab42942e4e0f6e3deb5e4eb5af40d0ffb8b\"\u003e\u003ccode\u003e753bcab\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.1'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/dd5b3a659894c0c8c92c4c696625fe7735fddcb1\"\u003e\u003ccode\u003edd5b3a6\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/014f4adb1a991f5575fca9688568a388e9f0d339\"\u003e\u003ccode\u003e014f4ad\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/32edf1c268b58c8e16e144271252ce90ebfdc1ef\"\u003e\u003ccode\u003e32edf1c\u003c/code\u003e\u003c/a\u003e Bump requests from 2.32.4 to 2.33.1 (\u003ca href=\"https://redirect.github.com/boto/boto3/issues/4781\"\u003e#4781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/959ae842a0048833cab303e1cf88dfc523f604b1\"\u003e\u003ccode\u003e959ae84\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.0'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/146ede25caacdfdc8bff79cc8f5028292dfe41f6\"\u003e\u003ccode\u003e146ede2\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.0' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/048bf84492d9d55b327a67f4ab07476eb62c2ee1\"\u003e\u003ccode\u003e048bf84\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/20381d5695aa766f041b42dcda9600e14f32bd15\"\u003e\u003ccode\u003e20381d5\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/ee6aa9711b74b165eac0b26bb724c7326791dc24\"\u003e\u003ccode\u003eee6aa97\u003c/code\u003e\u003c/a\u003e Deprecate Python 3.9 support (\u003ca href=\"https://redirect.github.com/boto/boto3/issues/4770\"\u003e#4770\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/1780d6b791333f1279e03a04a2efc476af2af5d9\"\u003e\u003ccode\u003e1780d6b\u003c/code\u003e\u003c/a\u003e Remove CC-BY-NC-SA-4.0 license headers from docs files (\u003ca href=\"https://redirect.github.com/boto/boto3/issues/4778\"\u003e#4778\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.42.87...1.43.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `botocore` from 1.42.87 to 1.43.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/7084f04c816749a7275317441440f3705ec25cf4\"\u003e\u003ccode\u003e7084f04\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.1'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/1dd07e0619e1c4d7eaa5443e7a28667f7b0a5431\"\u003e\u003ccode\u003e1dd07e0\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/eebf8158db41450f23ae0365dcbb3d8671311490\"\u003e\u003ccode\u003eeebf815\u003c/code\u003e\u003c/a\u003e Update endpoints model\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/98952d24c3e7cecd87b48f717c358ab526f065b0\"\u003e\u003ccode\u003e98952d2\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/33559569fbb76b88e23f9e7be870be028e44a45e\"\u003e\u003ccode\u003e3355956\u003c/code\u003e\u003c/a\u003e Bump requests from 2.32.4 to 2.33.1 (\u003ca href=\"https://redirect.github.com/boto/botocore/issues/3695\"\u003e#3695\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/05dafea17e8a7758d0099d11ef573b8a62c413bf\"\u003e\u003ccode\u003e05dafea\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.0'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/dc9312350d2bf85ec07d0f7d27cd77c96fc8b5a1\"\u003e\u003ccode\u003edc93123\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.0' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/047f23f3b089f10c098010d41e0c355cc13a92be\"\u003e\u003ccode\u003e047f23f\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/44df5850e51fe566075fd5ecd3a8a512aedec47a\"\u003e\u003ccode\u003e44df585\u003c/code\u003e\u003c/a\u003e Update endpoints model\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/924fe63134e9608c083b298a9e3007d64453e27e\"\u003e\u003ccode\u003e924fe63\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/botocore/compare/1.42.87...1.43.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2026.2.25 to 2026.4.22\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/5dddfb072243da27adde885b73ba9b809c3224ca\"\u003e\u003ccode\u003e5dddfb0\u003c/code\u003e\u003c/a\u003e 2026.04.22 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/410\"\u003e#410\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/f99eccdaf87f7c10e521a58a700ca3eb94a0787e\"\u003e\u003ccode\u003ef99eccd\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 8.1.0 to 8.1.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/404\"\u003e#404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/918bed055f7291719512af186c1c24710f845660\"\u003e\u003ccode\u003e918bed0\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 7.0.0 to 7.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/405\"\u003e#405\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/0a49067eb434e53e1f8df5f7707d5dc05ef9def4\"\u003e\u003ccode\u003e0a49067\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish from 1.13.0 to 1.14.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/403\"\u003e#403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/acf6ce8e39e3b125f4349e11904295e4fe4c1bed\"\u003e\u003ccode\u003eacf6ce8\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 8.0.0 to 8.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/398\"\u003e#398\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/feb0ed26163a9417ea0fb8eb52d47e79fcf202ab\"\u003e\u003ccode\u003efeb0ed2\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 7.0.0 to 8.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/397\"\u003e#397\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d9c11a50369cc377abb40f7909ded3d6da4d98a3\"\u003e\u003ccode\u003ed9c11a5\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 6.0.0 to 7.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/396\"\u003e#396\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2026.02.25...2026.04.22\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cryptography` from 46.0.7 to 47.0.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst\"\u003ecryptography's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e47.0.0 - 2026-04-24\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Support for Python 3.8 is deprecated and will be removed in the next\n  ``cryptography`` release.\n* **BACKWARDS INCOMPATIBLE:** Support for binary elliptic curves\n  (``SECT*`` classes) has been removed. These curves are rarely used and\n  have additional security considerations that make them undesirable.\n* **BACKWARDS INCOMPATIBLE:** Support for OpenSSL 1.1.x has been removed.\n  OpenSSL 3.0.0 or later is now required. LibreSSL, BoringSSL, and AWS-LC\n  continue to be supported.\n* **BACKWARDS INCOMPATIBLE:** Dropped support for LibreSSL \u0026lt; 4.1.\n* **BACKWARDS INCOMPATIBLE:** Loading keys with unsupported algorithms or\n  keys with unsupported explicit curve encodings now raises\n  :class:`~cryptography.exceptions.UnsupportedAlgorithm` instead of\n  ``ValueError``. This change affects\n  :func:`~cryptography.hazmat.primitives.serialization.load_pem_private_key`,\n  :func:`~cryptography.hazmat.primitives.serialization.load_der_private_key`,\n  :func:`~cryptography.hazmat.primitives.serialization.load_pem_public_key`,\n  :func:`~cryptography.hazmat.primitives.serialization.load_der_public_key`,\n  and :meth:`~cryptography.x509.Certificate.public_key` when called on\n  certificates with unsupported public key algorithms.\n* **BACKWARDS INCOMPATIBLE:** When parsing elliptic curve private keys, we now\n  reject keys that incorrectly encode a private key of the wrong length because\n  such keys are impossible to process in a constant-time manner. We do not\n  believe keys with this problem are in wide use, however we may revert this\n  change based on the feedback we receive.\n* Deprecated passing 64-bit (8-byte) and 128-bit (16-byte) keys to\n  :class:`~cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES`. In a\n  future release, only 192-bit (24-byte) keys will be accepted. Users should\n  expand shorter keys themselves (e.g., for single DES: ``key + key + key``,\n  for two-key: ``key + key[:8]``).\n* Updated the minimum supported Rust version (MSRV) to 1.83.0, from 1.74.0.\n* Support for ``x86_64`` macOS (including publishing wheels) is deprecated\n  and will be removed in the next release. 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 the next release. Users should move to a 64-bit\n  Python installation.\n* ``public_bytes`` and ``private_bytes`` methods on keys now raise\n  ``TypeError`` (instead of ``ValueError``) if an invalid encoding is provided\n  for the given ``format``.\n* Moved :class:`~cryptography.hazmat.decrepit.ciphers.modes.CFB`,\n  :class:`~cryptography.hazmat.decrepit.ciphers.modes.OFB`, and\n  :class:`~cryptography.hazmat.decrepit.ciphers.modes.CFB8` into\n  :doc:`/hazmat/decrepit/index` and deprecated them in the ``modes`` module.\n  They will be removed from the ``modes`` module in 49.0.0.\n* Moved :class:`~cryptography.hazmat.primitives.ciphers.algorithms.Camellia`\n  into  :doc:`/hazmat/decrepit/index` and deprecated it in the ``cipher`` module.\n  It will be removed from the ``cipher`` module in 49.0.0.\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/59c5f5e4b9395f32d407f66467d59ccea9f9829f\"\u003e\u003ccode\u003e59c5f5e\u003c/code\u003e\u003c/a\u003e bump for 47.0.0 release (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14730\"\u003e#14730\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/9025578c87f14096f9332264881f5370a1c64e93\"\u003e\u003ccode\u003e9025578\u003c/code\u003e\u003c/a\u003e Add MLKEM1024-P384 hybrid KEM support in HPKE (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14722\"\u003e#14722\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/ef66de49e0bd281da86750178ab2fb4b5b104162\"\u003e\u003ccode\u003eef66de4\u003c/code\u003e\u003c/a\u003e Recommend Argon2id over PBKDF2HMAC as KDF (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14724\"\u003e#14724\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/d996a37666524c606419e71de15eb527bae655aa\"\u003e\u003ccode\u003ed996a37\u003c/code\u003e\u003c/a\u003e Add ubuntu-resolute to CI workflow (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14729\"\u003e#14729\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e86da41ff7e21a04529a933856dc27dacd9e7fc0\"\u003e\u003ccode\u003ee86da41\u003c/code\u003e\u003c/a\u003e chore(deps): bump libc from 0.2.185 to 0.2.186 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14725\"\u003e#14725\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/1c33c9a5d96a7b1a975ab5a465a75517e0ebadd6\"\u003e\u003ccode\u003e1c33c9a\u003c/code\u003e\u003c/a\u003e Bump downstream dependencies in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14728\"\u003e#14728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/67fb6be685bbc0952a47cf18e9ee4533b411cd8b\"\u003e\u003ccode\u003e67fb6be\u003c/code\u003e\u003c/a\u003e Bump x509-limbo and/or wycheproof in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14727\"\u003e#14727\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/6cb20b3141c6391ae11075f30b992375c05adad5\"\u003e\u003ccode\u003e6cb20b3\u003c/code\u003e\u003c/a\u003e Bump BoringSSL, OpenSSL, AWS-LC in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14726\"\u003e#14726\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/d6f372d7ea7f7df96aeda240252a23b6ed46bc71\"\u003e\u003ccode\u003ed6f372d\u003c/code\u003e\u003c/a\u003e Update supported OpenSSL versions in installation docs (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14721\"\u003e#14721\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/ebd26194cd6a3315b122a44d2ee5aeb138bee55b\"\u003e\u003ccode\u003eebd2619\u003c/code\u003e\u003c/a\u003e openssl 3.3 is out of upstream support (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14720\"\u003e#14720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/cryptography/compare/46.0.7...47.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django` from 5.2.13 to 6.0.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/141e791f48592011b0f38fb30d44291e3ce74ee0\"\u003e\u003ccode\u003e141e791\u003c/code\u003e\u003c/a\u003e [6.0.x] Bumped version for 6.0.4 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/393dbc53e848876fdba92fbf02e10ee6a6eace6b\"\u003e\u003ccode\u003e393dbc5\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-33034 -- Enforced DATA_UPLOAD_MAX_MEMORY_SIZE on body ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/0910af60468216c856dfbcac1177372c225deb76\"\u003e\u003ccode\u003e0910af6\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-33033 -- Mitigated potential DoS in MultiPartParser.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/428c48f358c5a0ed5ca2834fb721d615eb2b0e11\"\u003e\u003ccode\u003e428c48f\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-4292 -- Disallowed instance creation via ModelAdmin.li...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/08a752c1cd8f378b4c64d96c319da23726df6ed3\"\u003e\u003ccode\u003e08a752c\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-4277 -- Checked add permissions in GenericInlineModelA...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/a623c3982857e80324448f85c7faf9a6710330ef\"\u003e\u003ccode\u003ea623c39\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-3902 -- Ignored headers with underscores in ASGIRequest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/ffc83c554a7bc99e138445fa2c4beaf0ca17c71c\"\u003e\u003ccode\u003effc83c5\u003c/code\u003e\u003c/a\u003e [6.0.x] Refs \u003ca href=\"https://redirect.github.com/django/django/issues/36949\"\u003e#36949\u003c/a\u003e -- Removed hardcoded pks in modeladmin tests.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/4eb38f6994f233feeac5852cbee2ae6663a9b1ef\"\u003e\u003ccode\u003e4eb38f6\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed \u003ca href=\"https://redirect.github.com/django/django/issues/36973\"\u003e#36973\u003c/a\u003e -- Made fields.E348 check detect further clashes between...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/640c431a47c4075538e1de0211501f911346b65e\"\u003e\u003ccode\u003e640c431\u003c/code\u003e\u003c/a\u003e [6.0.x] Refs \u003ca href=\"https://redirect.github.com/django/django/issues/36862\"\u003e#36862\u003c/a\u003e -- Reiterated security note on both variants of RemoteUse...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/ea8e293fda0dd1e78f5489efa73e5d19e195b4f0\"\u003e\u003ccode\u003eea8e293\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed \u003ca href=\"https://redirect.github.com/django/django/issues/36949\"\u003e#36949\u003c/a\u003e -- Improved RelatedFieldWidgetWrapper \u0026lt;label\u0026gt;s.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/django/compare/5.2.13...6.0.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-allauth` from 65.14.3 to 65.16.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/pennersr/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-anymail` from 14.0 to 15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anymail/django-anymail/releases\"\u003edjango-anymail's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev15.0\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://anymail.dev/en/stable/changelog/#v15-0\"\u003eChangelog\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/anymail/django-anymail/blob/main/CHANGELOG.rst\"\u003edjango-anymail's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev15.0\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2026-04-18\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eBreaking changes\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Require **Django 5.0 or later** and Python 3.10 or later.\n  (Thanks to `@terencehonles`_.)\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* **Resend:** Add support for inbound email. (Thanks to `@btimby`_.)\n\nFixes\n~~~~~\n\n* **Inbound:** Convert carriage return and line feed characters in attachment\n  filenames to spaces for ESPs that parse them from invalid headers (e.g.,\n  Postmark). (Thanks to `@BHSPitMonkey`_ for reporting the issue and providing\n  an example.)\n\u0026lt;/code\u0026gt;\u0026lt;/pre\u0026gt;\n\u0026lt;/blockquote\u0026gt;\n\u0026lt;/details\u0026gt;\n\u0026lt;details\u0026gt;\n\u0026lt;summary\u0026gt;Commits\u0026lt;/summary\u0026gt;\n\n\u0026lt;ul\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/anymail/django-anymail/commit/17acea06b9361c3cc4ab6d9678bd5aea45db80ff\u0026quot;\u0026gt;\u0026lt;code\u0026gt;17acea0\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Release 15.0\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/anymail/django-anymail/commit/8ad9d6e7e463efb770e3440871a05f2be4249ddf\u0026quot;\u0026gt;\u0026lt;code\u0026gt;8ad9d6e\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Inbound: sanitize CRNL in ESP-parsed attachment filenames\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/anymail/django-anymail/commit/a6339d6c65bed21bcfe28e3c7b9b4ada4a290263\u0026quot;\u0026gt;\u0026lt;code\u0026gt;a6339d6\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Upgrade actions versions\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/anymail/django-anymail/commit/4626462d49512b0c423071a8a6fe43a9610ead8a\u0026quot;\u0026gt;\u0026lt;code\u0026gt;4626462\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Drop Django 4.x\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/anymail/django-anymail/commit/2bcfd620d2f1fa6705a13ad8645aa25a4572fd08\u0026quot;\u0026gt;\u0026lt;code\u0026gt;2bcfd62\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Resend: Add inbound support\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/anymail/django-anymail/commit/13a08718571ca853f04336e15c525a98dd6dc48a\u0026quot;\u0026gt;\u0026lt;code\u0026gt;13a0871\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Run pyupgrade\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/anymail/django-anymail/commit/7bf7a1a42e7fe1dbc008d22dc6d03579e4523b34\u0026quot;\u0026gt;\u0026lt;code\u0026gt;7bf7a1a\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Drop Django 4.0--4.2, Python 3.8--3.9 support\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;See full diff in \u0026lt;a href=\u0026quot;https://github.com/anymail/django-anymail/compare/v14.0...v15.0\u0026quot;\u0026gt;compare view\u0026lt;/a\u0026gt;\u0026lt;/li\u0026gt;\n\u0026lt;/ul\u0026gt;\n\u0026lt;/details\u0026gt;\n\n\u0026lt;br /\u0026gt;\u003c/code\u003e\u003c/pre\u003e\n\nUpdates `django-otp` from 1.3.0 to 1.7.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-otp/django-otp/blob/master/CHANGES.rst\"\u003edjango-otp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.7.0 - January 07, 2026 - Async support\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[#185](https://github.com/django-otp/django-otp/issues/185)\u003c/code\u003e_: Make OTPMiddleware async capable\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Aljosha Papsch.\u003c/p\u003e\n\u003cp\u003e.. _\u003ca href=\"https://redirect.github.com/django-otp/django-otp/issues/185\"\u003e#185\u003c/a\u003e: \u003ca href=\"https://redirect.github.com/django-otp/django-otp/pull/185\"\u003edjango-otp/django-otp#185\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.6.3 - October 25, 2025 - Spanish update\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[#182](https://github.com/django-otp/django-otp/issues/182)\u003c/code\u003e_: Correct missing Spanish translations\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#181](https://github.com/django-otp/django-otp/issues/181)\u003c/code\u003e_: Wrong :rtype: in StaticToken.random_token docstring\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _\u003ca href=\"https://redirect.github.com/django-otp/django-otp/issues/181\"\u003e#181\u003c/a\u003e: \u003ca href=\"https://redirect.github.com/django-otp/django-otp/issues/181\"\u003edjango-otp/django-otp#181\u003c/a\u003e\n.. _\u003ca href=\"https://redirect.github.com/django-otp/django-otp/issues/182\"\u003e#182\u003c/a\u003e: \u003ca href=\"https://redirect.github.com/django-otp/django-otp/pull/182\"\u003edjango-otp/django-otp#182\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.6.2 - October 21, 2025 - Cleanup\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[#179](https://github.com/django-otp/django-otp/issues/179)\u003c/code\u003e_: Add missing gettext strings\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#180](https://github.com/django-otp/django-otp/issues/180)\u003c/code\u003e_: Remove tests from wheels\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _\u003ca href=\"https://redirect.github.com/django-otp/django-otp/issues/179\"\u003e#179\u003c/a\u003e: \u003ca href=\"https://redirect.github.com/django-otp/django-otp/pull/179\"\u003edjango-otp/django-otp#179\u003c/a\u003e\n.. _\u003ca href=\"https://redirect.github.com/django-otp/django-otp/issues/180\"\u003e#180\u003c/a\u003e: \u003ca href=\"https://redirect.github.com/django-otp/django-otp/pull/180\"\u003edjango-otp/django-otp#180\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.6.1 - July 08, 2025 - Small improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow a {token} placeholder in :setting:\u003ccode\u003eOTP_EMAIL_SUBJECT\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.6.0 - April 02, 2025 - Django 5.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate test matrix for Django 5.2.\u003c/li\u003e\n\u003cli\u003eRemove support for Django 3.2.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.5.4 - September 06, 2024 - Ignore proxy models when enumerating device classes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[#161](https://github.com/django-otp/django-otp/issues/161)\u003c/code\u003e_: Discard proxied models when iterating device models\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _\u003ca href=\"https://redirect.github.com/django-otp/django-otp/issues/161\"\u003e#161\u003c/a\u003e: \u003ca href=\"https://redirect.github.com/django-otp/django-otp/pull/161\"\u003edjango-otp/django-otp#161\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/django-otp/django-otp/commit/fc0d50b6f66da10fad250ce1640f0385f3229f48\"\u003e\u003ccode\u003efc0d50b\u003c/code\u003e\u003c/a\u003e Version 1.7.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-otp/django-otp/commit/56e4ce3b5618de5d5a8a24c9eb709b51802ad06b\"\u003e\u003ccode\u003e56e4ce3\u003c/code\u003e\u003c/a\u003e Refactor test utilities\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-otp/django-otp/commit/8c4d4c23649316c55dad6a79fb06fa975e5e4702\"\u003e\u003ccode\u003e8c4d4c2\u003c/code\u003e\u003c/a\u003e Update test matrix for Django 6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-otp/django-otp/commit/0ac4ff33aa88fa73c12aa60713881481116a6d5f\"\u003e\u003ccode\u003e0ac4ff3\u003c/code\u003e\u003c/a\u003e Cleanup and changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-otp/django-otp/commit/b10df0d8cb94c8242ca48bbcea3d307b553808a5\"\u003e\u003ccode\u003eb10df0d\u003c/code\u003e\u003c/a\u003e Make OTPMiddleware async capable. (\u003ca href=\"https://redirect.github.com/django-otp/django-otp/issues/185\"\u003e#185\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-otp/django-otp/commit/81211794b8cc9c8befc6c8330b6652d3c4e78fd5\"\u003e\u003ccode\u003e8121179\u003c/code\u003e\u003c/a\u003e Raise requires-python to 3.8.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-otp/django-otp/commit/38b7ebabd7b4817aec92f884d448eeb462e82108\"\u003e\u003ccode\u003e38b7eba\u003c/code\u003e\u003c/a\u003e Version 1.6.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-otp/django-otp/commit/b9026d7025da45b0144c99e91b5286c734448012\"\u003e\u003ccode\u003eb9026d7\u003c/code\u003e\u003c/a\u003e Correct Missing Spanish Translations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-otp/django-otp/commit/ae18ba95bd03534e15583d456572f86ea2f41442\"\u003e\u003ccode\u003eae18ba9\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/django-otp/django-otp/issues/181\"\u003e#181\u003c/a\u003e: misdocumented return type.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-otp/django-otp/commit/c9eef89240985293e0c9f197d0257a5352cfb62d\"\u003e\u003ccode\u003ec9eef89\u003c/code\u003e\u003c/a\u003e Version 1.6.2\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django-otp/django-otp/compare/v1.3.0...v1.7.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `dulwich` from 1.1.0 to 1.2.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dulwich/dulwich/releases\"\u003edulwich's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003edulwich-1.2.1\u003c/h2\u003e\n\u003ch2\u003eChanges since 1.2.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eDerive the LFS endpoint as the remote's on-disk LFS store\n(\u003ccode\u003e\u0026lt;remote\u0026gt;/.git/lfs\u003c/code\u003e for worktrees, \u003ccode\u003e\u0026lt;remote\u0026gt;/lfs\u003c/code\u003e for bare repos)\nwhen \u003ccode\u003eremote.origin.url\u003c/code\u003e points at a local filesystem path or\n\u003ccode\u003efile://\u003c/code\u003e URL, matching git-lfs behaviour. Previously the built-in\nsmudge filter constructed an HTTP-style \u003ccode\u003e\u0026lt;remote\u0026gt;.git/info/lfs\u003c/code\u003e path\nthat did not exist on disk, leaving LFS-tracked files as pointers\nwhen cloning from a local repo.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDeduplicate objects when writing a multi-pack-index. Objects present\nin multiple packs (e.g. after \u003ccode\u003egit gc\u003c/code\u003e creates a cruft pack) would\notherwise produce an OIDL chunk with repeated SHAs, causing\n\u003ccode\u003egit multi-pack-index verify\u003c/code\u003e to fail with \u0026quot;oid lookup out of order\u0026quot;.\n(\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/2152\"\u003e#2152\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eExtend ignorecase and precomposeunicode support to index lookups.\n(\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/1807\"\u003e#1807\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.2.0\u003c/h2\u003e\n\u003ch2\u003eNotable changes since 1.1.0\u003c/h2\u003e\n\u003ch3\u003eNew features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eam\u003c/code\u003e command and \u003ccode\u003eporcelain.am()\u003c/code\u003e for applying mailbox-style email patches (\u003ccode\u003egit am\u003c/code\u003e), with state persistence for \u003ccode\u003e--continue\u003c/code\u003e, \u003ccode\u003e--skip\u003c/code\u003e, \u003ccode\u003e--abort\u003c/code\u003e, and \u003ccode\u003e--quit\u003c/code\u003e recovery (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/1692\"\u003e#1692\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eapply\u003c/code\u003e command and \u003ccode\u003eporcelain.apply_patch()\u003c/code\u003e for applying unified diffs, including rename/copy detection, binary patches with Git's base85 encoding, and \u003ccode\u003e--3way\u003c/code\u003e merge fallback (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/1784\"\u003e#1784\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eExpand \u003ccode\u003elog\u003c/code\u003e command options: \u003ccode\u003e--oneline\u003c/code\u003e, \u003ccode\u003e--abbrev-commit\u003c/code\u003e, \u003ccode\u003e--author\u003c/code\u003e, \u003ccode\u003e--committer\u003c/code\u003e, \u003ccode\u003e--grep\u003c/code\u003e, \u003ccode\u003e--since\u003c/code\u003e/\u003ccode\u003e--after\u003c/code\u003e, \u003ccode\u003e--until\u003c/code\u003e/\u003ccode\u003e--before\u003c/code\u003e, \u003ccode\u003e-n\u003c/code\u003e/\u003ccode\u003e--max-count\u003c/code\u003e, \u003ccode\u003e--no-merges\u003c/code\u003e, \u003ccode\u003e--merges\u003c/code\u003e, \u003ccode\u003e--stat\u003c/code\u003e, \u003ccode\u003e-p\u003c/code\u003e/\u003ccode\u003e--patch\u003c/code\u003e, \u003ccode\u003e--name-only\u003c/code\u003e, and \u003ccode\u003e--follow\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/1779\"\u003e#1779\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd support for push options (\u003ccode\u003e-o\u003c/code\u003e/\u003ccode\u003e--push-option\u003c/code\u003e) in \u003ccode\u003epush\u003c/code\u003e, enabling AGit flow and other server-side push option workflows.\u003c/li\u003e\n\u003cli\u003eAdd missing push options: \u003ccode\u003e--all\u003c/code\u003e, \u003ccode\u003e--tags\u003c/code\u003e, \u003ccode\u003e--delete\u003c/code\u003e, \u003ccode\u003e--dry-run\u003c/code\u003e, \u003ccode\u003e--prune\u003c/code\u003e, \u003ccode\u003e--set-upstream\u003c/code\u003e, \u003ccode\u003e--follow-tags\u003c/code\u003e, and \u003ccode\u003e--mirror\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/1844\"\u003e#1844\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd support for atomic push operations (\u003ccode\u003e--atomic\u003c/code\u003e): either all ref updates succeed or none are applied (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/1781\"\u003e#1781\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eextensions.relativeworktrees\u003c/code\u003e repository extension, allowing worktrees to use relative paths (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/2112\"\u003e#2112\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration support\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003egc.pruneExpire\u003c/code\u003e — grace period before unreachable objects are pruned (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/1859\"\u003e#1859\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ecore.precomposeunicode\u003c/code\u003e — normalize NFD Unicode paths from macOS filesystems to NFC (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/1804\"\u003e#1804\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ecore.gitProxy\u003c/code\u003e — proxy command for \u003ccode\u003egit://\u003c/code\u003e protocol connections (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/1850\"\u003e#1850\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ecore.maxStat\u003c/code\u003e — limit stat operations when checking for unstaged changes (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/1853\"\u003e#1853\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ecore.packedGitLimit\u003c/code\u003e — cap memory used for mmapped pack files, closing LRU packs when exceeded (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/1848\"\u003e#1848\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ecore.deltaBaseCacheLimit\u003c/code\u003e — cap memory used for caching delta base objects; defaults to 96 MiB (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/1849\"\u003e#1849\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ehttp.userAgent\u003c/code\u003e — customize the User-Agent header (global and URL-specific); default is \u003ccode\u003egit/dulwich/{version}\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix GPG signature verification to raise \u003ccode\u003eBadSignature\u003c/code\u003e for all GPG errors, not just \u003ccode\u003eBadSignatures\u003c/code\u003e; also detect when GPG returns no signatures.\u003c/li\u003e\n\u003cli\u003eFix client incorrectly sending \u003ccode\u003eunborn\u003c/code\u003e argument in Git protocol v2 \u003ccode\u003els-refs\u003c/code\u003e requests to servers that don't advertise \u003ccode\u003els-refs=unborn\u003c/code\u003e, preventing clones from older servers like Gerrit 3.12.2 (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/2104\"\u003e#2104\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImprove error message in \u003ccode\u003eread_info_refs()\u003c/code\u003e to show the actual line content when parsing fails (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/2103\"\u003e#2103\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003ePreserve quoted trailing whitespace in config values (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/2145\"\u003e#2145\u003c/a\u003e, Christopher Toth).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e.gitignore\u003c/code\u003e parent re-include handling so a later \u003ccode\u003e!dir/\u003c/code\u003e re-include allows a subsequent file-level negation to take effect (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/2141\"\u003e#2141\u003c/a\u003e, N0zoM1z0).\u003c/li\u003e\n\u003cli\u003eFix host key verification in \u003ccode\u003econtrib/paramiko_vendor.py\u003c/code\u003e by loading known hosts and rejecting unknown SSH host keys by default (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/2123\"\u003e#2123\u003c/a\u003e, quart27219).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\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/jelmer/dulwich/blob/main/NEWS\"\u003edulwich's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e1.2.1\t2026-04-29\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRecover from concurrent pack removals (e.g. a racing \u003ccode\u003egit repack\u003c/code\u003e or\n\u003ccode\u003egit gc --auto\u003c/code\u003e) instead of raising spurious \u003ccode\u003eKeyError\u003c/code\u003e /\n\u003ccode\u003eFileNotFoundError\u003c/code\u003e. \u003ccode\u003ePack.index\u003c/code\u003e and \u003ccode\u003ePack.data\u003c/code\u003e now translate\n\u003ccode\u003eFileNotFoundError\u003c/code\u003e during lazy load into \u003ccode\u003ePackFileDisappeared\u003c/code\u003e,\nand \u003ccode\u003ePackBasedObjectStore\u003c/code\u003e evicts the stale pack and rescans the\npack directory before retrying — equivalent to git's\n\u003ccode\u003ereprepare_packed_git()\u003c/code\u003e. (Jelmer Vernooĳ, \u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/2159\"\u003e#2159\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDerive the LFS endpoint as the remote's on-disk LFS store\n(\u003ccode\u003e\u0026lt;remote\u0026gt;/.git/lfs\u003c/code\u003e for worktrees, \u003ccode\u003e\u0026lt;remote\u0026gt;/lfs\u003c/code\u003e for bare repos)\nwhen \u003ccode\u003eremote.origin.url\u003c/code\u003e points at a local filesystem path or\n\u003ccode\u003efile://\u003c/code\u003e URL, matching git-lfs behaviour. Previously the built-in\nsmudge filter constructed an HTTP-style \u003ccode\u003e\u0026lt;remote\u0026gt;.git/info/lfs\u003c/code\u003e path\nthat did not exist on disk, leaving LFS-tracked files as pointers when\ncloning from a local repo. (Jelmer Vernooĳ)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDeduplicate objects when writing a multi-pack-index. Objects present\nin multiple packs (e.g. after \u003ccode\u003egit gc\u003c/code\u003e creates a cruft pack) would\notherwise produce an OIDL chunk with repeated SHAs, causing \u003ccode\u003egit multi-pack-index verify\u003c/code\u003e to fail with \u0026quot;oid lookup out of order\u0026quot;.\n(Jelmer Vernooĳ, \u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/2152\"\u003e#2152\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eExtend ignorecase and precomposeunicode support to index lookups.\n(Jelmer Vernooĳ, \u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/1807\"\u003e#1807\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e1.2.0\t2026-04-21\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRespect the \u003ccode\u003eGIT_PROTOCOL\u003c/code\u003e environment variable when choosing the\ndefault Git wire protocol version to send. Colon-separated\n\u003ccode\u003eversion=N\u003c/code\u003e entries are parsed and applied when no explicit\n\u003ccode\u003eprotocol_version\u003c/code\u003e is passed. (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/1862\"\u003e#1862\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eExpand \u003ccode\u003elog\u003c/code\u003e command options: add \u003ccode\u003e--oneline\u003c/code\u003e, \u003ccode\u003e--abbrev-commit\u003c/code\u003e,\n\u003ccode\u003e--author\u003c/code\u003e, \u003ccode\u003e--committer\u003c/code\u003e, \u003ccode\u003e--grep\u003c/code\u003e, \u003ccode\u003e--since\u003c/code\u003e/\u003ccode\u003e--after\u003c/code\u003e,\n\u003ccode\u003e--until\u003c/code\u003e/\u003ccode\u003e--before\u003c/code\u003e, \u003ccode\u003e-n\u003c/code\u003e/\u003ccode\u003e--max-count\u003c/code\u003e, \u003ccode\u003e--no-merges\u003c/code\u003e,\n\u003ccode\u003e--merges\u003c/code\u003e, \u003ccode\u003e--stat\u003c/code\u003e, \u003ccode\u003e-p\u003c/code\u003e/\u003ccode\u003e--patch\u003c/code\u003e, \u003ccode\u003e--name-only\u003c/code\u003e,\nand \u003ccode\u003e--follow\u003c/code\u003e. (Jelmer Vernooĳ, \u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/1779\"\u003e#1779\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003eam\u003c/code\u003e command and \u003ccode\u003eporcelain.am()\u003c/code\u003e for applying mailbox-style\nemail patches (\u003ccode\u003egit am\u003c/code\u003e), with state persistence for\n\u003ccode\u003e--continue\u003c/code\u003e, \u003ccode\u003e--skip\u003c/code\u003e, \u003ccode\u003e--abort\u003c/code\u003e, and \u003ccode\u003e--quit\u003c/code\u003e recovery\noperations. (Jelmer Vernooĳ, \u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/1692\"\u003e#1692\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd support for \u003ccode\u003eextensions.relativeworktrees\u003c/code\u003e repository extension,\nallowing Git worktrees to use relative paths instead of absolute paths\nwhen linking worktrees. (Jelmer Vernooĳ, \u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/2112\"\u003e#2112\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd support for push options (\u003ccode\u003e-o\u003c/code\u003e/\u003ccode\u003e--push-option\u003c/code\u003e) in the \u003ccode\u003epush\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelmer/dulwich/commit/57806b8a4d041cd18bf84ba8d715f4dd0bc5e200\"\u003e\u003ccode\u003e57806b8\u003c/code\u003e\u003c/a\u003e Release 1.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelmer/dulwich/commit/a127d330de1ef497935146bcd978211d9894787f\"\u003e\u003ccode\u003ea127d33\u003c/code\u003e\u003c/a\u003e Honor GIT_PROTOCOL env var when picking default protocol version (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/1862\"\u003e#1862\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/2149\"\u003e#2149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelmer/dulwich/commit/6c1697a108757766aba71624422a93900f2a867a\"\u003e\u003ccode\u003e6c1697a\u003c/code\u003e\u003c/a\u003e lfs: derive correct file:// LFS endpoint from local remote URL (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/2161\"\u003e#2161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelmer/dulwich/commit/6685fde81a717d91d747953c2f9277939ea5ab6b\"\u003e\u003ccode\u003e6685fde\u003c/code\u003e\u003c/a\u003e lfs: use pathlib.Path.as_uri() for portable file:// URLs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelmer/dulwich/commit/0d0b9f8d205eb45660d81d1efc5b7ff1fc579e61\"\u003e\u003ccode\u003e0d0b9f8\u003c/code\u003e\u003c/a\u003e Migrate from testrepository to inquest (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/2160\"\u003e#2160\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelmer/dulwich/commit/a0dac57db7ba8a6d9fe67d1cf4303cef306647a2\"\u003e\u003ccode\u003ea0dac57\u003c/code\u003e\u003c/a\u003e Migrate from testrepository to inquest\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelmer/dulwich/commit/cd6ebd90fc8f2f1b267db29c418c12c7ebb971a3\"\u003e\u003ccode\u003ecd6ebd9\u003c/code\u003e\u003c/a\u003e lfs: derive correct file:// LFS endpoint from local remote URL\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelmer/dulwich/commit/bfaf192aaba90df54e4e7b07bba11a28cf36012b\"\u003e\u003ccode\u003ebfaf192\u003c/code\u003e\u003c/a\u003e Disable background processes to prevent issues with races (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/2158\"\u003e#2158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelmer/dulwich/commit/06d7afdeb87f742bdfff93563fd0acd042473b0a\"\u003e\u003ccode\u003e06d7afd\u003c/code\u003e\u003c/a\u003e Move GIT_SSH/GIT_SSH_COMMAND env lookup from client.py to cli.py (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/2156\"\u003e#2156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelmer/dulwich/commit/e60e0c1a4d44441d2f6edfc01ba5098d2ed24cf0\"\u003e\u003ccode\u003ee60e0c1\u003c/code\u003e\u003c/a\u003e Disable background processes to prevent issues with races\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/dulwich/dulwich/compare/dulwich-1.1.0...dulwich-1.2.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fido2` from 2.1.1 to 2.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Yubico/python-fido2/releases\"\u003efido2's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epython-fido2 2.2.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eVersion 2.2.0 (released 2026-04-15)\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRestrict DLL search paths (YSA-2026-01).\u003c/li\u003e\n\u003cli\u003eAdd support for experimental previewSign extension: \u003ca href=\"https://yubicolabs.github.io/webauthn-sign-extension/4/#sctn-sign-extension\"\u003ehttps://yubicolabs.github.io/webauthn-sign-extension/4/#sctn-sign-extension\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for PSL wildcard and exception rules to RP validation.\u003c/li\u003e\n\u003cli\u003eFix: WindowsClient hmac_secret extension raising Null pointer access error.\u003c/li\u003e\n\u003cli\u003eFix: TPM attestation certificate Subject field validation.\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/Yubico/python-fido2/blob/main/NEWS\"\u003efido2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cul\u003e\n\u003cli\u003eVersion 2.2.0 (released 2026-04-15)\n** Restrict DLL search paths (YSA-2026-01).\n** Add support for experimental previewSign extension:\n\u003ca href=\"https://yubicolabs.github.io/webauthn-sign-extension/4/#sctn-sign-extension\"\u003ehttps://yubicolabs.github.io/webauthn-sign-extension/4/#sctn-sign-extension\u003c/a\u003e\n** Add support for PSL wildcard and exception rules to RP validation.\n** Fix: WindowsClient hmac_secret extension raising Null pointer access error.\n** Fix: TPM attestation certificate Subject field validation.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Yubico/python-fido2/commit/176ba47e58ae1d2837d615bfd471de45eb9af97a\"\u003e\u003ccode\u003e176ba47\u003c/code\u003e\u003c/a\u003e Update NEWS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Yubico/python-fido2/commit/dbacb5284de2cb145f538b1bad56ece0dfcf877e\"\u003e\u003ccode\u003edbacb52\u003c/code\u003e\u003c/a\u003e Restrict DLL loading to System32\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Yubico/python-fido2/commit/000e26b2174b8753735bde5df55923d8db55cc14\"\u003e\u003ccode\u003e000e26b\u003c/code\u003e\u003c/a\u003e Bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Yubico/python-fido2/commit/4f473784676405c90c3f1b96c5416f77b6e9e7d4\"\u003e\u003ccode\u003e4f47378\u003c/code\u003e\u003c/a\u003e Bump example dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Yubico/python-fido2/commit/e095fc4d930eb24947075d2ab93f5cf92892e6ee\"\u003e\u003ccode\u003ee095fc4\u003c/code\u003e\u003c/a\u003e Pass ClientPin.PERMISSIONS when 0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Yubico/python-fido2/commit/cd5fe1fa882fa8c7809c9bd9ac7f822919063ee7\"\u003e\u003ccode\u003ecd5fe1f\u003c/code\u003e\u003c/a\u003e Use constant_time for consistency.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Yubico/python-fido2/commit/19cba78e03fe65824b4fabfa2b3a86da224b83db\"\u003e\u003ccode\u003e19cba78\u003c/code\u003e\u003c/a\u003e Merge PR \u003ca href=\"https://redirect.github.com/Yubico/python-fido2/issues/285\"\u003e#285\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Yubico/python-fido2/commit/84edc052c1ce7f8ecd70cf9a2c211454c5053457\"\u003e\u003ccode\u003e84edc05\u003c/code\u003e\u003c/a\u003e Add ARKG sign extension\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Yubico/python-fido2/commit/6430bf946987f53f67725a85fce61a1609296370\"\u003e\u003ccode\u003e6430bf9\u003c/code\u003e\u003c/a\u003e Windows: Check that pHmacSecret is populated\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Yubico/python-fido2/commit/efb81ef0bbb44f07cfe18071e2c9286fe69d4163\"\u003e\u003ccode\u003eefb81ef\u003c/code\u003e\u003c/a\u003e More type checking for tests\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Yubico/python-fido2/compare/2.1.1...2.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `icalendar` from 7.0.3 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/collective/icalendar/releases\"\u003eicalendar's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev7.1.0\u003c/h2\u003e\n\u003cp\u003eTo view the changes, please see the \u003ca href=\"https://icalendar.readthedocs.io/en/latest/changelog.html\"\u003eChangelog\u003c/a\u003e. This release can be installed from \u003ca href=\"https://pypi.org/project/icalendar/#history\"\u003ePyPI\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/collective/icalendar/blob/main/CHANGES.rst\"\u003eicalendar's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.0 (2026-04-30)\u003c/h2\u003e\n\u003cp\u003eMinor changes\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n- Deprecate ``icalendar.parser.escape_string`` and ``icalendar.parser.unescape_string`` for icalendar version 8. Use ``_escape_string`` and ``_unescape_string`` internally. :issue:`1011`\n- Added behavioral tests for :class:`~icalendar.cal.lazy.LazyCalendar` covering serialization round-trips, ``.todos``, ``.journals``, forward timezone references, and ``with_uid()`` substring false-positives. :issue:`1050`\n- Added edge case tests for :class:`~icalendar.prop.conference.Conference` parameter normalization covering string passthrough, empty list filtering, and ``None`` omission. :issue:`925`\n- Make icalendar an explicit editable install for clarity. :pr:`1268`\n- Do not run some tests until a pull request is approved. :pr:`1246`\n- Mark skipped CI tasks as skipped instead of running them. :issue:`1286`\n- Created an :meth:`~icalendar.prop.boolean.vBoolean.ical_value` property for the :class:`~icalendar.prop.boolean.vBoolean` component. :issue:`876`\n- Created an :meth:`~icalendar.prop.float.vFloat.ical_value` property for the :class:`~icalendar.prop.float.vFloat` component. :issue:`876`\n- Created an :meth:`~icalendar.prop.integer.vInt.ical_value` property for the :class:`~icalendar.prop.integer.vInt` component. :issue:`876`\n- Created an :meth:`~icalendar.prop.binary.vBinary.ical_value` property for the :class:`~icalendar.prop.binary.vBinary` component. :issue:`876`\n- Put the link check as the last documentation CI task, allowing the documentation build and Vale to run first and fail faster. :pr:`1295`\n- Extended :func:`~icalendar.timezone.tzp.TZP.localize` to support localizing both :class:`datetime.datetime` and :class:`datetime.time` objects, returning timezone-aware :class:`datetime.time` objects for the latter. :issue:`1142`\n- Add type hints to tests directory functions. :issue:`938`\n- Update to Contributor Covenant 3.0 Code of Conduct, hosted at https://pycal.org/code-of-conduct/.\n\u003cp\u003eNew features\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n- Added :class:`~icalendar.cal.lazy.LazyCalendar` for lazy parsing of subcomponents. :issue:`158`, :issue:`1050`\n- Updated :func:`icalendar.prop.dt.time.vTime.from_ical` to support parsing time values with TZID parameters, returning timezone-aware :class:`datetime.time` objects. :issue:`1142`\n- Added ``subcomponents`` parameter to :meth:`Component.new \u0026amp;lt;icalendar.cal.component.Component.new\u0026amp;gt;`, :meth:`Event.new \u0026amp;lt;icalendar.cal.event.Event.new\u0026amp;gt;`, :meth:`Todo.new \u0026amp;lt;icalendar.cal.todo.Todo.new\u0026amp;gt;`, and :meth:`Availability.new \u0026amp;lt;icalendar.cal.availability.Availability.new\u0026amp;gt;`. :issue:`1065`\n- Switch to uv for development. :issue:`1102`\n\nBug fixes\n~~~~~~~~~\n\n- Allow lenient parsing of content lines with optional whitespace around property and parameter delimiters (for example, ``REFRESH - INTERVAL; VALUE = DURATION:PT48H``) when parsing calendars with ``strict=False``. :issue:`351`\n- X-properties with a ``VALUE`` parameter are now parsed using the correct type instead of falling back to :class:`~icalendar.prop.unkown.vUnknown`. :issue:`1238`\n- Test that the ``DURATION`` property catches :class:`datetime.timedelta` objects without vProperty wrappers. :issue:`884`\n- Fixed :func:`~icalendar.attr.get_end_property` to avoid allowing the creating of VEVENT components with negative durations. Only VTODO components are allowed to have negative durations. :issue:`999`\n- GitHub Actions: conditional tests now show as \u0026amp;quot;skipped\u0026amp;quot; instead of \u0026amp;quot;pending\u0026amp;quot;. :issue:`1264`\n- Fixed :meth:`Component.__eq__ \u0026amp;lt;icalendar.cal.component.Component.__eq__\u0026amp;gt;` method not being commutative when comparing subcomponents. :issue:`1224`\n- Verified that the ``VALUE`` parameter of jCal components is used for the type of the component property. :issue:`1237`\n- Fix :func:`~icalendar.parser.string.escape_char` handling of ``bytes`` input by converting with :func:`icalendar.parser_tools.to_unicode` before escaping. :issue:`1226`\n- Fixed ``RecursionError`` in ``walk()``, ``property_items()``, and ``to_ical()`` by using iterative implementations for component traversal and property extraction. :pr:`1348`\n\nDocumentation\n\u0026lt;/code\u0026gt;\u0026lt;/pre\u0026gt;\n\u0026lt;ul\u0026gt;\n\u0026lt;li\u0026gt;Convert docstring of :func:\u0026lt;code\u0026gt;~icalendar.param.string_parameter\u0026lt;/code\u0026gt; to Google style. :issue:\u0026lt;code\u0026gt;1072\u0026lt;/code\u0026gt;, :pr:\u0026lt;code\u0026gt;1316\u0026lt;/code\u0026gt;\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;Run \u0026lt;code\u0026gt;sphinx-build\u0026lt;/code\u0026gt; with \u0026lt;code\u0026gt;-W\u0026lt;/code\u0026gt; to turn warnings into errors. :issue:\u0026lt;code\u0026gt;1306\u0026lt;/code\u0026gt;\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;Added \u0026lt;code\u0026gt;sphinx-llms-txt \u0026amp;lt;https://sphinx-llms-txt.readthedocs.io/en/stable/\u0026amp;gt;\u0026lt;/code\u0026gt;_ extension to generate :file:\u0026lt;code\u0026gt;llms.txt\u0026lt;/code\u0026gt; and :file:\u0026lt;code\u0026gt;llms-full.txt\u0026lt;/code\u0026gt; files for AI/LLM documentation consumption. :issue:\u0026lt;code\u0026gt;1302\u0026lt;/code\u0026gt;\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;Fixed CI Vale check reporting and resolved Vale errors. :issue:\u0026lt;code\u0026gt;1277\u0026lt;/code\u0026gt;\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;Include :file:\u0026lt;code\u0026gt;Makefile\u0026lt;/code\u0026gt; in documentation workflow path filters so documentation CI runs when Makefile logic changes, and keep Vale failures visible in CI output. :issue:\u0026lt;code\u0026gt;1277\u0026lt;/code\u0026gt;\u0026lt;/li\u0026gt;\n\u0026lt;/ul\u0026gt;\n\u0026lt;!-- raw HTML omitted --\u0026gt;\n\u0026lt;/blockquote\u0026gt;\n\u0026lt;p\u0026gt;... (truncated)\u0026lt;/p\u0026gt;\n\u0026lt;/details\u0026gt;\n\u0026lt;details\u0026gt;\n\u0026lt;summary\u0026gt;Commits\u0026lt;/summary\u0026gt;\n\n\u0026lt;ul\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/collective/icalendar/commit/1300b76fb3fe40d987cc3715735c026b3c1a2191\u0026quot;\u0026gt;\u0026lt;code\u0026gt;1300b76\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Merge branch 'main' into 7.x\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/collective/icalendar/commit/255e6b841331e2d5cf2901402e08ab788899d465\u0026quot;\u0026gt;\u0026lt;code\u0026gt;255e6b8\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; add 7.x to run the tests\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/collective/icalendar/commit/fc8a4f5674eaa05bf3546b296f166583f670561a\u0026quot;\u0026gt;\u0026lt;code\u0026gt;fc8a4f5\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; disable the version switcher on the 7.x branch\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/collective/icalendar/commit/f5aa35d2ff6d106f5a7b286970b65b5f9d9211b4\u0026quot;\u0026gt;\u0026lt;code\u0026gt;f5aa35d\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; version 7.1.0\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/collective/icalendar/commit/b4ffb8345deea76e4cca72689907ed2f8488e7de\u0026quot;\u0026gt;\u0026lt;code\u0026gt;b4ffb83\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Merge pull request \u0026lt;a href=\u0026quot;https://redirect.github.com/collective/icalendar/issues/1348\u0026quot;\u0026gt;#1348\u0026lt;/a\u0026gt; from uwezkhan/fix/property-items-recursion\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/collective/icalendar/commit/1d6d18d357335367d72f4628b7158dd4800caf39\u0026quot;\u0026gt;\u0026lt;code\u0026gt;1d6d18d\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Merge branch 'main' into fix/property-items-recursion\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/collective/icalendar/commit/05a34d48d3223b2780c9afffd0cdbab9d5c50ffd\u0026quot;\u0026gt;\u0026lt;code\u0026gt;05a34d4\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Merge pull request \u0026lt;a href=\u0026quot;https://redirect.github.com/collective/icalendar/issues/1346\u0026quot;\u0026gt;#1346\u0026lt;/a\u0026gt; from uwezkhan/fix/deep-component-walk-dos\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/collective/icalendar/commit/a4829d4d43b29e430b97ab66313f6357edd3742d\u0026quot;\u0026gt;\u0026lt;code\u0026gt;a4829d4\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Merge branch 'main' into fix/property-items-recursion\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/collective/icalendar/commit/66579fbf8fb4aeb6bf1ded0cfa353ba3d500e35a\u0026quot;\u0026gt;\u0026lt;code\u0026gt;66579fb\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; fix formatting\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/collective/icalendar/commit/1f55c2035315e53b8d9a6eeacf1aee046d794fd3\u0026quot;\u0026gt;\u0026lt;code\u0026gt;1f55c20\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Merge branch 'main' into fix/deep-component-walk-dos\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;Additional commits viewable in \u0026lt;a href=\u0026quot;https://github.com/collective/icalendar/compare/v7.0.3...v7.1.0\u0026quot;\u0026gt;compare view\u0026lt;/a\u0026gt;\u0026lt;/li\u0026gt;\n\u0026lt;/ul\u0026gt;\n\u0026lt;/details\u0026gt;\n\n\u0026lt;br /\u0026gt;\u003c/code\u003e\u003c/pre\u003e\n\nUpdates `idna` from 3.11 to 3.13\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/blob/master/HISTORY.rst\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e3.13 (2026-04-22)\n+++++++++++++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCorrect classification error for codepoint U+A7F1\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e3.12 (2026-04-21)\n+++++++++++++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 17.0.0.\u003c/li\u003e\n\u003cli\u003eIssue a deprecation warning for the transitional argument.\u003c/li\u003e\n\u003cli\u003eAdded lazy-loading to provide some performance improvements.\u003c/li\u003e\n\u003cli\u003eRemoved vestiges of code related to Python 2 support, including\nsegmentation of data structures specific to Jython.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Rodrigo Nogueira for contributions to this release.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/89cdfd27338896cee6b1ee18e64c96ac28684ce0\"\u003e\u003ccode\u003e89cdfd2\u003c/code\u003e\u003c/a\u003e Release v3.13\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/1eb068687543118147417a8d8a70674e2c172891\"\u003e\u003ccode\u003e1eb0686\u003c/code\u003e\u003c/a\u003e Pre-release 3.13\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/5f20d1e41eea3b3873d18d83d7a384784f72a92e\"\u003e\u003ccode\u003e5f20d1e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/220\"\u003e#220\u003c/a\u003e from kjd/unicode-next\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/4ea84252ab21e62a79e5a3273746112b5dcfb810\"\u003e\u003ccode\u003e4ea8425\u003c/code\u003e\u003c/a\u003e Regenerate idnadata.py with correct NFKC_CF data\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/fd47341a08bbdcffda33694211ca4de10170cd41\"\u003e\u003ccode\u003efd47341\u003c/code\u003e\u003c/a\u003e Use NFKC_CF from Unicode data files instead of Python's unicodedata module\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/a5304a4cdbd7b31595f8ac42ffdfa88f5b936467\"\u003e\u003ccode\u003ea5304a4\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/219\"\u003e#219\u003c/a\u003e from kjd/release-3.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/d80d6f9254d699961fa2c669a1534cde9d4ee5b6\"\u003e\u003ccode\u003ed80d6f9\u003c/code\u003e\u003c/a\u003e Release v3.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/1bb44ddb3f2a9dcf97a6ac11aba34e5b6ed31291\"\u003e\u003ccode\u003e1bb44dd\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/218\"\u003e#218\u003c/a\u003e from kjd/release-candidate-3.12rc0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/909c49d15b8d159be163bccc7972116baffdb47b\"\u003e\u003ccode\u003e909c49d\u003c/code\u003e\u003c/a\u003e Release candidate for 3.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/c5459a10370f005dc09921aee3201b5a45699f9d\"\u003e\u003ccode\u003ec5459a1\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/217\"\u003e#217\u003c/a\u003e from kjd/housekeeping-2\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.11...v3.13\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `importlib-metadata` from 8.7.1 to 9.0.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/importlib_metadata/blob/main/NEWS.rst\"\u003eimportlib-metadata's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev9.0.0\u003c/h1\u003e\n\u003ch2\u003eDeprecations and Removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eMetadataNotFound\u003c/code\u003e (subclass of \u003ccode\u003eFileNotFoundError\u003c/code\u003e) and updated \u003ccode\u003eDistribution.metadata\u003c/code\u003e/\u003ccode\u003emetadata()\u003c/code\u003e to raise it when the metadata files are missing instead of returning \u003ccode\u003eNone\u003c/code\u003e\u003ccode\u003epython/cpython#143387\u003c/code\u003e\u003ca href=\"https://redirect.github.com/python/importlib_metadata/issues/532\"\u003e#532\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev8.9.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epython/cpython#110937\u003c/code\u003e\u003ca href=\"https://redirect.github.com/python/cpython/issues/140141\"\u003epython/cpython#140141\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/python/cpython/issues/143658\"\u003epython/cpython#143658\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev8.8.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved Python 3.9 compatibility.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\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/importlib_metadata/commit/a9f883fef337c667a81a987bc0cbc0dbb43b2bfe\"\u003e\u003ccode\u003ea9f883f\u003c/code\u003e\u003c/a\u003e Finalize\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/importlib_metadata/commit/9b0dfdfe2e187dca6644007570189aadc6c97a34\"\u003e\u003ccode\u003e9b0dfdf\u003c/code\u003e\u003c/a\u003e Raise an exception when no metadata file is found (\u003ca href=\"https://redirect.github.com/python/importlib_metadata/issues/532\"\u003e#532\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/importlib_metadata/commit/0f2229ca84f20be2ceaaa4c62a276fa9b003f5bc\"\u003e\u003ccode\u003e0f2229c\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into feature/no-metadata-exception\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/importlib_metadata/commit/2f4088e490a73ac7f39b86214d2da16d2eb1ff39\"\u003e\u003ccode\u003e2f4088e\u003c/code\u003e\u003c/a\u003e Remove news fragments about internal details.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/importlib_metadata/commit/0ac27203f8044daf634c22f385838122a0707449\"\u003e\u003ccode\u003e0ac2720\u003c/code\u003e\u003c/a\u003e Add news fragment.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/importlib_metadata/commit/a5c2154835facb4a9d0a6f5b3aac1f3d1ff86170\"\u003e\u003ccode\u003ea5c2154\u003c/code\u003e\u003c/a\u003e Finalize\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/importlib_metadata/commit/e66e22634f7522e7778b66e8a8b19782a11d4943\"\u003e\u003ccode\u003ee66e226\u003c/code\u003e\u003c/a\u003e Drop support for EOL Python 3.9 (\u003ca href=\"https://redirect.github.com/python/importlib_metadata/issues/530\"\u003e#530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/importlib_metadata/commit/6027933ae96c9e51dd0b7ce392cb30f6fcae1940\"\u003e\u003ccode\u003e6027933\u003c/code\u003e\u003c/a\u003e Add news fragment.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/importlib_metadata/commit/b89388a53bf857127e0a6860dfcfe2cd69a79ab8\"\u003e\u003ccode\u003eb89388a\u003c/code\u003e\u003c/a\u003e Import os_helper directly.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/importlib_metadata/commit/2dcb761d940b0115b786ab3b6f336af7d94630f4\"\u003e\u003ccode\u003e2dcb761\u003c/code\u003e\u003c/a\u003e Add uniform exclusions for test.support.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/importlib_metadata/compare/v8.7.1...v9.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `lxml` from 6.0.3 to 6.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/lxml/lxml/blob/master/CHANGES.txt\"\u003elxml's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e6.1.0 (2026-04-17)\u003c/h1\u003e\n\u003cp\u003eThis release fixes a possible external entity injection (XXE) vulnerability in\n\u003ccode\u003eiterparse()\u003c/code\u003e and the \u003ccode\u003eETCompatXMLParser\u003c/code\u003e.\u003c/p\u003e\n\u003ch2\u003eFeatures added\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eGH#486: The HTML ARIA accessibility attributes were added to the set of safe attributes\nin \u003ccode\u003elxml.html.defs\u003c/code\u003e.  This allows \u003ccode\u003elxml_html_clean\u003c/code\u003e to pass them through.\nPatch by oomsveta.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe default chunk size for reading from file-likes in \u003ccode\u003eiterparse()\u003c/code\u003e is now configurable\nwith a new \u003ccode\u003echunk_size\u003c/code\u003e argument.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugs fixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eLP#2146291: The \u003ccode\u003eresolve_entities\u003c/code\u003e option was still set to \u003ccode\u003eTrue\u003c/code\u003e for\n\u003ccode\u003eiterparse\u003c/code\u003e and \u003ccode\u003eETCompatXMLParser\u003c/code\u003e, allowing for external entity injection (XXE)\nwhen using these parsers without setting this option explicitly.\nThe default was now changed to \u003ccode\u003e'internal'\u003c/code\u003e only (as for the normal XML and HTML parsers\nsince lxml 5.0).\nIssue found by Sihao Qiu as CVE-2026-41066.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e6.0.4 (2026-04-12)\u003c/h1\u003e\n\u003ch2\u003eBugs fixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eLP#2148019: Spurious MemoryError during namespace cleanup.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/43722...\n\n_Description has been truncated_","html_url":"https://github.com/invenhost/InvenTree/pull/323","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/invenhost%2FInvenTree/issues/323","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/323/packages"},{"uuid":"4400874596","node_id":"PR_kwDOIEpTDs7ZQGfo","number":1007,"state":"open","title":"build: bump build from 1.4.4 to 1.5.0","user":"dependabot[bot]","labels":["dependencies:pyproject"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-07T17:54:53.000Z","updated_at":"2026-05-07T20:38:08.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build","packages":[{"name":"build","old_version":"1.4.4","new_version":"1.5.0","repository_url":"https://github.com/pypa/build"}],"path":null,"ecosystem":"pip"},"body":"Bumps [build](https://github.com/pypa/build) from 1.4.4 to 1.5.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/releases\"\u003ebuild's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: try to improve release docs by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1051\"\u003epypa/build#1051\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: drop 3.9, require 3.10+ by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1036\"\u003epypa/build#1036\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: tox toml by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1033\"\u003epypa/build#1033\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: api should not ignore installed, only CLI by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1056\"\u003epypa/build#1056\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.4...1.5.0\"\u003ehttps://github.com/pypa/build/compare/1.4.4...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e####################\n1.5.0 (2026-04-30)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.9 support - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1036\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003e--ignore-installed\u003c/code\u003e opt-in from the API via \u003ccode\u003efresh=True\u003c/code\u003e - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1056\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1033\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.4 (2026-04-22)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eFix release pipeline generating \u003ccode\u003eCHANGELOG.rst\u003c/code\u003e entries with inconsistent heading levels, which broke \u003ccode\u003esphinx -W\u003c/code\u003e\nand pinned Read the Docs \u003ccode\u003estable\u003c/code\u003e at 1.4.0 - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e1031\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRevert :pr:\u003ccode\u003e1039\u003c/code\u003e from build 1.4.3, no longer check direct_url (for now) - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1039\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--ignore-installed\u003c/code\u003e to pip install command to prevent issues with packages already present in the isolated\nbuild environment - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1037\u003c/code\u003e) (:issue:\u003ccode\u003e1040\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePartial revert of :pr:\u003ccode\u003e973\u003c/code\u003e, keeping log messages in one entry, multiple lines. (:issue:\u003ccode\u003e1044\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1048\u003c/code\u003e, :issue:\u003ccode\u003e1049\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.3 (2026-04-10)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/615d04cfc52ac3c1592a463f0afe484fee1cc368\"\u003e\u003ccode\u003e615d04c\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/776f702f84787525df62a5473dd13d4e2f45b977\"\u003e\u003ccode\u003e776f702\u003c/code\u003e\u003c/a\u003e fix: api should not ignore installed, only CLI (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/42da4c4b483563819fabdb8ecf2f6df53ed82123\"\u003e\u003ccode\u003e42da4c4\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1055\"\u003e#1055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b445cd2e736db5f80cde7d952d620a73cc26bf9d\"\u003e\u003ccode\u003eb445cd2\u003c/code\u003e\u003c/a\u003e chore: tox toml (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/c44c143876042ac6e1212a31684a3adca19beda4\"\u003e\u003ccode\u003ec44c143\u003c/code\u003e\u003c/a\u003e feat: drop 3.9, require 3.10+ (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/a9bb4560d213069b11c8068159f1de060abec5b7\"\u003e\u003ccode\u003ea9bb456\u003c/code\u003e\u003c/a\u003e build(deps): bump astral-sh/setup-uv from 8.0.0 to 8.1.0 in the actions group...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/cb3351155ce99902580022acb81dc0adb8124d53\"\u003e\u003ccode\u003ecb33511\u003c/code\u003e\u003c/a\u003e ci: try to improve release docs (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1051\"\u003e#1051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pypa/build/compare/1.4.4...1.5.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=build\u0026package-manager=pip\u0026previous-version=1.4.4\u0026new-version=1.5.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/ansys/pystk/pull/1007","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ansys%2Fpystk/issues/1007","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1007/packages"},{"uuid":"4394527696","node_id":"PR_kwDOR4YgX87Y7aeA","number":63,"state":"closed","title":"chore(deps): bump the python-minor-patch group across 1 directory with 3 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-06T23:38:26.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-06T21:22:27.000Z","updated_at":"2026-05-06T23:38:27.000Z","time_to_close":8159,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-minor-patch","update_count":3,"packages":[{"name":"ruff","old_version":"0.15.11","new_version":"0.15.12","repository_url":"https://github.com/astral-sh/ruff"},{"name":"build","old_version":"1.4.3","new_version":"1.5.0","repository_url":"https://github.com/pypa/build"},{"name":"pre-commit","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/pre-commit/pre-commit"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor-patch group with 3 updates in the / directory: [ruff](https://github.com/astral-sh/ruff), [build](https://github.com/pypa/build) and [pre-commit](https://github.com/pre-commit/pre-commit).\n\nUpdates `ruff` from 0.15.11 to 0.15.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.12\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-24.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:file-ignore\u003c/code\u003e file-level suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23599\"\u003e#23599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:ignore\u003c/code\u003e logical-line suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23404\"\u003e#23404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRevert preview changes to displayed diagnostic severity in LSP (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24789\"\u003e#24789\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003etask-branch-as-short-circuit\u003c/code\u003e (\u003ccode\u003eAIR004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23579\"\u003e#23579\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Fix \u003ccode\u003ebreak\u003c/code\u003e/\u003ccode\u003econtinue\u003c/code\u003e handling in \u003ccode\u003eloop-iterator-mutation\u003c/code\u003e (\u003ccode\u003eB909\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24440\"\u003e#24440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLC2701\u003c/code\u003e for type parameter scopes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24576\"\u003e#24576\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epandas-vet\u003c/code\u003e] Suggest \u003ccode\u003e.array\u003c/code\u003e as well in \u003ccode\u003ePD011\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24805\"\u003e#24805\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRespect default Unix permissions for cache files (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24794\"\u003e#24794\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLR0124\u003c/code\u003e description not to claim self-comparison always returns the same value (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24749\"\u003e#24749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Expand docs on reusable \u003ccode\u003eTypeVar\u003c/code\u003es and scoping (\u003ccode\u003eUP046\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24153\"\u003e#24153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove rules table accessibility (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24711\"\u003e#24711\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/woodruffw\"\u003e\u003ccode\u003e@​woodruffw\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/avasis-ai\"\u003e\u003ccode\u003e@​avasis-ai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dev-iL\"\u003e\u003ccode\u003e@​Dev-iL\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/denyszhak\"\u003e\u003ccode\u003e@​denyszhak\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ShipItAndPray\"\u003e\u003ccode\u003e@​ShipItAndPray\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/augustelalande\"\u003e\u003ccode\u003e@​augustelalande\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/majiayu000\"\u003e\u003ccode\u003e@​majiayu000\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.15.12\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.15.12/ruff-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.12\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-24.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:file-ignore\u003c/code\u003e file-level suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23599\"\u003e#23599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:ignore\u003c/code\u003e logical-line suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23404\"\u003e#23404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRevert preview changes to displayed diagnostic severity in LSP (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24789\"\u003e#24789\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003etask-branch-as-short-circuit\u003c/code\u003e (\u003ccode\u003eAIR004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23579\"\u003e#23579\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Fix \u003ccode\u003ebreak\u003c/code\u003e/\u003ccode\u003econtinue\u003c/code\u003e handling in \u003ccode\u003eloop-iterator-mutation\u003c/code\u003e (\u003ccode\u003eB909\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24440\"\u003e#24440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLC2701\u003c/code\u003e for type parameter scopes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24576\"\u003e#24576\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epandas-vet\u003c/code\u003e] Suggest \u003ccode\u003e.array\u003c/code\u003e as well in \u003ccode\u003ePD011\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24805\"\u003e#24805\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRespect default Unix permissions for cache files (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24794\"\u003e#24794\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLR0124\u003c/code\u003e description not to claim self-comparison always returns the same value (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24749\"\u003e#24749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Expand docs on reusable \u003ccode\u003eTypeVar\u003c/code\u003es and scoping (\u003ccode\u003eUP046\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24153\"\u003e#24153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove rules table accessibility (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24711\"\u003e#24711\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/woodruffw\"\u003e\u003ccode\u003e@​woodruffw\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/avasis-ai\"\u003e\u003ccode\u003e@​avasis-ai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dev-iL\"\u003e\u003ccode\u003e@​Dev-iL\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/denyszhak\"\u003e\u003ccode\u003e@​denyszhak\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ShipItAndPray\"\u003e\u003ccode\u003e@​ShipItAndPray\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/augustelalande\"\u003e\u003ccode\u003e@​augustelalande\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/majiayu000\"\u003e\u003ccode\u003e@​majiayu000\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/astral-sh/ruff/commit/66f93cf7ed4d36325f35a452e4afa28268fbcd28\"\u003e\u003ccode\u003e66f93cf\u003c/code\u003e\u003c/a\u003e Bump 0.15.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24815\"\u003e#24815\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/476a4d02e8e3b6c157ac39979d8b698a1b6baa91\"\u003e\u003ccode\u003e476a4d0\u003c/code\u003e\u003c/a\u003e [ty] Complete support for more detailed diagnostics on possibly unbound error...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ed669eab30095d6c51fe6cdef6050fb01276bcb3\"\u003e\u003ccode\u003eed669ea\u003c/code\u003e\u003c/a\u003e Implement \u003ccode\u003e#ruff:file-ignore\u003c/code\u003e file-level suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23599\"\u003e#23599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e73d952e43feb51356ee740c5a973fce81396ff6\"\u003e\u003ccode\u003ee73d952\u003c/code\u003e\u003c/a\u003e [ty] Include inferred type in \u003ccode\u003einvalid-key\u003c/code\u003e concise diagnostic for union/inte...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/80feb29b31cd98c093316df2e0407b0c70c01b55\"\u003e\u003ccode\u003e80feb29\u003c/code\u003e\u003c/a\u003e [ty] report only dead annotation-only locals as unused (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24811\"\u003e#24811\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/0fbf2bc27336a3d17d39af52cf89b78dcda8c7c8\"\u003e\u003ccode\u003e0fbf2bc\u003c/code\u003e\u003c/a\u003e Drop deprecated license classifier (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24808\"\u003e#24808\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/43b174cc7f2fcb0080bb1d4843cd4bf6b72bbe27\"\u003e\u003ccode\u003e43b174c\u003c/code\u003e\u003c/a\u003e [ty] Infer lambda parameter types with \u003ccode\u003eCallable\u003c/code\u003e type context (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24317\"\u003e#24317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/4f449ae4a2377569330a5ab94799d389357b5a3f\"\u003e\u003ccode\u003e4f449ae\u003c/code\u003e\u003c/a\u003e [ty] Add error context for intersection types (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24772\"\u003e#24772\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5b4e753acb46e96ad408e4904c15308e33efe307\"\u003e\u003ccode\u003e5b4e753\u003c/code\u003e\u003c/a\u003e [ty] Add support for goto in literal enum member inlay hint (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24792\"\u003e#24792\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e7cc76275a758ce1c636ea1c2d091fd576aac794\"\u003e\u003ccode\u003ee7cc762\u003c/code\u003e\u003c/a\u003e [ty] Add error context for TypedDict assignments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24790\"\u003e#24790\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.11...0.15.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `build` from 1.4.3 to 1.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/releases\"\u003ebuild's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: try to improve release docs by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1051\"\u003epypa/build#1051\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: drop 3.9, require 3.10+ by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1036\"\u003epypa/build#1036\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: tox toml by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1033\"\u003epypa/build#1033\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: api should not ignore installed, only CLI by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1056\"\u003epypa/build#1056\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.4...1.5.0\"\u003ehttps://github.com/pypa/build/compare/1.4.4...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.4.4\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(release): generate consistent CHANGELOG heading levels by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1032\"\u003epypa/build#1032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: move source links by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1034\"\u003epypa/build#1034\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erevert: drop PEP 660 change by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1039\"\u003epypa/build#1039\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: ignore installed when running pip by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1040\"\u003epypa/build#1040\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: revert part of \u003ca href=\"https://redirect.github.com/pypa/build/issues/973\"\u003e#973\u003c/a\u003e by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1044\"\u003epypa/build#1044\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: report coverage failure lines by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1046\"\u003epypa/build#1046\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: fix issue with uv run by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1048\"\u003epypa/build#1048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: reorganize testing docs for copy/paste by \u003ca href=\"https://github.com/abitrolly\"\u003e\u003ccode\u003e@​abitrolly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1043\"\u003epypa/build#1043\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: keep environment from leaking in Python 3.15 by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1049\"\u003epypa/build#1049\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix issue with changelog generation by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1050\"\u003epypa/build#1050\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.3...1.4.4\"\u003ehttps://github.com/pypa/build/compare/1.4.3...1.4.4\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e####################\n1.5.0 (2026-04-30)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.9 support - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1036\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003e--ignore-installed\u003c/code\u003e opt-in from the API via \u003ccode\u003efresh=True\u003c/code\u003e - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1056\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1033\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.4 (2026-04-22)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eFix release pipeline generating \u003ccode\u003eCHANGELOG.rst\u003c/code\u003e entries with inconsistent heading levels, which broke \u003ccode\u003esphinx -W\u003c/code\u003e\nand pinned Read the Docs \u003ccode\u003estable\u003c/code\u003e at 1.4.0 - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e1031\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRevert :pr:\u003ccode\u003e1039\u003c/code\u003e from build 1.4.3, no longer check direct_url (for now) - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1039\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--ignore-installed\u003c/code\u003e to pip install command to prevent issues with packages already present in the isolated\nbuild environment - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1037\u003c/code\u003e) (:issue:\u003ccode\u003e1040\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePartial revert of :pr:\u003ccode\u003e973\u003c/code\u003e, keeping log messages in one entry, multiple lines. (:issue:\u003ccode\u003e1044\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1048\u003c/code\u003e, :issue:\u003ccode\u003e1049\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.3 (2026-04-10)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/615d04cfc52ac3c1592a463f0afe484fee1cc368\"\u003e\u003ccode\u003e615d04c\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/776f702f84787525df62a5473dd13d4e2f45b977\"\u003e\u003ccode\u003e776f702\u003c/code\u003e\u003c/a\u003e fix: api should not ignore installed, only CLI (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/42da4c4b483563819fabdb8ecf2f6df53ed82123\"\u003e\u003ccode\u003e42da4c4\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1055\"\u003e#1055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b445cd2e736db5f80cde7d952d620a73cc26bf9d\"\u003e\u003ccode\u003eb445cd2\u003c/code\u003e\u003c/a\u003e chore: tox toml (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/c44c143876042ac6e1212a31684a3adca19beda4\"\u003e\u003ccode\u003ec44c143\u003c/code\u003e\u003c/a\u003e feat: drop 3.9, require 3.10+ (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/a9bb4560d213069b11c8068159f1de060abec5b7\"\u003e\u003ccode\u003ea9bb456\u003c/code\u003e\u003c/a\u003e build(deps): bump astral-sh/setup-uv from 8.0.0 to 8.1.0 in the actions group...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/cb3351155ce99902580022acb81dc0adb8124d53\"\u003e\u003ccode\u003ecb33511\u003c/code\u003e\u003c/a\u003e ci: try to improve release docs (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1051\"\u003e#1051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/70666a296c2e5bb7451f5a04eef259f6f943d0de\"\u003e\u003ccode\u003e70666a2\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/653d86586dea8b4e020086a276a15a27ac7bd25d\"\u003e\u003ccode\u003e653d865\u003c/code\u003e\u003c/a\u003e docs: fix issue with changelog generation (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1050\"\u003e#1050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/373b9ee171e2f16353365b1a9a02bc408b96ca73\"\u003e\u003ccode\u003e373b9ee\u003c/code\u003e\u003c/a\u003e tests: keep environment from leaking in Python 3.15 (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1049\"\u003e#1049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.4.3...1.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pre-commit` from 4.5.1 to 4.6.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/releases\"\u003epre-commit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epre-commit v4.6.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: allow \u003ccode\u003e--hook-dir\u003c/code\u003e to be missing to enable easier usage with \u003ccode\u003egit\u003c/code\u003e 2.54+ git hooks.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3662\"\u003e#3662\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: \u003ccode\u003e--hook-type\u003c/code\u003e is required.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3661\"\u003e#3661\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md\"\u003epre-commit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e4.6.0 - 2026-04-21\u003c/h1\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: allow \u003ccode\u003e--hook-dir\u003c/code\u003e to be missing to enable easier\nusage with \u003ccode\u003egit\u003c/code\u003e 2.54+ git hooks.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3662\"\u003e#3662\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: \u003ccode\u003e--hook-type\u003c/code\u003e is required.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3661\"\u003e#3661\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/f35134b05028ec938ac605ae500fdf95462655d3\"\u003e\u003ccode\u003ef35134b\u003c/code\u003e\u003c/a\u003e v4.6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/2a51ffcb81f6c8ed2e6467913c3343a8800f3ab9\"\u003e\u003ccode\u003e2a51ffc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3662\"\u003e#3662\u003c/a\u003e from pre-commit/hook-impl-optional-hook-dir\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/d7dee322abfc765b042f2e3b872aab3c3a867610\"\u003e\u003ccode\u003ed7dee32\u003c/code\u003e\u003c/a\u003e make --hook-dir optional for hook-impl\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/965aeb1c680e8b526342153547f0ec014484c63d\"\u003e\u003ccode\u003e965aeb1\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3661\"\u003e#3661\u003c/a\u003e from pre-commit/hook-impl-required\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/2eacc064aa9b5bb33d3a0d84a234b475e34f3096\"\u003e\u003ccode\u003e2eacc06\u003c/code\u003e\u003c/a\u003e --hook-type is required for hook-impl\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/f5678bf4ac35cffc0ff7174ad85f7fdc2a5c977e\"\u003e\u003ccode\u003ef5678bf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3657\"\u003e#3657\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/054cc5bd6bb1b20faa1eefe09f0de3b68fceee94\"\u003e\u003ccode\u003e054cc5b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/5c0f3024d2524f6e029a4c333392fd9be9fb27f6\"\u003e\u003ccode\u003e5c0f302\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3652\"\u003e#3652\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/a5d91142676630f8130020b35e166e0c0e92b8f4\"\u003e\u003ccode\u003ea5d9114\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/129a1f5ca1eaee0c952a5e7a07faae305c5e15bc\"\u003e\u003ccode\u003e129a1f5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3641\"\u003e#3641\u003c/a\u003e from pre-commit/mxr-patch-1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pre-commit/pre-commit/compare/v4.5.1...v4.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e","html_url":"https://github.com/nuncaeslupus/research-buddy/pull/63","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/nuncaeslupus%2Fresearch-buddy/issues/63","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/63/packages"},{"uuid":"4381233936","node_id":"PR_kwDONA2LH87YP2pG","number":176,"state":"open","title":"chore(deps): bump the minor-and-patch group across 1 directory with 7 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-05T03:10:34.000Z","updated_at":"2026-05-05T03:14:50.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"minor-and-patch","update_count":7,"packages":[{"name":"cpg-utils","old_version":"5.6.0","new_version":"5.6.1","repository_url":"https://github.com/populationgenomics/cpg-utils"},{"name":"grpcio","old_version":"1.78.0","new_version":"1.80.0","repository_url":"https://github.com/grpc/grpc"},{"name":"grpcio-status","old_version":"1.78.0","new_version":"1.80.0"},{"name":"build","old_version":"1.4.2","new_version":"1.5.0","repository_url":"https://github.com/pypa/build"},{"name":"ruff","old_version":"0.15.7","new_version":"0.15.12","repository_url":"https://github.com/astral-sh/ruff"},{"name":"mike","old_version":"2.1.4","new_version":"2.2.0","repository_url":"https://github.com/jimporter/mike"},{"name":"pyright","old_version":"1.1.408","new_version":"1.1.409","repository_url":"https://github.com/RobertCraigie/pyright-python"}],"path":null,"ecosystem":"pip"},"body":"Bumps the minor-and-patch group with 7 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [cpg-utils](https://github.com/populationgenomics/cpg-utils) | `5.6.0` | `5.6.1` |\n| [grpcio](https://github.com/grpc/grpc) | `1.78.0` | `1.80.0` |\n| [grpcio-status](https://grpc.io) | `1.78.0` | `1.80.0` |\n| [build](https://github.com/pypa/build) | `1.4.2` | `1.5.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.7` | `0.15.12` |\n| [mike](https://github.com/jimporter/mike) | `2.1.4` | `2.2.0` |\n| [pyright](https://github.com/RobertCraigie/pyright-python) | `1.1.408` | `1.1.409` |\n\n\nUpdates `cpg-utils` from 5.6.0 to 5.6.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/populationgenomics/cpg-utils/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `grpcio` from 1.78.0 to 1.80.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003egrpcio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.80.0\u003c/h2\u003e\n\u003cp\u003eThis is release 1.80.0 (\u003ca href=\"https://github.com/grpc/grpc/blob/master/doc/g_stands_for.md\"\u003eglimmering\u003c/a\u003e) of gRPC Core.\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes, with highlights listed below.\u003c/p\u003e\n\u003ch2\u003eCore\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ssl] Implement TLS private key signer in Python. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41701\"\u003e#41701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[TLS Credentials]: Private Key Offload Implementation. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41606\"\u003e#41606\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix max sockaddr struct size on OpenBSD. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40454\"\u003e#40454\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[core] Enable EventEngine for Python by default, and EventEngine fork support in Python and Ruby. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41432\"\u003e#41432\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[TLS Credentials]: Create InMemoryCertificateProvider to update certificates independently. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41484\"\u003e#41484\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[Ruby] Build/test ruby 4.0 and build native gems with Ruby 4.0 support. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41324\"\u003e#41324\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[EventEngine] Remove an incorrect std::move in DNSServiceResolver constructor. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41502\"\u003e#41502\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[RR and WRR] enable change to connect from a random index. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41472\"\u003e#41472\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[xds] Implement gRFC A101. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41051\"\u003e#41051\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eC++\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[C++] Add SNI override option to C++ channel credentials options API. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41460\"\u003e#41460\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eC#\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[C# tools] Option to append Async to server side method names \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/39010\"\u003e#39010\u003c/a\u003e. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/39797\"\u003e#39797\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eObjective-C\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Fix][Compiler] Plugins fall back to the edition 2023 for older protobuf. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41357\"\u003e#41357\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePHP\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[PHP] Disable php infinite recursion check for callback from Core to PHP. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41835\"\u003e#41835\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[PHP] Fix runtime error with PHp8.5 alpha because zend_exception_get_defaul…. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40337\"\u003e#40337\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePython\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Python] Fix \u003ccode\u003eGRPC_TRACE\u003c/code\u003e not working when absl log initialized in cython. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41814\"\u003e#41814\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRevert \u0026quot;[Python] Align GRPC_ENABLE_FORK_SUPPORT env defaults in core and python (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41455\"\u003e#41455\u003c/a\u003e)\u0026quot;. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41769\"\u003e#41769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[Python] Fix AsyncIO Server maximum_concurrent_rpcs enforcement preventing negative active_rpcs count. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41532\"\u003e#41532\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[Python] Docs: correct \u003ccode\u003egrpc.Compression\u003c/code\u003e references. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41705\"\u003e#41705\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[Python] [Typeguard] Part 4 - Add Typeguard to AIO stack in tests . (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40226\"\u003e#40226\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/grpc/grpc/commit/f5e2d6e856176c2f6b7691032adfefe21e5f64c1\"\u003e\u003ccode\u003ef5e2d6e\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.80.0 (on v1.80.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41857\"\u003e#41857\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/938cfecaebfc28b5e6bcdb95d55aba3962d9b55b\"\u003e\u003ccode\u003e938cfec\u003c/code\u003e\u003c/a\u003e [subchannel connection scaling] fix when we reset backoff (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41935\"\u003e#41935\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/91778bec667d7310864420f2b32aeb2e41e1b51c\"\u003e\u003ccode\u003e91778be\u003c/code\u003e\u003c/a\u003e [Backport][v1.80.x][Python] New \u003ccode\u003e_create\u003c/code\u003e method for aio.Metadata (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41888\"\u003e#41888\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f10b9f26933703c5fe3e080f50ef19c858d773e0\"\u003e\u003ccode\u003ef10b9f2\u003c/code\u003e\u003c/a\u003e [bzlmod] upgrade rules_swift to avoid BCR CI breakage on Windows with bazel 7...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/be4c1c55b69493868241bfffd4bc318d3d592656\"\u003e\u003ccode\u003ebe4c1c5\u003c/code\u003e\u003c/a\u003e [subchannel] fix crash in connection scaling code (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41853\"\u003e#41853\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/a71df73eafb18fa0210a13dd6a2ce2cb6594d427\"\u003e\u003ccode\u003ea71df73\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.80.0-pre1 (on v1.80.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41844\"\u003e#41844\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/3ca09e4818f4362e75c9c224f1d4c2065db75a0a\"\u003e\u003ccode\u003e3ca09e4\u003c/code\u003e\u003c/a\u003e [Python] Fix GRPC_TRACE and add test to check the GRPC_TRACE logs print (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41814\"\u003e#41814\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/260c6fd37c502e984836a446c5d90e4a1298036d\"\u003e\u003ccode\u003e260c6fd\u003c/code\u003e\u003c/a\u003e [PHP] Disable php infinite recursion check for callback from Core to PHP (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41\"\u003e#41\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/50957c5c47de1c85637fc9dafe6d4eb4c1224f6b\"\u003e\u003ccode\u003e50957c5\u003c/code\u003e\u003c/a\u003e [Flakiness] Delete flaky iomgr fd_conservation_posix_test and create an Event...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/e1e1d0a8150b5178d4b75e15f4856a4d825a8999\"\u003e\u003ccode\u003ee1e1d0a\u003c/code\u003e\u003c/a\u003e [Bzlmod] Turn off bzlmod for PSM python tests. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41810\"\u003e#41810\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc/compare/v1.78.0...v1.80.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `grpcio-status` from 1.78.0 to 1.80.0\n\nUpdates `build` from 1.4.2 to 1.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/releases\"\u003ebuild's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: try to improve release docs by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1051\"\u003epypa/build#1051\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: drop 3.9, require 3.10+ by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1036\"\u003epypa/build#1036\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: tox toml by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1033\"\u003epypa/build#1033\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: api should not ignore installed, only CLI by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1056\"\u003epypa/build#1056\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.4...1.5.0\"\u003ehttps://github.com/pypa/build/compare/1.4.4...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.4.4\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(release): generate consistent CHANGELOG heading levels by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1032\"\u003epypa/build#1032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: move source links by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1034\"\u003epypa/build#1034\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erevert: drop PEP 660 change by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1039\"\u003epypa/build#1039\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: ignore installed when running pip by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1040\"\u003epypa/build#1040\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: revert part of \u003ca href=\"https://redirect.github.com/pypa/build/issues/973\"\u003e#973\u003c/a\u003e by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1044\"\u003epypa/build#1044\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: report coverage failure lines by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1046\"\u003epypa/build#1046\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: fix issue with uv run by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1048\"\u003epypa/build#1048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: reorganize testing docs for copy/paste by \u003ca href=\"https://github.com/abitrolly\"\u003e\u003ccode\u003e@​abitrolly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1043\"\u003epypa/build#1043\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: keep environment from leaking in Python 3.15 by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1049\"\u003epypa/build#1049\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix issue with changelog generation by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1050\"\u003epypa/build#1050\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.3...1.4.4\"\u003ehttps://github.com/pypa/build/compare/1.4.3...1.4.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.4.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(api): resolve thread-safety races in build API by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1015\"\u003epypa/build#1015\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(builder): validate backend-path entries exist on disk by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1016\"\u003epypa/build#1016\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest: cover config settings build paths by \u003ca href=\"https://github.com/terminalchai\"\u003e\u003ccode\u003e@​terminalchai\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/992\"\u003epypa/build#992\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd kind=(step, ) for root messages with * by \u003ca href=\"https://github.com/abitrolly\"\u003e\u003ccode\u003e@​abitrolly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/973\"\u003epypa/build#973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: correct changelog category ordering by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1017\"\u003epypa/build#1017\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(cli): show full dependency chain in missing deps error by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1019\"\u003epypa/build#1019\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: fully annotate by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1020\"\u003epypa/build#1020\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: lazy imports by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1021\"\u003epypa/build#1021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: adding more ruff codes by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1022\"\u003epypa/build#1022\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: improve annotations by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1023\"\u003epypa/build#1023\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 test(coverage): achieve 100% test coverage by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1018\"\u003epypa/build#1018\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: add ruff PT by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1025\"\u003epypa/build#1025\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: add ruff PYI by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1026\"\u003epypa/build#1026\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: add ruff SIM/RET by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1028\"\u003epypa/build#1028\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(env): strip PYTHONPATH from isolated builds by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1024\"\u003epypa/build#1024\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: use ruff ALL by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1029\"\u003epypa/build#1029\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e####################\n1.5.0 (2026-04-30)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.9 support - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1036\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003e--ignore-installed\u003c/code\u003e opt-in from the API via \u003ccode\u003efresh=True\u003c/code\u003e - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1056\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1033\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.4 (2026-04-22)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eFix release pipeline generating \u003ccode\u003eCHANGELOG.rst\u003c/code\u003e entries with inconsistent heading levels, which broke \u003ccode\u003esphinx -W\u003c/code\u003e\nand pinned Read the Docs \u003ccode\u003estable\u003c/code\u003e at 1.4.0 - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e1031\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRevert :pr:\u003ccode\u003e1039\u003c/code\u003e from build 1.4.3, no longer check direct_url (for now) - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1039\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--ignore-installed\u003c/code\u003e to pip install command to prevent issues with packages already present in the isolated\nbuild environment - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1037\u003c/code\u003e) (:issue:\u003ccode\u003e1040\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePartial revert of :pr:\u003ccode\u003e973\u003c/code\u003e, keeping log messages in one entry, multiple lines. (:issue:\u003ccode\u003e1044\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1048\u003c/code\u003e, :issue:\u003ccode\u003e1049\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.3 (2026-04-10)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/615d04cfc52ac3c1592a463f0afe484fee1cc368\"\u003e\u003ccode\u003e615d04c\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/776f702f84787525df62a5473dd13d4e2f45b977\"\u003e\u003ccode\u003e776f702\u003c/code\u003e\u003c/a\u003e fix: api should not ignore installed, only CLI (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/42da4c4b483563819fabdb8ecf2f6df53ed82123\"\u003e\u003ccode\u003e42da4c4\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1055\"\u003e#1055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b445cd2e736db5f80cde7d952d620a73cc26bf9d\"\u003e\u003ccode\u003eb445cd2\u003c/code\u003e\u003c/a\u003e chore: tox toml (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/c44c143876042ac6e1212a31684a3adca19beda4\"\u003e\u003ccode\u003ec44c143\u003c/code\u003e\u003c/a\u003e feat: drop 3.9, require 3.10+ (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/a9bb4560d213069b11c8068159f1de060abec5b7\"\u003e\u003ccode\u003ea9bb456\u003c/code\u003e\u003c/a\u003e build(deps): bump astral-sh/setup-uv from 8.0.0 to 8.1.0 in the actions group...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/cb3351155ce99902580022acb81dc0adb8124d53\"\u003e\u003ccode\u003ecb33511\u003c/code\u003e\u003c/a\u003e ci: try to improve release docs (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1051\"\u003e#1051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/70666a296c2e5bb7451f5a04eef259f6f943d0de\"\u003e\u003ccode\u003e70666a2\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/653d86586dea8b4e020086a276a15a27ac7bd25d\"\u003e\u003ccode\u003e653d865\u003c/code\u003e\u003c/a\u003e docs: fix issue with changelog generation (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1050\"\u003e#1050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/373b9ee171e2f16353365b1a9a02bc408b96ca73\"\u003e\u003ccode\u003e373b9ee\u003c/code\u003e\u003c/a\u003e tests: keep environment from leaking in Python 3.15 (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1049\"\u003e#1049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.4.2...1.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.7 to 0.15.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.12\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-24.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:file-ignore\u003c/code\u003e file-level suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23599\"\u003e#23599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:ignore\u003c/code\u003e logical-line suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23404\"\u003e#23404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRevert preview changes to displayed diagnostic severity in LSP (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24789\"\u003e#24789\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003etask-branch-as-short-circuit\u003c/code\u003e (\u003ccode\u003eAIR004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23579\"\u003e#23579\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Fix \u003ccode\u003ebreak\u003c/code\u003e/\u003ccode\u003econtinue\u003c/code\u003e handling in \u003ccode\u003eloop-iterator-mutation\u003c/code\u003e (\u003ccode\u003eB909\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24440\"\u003e#24440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLC2701\u003c/code\u003e for type parameter scopes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24576\"\u003e#24576\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epandas-vet\u003c/code\u003e] Suggest \u003ccode\u003e.array\u003c/code\u003e as well in \u003ccode\u003ePD011\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24805\"\u003e#24805\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRespect default Unix permissions for cache files (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24794\"\u003e#24794\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLR0124\u003c/code\u003e description not to claim self-comparison always returns the same value (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24749\"\u003e#24749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Expand docs on reusable \u003ccode\u003eTypeVar\u003c/code\u003es and scoping (\u003ccode\u003eUP046\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24153\"\u003e#24153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove rules table accessibility (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24711\"\u003e#24711\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/woodruffw\"\u003e\u003ccode\u003e@​woodruffw\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/avasis-ai\"\u003e\u003ccode\u003e@​avasis-ai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dev-iL\"\u003e\u003ccode\u003e@​Dev-iL\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/denyszhak\"\u003e\u003ccode\u003e@​denyszhak\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ShipItAndPray\"\u003e\u003ccode\u003e@​ShipItAndPray\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/augustelalande\"\u003e\u003ccode\u003e@​augustelalande\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/majiayu000\"\u003e\u003ccode\u003e@​majiayu000\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.15.12\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.15.12/ruff-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.12\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-24.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:file-ignore\u003c/code\u003e file-level suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23599\"\u003e#23599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:ignore\u003c/code\u003e logical-line suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23404\"\u003e#23404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRevert preview changes to displayed diagnostic severity in LSP (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24789\"\u003e#24789\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003etask-branch-as-short-circuit\u003c/code\u003e (\u003ccode\u003eAIR004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23579\"\u003e#23579\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Fix \u003ccode\u003ebreak\u003c/code\u003e/\u003ccode\u003econtinue\u003c/code\u003e handling in \u003ccode\u003eloop-iterator-mutation\u003c/code\u003e (\u003ccode\u003eB909\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24440\"\u003e#24440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLC2701\u003c/code\u003e for type parameter scopes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24576\"\u003e#24576\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epandas-vet\u003c/code\u003e] Suggest \u003ccode\u003e.array\u003c/code\u003e as well in \u003ccode\u003ePD011\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24805\"\u003e#24805\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRespect default Unix permissions for cache files (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24794\"\u003e#24794\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLR0124\u003c/code\u003e description not to claim self-comparison always returns the same value (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24749\"\u003e#24749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Expand docs on reusable \u003ccode\u003eTypeVar\u003c/code\u003es and scoping (\u003ccode\u003eUP046\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24153\"\u003e#24153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove rules table accessibility (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24711\"\u003e#24711\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/woodruffw\"\u003e\u003ccode\u003e@​woodruffw\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/avasis-ai\"\u003e\u003ccode\u003e@​avasis-ai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dev-iL\"\u003e\u003ccode\u003e@​Dev-iL\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/denyszhak\"\u003e\u003ccode\u003e@​denyszhak\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ShipItAndPray\"\u003e\u003ccode\u003e@​ShipItAndPray\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/augustelalande\"\u003e\u003ccode\u003e@​augustelalande\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/majiayu000\"\u003e\u003ccode\u003e@​majiayu000\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.15.11\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-16.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Ignore \u003ccode\u003eRUF029\u003c/code\u003e when function is decorated with \u003ccode\u003easynccontextmanager\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24642\"\u003e#24642\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003eairflow-xcom-pull-in-template-string\u003c/code\u003e (\u003ccode\u003eAIR201\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23583\"\u003e#23583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Fix \u003ccode\u003eS103\u003c/code\u003e false positives and negatives in mask analysis (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24424\"\u003e#24424\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/66f93cf7ed4d36325f35a452e4afa28268fbcd28\"\u003e\u003ccode\u003e66f93cf\u003c/code\u003e\u003c/a\u003e Bump 0.15.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24815\"\u003e#24815\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/476a4d02e8e3b6c157ac39979d8b698a1b6baa91\"\u003e\u003ccode\u003e476a4d0\u003c/code\u003e\u003c/a\u003e [ty] Complete support for more detailed diagnostics on possibly unbound error...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ed669eab30095d6c51fe6cdef6050fb01276bcb3\"\u003e\u003ccode\u003eed669ea\u003c/code\u003e\u003c/a\u003e Implement \u003ccode\u003e#ruff:file-ignore\u003c/code\u003e file-level suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23599\"\u003e#23599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e73d952e43feb51356ee740c5a973fce81396ff6\"\u003e\u003ccode\u003ee73d952\u003c/code\u003e\u003c/a\u003e [ty] Include inferred type in \u003ccode\u003einvalid-key\u003c/code\u003e concise diagnostic for union/inte...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/80feb29b31cd98c093316df2e0407b0c70c01b55\"\u003e\u003ccode\u003e80feb29\u003c/code\u003e\u003c/a\u003e [ty] report only dead annotation-only locals as unused (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24811\"\u003e#24811\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/0fbf2bc27336a3d17d39af52cf89b78dcda8c7c8\"\u003e\u003ccode\u003e0fbf2bc\u003c/code\u003e\u003c/a\u003e Drop deprecated license classifier (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24808\"\u003e#24808\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/43b174cc7f2fcb0080bb1d4843cd4bf6b72bbe27\"\u003e\u003ccode\u003e43b174c\u003c/code\u003e\u003c/a\u003e [ty] Infer lambda parameter types with \u003ccode\u003eCallable\u003c/code\u003e type context (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24317\"\u003e#24317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/4f449ae4a2377569330a5ab94799d389357b5a3f\"\u003e\u003ccode\u003e4f449ae\u003c/code\u003e\u003c/a\u003e [ty] Add error context for intersection types (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24772\"\u003e#24772\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5b4e753acb46e96ad408e4904c15308e33efe307\"\u003e\u003ccode\u003e5b4e753\u003c/code\u003e\u003c/a\u003e [ty] Add support for goto in literal enum member inlay hint (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24792\"\u003e#24792\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e7cc76275a758ce1c636ea1c2d091fd576aac794\"\u003e\u003ccode\u003ee7cc762\u003c/code\u003e\u003c/a\u003e [ty] Add error context for TypedDict assignments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24790\"\u003e#24790\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.7...0.15.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mike` from 2.1.4 to 2.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jimporter/mike/releases\"\u003emike's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.2.0\u003c/h2\u003e\n\u003ch3\u003eNew features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ca href=\"https://properdocs.org/\"\u003eProperDocs\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse DST timestamps for new commits when DST is in effect\u003c/li\u003e\n\u003cli\u003eSupport ISO8601 and RFC 2822 values for \u003ccode\u003eGIT_COMMITTER_DATE\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jimporter/mike/blob/master/CHANGES.md\"\u003emike's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.2.0 (2026-04-13)\u003c/h2\u003e\n\u003ch3\u003eNew features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ca href=\"https://properdocs.org/\"\u003eProperDocs\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse DST timestamps for new commits when DST is in effect\u003c/li\u003e\n\u003cli\u003eSupport ISO8601 and RFC 2822 values for \u003ccode\u003eGIT_COMMITTER_DATE\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/b01e03075315ebd2d39a93c390cf14b6a83f3d5e\"\u003e\u003ccode\u003eb01e030\u003c/code\u003e\u003c/a\u003e Update version to 2.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/ca60b84ddb200d9d2636dce456e35b8ec5be6a0c\"\u003e\u003ccode\u003eca60b84\u003c/code\u003e\u003c/a\u003e Fix deprecation warning about \u003ccode\u003esplit\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/5b5ed3187337693fabcb3c6f8b524f8bc0348150\"\u003e\u003ccode\u003e5b5ed31\u003c/code\u003e\u003c/a\u003e Add ProperDocs support; resolves \u003ca href=\"https://redirect.github.com/jimporter/mike/issues/259\"\u003e#259\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/2adb1f1104e230ce4c6260ae17c960e21886a7a1\"\u003e\u003ccode\u003e2adb1f1\u003c/code\u003e\u003c/a\u003e Improve \u003ccode\u003emake_when\u003c/code\u003e implementation; resolves \u003ca href=\"https://redirect.github.com/jimporter/mike/issues/260\"\u003e#260\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/7363ce50a2a27ce88198383e43168d08c76f4633\"\u003e\u003ccode\u003e7363ce5\u003c/code\u003e\u003c/a\u003e Update version to 2.2.0.dev0\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/jimporter/mike/compare/v2.1.4...v2.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyright` from 1.1.408 to 1.1.409\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/RobertCraigie/pyright-python/commit/d7508e5425d3d02761d70dab1f9a2086573af429\"\u003e\u003ccode\u003ed7508e5\u003c/code\u003e\u003c/a\u003e [pyright updated to 1.1.409] Update Version (\u003ca href=\"https://redirect.github.com/RobertCraigie/pyright-python/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/RobertCraigie/pyright-python/compare/v1.1.408...v1.1.409\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/populationgenomics/cpg-flow/pull/176","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/populationgenomics%2Fcpg-flow/issues/176","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/176/packages"}],"issue_packages":[{"old_version":"1.4.2","new_version":"1.5.0","update_type":"minor","path":null,"pr_created_at":"2026-05-22T10:32:57.000Z","version_change":"1.4.2 → 1.5.0","issue":{"uuid":"4501917941","node_id":"PR_kwDOHGh5u87eTq-E","number":953,"state":"closed","title":"build(deps): bump the pipenv group across 1 directory with 18 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-25T15:54:26.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-22T10:32:57.000Z","updated_at":"2026-05-25T15:54:28.000Z","time_to_close":278489,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"pipenv","update_count":18,"packages":[{"name":"click","old_version":"8.3.2","new_version":"8.4.1","repository_url":"https://github.com/pallets/click"},{"name":"rich","old_version":"14.3.3","new_version":"14.3.4","repository_url":"https://github.com/Textualize/rich"},{"name":"requests","old_version":"2.33.1","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"psycopg2","old_version":"2.9.11","new_version":"2.9.12","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"beaupy","old_version":"3.11.0","new_version":"3.12.0","repository_url":"https://github.com/petereon/beaupy"},{"name":"boto3","old_version":"1.42.83","new_version":"1.43.13","repository_url":"https://github.com/boto/boto3"},{"name":"google-cloud-kms","old_version":"3.12.0","new_version":"3.13.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"azure-keyvault-keys","old_version":"4.11.0","new_version":"4.11.1","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"black","old_version":"26.3.1","new_version":"26.5.1","repository_url":"https://github.com/psf/black"},{"name":"tox","old_version":"4.52.0","new_version":"4.54.0","repository_url":"https://github.com/tox-dev/tox"},{"name":"pytest","old_version":"9.0.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"coverage","old_version":"7.13.5","new_version":"7.14.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"mypy","old_version":"1.20.0","new_version":"2.1.0","repository_url":"https://github.com/python/mypy"},{"name":"pip","old_version":"26.0.1","new_version":"26.1.1","repository_url":"https://github.com/pypa/pip"},{"name":"hatchling","old_version":"1.27.0","new_version":"1.29.0","repository_url":"https://github.com/pypa/hatch"},{"name":"build","old_version":"1.4.2","new_version":"1.5.0","repository_url":"https://github.com/pypa/build"},{"name":"pre-commit","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"types-requests","old_version":"2.33.0.20260402","new_version":"2.33.0.20260518","repository_url":"https://github.com/python/typeshed"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pipenv group with 18 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [click](https://github.com/pallets/click) | `8.3.2` | `8.4.1` |\n| [rich](https://github.com/Textualize/rich) | `14.3.3` | `14.3.4` |\n| [requests](https://github.com/psf/requests) | `2.33.1` | `2.34.2` |\n| [psycopg2](https://github.com/psycopg/psycopg2) | `2.9.11` | `2.9.12` |\n| [beaupy](https://github.com/petereon/beaupy) | `3.11.0` | `3.12.0` |\n| [boto3](https://github.com/boto/boto3) | `1.42.83` | `1.43.13` |\n| [google-cloud-kms](https://github.com/googleapis/google-cloud-python) | `3.12.0` | `3.13.0` |\n| [azure-keyvault-keys](https://github.com/Azure/azure-sdk-for-python) | `4.11.0` | `4.11.1` |\n| [black](https://github.com/psf/black) | `26.3.1` | `26.5.1` |\n| [tox](https://github.com/tox-dev/tox) | `4.52.0` | `4.54.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.0.3` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.5` | `7.14.0` |\n| [mypy](https://github.com/python/mypy) | `1.20.0` | `2.1.0` |\n| [pip](https://github.com/pypa/pip) | `26.0.1` | `26.1.1` |\n| [hatchling](https://github.com/pypa/hatch) | `1.27.0` | `1.29.0` |\n| [build](https://github.com/pypa/build) | `1.4.2` | `1.5.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.5.1` | `4.6.0` |\n| [types-requests](https://github.com/python/typeshed) | `2.33.0.20260402` | `2.33.0.20260518` |\n\n\nUpdates `click` from 8.3.2 to 8.4.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.4.1\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.4.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.4.1/\"\u003ehttps://pypi.org/project/click/8.4.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-4-1\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-4-1\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/32?closed=1\"\u003ehttps://github.com/pallets/click/milestone/32?closed=1\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eget_parameter_source()\u003c/code\u003e is available during eager callbacks and type conversion again. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3458\"\u003e#3458\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3484\"\u003e#3484\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eZsh completion scripts parse correctly on Windows. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3277\"\u003e#3277\u003c/a\u003e # 3466\u003c/li\u003e\n\u003cli\u003eShell completion of \u003ccode\u003eChoice\u003c/code\u003e \u003ccode\u003eEnum\u003c/code\u003e values produces a valid completion result. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3015\"\u003e#3015\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix empty byte-string handling in echo. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3487\"\u003e#3487\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix closed file error with \u003ccode\u003eecho_via_pager\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3449\"\u003e#3449\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.4.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.4.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.4.0/\"\u003ehttps://pypi.org/project/click/8.4.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-4-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-4-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/30\"\u003ehttps://github.com/pallets/click/milestone/30\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eParamType\u003c/code\u003e typing improvements. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3371\"\u003e#3371\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:class:\u003ccode\u003eParamType\u003c/code\u003e is now a generic abstract base class,\nparameterized by its converted value type.\u003c/li\u003e\n\u003cli\u003e:meth:\u003ccode\u003e~ParamType.convert\u003c/code\u003e return types are narrowed on all\nconcrete types (\u003ccode\u003estr\u003c/code\u003e for :class:\u003ccode\u003eSTRING\u003c/code\u003e, \u003ccode\u003eint\u003c/code\u003e for\n:class:\u003ccode\u003eINT\u003c/code\u003e, etc.).\u003c/li\u003e\n\u003cli\u003e:meth:\u003ccode\u003e~ParamType.to_info_dict\u003c/code\u003e returns specific\n:class:\u003ccode\u003e~typing.TypedDict\u003c/code\u003e subclasses instead of\n\u003ccode\u003edict[str, Any]\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e:class:\u003ccode\u003eCompositeParamType\u003c/code\u003e and the number-range base are now\ngeneric with abstract methods.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRefactor \u003ccode\u003econvert_type\u003c/code\u003e to extract type inference into a private\n\u003ccode\u003e_guess_type\u003c/code\u003e helper, and add :func:\u003ccode\u003etyping.overload\u003c/code\u003e signatures.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3372\"\u003e#3372\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eParameter\u003c/code\u003e typing improvements. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2805\"\u003e#2805\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:class:\u003ccode\u003eParameter\u003c/code\u003e is now an abstract base class, making explicit\nthat it cannot be instantiated directly.\u003c/li\u003e\n\u003cli\u003e:attr:\u003ccode\u003eParameter.name\u003c/code\u003e is now \u003ccode\u003estr\u003c/code\u003e instead of \u003ccode\u003estr | None\u003c/code\u003e.\nWhen \u003ccode\u003eexpose_value=False\u003c/code\u003e, the name is set to \u003ccode\u003e\u0026quot;\u0026quot;\u003c/code\u003e instead\nof \u003ccode\u003eNone\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ectx\u003c/code\u003e parameter of :meth:\u003ccode\u003eParameter.get_error_hint\u003c/code\u003e is now\ntyped as \u003ccode\u003eContext | None\u003c/code\u003e, matching the runtime behavior.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSplit string values from \u003ccode\u003edefault_map\u003c/code\u003e for parameters with \u003ccode\u003enargs \u0026gt; 1\u003c/code\u003e\nor :class:\u003ccode\u003eTuple\u003c/code\u003e type, matching environment variable behavior.\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\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.4.1\u003c/h2\u003e\n\u003cp\u003eReleased 2026-05-21\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eget_parameter_source()\u003c/code\u003e is available during eager callbacks and type\nconversion again. :issue:\u003ccode\u003e3458\u003c/code\u003e :issue:\u003ccode\u003e3484\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eZsh completion scripts parse correctly on Windows. :issue:\u003ccode\u003e3277\u003c/code\u003e :pr:\u003ccode\u003e3466\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eShell completion of \u003ccode\u003eChoice\u003c/code\u003e \u003ccode\u003eEnum\u003c/code\u003e values produces a valid completion\nresult. :issue:\u003ccode\u003e3015\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix empty byte-string handling in echo. :issue:\u003ccode\u003e3487\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix closed file error with \u003ccode\u003eecho_via_pager\u003c/code\u003e. :issue:\u003ccode\u003e3449\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.4.0\u003c/h2\u003e\n\u003cp\u003eReleased 2026-05-17\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e:class:\u003ccode\u003eParamType\u003c/code\u003e typing improvements. :pr:\u003ccode\u003e3371\u003c/code\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:class:\u003ccode\u003eParamType\u003c/code\u003e is now a generic abstract base class,\nparameterized by its converted value type.\u003c/li\u003e\n\u003cli\u003e:meth:\u003ccode\u003e~ParamType.convert\u003c/code\u003e return types are narrowed on all\nconcrete types (\u003ccode\u003estr\u003c/code\u003e for :class:\u003ccode\u003eSTRING\u003c/code\u003e, \u003ccode\u003eint\u003c/code\u003e for\n:class:\u003ccode\u003eINT\u003c/code\u003e, etc.).\u003c/li\u003e\n\u003cli\u003e:meth:\u003ccode\u003e~ParamType.to_info_dict\u003c/code\u003e returns specific\n:class:\u003ccode\u003e~typing.TypedDict\u003c/code\u003e subclasses instead of\n\u003ccode\u003edict[str, Any]\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e:class:\u003ccode\u003eCompositeParamType\u003c/code\u003e and the number-range base are now\ngeneric with abstract methods.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRefactor \u003ccode\u003econvert_type\u003c/code\u003e to extract type inference into a private\n\u003ccode\u003e_guess_type\u003c/code\u003e helper, and add :func:\u003ccode\u003etyping.overload\u003c/code\u003e signatures.\n:pr:\u003ccode\u003e3372\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e:class:\u003ccode\u003eParameter\u003c/code\u003e typing improvements. :pr:\u003ccode\u003e2805\u003c/code\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e:class:\u003ccode\u003eParameter\u003c/code\u003e is now an abstract base class, making explicit\nthat it cannot be instantiated directly.\u003c/li\u003e\n\u003cli\u003e:attr:\u003ccode\u003eParameter.name\u003c/code\u003e is now \u003ccode\u003estr\u003c/code\u003e instead of \u003ccode\u003estr | None\u003c/code\u003e.\nWhen \u003ccode\u003eexpose_value=False\u003c/code\u003e, the name is set to \u003ccode\u003e\u0026quot;\u0026quot;\u003c/code\u003e instead\nof \u003ccode\u003eNone\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ectx\u003c/code\u003e parameter of :meth:\u003ccode\u003eParameter.get_error_hint\u003c/code\u003e is now\ntyped as \u003ccode\u003eContext | None\u003c/code\u003e, matching the runtime behavior.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSplit string values from \u003ccode\u003edefault_map\u003c/code\u003e for parameters with \u003ccode\u003enargs \u0026gt; 1\u003c/code\u003e\nor :class:\u003ccode\u003eTuple\u003c/code\u003e type, matching environment variable behavior.\n:issue:\u003ccode\u003e2745\u003c/code\u003e :pr:\u003ccode\u003e3364\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAuto-detect \u003ccode\u003etype=UNPROCESSED\u003c/code\u003e for \u003ccode\u003eflag_value\u003c/code\u003e of non-basic types\n(not \u003ccode\u003estr\u003c/code\u003e, \u003ccode\u003eint\u003c/code\u003e, \u003ccode\u003efloat\u003c/code\u003e, or \u003ccode\u003ebool\u003c/code\u003e), so programmer-provided\nPython objects like classes and enum members are passed through unchanged\ninstead of being stringified. Previously \u003ccode\u003etype=click.UNPROCESSED\u003c/code\u003e had\nto be set explicitly. :issue:\u003ccode\u003e2012\u003c/code\u003e :pr:\u003ccode\u003e3363\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/6eeb50e948ea136db145280f6f5dd52eca3fa7e5\"\u003e\u003ccode\u003e6eeb50e\u003c/code\u003e\u003c/a\u003e release version 8.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/67921d5b71584112eebcbf89596b5f0e6d14c49f\"\u003e\u003ccode\u003e67921d5\u003c/code\u003e\u003c/a\u003e change log and doc fixes (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3495\"\u003e#3495\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/9c41f46a4015700489ad009266edf1f3893d01d1\"\u003e\u003ccode\u003e9c41f46\u003c/code\u003e\u003c/a\u003e Fix changelog and version admonitions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/6cb34774f20598aa288332f8da02c5aee85448a6\"\u003e\u003ccode\u003e6cb3477\u003c/code\u003e\u003c/a\u003e fix skip condition\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/5ee8e3123d8ddece6c47eff9a7a7d4ca478c4f37\"\u003e\u003ccode\u003e5ee8e31\u003c/code\u003e\u003c/a\u003e fix I/O operation on closed file error with CliRunner and echo_via_pager (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3482\"\u003e#3482\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/becbde5cf416441627f779e8dd34e57738ee1c1f\"\u003e\u003ccode\u003ebecbde5\u003c/code\u003e\u003c/a\u003e pager doesn't close std streams\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a5f5aa6d4012d256ccca24638f2642fc371e9f77\"\u003e\u003ccode\u003ea5f5aa6\u003c/code\u003e\u003c/a\u003e Handle empty bytes in echo (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3493\"\u003e#3493\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/4d3db84b251518e97299a38a5ca4bab3d01873a2\"\u003e\u003ccode\u003e4d3db84\u003c/code\u003e\u003c/a\u003e handle empty bytes in echo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/d42f15b71757de791a5781fb179fd972da9169f5\"\u003e\u003ccode\u003ed42f15b\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eget_parameter_source()\u003c/code\u003e during type conversion and eager callbacks (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3484\"\u003e#3484\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/0baa8db07736fc7ad3d3eed97d4c73b0059c63e1\"\u003e\u003ccode\u003e0baa8db\u003c/code\u003e\u003c/a\u003e Document ctx.params bypass with test and doc\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.3.2...8.4.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.3.3 to 14.3.4\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 Faster Startup Release\u003c/h2\u003e\n\u003cp\u003eNo new features in this release, but there should be improved startup time for Rich apps, and potentially improved runtime if you have a lot of links.\u003c/p\u003e\n\u003ch2\u003e[14.3.4] - 2026-04-11\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved import time with lazy loading \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/4070\"\u003eTextualize/rich#4070\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChanged link id generation to avoid random number generation at runtime \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3845\"\u003eTextualize/rich#3845\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.3.4] - 2026-04-11\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved import time with lazy loading \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/4070\"\u003eTextualize/rich#4070\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChanged link id generation to avoid random number generation at runtime \u003ca href=\"https://redirect.github.com/Textualize/rich/pull/3845\"\u003eTextualize/rich#3845\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/ee8378c3bbbd7c75abc2f55c6c19e83b218ae81d\"\u003e\u003ccode\u003eee8378c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/4073\"\u003e#4073\u003c/a\u003e from Textualize/bump1434\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/f441a326f10af5dc0cd570dadaed16e7f7035fc3\"\u003e\u003ccode\u003ef441a32\u003c/code\u003e\u003c/a\u003e changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/b3167144fea59b02e257c1361f5e0c5832065ccd\"\u003e\u003ccode\u003eb316714\u003c/code\u003e\u003c/a\u003e bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/a86dce09714f4e5195cce8c15fce7a586d7b562a\"\u003e\u003ccode\u003ea86dce0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/3845\"\u003e#3845\u003c/a\u003e from akx/faster-ids\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/7f40063da781f4990d21423f23f7ccb3165ce0bd\"\u003e\u003ccode\u003e7f40063\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Textualize/rich/issues/4070\"\u003e#4070\u003c/a\u003e from KRRT7/upstream/lazy-traceback-logging\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/6729c6f6c4ee24a13a94d825cb7ce66b52206db2\"\u003e\u003ccode\u003e6729c6f\u003c/code\u003e\u003c/a\u003e typing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/64f2f1cf89a698f17f5b2c801b014dc8aced1177\"\u003e\u003ccode\u003e64f2f1c\u003c/code\u003e\u003c/a\u003e import\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/de4a8bd5746a3cbda6d8ead9f75cbf49f868a639\"\u003e\u003ccode\u003ede4a8bd\u003c/code\u003e\u003c/a\u003e lazy is_expandable\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/e5b7b3199fecb1f7d1fbc3d3d0df800fa6234830\"\u003e\u003ccode\u003ee5b7b31\u003c/code\u003e\u003c/a\u003e no need to rename locals\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/rich/commit/5d6e2d72e4012eb594e131a8319dbd4165d97eda\"\u003e\u003ccode\u003e5d6e2d7\u003c/code\u003e\u003c/a\u003e fix docstring\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Textualize/rich/compare/v14.3.3...v14.3.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.33.1 to 2.34.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.34.2\u003c/h2\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues with \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling \u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.1\u003c/h2\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/k223kim\"\u003e\u003ccode\u003e@​k223kim\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7433\"\u003epsf/requests#7433\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.0\u003c/h2\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. \u003cstrong\u003eWe believe types are comprehensive but if you find issues, please\nreport them to the \u003ca href=\"https://redirect.github.com/psf/requests/issues/7271\"\u003epinned tracking issue\u003c/a\u003e.\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be able to start testing prior to its release in October. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.14t. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResponse.history\u003c/code\u003e no longer contains a reference to itself, preventing\naccidental looping when traversing the history list. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7328\"\u003e#7328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer performs greedy matching on no_proxy domains. The\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues\nwith \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling\n\u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. We believe types are comprehensive but if you find issues, please\nreport them to the pinned tracking issue.\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be able to start testing prior to its release in October. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.14t. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResponse.history\u003c/code\u003e no longer contains a reference to itself, preventing\naccidental looping when traversing the history list. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7328\"\u003e#7328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer performs greedy matching on no_proxy domains. The\nproxy_bypass implementation has been updated with CPython's fix from\nbpo-39057. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer incorrectly strips duplicate leading slashes in\nURI paths. This should address user issues with specific presigned\nURLs. Note the full fix requires urllib3 2.7.0+. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7315\"\u003e#7315\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6e83187b8feb273ed4c6cdab5efd8d54901dfab3\"\u003e\u003ccode\u003e6e83187\u003c/code\u003e\u003c/a\u003e v2.34.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/84d10f0be83e8f6aeca8a05230c52216431c4d0b\"\u003e\u003ccode\u003e84d10f0\u003c/code\u003e\u003c/a\u003e Move Request.headers back to Mapping (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b7b549b54571d03950b16afd2d01bc6ff0348224\"\u003e\u003ccode\u003eb7b549b\u003c/code\u003e\u003c/a\u003e v2.34.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/e511bc72777a94c45d004e010c597925092e1efe\"\u003e\u003ccode\u003ee511bc7\u003c/code\u003e\u003c/a\u003e Fix mutability issues with headers input types (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/5691f596134c2feb121e595c77a0178921fcce61\"\u003e\u003ccode\u003e5691f59\u003c/code\u003e\u003c/a\u003e Update JsonType containers to read-based collections (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/2144213c307691710c9d665700860fc4993c3035\"\u003e\u003ccode\u003e2144213\u003c/code\u003e\u003c/a\u003e Constrain Response.reason to str (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6404f345e562d962abe6700a1c357ec1e7e18232\"\u003e\u003ccode\u003e6404f34\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eprepare_body\u003c/code\u003e stream detection for \u003ccode\u003e__getattr__\u003c/code\u003e-based file wrappers (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7\"\u003e#7\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/0b401c76b6e80a4eecf3c690085b2553f6e261ca\"\u003e\u003ccode\u003e0b401c7\u003c/code\u003e\u003c/a\u003e v2.34.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/86b378d3f60f828daa13ca50aa82e287ff7b66b4\"\u003e\u003ccode\u003e86b378d\u003c/code\u003e\u003c/a\u003e Align Session.get parameters with requests.get (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7429\"\u003e#7429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/a4f9a5999bdb9bf2d6e7c8aa973b28cacb17134f\"\u003e\u003ccode\u003ea4f9a59\u003c/code\u003e\u003c/a\u003e Port bpo-39057 to Requests (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.33.1...v2.34.2\"\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.11 to 2.9.12\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.12\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix infinite loop with malformed interval (:ticket:\u003ccode\u003e1835\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\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\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/3a6d9d6ddc6b53eaa80b712f5fa6b23abbdc38db\"\u003e\u003ccode\u003e3a6d9d6\u003c/code\u003e\u003c/a\u003e ci: include almalinux in whieel building\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/ebca6bf0f86bc6cbdc86de1eb3a53eaf49966d86\"\u003e\u003ccode\u003eebca6bf\u003c/code\u003e\u003c/a\u003e chore: bump to version 3.9.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/0196f02cc9512df8de3c941f87d27bda98f9f7af\"\u003e\u003ccode\u003e0196f02\u003c/code\u003e\u003c/a\u003e build(deps): bump pypa/cibuildwheel from 3.3.1 to 3.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/d157bdc2235a42dc1742936dbb0f5cfc8e4d2eb7\"\u003e\u003ccode\u003ed157bdc\u003c/code\u003e\u003c/a\u003e build(deps): bump docker/setup-qemu-action from 3 to 4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/7fccc0f5066a40dea530512abbf02621f4182b81\"\u003e\u003ccode\u003e7fccc0f\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 6 to 7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/d52a61eb2e6095fc1b9891bfcca44ebfac509e55\"\u003e\u003ccode\u003ed52a61e\u003c/code\u003e\u003c/a\u003e chore: bump dependency libraries\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/b231d726a01d55e07ec3620b2b82f4a2da37ba62\"\u003e\u003ccode\u003eb231d72\u003c/code\u003e\u003c/a\u003e chore: fix building binary images\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/6d76e8479f0f522c2e07ce0e2701030d8fd63785\"\u003e\u003ccode\u003e6d76e84\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg2/issues/1836\"\u003e#1836\u003c/a\u003e from psycopg/fix-1835\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/f7e314c7ab418ab9b9956e694956089a49c5c3b9\"\u003e\u003ccode\u003ef7e314c\u003c/code\u003e\u003c/a\u003e fix: overflow in malformed interval\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/eb905c124b75f2a5183d22177b85af20914b0f17\"\u003e\u003ccode\u003eeb905c1\u003c/code\u003e\u003c/a\u003e docs: replace bare except clause with except Exception\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psycopg/psycopg2/compare/2.9.11...2.9.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `beaupy` from 3.11.0 to 3.12.0\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.12.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: update python versions and fix test CI action 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/156\"\u003epetereon/beaupy#156\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency python to 3.14 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/154\"\u003epetereon/beaupy#154\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency black to v25.12.0 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/153\"\u003epetereon/beaupy#153\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency mock to v5.2.0 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/151\"\u003epetereon/beaupy#151\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency mypy to v1.19.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/142\"\u003epetereon/beaupy#142\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(deps): update dependency emoji to v2.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/140\"\u003epetereon/beaupy#140\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update jamesives/github-pages-deploy-action action to v4.7.3 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/146\"\u003epetereon/beaupy#146\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update actions/setup-python action to v6 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/161\"\u003epetereon/beaupy#161\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update jamesives/github-pages-deploy-action action to v4.8.0 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/160\"\u003epetereon/beaupy#160\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update actions/checkout action to v6 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/159\"\u003epetereon/beaupy#159\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency questo to v0.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/158\"\u003epetereon/beaupy#158\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update github/codeql-action action to v4 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/165\"\u003epetereon/beaupy#165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency pytest to v9 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/163\"\u003epetereon/beaupy#163\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency pytest-cov to v7 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/164\"\u003epetereon/beaupy#164\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update pypa/gh-action-pypi-publish digest to 03f86fe 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/134\"\u003epetereon/beaupy#134\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency black to v26 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/167\"\u003epetereon/beaupy#167\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update stefanzweifel/git-auto-commit-action action to v7 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/166\"\u003epetereon/beaupy#166\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update pypa/gh-action-pypi-publish digest to e2bab26 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/168\"\u003epetereon/beaupy#168\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency flake8-simplify to v0.30.0 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/150\"\u003epetereon/beaupy#150\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency toml-sort to v0.24.3 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/149\"\u003epetereon/beaupy#149\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update pypa/gh-action-pypi-publish digest to cef2210 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/169\"\u003epetereon/beaupy#169\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency black to v26.3.1 [security] 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/172\"\u003epetereon/beaupy#172\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency pytest-cov to v7.1.0 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/173\"\u003epetereon/beaupy#173\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency toml-sort to v0.24.4 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/174\"\u003epetereon/beaupy#174\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update codecov/codecov-action action to v6 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/175\"\u003epetereon/beaupy#175\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency mypy to v1.20.0 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/176\"\u003epetereon/beaupy#176\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency pytest to v9.0.3 [security] 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/179\"\u003epetereon/beaupy#179\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency mypy to v1.20.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/178\"\u003epetereon/beaupy#178\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): update dependency black to v26.5.0 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/183\"\u003epetereon/beaupy#183\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: auto-pagination for longer lists than console size 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/186\"\u003epetereon/beaupy#186\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.11.0...v3.12.0\"\u003ehttps://github.com/petereon/beaupy/compare/v3.11.0...v3.12.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/d9d8577621abeae86bd8b1850e827ea9fca1fd0c\"\u003e\u003ccode\u003ed9d8577\u003c/code\u003e\u003c/a\u003e chore: bump version from 3.11.0 to 3.12.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/47744409ee262465a2f3bed51f2d77aa499bb917\"\u003e\u003ccode\u003e4774440\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/186\"\u003e#186\u003c/a\u003e from petereon/auto-pagination\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/921dd5d1505662037778a125eb84d4ad2ce59b0f\"\u003e\u003ccode\u003e921dd5d\u003c/code\u003e\u003c/a\u003e feat: auto-pagination for longer lists than console size\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/4797730dc88f8cf3d4c2ac0a9ca054506824fc29\"\u003e\u003ccode\u003e4797730\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/183\"\u003e#183\u003c/a\u003e from petereon/renovate/black-26.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/516d53cc3b8cfa47f1ee12ce5471b6128c7315ad\"\u003e\u003ccode\u003e516d53c\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency black to v26.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/2b3e71d98e0ba14cba384abd427b590b55da1ed7\"\u003e\u003ccode\u003e2b3e71d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/178\"\u003e#178\u003c/a\u003e from petereon/renovate/mypy-1.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/7b9253fa26400b348a88a1eac7e23ff0076412c3\"\u003e\u003ccode\u003e7b9253f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/petereon/beaupy/issues/179\"\u003e#179\u003c/a\u003e from petereon/renovate/pypi-pytest-vulnerability\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/a4328a124d1db144fe729c1bd03d1431653b1141\"\u003e\u003ccode\u003ea4328a1\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency pytest to v9.0.3 [security]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/a5afb6074875b15728be3a9141318984cfa2178e\"\u003e\u003ccode\u003ea5afb60\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency mypy to v1.20.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/petereon/beaupy/commit/cf1d47ec126cbe3f271fb624adcf9a7b1e3425c2\"\u003e\u003ccode\u003ecf1d47e\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency mypy to v1.20.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/petereon/beaupy/compare/v3.11.0...v3.12.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3` from 1.42.83 to 1.43.13\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/97921f4babf469d1c1fbbb27746bbaece6008122\"\u003e\u003ccode\u003e97921f4\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.13'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/1307ac2642ed8e53aca983b1c89e952309a0c66d\"\u003e\u003ccode\u003e1307ac2\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.13\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/c75c901f5be45cce8e8f46733ee0562d06110c81\"\u003e\u003ccode\u003ec75c901\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/d3f2433ff49062a75426c406e606625b69a32eb6\"\u003e\u003ccode\u003ed3f2433\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.12'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/d5eddf97fcacb8e8aecf0ff043501ff97454f105\"\u003e\u003ccode\u003ed5eddf9\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.12' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/93f3a42377b288934f08416a9c3b63920d8163c6\"\u003e\u003ccode\u003e93f3a42\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/5355abdca2dfffff34b4e7b05135911845a87631\"\u003e\u003ccode\u003e5355abd\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/9ef5febabaaa8cb403fb3a5e97b0b6d333a0851a\"\u003e\u003ccode\u003e9ef5feb\u003c/code\u003e\u003c/a\u003e Bump idna from 3.7 to 3.15 (\u003ca href=\"https://redirect.github.com/boto/boto3/issues/4788\"\u003e#4788\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/c628e75265dc9d48b40a216c72575e46348bbd21\"\u003e\u003ccode\u003ec628e75\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.11'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/210f10744645854d03856c59e73b4db84144dacb\"\u003e\u003ccode\u003e210f107\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.11' into develop\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.42.83...1.43.13\"\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.12.0 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/googleapis/google-cloud-python/releases\"\u003egoogle-cloud-kms's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003egoogle-cloud-kms: v3.13.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/compare/google-cloud-kms-v3.12.0...google-cloud-kms-v3.13.0\"\u003ev3.13.0\u003c/a\u003e (2026-05-06)\u003c/h2\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/googleapis/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.12.0...google-cloud-documentai-v3.13.0\"\u003e3.13.0\u003c/a\u003e (2026-03-26)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow Protobuf 7.x (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/1eb7c268482e55971966e284dac2cbeb903adcbb\"\u003e1eb7c268482e55971966e284dac2cbeb903adcbb\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRequire Python 3.9 (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/1eb7c268482e55971966e284dac2cbeb903adcbb\"\u003e1eb7c268482e55971966e284dac2cbeb903adcbb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequire google-api-core \u0026gt;= 2.11.0 (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/1eb7c268482e55971966e284dac2cbeb903adcbb\"\u003e1eb7c268482e55971966e284dac2cbeb903adcbb\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove type checking (\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/1eb7c268482e55971966e284dac2cbeb903adcbb\"\u003e1eb7c268482e55971966e284dac2cbeb903adcbb\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/googleapis/google-cloud-python/commit/3997a108c45e1c1df8e844746eb2af4b1a77e154\"\u003e\u003ccode\u003e3997a10\u003c/code\u003e\u003c/a\u003e chore: librarian release pull request: 20260506T163115Z (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16964\"\u003e#16964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/f655e492c0879684b60a7d06e90501dd49e96252\"\u003e\u003ccode\u003ef655e49\u003c/code\u003e\u003c/a\u003e chore: add type annotation to SYNCPOINTS (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16973\"\u003e#16973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/f149bd7dd30489c3165bf03a2343dc9f75875451\"\u003e\u003ccode\u003ef149bd7\u003c/code\u003e\u003c/a\u003e refactor(bigframes): Modularize compiler routing as proxy executor (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16907\"\u003e#16907\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/19db82f5cb033215531e5b65239e45275e3ed568\"\u003e\u003ccode\u003e19db82f\u003c/code\u003e\u003c/a\u003e chore(bigframes): remove leftover support for Python \u0026lt;= 3.9 (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16961\"\u003e#16961\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/2dedaacf0666ade39ae89194ad8dbc34761bd1df\"\u003e\u003ccode\u003e2dedaac\u003c/code\u003e\u003c/a\u003e chore: test CommonResource resource name alias (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16965\"\u003e#16965\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/9652a08cb89441fac779eb4fa4d6f48f33b55d3b\"\u003e\u003ccode\u003e9652a08\u003c/code\u003e\u003c/a\u003e fix: pass resource aliases to file-level CommonResources (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16945\"\u003e#16945\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/78a48b040a2abc0bf19ebe267aba0a1f410df2e6\"\u003e\u003ccode\u003e78a48b0\u003c/code\u003e\u003c/a\u003e fix(google-cloud-core): Drop support for Python 3.9 (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16953\"\u003e#16953\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/5975c48186dd8798b172ac442fd55bc7fece1612\"\u003e\u003ccode\u003e5975c48\u003c/code\u003e\u003c/a\u003e fix(dns): Drop support for Python 3.9 (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16954\"\u003e#16954\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/d5bea2e99b435b8b3d75321679072db092001de6\"\u003e\u003ccode\u003ed5bea2e\u003c/code\u003e\u003c/a\u003e fix(crc32c): Drop support for Python 3.8 and 3.9 (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16955\"\u003e#16955\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/googleapis/google-cloud-python/commit/63f6d96c1c5569b5fdaea85dfe995ce280907b98\"\u003e\u003ccode\u003e63f6d96\u003c/code\u003e\u003c/a\u003e fix(sqlalchemy-bigquery): Drop support for Python 3.8 and 3.9 (\u003ca href=\"https://redirect.github.com/googleapis/google-cloud-python/issues/16956\"\u003e#16956\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/googleapis/google-cloud-python/compare/google-cloud-kms-v3.12.0...google-cloud-kms-v3.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `azure-keyvault-keys` from 4.11.0 to 4.11.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Azure/azure-sdk-for-python/releases\"\u003eazure-keyvault-keys's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eazure-keyvault-keys_4.11.1\u003c/h2\u003e\n\u003ch2\u003e4.11.1 (2026-05-18)\u003c/h2\u003e\n\u003ch3\u003eFeatures Added\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for service API version \u003ccode\u003e2025-07-01\u003c/code\u003e \u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/pull/46716\"\u003e#46716\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKey Vault API version \u003ccode\u003e2025-07-01\u003c/code\u003e is now the default\u003c/li\u003e\n\u003cli\u003eUpdated minimum \u003ccode\u003ecryptography\u003c/code\u003e version to 44.0.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/18e7c83822d6c4ab36100a52024d7791f5ce99d6\"\u003e\u003ccode\u003e18e7c83\u003c/code\u003e\u003c/a\u003e Update release plan and SDK release skills with improved wording and optional...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/a634fee12332dd64d5d04054db242e82d5de8028\"\u003e\u003ccode\u003ea634fee\u003c/code\u003e\u003c/a\u003e [Key Vault] Regenerated SecurityDomain SDK with new folder structure and API ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/b66e92220423b76fba42bf586034fe08df3b3cfa\"\u003e\u003ccode\u003eb66e922\u003c/code\u003e\u003c/a\u003e Regenerate azure-mgmt-purview with latest code generator tool (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/46980\"\u003e#46980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/209643762d07f7c9c006a7776238b2b03eed34ec\"\u003e\u003ccode\u003e2096437\u003c/code\u003e\u003c/a\u003e Regenerate azure-mgmt-powerbidedicated with latest code generator tool (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/46976\"\u003e#46976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/5ba092498b1af30efad1ebabf2b87b587b89692f\"\u003e\u003ccode\u003e5ba0924\u003c/code\u003e\u003c/a\u003e Regenerate azure-mgmt-recoveryservices with latest code generator tool (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/46984\"\u003e#46984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/e86ae3a548cc9076570575f2a1aafbb1d82b010b\"\u003e\u003ccode\u003ee86ae3a\u003c/code\u003e\u003c/a\u003e [breaking-changes-tool][Feature] Detect changed return type for functions/met...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/2ea6c873aef4d08b6ebc4399f38be065d7228a19\"\u003e\u003ccode\u003e2ea6c87\u003c/code\u003e\u003c/a\u003e Regenerate azure-mgmt-operationsmanagement with latest code generator tool (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/3d4f111b3057824b1158156a690ff67cadd9c777\"\u003e\u003ccode\u003e3d4f111\u003c/code\u003e\u003c/a\u003e Regenerate azure-mgmt-peering with latest code generator tool (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/46974\"\u003e#46974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/02335c5c795cb9f5911eaf3ba54998568847592a\"\u003e\u003ccode\u003e02335c5\u003c/code\u003e\u003c/a\u003e Regenerate azure-mgmt-policyinsights with latest code generator tool (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/46975\"\u003e#46975\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/74fb2fe3cdcb2a4d4b6f281359526214e9f1ee3d\"\u003e\u003ccode\u003e74fb2fe\u003c/code\u003e\u003c/a\u003e Enable A365 tracing and fix W3C baggage propagation in agentserver (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/46754\"\u003e#46754\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Azure/azure-sdk-for-python/compare/azure-keyvault-keys_4.11.0...azure-keyvault-keys_4.11.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `black` from 26.3.1 to 26.5.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/black/releases\"\u003eblack's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.5.1\u003c/h2\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix unstable formatting of annotated assignments whose subscript annotation contains\nan inline comment (e.g. \u003ccode\u003ex: list[  # pyright: ignore[...]\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/psf/black/issues/5130\"\u003e#5130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve inline comments (including \u003ccode\u003e# type: ignore\u003c/code\u003e) immediately before a\n\u003ccode\u003e# fmt: skip\u003c/code\u003e line, avoiding AST equivalence failures (\u003ca href=\"https://redirect.github.com/psf/black/issues/5139\"\u003e#5139\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCorrect the version in the published executables (\u003ca href=\"https://redirect.github.com/psf/black/issues/5137\"\u003e#5137\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Neovim integration guide covering conform.nvim, ALE, and simple command approaches\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/5124\"\u003e#5124\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e26.5.0\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for unpacking in comprehensions (PEP 798) and for lazy imports (PEP 810),\nboth new syntactic features in Python 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5048\"\u003e#5048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePython 3.15 is now supported. Compiled wheels are not yet provided for Python 3.15, so\nperformance may be slower than on existing Python versions. Wheels will be provided\nonce Python 3.15 is later in its release cycle. (\u003ca href=\"https://redirect.github.com/psf/black/issues/5127\"\u003e#5127\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003e# fmt: skip\u003c/code\u003e being ignored in nested \u003ccode\u003eif\u003c/code\u003e expressions with parenthesized \u003ccode\u003ein\u003c/code\u003e\nclauses (\u003ca href=\"https://redirect.github.com/psf/black/issues/4903\"\u003e#4903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd syntactic support for Python 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5048\"\u003e#5048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when an f-string follows a \u003ccode\u003e# fmt: off\u003c/code\u003e comment inside brackets (\u003ca href=\"https://redirect.github.com/psf/black/issues/5097\"\u003e#5097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve multiline compound statement headers when \u003ccode\u003e# fmt: skip\u003c/code\u003e is placed on the\ncolon line (\u003ca href=\"https://redirect.github.com/psf/black/issues/5117\"\u003e#5117\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove heuristics around whether blank lines should appear before, within and after\ngroups of same-name decorated functions (such as \u003ccode\u003e@overload\u003c/code\u003e groups) in \u003ccode\u003e.pyi\u003c/code\u003e stub\nfiles (\u003ca href=\"https://redirect.github.com/psf/black/issues/5021\"\u003e#5021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix blank lines being removed between a function and a decorated class in \u003ccode\u003e.pyi\u003c/code\u003e stub\nfiles (\u003ca href=\"https://redirect.github.com/psf/black/issues/5092\"\u003e#5092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrevent string merger from creating unsplittable long lines when a pragma comment\n(e.g. \u003ccode\u003e# type: ignore\u003c/code\u003e) follows the closing bracket (\u003ca href=\"https://redirect.github.com/psf/black/issues/5096\"\u003e#5096\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRun CI on 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5127\"\u003e#5127\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOutput\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/psf/black/blob/main/CHANGES.md\"\u003eblack's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 26.5.1\u003c/h2\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix unstable formatting of annotated assignments whose subscript annotation contains\nan inline comment (e.g. \u003ccode\u003ex: list[  # pyright: ignore[...]\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/psf/black/issues/5130\"\u003e#5130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve inline comments (including \u003ccode\u003e# type: ignore\u003c/code\u003e) immediately before a\n\u003ccode\u003e# fmt: skip\u003c/code\u003e line, avoiding AST equivalence failures (\u003ca href=\"https://redirect.github.com/psf/black/issues/5139\"\u003e#5139\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCorrect the version in the published executables (\u003ca href=\"https://redirect.github.com/psf/black/issues/5137\"\u003e#5137\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Neovim integration guide covering conform.nvim, ALE, and simple command approaches\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/5124\"\u003e#5124\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 26.5.0\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for unpacking in comprehensions (PEP 798) and for lazy imports (PEP 810),\nboth new syntactic features in Python 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5048\"\u003e#5048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePython 3.15 is now supported. Compiled wheels are not yet provided for Python 3.15, so\nperformance may be slower than on existing Python versions. Wheels will be provided\nonce Python 3.15 is later in its release cycle. (\u003ca href=\"https://redirect.github.com/psf/black/issues/5127\"\u003e#5127\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003e# fmt: skip\u003c/code\u003e being ignored in nested \u003ccode\u003eif\u003c/code\u003e expressions with parenthesized \u003ccode\u003ein\u003c/code\u003e\nclauses (\u003ca href=\"https://redirect.github.com/psf/black/issues/4903\"\u003e#4903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd syntactic support for Python 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5048\"\u003e#5048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when an f-string follows a \u003ccode\u003e# fmt: off\u003c/code\u003e comment inside brackets (\u003ca href=\"https://redirect.github.com/psf/black/issues/5097\"\u003e#5097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve multiline compound statement headers when \u003ccode\u003e# fmt: skip\u003c/code\u003e is placed on the\ncolon line (\u003ca href=\"https://redirect.github.com/psf/black/issues/5117\"\u003e#5117\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove heuristics around whether blank lines should appear before, within and after\ngroups of same-name decorated functions (such as \u003ccode\u003e@overload\u003c/code\u003e groups) in \u003ccode\u003e.pyi\u003c/code\u003e stub\nfiles (\u003ca href=\"https://redirect.github.com/psf/black/issues/5021\"\u003e#5021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix blank lines being removed between a function and a decorated class in \u003ccode\u003e.pyi\u003c/code\u003e stub\nfiles (\u003ca href=\"https://redirect.github.com/psf/black/issues/5092\"\u003e#5092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrevent string merger from creating unsplittable long lines when a pragma comment\n(e.g. \u003ccode\u003e# type: ignore\u003c/code\u003e) follows the closing bracket (\u003ca href=\"https://redirect.github.com/psf/black/issues/5096\"\u003e#5096\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRun CI on 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5127\"\u003e#5127\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/87928e6d6761a4a6d22250e1fee5601b3998086e\"\u003e\u003ccode\u003e87928e6\u003c/code\u003e\u003c/a\u003e Prepare release 26.5.1 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5140\"\u003e#5140\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/c970a49702488739add6c728122deb3a99900803\"\u003e\u003ccode\u003ec970a49\u003c/code\u003e\u003c/a\u003e Preserve comments before fmt: skip lines (\u003ca href=\"https://redirect.github.com/psf/black/issues/5139\"\u003e#5139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/5809338fd5f92d50e80c2ad312292ae6d428a480\"\u003e\u003ccode\u003e5809338\u003c/code\u003e\u003c/a\u003e Preserve inline comments inside annotation subscripts (\u003ca href=\"https://redirect.github.com/psf/black/issues/5130\"\u003e#5130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/61361b71995f6ea44ce01915bacd3ecc50642507\"\u003e\u003ccode\u003e61361b7\u003c/code\u003e\u003c/a\u003e docs: add Neovim integration guide and fix http link (\u003ca href=\"https://redirect.github.com/psf/black/issues/5124\"\u003e#5124\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/ebe6018e3254629788376e619207719fbe34a849\"\u003e\u003ccode\u003eebe6018\u003c/code\u003e\u003c/a\u003e CI Hotfixes (\u003ca href=\"https://redirect.github.com/psf/black/issues/5136\"\u003e#5136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/9cbd95f80e97c1ab4d690d1d41b81579a13bf75c\"\u003e\u003ccode\u003e9cbd95f\u003c/code\u003e\u003c/a\u003e Fix publish binaries again on Windows (\u003ca href=\"https://redirect.github.com/psf/black/issues/5134\"\u003e#5134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/3dc8e6c41911bdaedb4bac8d633979c34a112b78\"\u003e\u003ccode\u003e3dc8e6c\u003c/code\u003e\u003c/a\u003e Add new changelog (\u003ca href=\"https://redirect.github.com/psf/black/issues/5132\"\u003e#5132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/6d0fff0d5a965b9d0d3dbd7c5738d835fd574130\"\u003e\u003ccode\u003e6d0fff0\u003c/code\u003e\u003c/a\u003e Fix publish binaries workflow (\u003ca href=\"https://redirect.github.com/psf/black/issues/5133\"\u003e#5133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/d2490e24dad33b8f68c77602ee29160de0fea24b\"\u003e\u003ccode\u003ed2490e2\u003c/code\u003e\u003c/a\u003e Prepare release 26.5.0 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5131\"\u003e#5131\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/2b13ea76fa69d4923381df65deb1a5c896ca27ad\"\u003e\u003ccode\u003e2b13ea7\u003c/code\u003e\u003c/a\u003e Preserve multiline headers with fmt skip (\u003ca href=\"https://redirect.github.com/psf/black/issues/5117\"\u003e#5117\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/black/compare/26.3.1...26.5.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tox` from 4.52.0 to 4.54.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tox-dev/tox/releases\"\u003etox's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.54.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🧪 test(conftest): strip broken nspkg.pth files under py3.15 by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3937\"\u003etox-dev/tox#3937\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ feat(packaging): declare tox.pytest deps via a testing extra by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3940\"\u003etox-dev/tox#3940\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(schema): cover every replace form in the TOML schema by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3941\"\u003etox-dev/tox#3941\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox/compare/4.53.1...4.54.0\"\u003ehttps://github.com/tox-dev/tox/compare/4.53.1...4.54.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.53.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(security): harden user-facing logs and untrusted inputs by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3924\"\u003etox-dev/tox#3924\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(type): correct argparse override signatures for ty 0.0.33 by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3932\"\u003etox-dev/tox#3932\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: allow deps arrays in TOML schema by \u003ca href=\"https://github.com/cyphercodes\"\u003e\u003ccode\u003e@​cyphercodes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3931\"\u003etox-dev/tox#3931\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/cyphercodes\"\u003e\u003ccode\u003e@​cyphercodes\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3931\"\u003etox-dev/tox#3931\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox/compare/4.53.0...4.53.1\"\u003ehttps://github.com/tox-dev/tox/compare/4.53.0...4.53.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.53.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(toml): allow bare range/labeled dicts in env_list by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3923\"\u003etox-dev/tox#3923\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox/compare/4.52.1...4.53.0\"\u003ehttps://github.com/tox-dev/tox/compare/4.52.1...4.53.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.52.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003euse normalize_isa for architecture factor matching by \u003ca href=\"https://github.com/rahuldevikar\"\u003e\u003ccode\u003e@​rahuldevikar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3919\"\u003etox-dev/tox#3919\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(pip): invalidate install cache on resolution env var changes by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/3921\"\u003etox-dev/tox#3921\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox/compare/4.52.0...4.52.1\"\u003ehttps://github.com/tox-dev/tox/compare/4.52.0...4.52.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tox-dev/tox/blob/main/docs/changelog.rst\"\u003etox's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eFeatures - 4.54.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDeclare the runtime dependencies of the \u003ccode\u003etox.pytest\u003c/code\u003e plugin (\u003ccode\u003epytest\u003c/code\u003e, \u003ccode\u003edevpi-process\u003c/code\u003e and \u003ccode\u003epytest-mock\u003c/code\u003e)\nunder a new \u003ccode\u003etesting\u003c/code\u003e extra, so plugin authors can pull them in via \u003ccode\u003etox[testing]\u003c/code\u003e - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e.\n(:issue:\u003ccode\u003e3938\u003c/code\u003e, :issue:\u003ccode\u003e3940\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eBug fixes - 4.54.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eExtend the generated TOML schema to cover every \u003ccode\u003ereplace\u003c/code\u003e table form (\u003ccode\u003eenv\u003c/code\u003e, \u003ccode\u003eref\u003c/code\u003e, \u003ccode\u003eposargs\u003c/code\u003e, \u003ccode\u003eglob\u003c/code\u003e,\n\u003ccode\u003eif\u003c/code\u003e), including conditional replacements used inside \u003ccode\u003ecommands\u003c/code\u003e. A guard test asserts the schema stays in sync\nwith the loader implementation so future replace types cannot be added without a corresponding schema entry.\n(:issue:\u003ccode\u003e3939\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003ev4.53.1 (2026-05-02)\u003c/p\u003e\n\u003chr /\u003e\n\u003ch1\u003eBug fixes - 4.53.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eHardening pass on user-facing logging and config parsing:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMask secret-looking \u003ccode\u003e--key=value\u003c/code\u003e flag values in command logs (terminal warnings, \u003ccode\u003e.tox/\u0026lt;env\u0026gt;/log/*.log\u003c/code\u003e, and\n\u003ccode\u003eOutcome\u003c/code\u003e \u003ccode\u003e__repr__\u003c/code\u003e) using the same keyword regex previously applied to environment variable values.\u003c/li\u003e\n\u003cli\u003eResolve PEP 723 \u003ccode\u003escript\u003c/code\u003e paths and reject any that escape \u003ccode\u003etox_root\u003c/code\u003e; cap the script read at 5 MiB so a symlink\nto \u003ccode\u003e/dev/zero\u003c/code\u003e cannot exhaust memory.\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eeval()\u003c/code\u003e of a constructed \u003ccode\u003eLiteral[...]\u003c/code\u003e string in the CLI parser with a direct\n\u003ccode\u003eLiteral[tuple(action.choices)]\u003c/code\u003e subscript.\u003c/li\u003e\n\u003cli\u003ePass \u003ccode\u003etimeout=30\u003c/code\u003e to \u003ccode\u003eurlopen\u003c/code\u003e when fetching a remote requirements file so a slow or unresponsive mirror cannot\nhang \u003ccode\u003etox\u003c/code\u003e indefinitely. (:issue:\u003ccode\u003e3924\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow the generated TOML schema to validate array values for \u003ccode\u003edeps\u003c/code\u003e. (:issue:\u003ccode\u003e3929\u003c/code\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCorrect type annotations for \u003ccode\u003eArgumentParser.parse_args\u003c/code\u003e and \u003ccode\u003eparse_known_args\u003c/code\u003e overrides following \u003ccode\u003etypeshed PR [#15613](https://github.com/tox-dev/tox/issues/15613) \u0026lt;https://github.com/python/typeshed/pull/15613\u0026gt;\u003c/code\u003e_, which widened the \u003ccode\u003eargs\u003c/code\u003e parameter from \u003ccode\u003eSequence[str]\u003c/code\u003e\nto \u003ccode\u003eIterable[str]\u003c/code\u003e. The narrower type in tox's overrides violated the Liskov substitution principle and caused\n\u003ccode\u003einvalid-method-override\u003c/code\u003e errors with \u003ccode\u003ety\u003c/code\u003e 0.0.33. Also correct the \u003ccode\u003eoption_spec\u003c/code\u003e annotation in\n\u003ccode\u003edocs/tox_conf.py\u003c/code\u003e to \u003ccode\u003eClassVar[dict[str, Callable[[str], Any]]]\u003c/code\u003e matching the docutils stubs type.\n(:issue:\u003ccode\u003e3932\u003c/code\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003ev4.53.0 (2026-04-14)\u003c/p\u003e\n\u003chr /\u003e\n\u003ch1\u003eFeatures - 4.53.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eTOML \u003ccode\u003eenv_list\u003c/code\u003e now accepts bare range dicts (\u003ccode\u003e{ prefix = \u0026quot;3.\u0026quot;, start = 12, stop = 14 }\u003c/code\u003e) and bare labeled dicts\n(\u003ccode\u003e{ ecosystem = [\u0026quot;oci\u0026quot;, \u0026quot;python\u0026quot;] }\u003c/code\u003e) as top-level items, removing the \u003ccode\u003e{ product = [...] }\u003c/code\u003e wrapper when there is\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/1f1fcc7a53665a827d8a304190696c6926ebb2eb\"\u003e\u003ccode\u003e1f1fcc7\u003c/code\u003e\u003c/a\u003e release 4.54.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/b35c8eedaf94906ed0e7938c7526dced550e6fa0\"\u003e\u003ccode\u003eb35c8ee\u003c/code\u003e\u003c/a\u003e 🐛 fix(schema): cover every replace form in the TOML schema (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3941\"\u003e#3941\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/6eb5c4f5eec439b3924d6adb3d9d16ea7fc88a20\"\u003e\u003ccode\u003e6eb5c4f\u003c/code\u003e\u003c/a\u003e ✨ feat(packaging): declare tox.pytest deps via a testing extra (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3940\"\u003e#3940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/1ad47ddaab21c891f136a9627d1c6cdb6ea655d7\"\u003e\u003ccode\u003e1ad47dd\u003c/code\u003e\u003c/a\u003e 🧪 test(conftest): strip broken nspkg.pth files under py3.15 (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3937\"\u003e#3937\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/dfba9661b10aa5148daf7267b80fec50f4faa9d2\"\u003e\u003ccode\u003edfba966\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3936\"\u003e#3936\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/21069af5f5b93774f88c271d5deb1389cd2caf12\"\u003e\u003ccode\u003e21069af\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/3933\"\u003e#3933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/2b177917e4c0208c3e380e43f8d32d507180d82e\"\u003e\u003ccode\u003e2b17791\u003c/code\u003e\u003c/a\u003e release 4.53.1\u003c/li\u003e\n\u003cli...\n\n_Description has been truncated_","html_url":"https://github.com/repository-service-tuf/repository-service-tuf-cli/pull/953","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/repository-service-tuf%2Frepository-service-tuf-cli/issues/953","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/953/packages"}},{"old_version":"1.4.4","new_version":"1.5.0","update_type":"minor","path":null,"pr_created_at":"2026-05-22T01:32:59.000Z","version_change":"1.4.4 → 1.5.0","issue":{"uuid":"4499067379","node_id":"PR_kwDOC_dG4M7eKhGU","number":109,"state":"open","title":"Bump build from 1.4.4 to 1.5.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-22T01:32:59.000Z","updated_at":"2026-05-22T01:33:30.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"build","old_version":"1.4.4","new_version":"1.5.0","repository_url":"https://github.com/pypa/build"}],"path":null,"ecosystem":"pip"},"body":"Bumps [build](https://github.com/pypa/build) from 1.4.4 to 1.5.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/releases\"\u003ebuild's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: try to improve release docs by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1051\"\u003epypa/build#1051\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: drop 3.9, require 3.10+ by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1036\"\u003epypa/build#1036\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: tox toml by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1033\"\u003epypa/build#1033\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: api should not ignore installed, only CLI by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1056\"\u003epypa/build#1056\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.4...1.5.0\"\u003ehttps://github.com/pypa/build/compare/1.4.4...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e####################\n1.5.0 (2026-04-30)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.9 support - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1036\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003e--ignore-installed\u003c/code\u003e opt-in from the API via \u003ccode\u003efresh=True\u003c/code\u003e - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1056\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1033\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.4 (2026-04-22)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eFix release pipeline generating \u003ccode\u003eCHANGELOG.rst\u003c/code\u003e entries with inconsistent heading levels, which broke \u003ccode\u003esphinx -W\u003c/code\u003e\nand pinned Read the Docs \u003ccode\u003estable\u003c/code\u003e at 1.4.0 - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e1031\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRevert :pr:\u003ccode\u003e1039\u003c/code\u003e from build 1.4.3, no longer check direct_url (for now) - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1039\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--ignore-installed\u003c/code\u003e to pip install command to prevent issues with packages already present in the isolated\nbuild environment - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1037\u003c/code\u003e) (:issue:\u003ccode\u003e1040\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePartial revert of :pr:\u003ccode\u003e973\u003c/code\u003e, keeping log messages in one entry, multiple lines. (:issue:\u003ccode\u003e1044\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1048\u003c/code\u003e, :issue:\u003ccode\u003e1049\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.3 (2026-04-10)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/615d04cfc52ac3c1592a463f0afe484fee1cc368\"\u003e\u003ccode\u003e615d04c\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/776f702f84787525df62a5473dd13d4e2f45b977\"\u003e\u003ccode\u003e776f702\u003c/code\u003e\u003c/a\u003e fix: api should not ignore installed, only CLI (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/42da4c4b483563819fabdb8ecf2f6df53ed82123\"\u003e\u003ccode\u003e42da4c4\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1055\"\u003e#1055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b445cd2e736db5f80cde7d952d620a73cc26bf9d\"\u003e\u003ccode\u003eb445cd2\u003c/code\u003e\u003c/a\u003e chore: tox toml (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/c44c143876042ac6e1212a31684a3adca19beda4\"\u003e\u003ccode\u003ec44c143\u003c/code\u003e\u003c/a\u003e feat: drop 3.9, require 3.10+ (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/a9bb4560d213069b11c8068159f1de060abec5b7\"\u003e\u003ccode\u003ea9bb456\u003c/code\u003e\u003c/a\u003e build(deps): bump astral-sh/setup-uv from 8.0.0 to 8.1.0 in the actions group...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/cb3351155ce99902580022acb81dc0adb8124d53\"\u003e\u003ccode\u003ecb33511\u003c/code\u003e\u003c/a\u003e ci: try to improve release docs (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1051\"\u003e#1051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pypa/build/compare/1.4.4...1.5.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=build\u0026package-manager=pip\u0026previous-version=1.4.4\u0026new-version=1.5.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/Senzing/mapper-csv/pull/109","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Senzing%2Fmapper-csv/issues/109","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/109/packages"}},{"old_version":"1.4.4","new_version":"1.5.0","update_type":"minor","path":null,"pr_created_at":"2026-05-22T00:43:02.000Z","version_change":"1.4.4 → 1.5.0","issue":{"uuid":"4498859250","node_id":"PR_kwDOJAXBF87eJ3Mh","number":82,"state":"open","title":"Bump build from 1.4.4 to 1.5.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-22T00:43:02.000Z","updated_at":"2026-05-26T07:03:19.300Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"build","old_version":"1.4.4","new_version":"1.5.0","repository_url":"https://github.com/pypa/build"}],"path":null,"ecosystem":"pip"},"body":"Bumps [build](https://github.com/pypa/build) from 1.4.4 to 1.5.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/releases\"\u003ebuild's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: try to improve release docs by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1051\"\u003epypa/build#1051\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: drop 3.9, require 3.10+ by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1036\"\u003epypa/build#1036\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: tox toml by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1033\"\u003epypa/build#1033\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: api should not ignore installed, only CLI by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1056\"\u003epypa/build#1056\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.4...1.5.0\"\u003ehttps://github.com/pypa/build/compare/1.4.4...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e####################\n1.5.0 (2026-04-30)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.9 support - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1036\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003e--ignore-installed\u003c/code\u003e opt-in from the API via \u003ccode\u003efresh=True\u003c/code\u003e - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1056\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1033\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.4 (2026-04-22)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eFix release pipeline generating \u003ccode\u003eCHANGELOG.rst\u003c/code\u003e entries with inconsistent heading levels, which broke \u003ccode\u003esphinx -W\u003c/code\u003e\nand pinned Read the Docs \u003ccode\u003estable\u003c/code\u003e at 1.4.0 - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e1031\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRevert :pr:\u003ccode\u003e1039\u003c/code\u003e from build 1.4.3, no longer check direct_url (for now) - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1039\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--ignore-installed\u003c/code\u003e to pip install command to prevent issues with packages already present in the isolated\nbuild environment - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1037\u003c/code\u003e) (:issue:\u003ccode\u003e1040\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePartial revert of :pr:\u003ccode\u003e973\u003c/code\u003e, keeping log messages in one entry, multiple lines. (:issue:\u003ccode\u003e1044\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1048\u003c/code\u003e, :issue:\u003ccode\u003e1049\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.3 (2026-04-10)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/615d04cfc52ac3c1592a463f0afe484fee1cc368\"\u003e\u003ccode\u003e615d04c\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/776f702f84787525df62a5473dd13d4e2f45b977\"\u003e\u003ccode\u003e776f702\u003c/code\u003e\u003c/a\u003e fix: api should not ignore installed, only CLI (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/42da4c4b483563819fabdb8ecf2f6df53ed82123\"\u003e\u003ccode\u003e42da4c4\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1055\"\u003e#1055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b445cd2e736db5f80cde7d952d620a73cc26bf9d\"\u003e\u003ccode\u003eb445cd2\u003c/code\u003e\u003c/a\u003e chore: tox toml (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/c44c143876042ac6e1212a31684a3adca19beda4\"\u003e\u003ccode\u003ec44c143\u003c/code\u003e\u003c/a\u003e feat: drop 3.9, require 3.10+ (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/a9bb4560d213069b11c8068159f1de060abec5b7\"\u003e\u003ccode\u003ea9bb456\u003c/code\u003e\u003c/a\u003e build(deps): bump astral-sh/setup-uv from 8.0.0 to 8.1.0 in the actions group...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/cb3351155ce99902580022acb81dc0adb8124d53\"\u003e\u003ccode\u003ecb33511\u003c/code\u003e\u003c/a\u003e ci: try to improve release docs (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1051\"\u003e#1051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pypa/build/compare/1.4.4...1.5.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=build\u0026package-manager=pip\u0026previous-version=1.4.4\u0026new-version=1.5.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/Senzing/mapper-open-ownership/pull/82","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Senzing%2Fmapper-open-ownership/issues/82","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/82/packages"}},{"old_version":"1.4.4","new_version":"1.5.0","update_type":"minor","path":null,"pr_created_at":"2026-05-21T17:57:06.000Z","version_change":"1.4.4 → 1.5.0","issue":{"uuid":"4496813340","node_id":"PR_kwDOM3t4IM7eDLRy","number":129,"state":"open","title":"Bump build from 1.4.4 to 1.5.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-21T17:57:06.000Z","updated_at":"2026-05-26T22:52:56.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"build","old_version":"1.4.4","new_version":"1.5.0","repository_url":"https://github.com/pypa/build"}],"path":null,"ecosystem":"pip"},"body":"Bumps [build](https://github.com/pypa/build) from 1.4.4 to 1.5.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/releases\"\u003ebuild's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: try to improve release docs by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1051\"\u003epypa/build#1051\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: drop 3.9, require 3.10+ by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1036\"\u003epypa/build#1036\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: tox toml by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1033\"\u003epypa/build#1033\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: api should not ignore installed, only CLI by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1056\"\u003epypa/build#1056\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.4...1.5.0\"\u003ehttps://github.com/pypa/build/compare/1.4.4...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e####################\n1.5.0 (2026-04-30)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.9 support - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1036\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003e--ignore-installed\u003c/code\u003e opt-in from the API via \u003ccode\u003efresh=True\u003c/code\u003e - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1056\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1033\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.4 (2026-04-22)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eFix release pipeline generating \u003ccode\u003eCHANGELOG.rst\u003c/code\u003e entries with inconsistent heading levels, which broke \u003ccode\u003esphinx -W\u003c/code\u003e\nand pinned Read the Docs \u003ccode\u003estable\u003c/code\u003e at 1.4.0 - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e1031\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRevert :pr:\u003ccode\u003e1039\u003c/code\u003e from build 1.4.3, no longer check direct_url (for now) - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1039\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--ignore-installed\u003c/code\u003e to pip install command to prevent issues with packages already present in the isolated\nbuild environment - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1037\u003c/code\u003e) (:issue:\u003ccode\u003e1040\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePartial revert of :pr:\u003ccode\u003e973\u003c/code\u003e, keeping log messages in one entry, multiple lines. (:issue:\u003ccode\u003e1044\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1048\u003c/code\u003e, :issue:\u003ccode\u003e1049\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.3 (2026-04-10)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/615d04cfc52ac3c1592a463f0afe484fee1cc368\"\u003e\u003ccode\u003e615d04c\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/776f702f84787525df62a5473dd13d4e2f45b977\"\u003e\u003ccode\u003e776f702\u003c/code\u003e\u003c/a\u003e fix: api should not ignore installed, only CLI (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/42da4c4b483563819fabdb8ecf2f6df53ed82123\"\u003e\u003ccode\u003e42da4c4\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1055\"\u003e#1055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b445cd2e736db5f80cde7d952d620a73cc26bf9d\"\u003e\u003ccode\u003eb445cd2\u003c/code\u003e\u003c/a\u003e chore: tox toml (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/c44c143876042ac6e1212a31684a3adca19beda4\"\u003e\u003ccode\u003ec44c143\u003c/code\u003e\u003c/a\u003e feat: drop 3.9, require 3.10+ (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/a9bb4560d213069b11c8068159f1de060abec5b7\"\u003e\u003ccode\u003ea9bb456\u003c/code\u003e\u003c/a\u003e build(deps): bump astral-sh/setup-uv from 8.0.0 to 8.1.0 in the actions group...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/cb3351155ce99902580022acb81dc0adb8124d53\"\u003e\u003ccode\u003ecb33511\u003c/code\u003e\u003c/a\u003e ci: try to improve release docs (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1051\"\u003e#1051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pypa/build/compare/1.4.4...1.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n","html_url":"https://github.com/Senzing/mapper-orbis/pull/129","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Senzing%2Fmapper-orbis/issues/129","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/129/packages"}},{"old_version":"1.4.2","new_version":"1.5.0","update_type":"minor","path":null,"pr_created_at":"2026-05-20T23:59:01.000Z","version_change":"1.4.2 → 1.5.0","issue":{"uuid":"4490676395","node_id":"PR_kwDONA2LH87dvOvC","number":179,"state":"open","title":"chore(deps): bump the minor-and-patch group across 1 directory with 9 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-20T23:59:01.000Z","updated_at":"2026-05-21T00:02:37.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"minor-and-patch","update_count":9,"packages":[{"name":"cpg-utils","old_version":"5.6.0","new_version":"5.6.1","repository_url":"https://github.com/populationgenomics/cpg-utils"},{"name":"grpcio","old_version":"1.78.0","new_version":"1.80.0","repository_url":"https://github.com/grpc/grpc"},{"name":"grpcio-status","old_version":"1.78.0","new_version":"1.80.0"},{"name":"black","old_version":"26.3.1","new_version":"26.5.1","repository_url":"https://github.com/psf/black"},{"name":"build","old_version":"1.4.2","new_version":"1.5.0","repository_url":"https://github.com/pypa/build"},{"name":"coverage","old_version":"7.13.5","new_version":"7.14.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"ruff","old_version":"0.15.7","new_version":"0.15.13","repository_url":"https://github.com/astral-sh/ruff"},{"name":"mike","old_version":"2.1.4","new_version":"2.2.0","repository_url":"https://github.com/jimporter/mike"},{"name":"pyright","old_version":"1.1.408","new_version":"1.1.409","repository_url":"https://github.com/RobertCraigie/pyright-python"}],"path":null,"ecosystem":"pip"},"body":"Bumps the minor-and-patch group with 9 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [cpg-utils](https://github.com/populationgenomics/cpg-utils) | `5.6.0` | `5.6.1` |\n| [grpcio](https://github.com/grpc/grpc) | `1.78.0` | `1.80.0` |\n| [grpcio-status](https://grpc.io) | `1.78.0` | `1.80.0` |\n| [black](https://github.com/psf/black) | `26.3.1` | `26.5.1` |\n| [build](https://github.com/pypa/build) | `1.4.2` | `1.5.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.5` | `7.14.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.7` | `0.15.13` |\n| [mike](https://github.com/jimporter/mike) | `2.1.4` | `2.2.0` |\n| [pyright](https://github.com/RobertCraigie/pyright-python) | `1.1.408` | `1.1.409` |\n\n\nUpdates `cpg-utils` from 5.6.0 to 5.6.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/populationgenomics/cpg-utils/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `grpcio` from 1.78.0 to 1.80.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003egrpcio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.80.0\u003c/h2\u003e\n\u003cp\u003eThis is release 1.80.0 (\u003ca href=\"https://github.com/grpc/grpc/blob/master/doc/g_stands_for.md\"\u003eglimmering\u003c/a\u003e) of gRPC Core.\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes, with highlights listed below.\u003c/p\u003e\n\u003ch2\u003eCore\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ssl] Implement TLS private key signer in Python. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41701\"\u003e#41701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[TLS Credentials]: Private Key Offload Implementation. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41606\"\u003e#41606\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix max sockaddr struct size on OpenBSD. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40454\"\u003e#40454\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[core] Enable EventEngine for Python by default, and EventEngine fork support in Python and Ruby. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41432\"\u003e#41432\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[TLS Credentials]: Create InMemoryCertificateProvider to update certificates independently. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41484\"\u003e#41484\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[Ruby] Build/test ruby 4.0 and build native gems with Ruby 4.0 support. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41324\"\u003e#41324\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[EventEngine] Remove an incorrect std::move in DNSServiceResolver constructor. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41502\"\u003e#41502\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[RR and WRR] enable change to connect from a random index. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41472\"\u003e#41472\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[xds] Implement gRFC A101. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41051\"\u003e#41051\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eC++\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[C++] Add SNI override option to C++ channel credentials options API. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41460\"\u003e#41460\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eC#\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[C# tools] Option to append Async to server side method names \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/39010\"\u003e#39010\u003c/a\u003e. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/39797\"\u003e#39797\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eObjective-C\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Fix][Compiler] Plugins fall back to the edition 2023 for older protobuf. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41357\"\u003e#41357\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePHP\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[PHP] Disable php infinite recursion check for callback from Core to PHP. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41835\"\u003e#41835\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[PHP] Fix runtime error with PHp8.5 alpha because zend_exception_get_defaul…. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40337\"\u003e#40337\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePython\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Python] Fix \u003ccode\u003eGRPC_TRACE\u003c/code\u003e not working when absl log initialized in cython. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41814\"\u003e#41814\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRevert \u0026quot;[Python] Align GRPC_ENABLE_FORK_SUPPORT env defaults in core and python (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41455\"\u003e#41455\u003c/a\u003e)\u0026quot;. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41769\"\u003e#41769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[Python] Fix AsyncIO Server maximum_concurrent_rpcs enforcement preventing negative active_rpcs count. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41532\"\u003e#41532\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[Python] Docs: correct \u003ccode\u003egrpc.Compression\u003c/code\u003e references. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41705\"\u003e#41705\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[Python] [Typeguard] Part 4 - Add Typeguard to AIO stack in tests . (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40226\"\u003e#40226\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/grpc/grpc/commit/f5e2d6e856176c2f6b7691032adfefe21e5f64c1\"\u003e\u003ccode\u003ef5e2d6e\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.80.0 (on v1.80.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41857\"\u003e#41857\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/938cfecaebfc28b5e6bcdb95d55aba3962d9b55b\"\u003e\u003ccode\u003e938cfec\u003c/code\u003e\u003c/a\u003e [subchannel connection scaling] fix when we reset backoff (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41935\"\u003e#41935\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/91778bec667d7310864420f2b32aeb2e41e1b51c\"\u003e\u003ccode\u003e91778be\u003c/code\u003e\u003c/a\u003e [Backport][v1.80.x][Python] New \u003ccode\u003e_create\u003c/code\u003e method for aio.Metadata (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41888\"\u003e#41888\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f10b9f26933703c5fe3e080f50ef19c858d773e0\"\u003e\u003ccode\u003ef10b9f2\u003c/code\u003e\u003c/a\u003e [bzlmod] upgrade rules_swift to avoid BCR CI breakage on Windows with bazel 7...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/be4c1c55b69493868241bfffd4bc318d3d592656\"\u003e\u003ccode\u003ebe4c1c5\u003c/code\u003e\u003c/a\u003e [subchannel] fix crash in connection scaling code (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41853\"\u003e#41853\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/a71df73eafb18fa0210a13dd6a2ce2cb6594d427\"\u003e\u003ccode\u003ea71df73\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.80.0-pre1 (on v1.80.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41844\"\u003e#41844\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/3ca09e4818f4362e75c9c224f1d4c2065db75a0a\"\u003e\u003ccode\u003e3ca09e4\u003c/code\u003e\u003c/a\u003e [Python] Fix GRPC_TRACE and add test to check the GRPC_TRACE logs print (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41814\"\u003e#41814\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/260c6fd37c502e984836a446c5d90e4a1298036d\"\u003e\u003ccode\u003e260c6fd\u003c/code\u003e\u003c/a\u003e [PHP] Disable php infinite recursion check for callback from Core to PHP (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41\"\u003e#41\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/50957c5c47de1c85637fc9dafe6d4eb4c1224f6b\"\u003e\u003ccode\u003e50957c5\u003c/code\u003e\u003c/a\u003e [Flakiness] Delete flaky iomgr fd_conservation_posix_test and create an Event...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/e1e1d0a8150b5178d4b75e15f4856a4d825a8999\"\u003e\u003ccode\u003ee1e1d0a\u003c/code\u003e\u003c/a\u003e [Bzlmod] Turn off bzlmod for PSM python tests. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41810\"\u003e#41810\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc/compare/v1.78.0...v1.80.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `grpcio-status` from 1.78.0 to 1.80.0\n\nUpdates `black` from 26.3.1 to 26.5.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/black/releases\"\u003eblack's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.5.1\u003c/h2\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix unstable formatting of annotated assignments whose subscript annotation contains\nan inline comment (e.g. \u003ccode\u003ex: list[  # pyright: ignore[...]\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/psf/black/issues/5130\"\u003e#5130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve inline comments (including \u003ccode\u003e# type: ignore\u003c/code\u003e) immediately before a\n\u003ccode\u003e# fmt: skip\u003c/code\u003e line, avoiding AST equivalence failures (\u003ca href=\"https://redirect.github.com/psf/black/issues/5139\"\u003e#5139\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCorrect the version in the published executables (\u003ca href=\"https://redirect.github.com/psf/black/issues/5137\"\u003e#5137\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Neovim integration guide covering conform.nvim, ALE, and simple command approaches\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/5124\"\u003e#5124\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e26.5.0\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for unpacking in comprehensions (PEP 798) and for lazy imports (PEP 810),\nboth new syntactic features in Python 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5048\"\u003e#5048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePython 3.15 is now supported. Compiled wheels are not yet provided for Python 3.15, so\nperformance may be slower than on existing Python versions. Wheels will be provided\nonce Python 3.15 is later in its release cycle. (\u003ca href=\"https://redirect.github.com/psf/black/issues/5127\"\u003e#5127\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003e# fmt: skip\u003c/code\u003e being ignored in nested \u003ccode\u003eif\u003c/code\u003e expressions with parenthesized \u003ccode\u003ein\u003c/code\u003e\nclauses (\u003ca href=\"https://redirect.github.com/psf/black/issues/4903\"\u003e#4903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd syntactic support for Python 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5048\"\u003e#5048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when an f-string follows a \u003ccode\u003e# fmt: off\u003c/code\u003e comment inside brackets (\u003ca href=\"https://redirect.github.com/psf/black/issues/5097\"\u003e#5097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve multiline compound statement headers when \u003ccode\u003e# fmt: skip\u003c/code\u003e is placed on the\ncolon line (\u003ca href=\"https://redirect.github.com/psf/black/issues/5117\"\u003e#5117\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove heuristics around whether blank lines should appear before, within and after\ngroups of same-name decorated functions (such as \u003ccode\u003e@overload\u003c/code\u003e groups) in \u003ccode\u003e.pyi\u003c/code\u003e stub\nfiles (\u003ca href=\"https://redirect.github.com/psf/black/issues/5021\"\u003e#5021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix blank lines being removed between a function and a decorated class in \u003ccode\u003e.pyi\u003c/code\u003e stub\nfiles (\u003ca href=\"https://redirect.github.com/psf/black/issues/5092\"\u003e#5092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrevent string merger from creating unsplittable long lines when a pragma comment\n(e.g. \u003ccode\u003e# type: ignore\u003c/code\u003e) follows the closing bracket (\u003ca href=\"https://redirect.github.com/psf/black/issues/5096\"\u003e#5096\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRun CI on 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5127\"\u003e#5127\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOutput\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/psf/black/blob/main/CHANGES.md\"\u003eblack's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 26.5.1\u003c/h2\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix unstable formatting of annotated assignments whose subscript annotation contains\nan inline comment (e.g. \u003ccode\u003ex: list[  # pyright: ignore[...]\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/psf/black/issues/5130\"\u003e#5130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve inline comments (including \u003ccode\u003e# type: ignore\u003c/code\u003e) immediately before a\n\u003ccode\u003e# fmt: skip\u003c/code\u003e line, avoiding AST equivalence failures (\u003ca href=\"https://redirect.github.com/psf/black/issues/5139\"\u003e#5139\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCorrect the version in the published executables (\u003ca href=\"https://redirect.github.com/psf/black/issues/5137\"\u003e#5137\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Neovim integration guide covering conform.nvim, ALE, and simple command approaches\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/5124\"\u003e#5124\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 26.5.0\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for unpacking in comprehensions (PEP 798) and for lazy imports (PEP 810),\nboth new syntactic features in Python 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5048\"\u003e#5048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePython 3.15 is now supported. Compiled wheels are not yet provided for Python 3.15, so\nperformance may be slower than on existing Python versions. Wheels will be provided\nonce Python 3.15 is later in its release cycle. (\u003ca href=\"https://redirect.github.com/psf/black/issues/5127\"\u003e#5127\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003e# fmt: skip\u003c/code\u003e being ignored in nested \u003ccode\u003eif\u003c/code\u003e expressions with parenthesized \u003ccode\u003ein\u003c/code\u003e\nclauses (\u003ca href=\"https://redirect.github.com/psf/black/issues/4903\"\u003e#4903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd syntactic support for Python 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5048\"\u003e#5048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when an f-string follows a \u003ccode\u003e# fmt: off\u003c/code\u003e comment inside brackets (\u003ca href=\"https://redirect.github.com/psf/black/issues/5097\"\u003e#5097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve multiline compound statement headers when \u003ccode\u003e# fmt: skip\u003c/code\u003e is placed on the\ncolon line (\u003ca href=\"https://redirect.github.com/psf/black/issues/5117\"\u003e#5117\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove heuristics around whether blank lines should appear before, within and after\ngroups of same-name decorated functions (such as \u003ccode\u003e@overload\u003c/code\u003e groups) in \u003ccode\u003e.pyi\u003c/code\u003e stub\nfiles (\u003ca href=\"https://redirect.github.com/psf/black/issues/5021\"\u003e#5021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix blank lines being removed between a function and a decorated class in \u003ccode\u003e.pyi\u003c/code\u003e stub\nfiles (\u003ca href=\"https://redirect.github.com/psf/black/issues/5092\"\u003e#5092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrevent string merger from creating unsplittable long lines when a pragma comment\n(e.g. \u003ccode\u003e# type: ignore\u003c/code\u003e) follows the closing bracket (\u003ca href=\"https://redirect.github.com/psf/black/issues/5096\"\u003e#5096\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRun CI on 3.15 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5127\"\u003e#5127\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/87928e6d6761a4a6d22250e1fee5601b3998086e\"\u003e\u003ccode\u003e87928e6\u003c/code\u003e\u003c/a\u003e Prepare release 26.5.1 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5140\"\u003e#5140\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/c970a49702488739add6c728122deb3a99900803\"\u003e\u003ccode\u003ec970a49\u003c/code\u003e\u003c/a\u003e Preserve comments before fmt: skip lines (\u003ca href=\"https://redirect.github.com/psf/black/issues/5139\"\u003e#5139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/5809338fd5f92d50e80c2ad312292ae6d428a480\"\u003e\u003ccode\u003e5809338\u003c/code\u003e\u003c/a\u003e Preserve inline comments inside annotation subscripts (\u003ca href=\"https://redirect.github.com/psf/black/issues/5130\"\u003e#5130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/61361b71995f6ea44ce01915bacd3ecc50642507\"\u003e\u003ccode\u003e61361b7\u003c/code\u003e\u003c/a\u003e docs: add Neovim integration guide and fix http link (\u003ca href=\"https://redirect.github.com/psf/black/issues/5124\"\u003e#5124\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/ebe6018e3254629788376e619207719fbe34a849\"\u003e\u003ccode\u003eebe6018\u003c/code\u003e\u003c/a\u003e CI Hotfixes (\u003ca href=\"https://redirect.github.com/psf/black/issues/5136\"\u003e#5136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/9cbd95f80e97c1ab4d690d1d41b81579a13bf75c\"\u003e\u003ccode\u003e9cbd95f\u003c/code\u003e\u003c/a\u003e Fix publish binaries again on Windows (\u003ca href=\"https://redirect.github.com/psf/black/issues/5134\"\u003e#5134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/3dc8e6c41911bdaedb4bac8d633979c34a112b78\"\u003e\u003ccode\u003e3dc8e6c\u003c/code\u003e\u003c/a\u003e Add new changelog (\u003ca href=\"https://redirect.github.com/psf/black/issues/5132\"\u003e#5132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/6d0fff0d5a965b9d0d3dbd7c5738d835fd574130\"\u003e\u003ccode\u003e6d0fff0\u003c/code\u003e\u003c/a\u003e Fix publish binaries workflow (\u003ca href=\"https://redirect.github.com/psf/black/issues/5133\"\u003e#5133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/d2490e24dad33b8f68c77602ee29160de0fea24b\"\u003e\u003ccode\u003ed2490e2\u003c/code\u003e\u003c/a\u003e Prepare release 26.5.0 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5131\"\u003e#5131\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/2b13ea76fa69d4923381df65deb1a5c896ca27ad\"\u003e\u003ccode\u003e2b13ea7\u003c/code\u003e\u003c/a\u003e Preserve multiline headers with fmt skip (\u003ca href=\"https://redirect.github.com/psf/black/issues/5117\"\u003e#5117\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/black/compare/26.3.1...26.5.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `build` from 1.4.2 to 1.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/releases\"\u003ebuild's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: try to improve release docs by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1051\"\u003epypa/build#1051\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: drop 3.9, require 3.10+ by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1036\"\u003epypa/build#1036\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: tox toml by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1033\"\u003epypa/build#1033\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: api should not ignore installed, only CLI by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1056\"\u003epypa/build#1056\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.4...1.5.0\"\u003ehttps://github.com/pypa/build/compare/1.4.4...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.4.4\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(release): generate consistent CHANGELOG heading levels by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1032\"\u003epypa/build#1032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: move source links by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1034\"\u003epypa/build#1034\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erevert: drop PEP 660 change by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1039\"\u003epypa/build#1039\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: ignore installed when running pip by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1040\"\u003epypa/build#1040\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: revert part of \u003ca href=\"https://redirect.github.com/pypa/build/issues/973\"\u003e#973\u003c/a\u003e by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1044\"\u003epypa/build#1044\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: report coverage failure lines by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1046\"\u003epypa/build#1046\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: fix issue with uv run by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1048\"\u003epypa/build#1048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: reorganize testing docs for copy/paste by \u003ca href=\"https://github.com/abitrolly\"\u003e\u003ccode\u003e@​abitrolly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1043\"\u003epypa/build#1043\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: keep environment from leaking in Python 3.15 by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1049\"\u003epypa/build#1049\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix issue with changelog generation by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1050\"\u003epypa/build#1050\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.3...1.4.4\"\u003ehttps://github.com/pypa/build/compare/1.4.3...1.4.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.4.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(api): resolve thread-safety races in build API by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1015\"\u003epypa/build#1015\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(builder): validate backend-path entries exist on disk by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1016\"\u003epypa/build#1016\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest: cover config settings build paths by \u003ca href=\"https://github.com/terminalchai\"\u003e\u003ccode\u003e@​terminalchai\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/992\"\u003epypa/build#992\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd kind=(step, ) for root messages with * by \u003ca href=\"https://github.com/abitrolly\"\u003e\u003ccode\u003e@​abitrolly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/973\"\u003epypa/build#973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: correct changelog category ordering by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1017\"\u003epypa/build#1017\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(cli): show full dependency chain in missing deps error by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1019\"\u003epypa/build#1019\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: fully annotate by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1020\"\u003epypa/build#1020\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: lazy imports by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1021\"\u003epypa/build#1021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: adding more ruff codes by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1022\"\u003epypa/build#1022\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: improve annotations by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1023\"\u003epypa/build#1023\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 test(coverage): achieve 100% test coverage by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1018\"\u003epypa/build#1018\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: add ruff PT by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1025\"\u003epypa/build#1025\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: add ruff PYI by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1026\"\u003epypa/build#1026\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: add ruff SIM/RET by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1028\"\u003epypa/build#1028\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(env): strip PYTHONPATH from isolated builds by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1024\"\u003epypa/build#1024\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: use ruff ALL by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1029\"\u003epypa/build#1029\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e####################\n1.5.0 (2026-04-30)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.9 support - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1036\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003e--ignore-installed\u003c/code\u003e opt-in from the API via \u003ccode\u003efresh=True\u003c/code\u003e - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1056\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1033\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.4 (2026-04-22)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eFix release pipeline generating \u003ccode\u003eCHANGELOG.rst\u003c/code\u003e entries with inconsistent heading levels, which broke \u003ccode\u003esphinx -W\u003c/code\u003e\nand pinned Read the Docs \u003ccode\u003estable\u003c/code\u003e at 1.4.0 - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e1031\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRevert :pr:\u003ccode\u003e1039\u003c/code\u003e from build 1.4.3, no longer check direct_url (for now) - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1039\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--ignore-installed\u003c/code\u003e to pip install command to prevent issues with packages already present in the isolated\nbuild environment - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1037\u003c/code\u003e) (:issue:\u003ccode\u003e1040\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePartial revert of :pr:\u003ccode\u003e973\u003c/code\u003e, keeping log messages in one entry, multiple lines. (:issue:\u003ccode\u003e1044\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1048\u003c/code\u003e, :issue:\u003ccode\u003e1049\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.3 (2026-04-10)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/615d04cfc52ac3c1592a463f0afe484fee1cc368\"\u003e\u003ccode\u003e615d04c\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/776f702f84787525df62a5473dd13d4e2f45b977\"\u003e\u003ccode\u003e776f702\u003c/code\u003e\u003c/a\u003e fix: api should not ignore installed, only CLI (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/42da4c4b483563819fabdb8ecf2f6df53ed82123\"\u003e\u003ccode\u003e42da4c4\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1055\"\u003e#1055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b445cd2e736db5f80cde7d952d620a73cc26bf9d\"\u003e\u003ccode\u003eb445cd2\u003c/code\u003e\u003c/a\u003e chore: tox toml (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/c44c143876042ac6e1212a31684a3adca19beda4\"\u003e\u003ccode\u003ec44c143\u003c/code\u003e\u003c/a\u003e feat: drop 3.9, require 3.10+ (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/a9bb4560d213069b11c8068159f1de060abec5b7\"\u003e\u003ccode\u003ea9bb456\u003c/code\u003e\u003c/a\u003e build(deps): bump astral-sh/setup-uv from 8.0.0 to 8.1.0 in the actions group...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/cb3351155ce99902580022acb81dc0adb8124d53\"\u003e\u003ccode\u003ecb33511\u003c/code\u003e\u003c/a\u003e ci: try to improve release docs (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1051\"\u003e#1051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/70666a296c2e5bb7451f5a04eef259f6f943d0de\"\u003e\u003ccode\u003e70666a2\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/653d86586dea8b4e020086a276a15a27ac7bd25d\"\u003e\u003ccode\u003e653d865\u003c/code\u003e\u003c/a\u003e docs: fix issue with changelog generation (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1050\"\u003e#1050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/373b9ee171e2f16353365b1a9a02bc408b96ca73\"\u003e\u003ccode\u003e373b9ee\u003c/code\u003e\u003c/a\u003e tests: keep environment from leaking in Python 3.15 (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1049\"\u003e#1049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.4.2...1.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.13.5 to 7.14.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst\"\u003ecoverage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.14.0 — 2026-05-10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFeature: now when running one of the reporting commands, if there are\nparallel data files that need combining, they will be implicitly combined\nbefore creating the report. There is no option to avoid the combination; let\nus know if you have a use case that requires it.  Thanks, \u003ccode\u003eTim Hatch \u0026lt;pull 2162_\u0026gt;\u003c/code\u003e\u003cem\u003e. Closes \u003ccode\u003eissue 1781\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the output from \u003ccode\u003ecombine\u003c/code\u003e was too verbose, listing each file\nconsidered. Now it shows a single line with the counts of files combined,\nfiles skipped, and files with errors. The \u003ccode\u003e-q\u003c/code\u003e flag suppresses this line.\nThe old detailed lines are available with the new \u003ccode\u003e--debug=combine\u003c/code\u003e option.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: running a Python file through a symlink now sets the sys.path correctly,\nmatching regular Python behavior. Fixes \u003ccode\u003eissue 2157\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003eCollector.flush_data\u003c/code\u003e could fail with \u0026quot;RuntimeError: Set changed\nsize during iteration\u0026quot; when a tracer in another thread added a line to the\nper-file set that \u003ccode\u003eadd_lines\u003c/code\u003e (or \u003ccode\u003eadd_arcs\u003c/code\u003e) was iterating. The values\npassed to \u003ccode\u003eCoverageData\u003c/code\u003e are now snapshotted via \u003ccode\u003edict.copy()\u003c/code\u003e and\n\u003ccode\u003eset.copy()\u003c/code\u003e, which are atomic under the GIL. Thanks, \u003ccode\u003eAlex Vandiver \u0026lt;pull 2165_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the soft keyword \u003ccode\u003elazy\u003c/code\u003e is now bolded in HTML reports.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWe are no longer testing eventlet support. Eventlet started issuing stern\ndeprecation warnings that break our tests. Our support code is still there.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1781: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1781\"\u003ecoveragepy/coveragepy#1781\u003c/a\u003e\n.. _issue 2157: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2157\"\u003ecoveragepy/coveragepy#2157\u003c/a\u003e\n.. _pull 2162: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2162\"\u003ecoveragepy/coveragepy#2162\u003c/a\u003e\n.. _pull 2165: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2165\"\u003ecoveragepy/coveragepy#2165\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-13-5:\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/646351b60429f1b5760af6c1b97b28483244a955\"\u003e\u003ccode\u003e646351b\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/39cd015505c8b04369c5b06e34fc22449a697370\"\u003e\u003ccode\u003e39cd015\u003c/code\u003e\u003c/a\u003e docs: prep for 7.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/649e8aa34af7d80c386ae82e8a3a6c9a3acb0dab\"\u003e\u003ccode\u003e649e8aa\u003c/code\u003e\u003c/a\u003e docs: thanks Alex Vandiver for \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2165\"\u003e#2165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/8cd392e3b5c4bc15d534aaec0c21714f9f518469\"\u003e\u003ccode\u003e8cd392e\u003c/code\u003e\u003c/a\u003e fix: snapshot data in Collector.flush_data to avoid threading race (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2165\"\u003e#2165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c48e0edc2ebe44621b0053176e90f77b0c79bec1\"\u003e\u003ccode\u003ec48e0ed\u003c/code\u003e\u003c/a\u003e fix: less output for combining\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c2a3a284078556c911e0d9b6c6af1b7082a363ea\"\u003e\u003ccode\u003ec2a3a28\u003c/code\u003e\u003c/a\u003e docs: explain the change from \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2162\"\u003e#2162\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/1cd47aa6ac1da4e150da44055295d4e4f3a014e8\"\u003e\u003ccode\u003e1cd47aa\u003c/code\u003e\u003c/a\u003e fix: implicit combine-during-report now removes the combined data files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/2d99fd7696e0bccec8037479a4e45c1ecccb8058\"\u003e\u003ccode\u003e2d99fd7\u003c/code\u003e\u003c/a\u003e feat: automatically combine coverage in report, thanks Tim Hatch (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2162\"\u003e#2162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/9fbdcdfee1c122fac43f1bf9a5e2d1f4d835f21c\"\u003e\u003ccode\u003e9fbdcdf\u003c/code\u003e\u003c/a\u003e fix: lazy soft keywords are bolded\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/5de7d0267b9466d59995aaae1a7e707c8c6f66e7\"\u003e\u003ccode\u003e5de7d02\u003c/code\u003e\u003c/a\u003e build: oops, misplaced quote\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.13.5...7.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.7 to 0.15.13\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.13\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-14.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a rule to flag lazy imports that are eagerly evaluated (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25016\"\u003e#25016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Standardize diagnostic message (\u003ccode\u003ePLR0914\u003c/code\u003e, \u003ccode\u003ePLR0917\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24996\"\u003e#24996\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eF811\u003c/code\u003e false positive for class methods (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24933\"\u003e#24933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix setting selection for multi-folder workspace (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24819\"\u003e#24819\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eeradicate\u003c/code\u003e] Fix false positive for lines with leading whitespace (\u003ccode\u003eERA001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25122\"\u003e#25122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix false positive for f-string debug specifier (\u003ccode\u003ePYI016\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24098\"\u003e#24098\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlways include panic payload in panic diagnostic message (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24873\"\u003e#24873\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRestrict \u003ccode\u003ePYI034\u003c/code\u003e for in-place operations to enclosing class (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24511\"\u003e#24511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove error message for parameters that are declared \u003ccode\u003eglobal\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24902\"\u003e#24902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate known stdlib (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25103\"\u003e#25103\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Avoid constructing \u003ccode\u003eglob::Pattern\u003c/code\u003es for literal known modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25123\"\u003e#25123\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd TOML examples to \u003ccode\u003e--config\u003c/code\u003e help text (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25013\"\u003e#25013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eColorize ruff check 'All checks passed' (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25085\"\u003e#25085\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIncrease max allowed value of \u003ccode\u003eline-length\u003c/code\u003e setting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24962\"\u003e#24962\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eD203\u003c/code\u003e to rules that conflict with the formatter (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25044\"\u003e#25044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify \u003ccode\u003eCOM819\u003c/code\u003e and formatter interaction (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25045\"\u003e#25045\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify that \u003ccode\u003eNotImplemented\u003c/code\u003e is a value, not an exception (\u003ccode\u003eF901\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25054\"\u003e#25054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate number of lint rules supported (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24942\"\u003e#24942\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSimplify the playground's markdown template (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24924\"\u003e#24924\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.13\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-14.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a rule to flag lazy imports that are eagerly evaluated (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25016\"\u003e#25016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Standardize diagnostic message (\u003ccode\u003ePLR0914\u003c/code\u003e, \u003ccode\u003ePLR0917\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24996\"\u003e#24996\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eF811\u003c/code\u003e false positive for class methods (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24933\"\u003e#24933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix setting selection for multi-folder workspace (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24819\"\u003e#24819\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eeradicate\u003c/code\u003e] Fix false positive for lines with leading whitespace (\u003ccode\u003eERA001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25122\"\u003e#25122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix false positive for f-string debug specifier (\u003ccode\u003ePYI016\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24098\"\u003e#24098\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlways include panic payload in panic diagnostic message (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24873\"\u003e#24873\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRestrict \u003ccode\u003ePYI034\u003c/code\u003e for in-place operations to enclosing class (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24511\"\u003e#24511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove error message for parameters that are declared \u003ccode\u003eglobal\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24902\"\u003e#24902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate known stdlib (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25103\"\u003e#25103\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Avoid constructing \u003ccode\u003eglob::Pattern\u003c/code\u003es for literal known modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25123\"\u003e#25123\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd TOML examples to \u003ccode\u003e--config\u003c/code\u003e help text (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25013\"\u003e#25013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eColorize ruff check 'All checks passed' (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25085\"\u003e#25085\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIncrease max allowed value of \u003ccode\u003eline-length\u003c/code\u003e setting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24962\"\u003e#24962\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eD203\u003c/code\u003e to rules that conflict with the formatter (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25044\"\u003e#25044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify \u003ccode\u003eCOM819\u003c/code\u003e and formatter interaction (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25045\"\u003e#25045\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify that \u003ccode\u003eNotImplemented\u003c/code\u003e is a value, not an exception (\u003ccode\u003eF901\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25054\"\u003e#25054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate number of lint rules supported (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24942\"\u003e#24942\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSimplify the playground's markdown template (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24924\"\u003e#24924\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MichaReiser\"\u003e\u003ccode\u003e@​MichaReiser\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/2afb467ce397e4a89c13a0a814c62cfecb0e9e49\"\u003e\u003ccode\u003e2afb467\u003c/code\u003e\u003c/a\u003e Bump 0.15.13 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25157\"\u003e#25157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/300879600fa3af7cde1e675c63de6ad9d0797d1b\"\u003e\u003ccode\u003e3008796\u003c/code\u003e\u003c/a\u003e [ty] classify TypeVar semantic tokens as type parameters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24891\"\u003e#24891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/79470e31877acb6074f3bbff2a49e508822ae4e8\"\u003e\u003ccode\u003e79470e3\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eisort\u003c/code\u003e] Avoid constructing \u003ccode\u003eglob::Pattern\u003c/code\u003es for literal known modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25123\"\u003e#25123\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/2522549901d50f18775999f0fb802b19229417f0\"\u003e\u003ccode\u003e2522549\u003c/code\u003e\u003c/a\u003e Remove shellcheck from prek (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25154\"\u003e#25154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7db7170020f539d6d2bc01dbd0b0c09fab91dc06\"\u003e\u003ccode\u003e7db7170\u003c/code\u003e\u003c/a\u003e [ty] Support TypedDict key completions in incomplete, anonymous contexts (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25\"\u003e#25\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/bb3dd535f1c5a83e2e56ac93a771fadbeeceebd0\"\u003e\u003ccode\u003ebb3dd53\u003c/code\u003e\u003c/a\u003e [ty] Run full iteration analysis on narrowed typevars (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25143\"\u003e#25143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/828cdb7732efcb16a53f4ee5f011cf653b834d1a\"\u003e\u003ccode\u003e828cdb7\u003c/code\u003e\u003c/a\u003e [ty] Isolate file-watching test environment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25151\"\u003e#25151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/89e1d8670ea4d3af60c8143ee552dc750200718d\"\u003e\u003ccode\u003e89e1d86\u003c/code\u003e\u003c/a\u003e [ty] Preserve TypedDict keys through dict unpacking (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24523\"\u003e#24523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/86f3064d6fffa5697d174f26b840bd6857b381da\"\u003e\u003ccode\u003e86f3064\u003c/code\u003e\u003c/a\u003e [ty] Avoid accessing \u003ccode\u003eargs[0]\u003c/code\u003e for \u003ccode\u003estatic_assert\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25149\"\u003e#25149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ed819f947dc27e36eac8bb3134153c4668d76a3a\"\u003e\u003ccode\u003eed819f9\u003c/code\u003e\u003c/a\u003e [ty] Treat custom enum \u003ccode\u003e__new__\u003c/code\u003e values as dynamic (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25136\"\u003e#25136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.7...0.15.13\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mike` from 2.1.4 to 2.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jimporter/mike/releases\"\u003emike's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.2.0\u003c/h2\u003e\n\u003ch3\u003eNew features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ca href=\"https://properdocs.org/\"\u003eProperDocs\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse DST timestamps for new commits when DST is in effect\u003c/li\u003e\n\u003cli\u003eSupport ISO8601 and RFC 2822 values for \u003ccode\u003eGIT_COMMITTER_DATE\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jimporter/mike/blob/master/CHANGES.md\"\u003emike's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.2.0 (2026-04-13)\u003c/h2\u003e\n\u003ch3\u003eNew features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ca href=\"https://properdocs.org/\"\u003eProperDocs\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse DST timestamps for new commits when DST is in effect\u003c/li\u003e\n\u003cli\u003eSupport ISO8601 and RFC 2822 values for \u003ccode\u003eGIT_COMMITTER_DATE\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/b01e03075315ebd2d39a93c390cf14b6a83f3d5e\"\u003e\u003ccode\u003eb01e030\u003c/code\u003e\u003c/a\u003e Update version to 2.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/ca60b84ddb200d9d2636dce456e35b8ec5be6a0c\"\u003e\u003ccode\u003eca60b84\u003c/code\u003e\u003c/a\u003e Fix deprecation warning about \u003ccode\u003esplit\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/5b5ed3187337693fabcb3c6f8b524f8bc0348150\"\u003e\u003ccode\u003e5b5ed31\u003c/code\u003e\u003c/a\u003e Add ProperDocs support; resolves \u003ca href=\"https://redirect.github.com/jimporter/mike/issues/259\"\u003e#259\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/2adb1f1104e230ce4c6260ae17c960e21886a7a1\"\u003e\u003ccode\u003e2adb1f1\u003c/code\u003e\u003c/a\u003e Improve \u003ccode\u003emake_when\u003c/code\u003e implementation; resolves \u003ca href=\"https://redirect.github.com/jimporter/mike/issues/260\"\u003e#260\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/7363ce50a2a27ce88198383e43168d08c76f4633\"\u003e\u003ccode\u003e7363ce5\u003c/code\u003e\u003c/a\u003e Update version to 2.2.0.dev0\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/jimporter/mike/compare/v2.1.4...v2.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyright` from 1.1.408 to 1.1.409\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/RobertCraigie/pyright-python/commit/d7508e5425d3d02761d70dab1f9a2086573af429\"\u003e\u003ccode\u003ed7508e5\u003c/code\u003e\u003c/a\u003e [pyright updated to 1.1.409] Update Version (\u003ca href=\"https://redirect.github.com/RobertCraigie/pyright-python/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/RobertCraigie/pyright-python/compare/v1.1.408...v1.1.409\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/populationgenomics/cpg-flow/pull/179","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/populationgenomics%2Fcpg-flow/issues/179","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/179/packages"}},{"old_version":"1.4.3","new_version":"1.4.4","update_type":"patch","path":null,"pr_created_at":"2026-05-14T05:03:36.000Z","version_change":"1.4.3 → 1.4.4","issue":{"uuid":"4443317947","node_id":"PR_kwDOC9SUl87bYtL2","number":114,"state":"closed","title":"Bump build from 1.4.3 to 1.4.4","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-14T05:04:22.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-14T05:03:36.000Z","updated_at":"2026-05-14T05:04:23.000Z","time_to_close":46,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"build","old_version":"1.4.3","new_version":"1.4.4","repository_url":"https://github.com/pypa/build"}],"path":null,"ecosystem":"pip"},"body":"Bumps [build](https://github.com/pypa/build) from 1.4.3 to 1.4.4.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/releases\"\u003ebuild's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.4\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(release): generate consistent CHANGELOG heading levels by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1032\"\u003epypa/build#1032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: move source links by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1034\"\u003epypa/build#1034\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erevert: drop PEP 660 change by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1039\"\u003epypa/build#1039\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: ignore installed when running pip by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1040\"\u003epypa/build#1040\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: revert part of \u003ca href=\"https://redirect.github.com/pypa/build/issues/973\"\u003e#973\u003c/a\u003e by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1044\"\u003epypa/build#1044\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: report coverage failure lines by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1046\"\u003epypa/build#1046\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: fix issue with uv run by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1048\"\u003epypa/build#1048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: reorganize testing docs for copy/paste by \u003ca href=\"https://github.com/abitrolly\"\u003e\u003ccode\u003e@​abitrolly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1043\"\u003epypa/build#1043\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: keep environment from leaking in Python 3.15 by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1049\"\u003epypa/build#1049\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix issue with changelog generation by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1050\"\u003epypa/build#1050\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.3...1.4.4\"\u003ehttps://github.com/pypa/build/compare/1.4.3...1.4.4\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e####################\n1.5.0 (2026-04-30)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.9 support - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1036\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003e--ignore-installed\u003c/code\u003e opt-in from the API via \u003ccode\u003efresh=True\u003c/code\u003e - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1056\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1033\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.4 (2026-04-22)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eFix release pipeline generating \u003ccode\u003eCHANGELOG.rst\u003c/code\u003e entries with inconsistent heading levels, which broke \u003ccode\u003esphinx -W\u003c/code\u003e\nand pinned Read the Docs \u003ccode\u003estable\u003c/code\u003e at 1.4.0 - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e1031\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRevert :pr:\u003ccode\u003e1039\u003c/code\u003e from build 1.4.3, no longer check direct_url (for now) - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1039\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--ignore-installed\u003c/code\u003e to pip install command to prevent issues with packages already present in the isolated\nbuild environment - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1037\u003c/code\u003e) (:issue:\u003ccode\u003e1040\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePartial revert of :pr:\u003ccode\u003e973\u003c/code\u003e, keeping log messages in one entry, multiple lines. (:issue:\u003ccode\u003e1044\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1048\u003c/code\u003e, :issue:\u003ccode\u003e1049\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.3 (2026-04-10)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/70666a296c2e5bb7451f5a04eef259f6f943d0de\"\u003e\u003ccode\u003e70666a2\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/653d86586dea8b4e020086a276a15a27ac7bd25d\"\u003e\u003ccode\u003e653d865\u003c/code\u003e\u003c/a\u003e docs: fix issue with changelog generation (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1050\"\u003e#1050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/373b9ee171e2f16353365b1a9a02bc408b96ca73\"\u003e\u003ccode\u003e373b9ee\u003c/code\u003e\u003c/a\u003e tests: keep environment from leaking in Python 3.15 (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1049\"\u003e#1049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/e37e2ae697f9dde82709affb9356281fc2a9b98b\"\u003e\u003ccode\u003ee37e2ae\u003c/code\u003e\u003c/a\u003e docs: reorganize testing docs for copy/paste (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1043\"\u003e#1043\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/e9c194ad54413f1923f727ad07c7faf7dff813c0\"\u003e\u003ccode\u003ee9c194a\u003c/code\u003e\u003c/a\u003e tests: fix issue with uv run (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1048\"\u003e#1048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/03b7d7032ae636be992c917c67f8efbf99527c62\"\u003e\u003ccode\u003e03b7d70\u003c/code\u003e\u003c/a\u003e chore: report coverage failure lines (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1046\"\u003e#1046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/2afa3b59977c7e08dc526f19ab670edf99ce6051\"\u003e\u003ccode\u003e2afa3b5\u003c/code\u003e\u003c/a\u003e fix: revert part of \u003ca href=\"https://redirect.github.com/pypa/build/issues/973\"\u003e#973\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1044\"\u003e#1044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b336f60e8008791b7c492078a0725fdadc5875e8\"\u003e\u003ccode\u003eb336f60\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1045\"\u003e#1045\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/6d8039a4503caa2327657eb288c6ce01dabc3eb7\"\u003e\u003ccode\u003e6d8039a\u003c/code\u003e\u003c/a\u003e fix: ignore installed when running pip (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1040\"\u003e#1040\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/ebf6eba272c732ae7e3136edc78ac2597035edd9\"\u003e\u003ccode\u003eebf6eba\u003c/code\u003e\u003c/a\u003e revert: drop PEP 660 change (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1039\"\u003e#1039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.4.3...1.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=build\u0026package-manager=pip\u0026previous-version=1.4.3\u0026new-version=1.4.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/Senzing/mapper-icij/pull/114","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Senzing%2Fmapper-icij/issues/114","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/114/packages"}},{"old_version":"1.4.3","new_version":"1.4.4","update_type":"patch","path":null,"pr_created_at":"2026-05-14T04:40:28.000Z","version_change":"1.4.3 → 1.4.4","issue":{"uuid":"4443213420","node_id":"PR_kwDOC9HVY87bYX0v","number":110,"state":"closed","title":"Bump build from 1.4.3 to 1.4.4","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-14T04:41:15.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-14T04:40:28.000Z","updated_at":"2026-05-14T04:41:16.000Z","time_to_close":47,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"build","old_version":"1.4.3","new_version":"1.4.4","repository_url":"https://github.com/pypa/build"}],"path":null,"ecosystem":"pip"},"body":"Bumps [build](https://github.com/pypa/build) from 1.4.3 to 1.4.4.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/releases\"\u003ebuild's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.4\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(release): generate consistent CHANGELOG heading levels by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1032\"\u003epypa/build#1032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: move source links by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1034\"\u003epypa/build#1034\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erevert: drop PEP 660 change by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1039\"\u003epypa/build#1039\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: ignore installed when running pip by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1040\"\u003epypa/build#1040\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: revert part of \u003ca href=\"https://redirect.github.com/pypa/build/issues/973\"\u003e#973\u003c/a\u003e by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1044\"\u003epypa/build#1044\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: report coverage failure lines by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1046\"\u003epypa/build#1046\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: fix issue with uv run by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1048\"\u003epypa/build#1048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: reorganize testing docs for copy/paste by \u003ca href=\"https://github.com/abitrolly\"\u003e\u003ccode\u003e@​abitrolly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1043\"\u003epypa/build#1043\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: keep environment from leaking in Python 3.15 by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1049\"\u003epypa/build#1049\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix issue with changelog generation by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1050\"\u003epypa/build#1050\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.3...1.4.4\"\u003ehttps://github.com/pypa/build/compare/1.4.3...1.4.4\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e####################\n1.5.0 (2026-04-30)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.9 support - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1036\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003e--ignore-installed\u003c/code\u003e opt-in from the API via \u003ccode\u003efresh=True\u003c/code\u003e - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1056\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1033\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.4 (2026-04-22)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eFix release pipeline generating \u003ccode\u003eCHANGELOG.rst\u003c/code\u003e entries with inconsistent heading levels, which broke \u003ccode\u003esphinx -W\u003c/code\u003e\nand pinned Read the Docs \u003ccode\u003estable\u003c/code\u003e at 1.4.0 - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e1031\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRevert :pr:\u003ccode\u003e1039\u003c/code\u003e from build 1.4.3, no longer check direct_url (for now) - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1039\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--ignore-installed\u003c/code\u003e to pip install command to prevent issues with packages already present in the isolated\nbuild environment - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1037\u003c/code\u003e) (:issue:\u003ccode\u003e1040\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePartial revert of :pr:\u003ccode\u003e973\u003c/code\u003e, keeping log messages in one entry, multiple lines. (:issue:\u003ccode\u003e1044\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1048\u003c/code\u003e, :issue:\u003ccode\u003e1049\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.3 (2026-04-10)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/70666a296c2e5bb7451f5a04eef259f6f943d0de\"\u003e\u003ccode\u003e70666a2\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/653d86586dea8b4e020086a276a15a27ac7bd25d\"\u003e\u003ccode\u003e653d865\u003c/code\u003e\u003c/a\u003e docs: fix issue with changelog generation (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1050\"\u003e#1050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/373b9ee171e2f16353365b1a9a02bc408b96ca73\"\u003e\u003ccode\u003e373b9ee\u003c/code\u003e\u003c/a\u003e tests: keep environment from leaking in Python 3.15 (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1049\"\u003e#1049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/e37e2ae697f9dde82709affb9356281fc2a9b98b\"\u003e\u003ccode\u003ee37e2ae\u003c/code\u003e\u003c/a\u003e docs: reorganize testing docs for copy/paste (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1043\"\u003e#1043\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/e9c194ad54413f1923f727ad07c7faf7dff813c0\"\u003e\u003ccode\u003ee9c194a\u003c/code\u003e\u003c/a\u003e tests: fix issue with uv run (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1048\"\u003e#1048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/03b7d7032ae636be992c917c67f8efbf99527c62\"\u003e\u003ccode\u003e03b7d70\u003c/code\u003e\u003c/a\u003e chore: report coverage failure lines (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1046\"\u003e#1046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/2afa3b59977c7e08dc526f19ab670edf99ce6051\"\u003e\u003ccode\u003e2afa3b5\u003c/code\u003e\u003c/a\u003e fix: revert part of \u003ca href=\"https://redirect.github.com/pypa/build/issues/973\"\u003e#973\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1044\"\u003e#1044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b336f60e8008791b7c492078a0725fdadc5875e8\"\u003e\u003ccode\u003eb336f60\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1045\"\u003e#1045\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/6d8039a4503caa2327657eb288c6ce01dabc3eb7\"\u003e\u003ccode\u003e6d8039a\u003c/code\u003e\u003c/a\u003e fix: ignore installed when running pip (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1040\"\u003e#1040\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/ebf6eba272c732ae7e3136edc78ac2597035edd9\"\u003e\u003ccode\u003eebf6eba\u003c/code\u003e\u003c/a\u003e revert: drop PEP 660 change (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1039\"\u003e#1039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.4.3...1.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=build\u0026package-manager=pip\u0026previous-version=1.4.3\u0026new-version=1.4.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/Senzing/mapper-dowjones/pull/110","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Senzing%2Fmapper-dowjones/issues/110","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/110/packages"}},{"old_version":"1.4.3","new_version":"1.5.0","update_type":"minor","path":null,"pr_created_at":"2026-05-12T04:10:38.000Z","version_change":"1.4.3 → 1.5.0","issue":{"uuid":"4426111077","node_id":"PR_kwDOK2DPd87ahE3M","number":336,"state":"closed","title":"CHORE: Bump the development-dependencies group across 1 directory with 7 updates","user":"dependabot[bot]","labels":["maintenance","dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-13T00:30:51.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-12T04:10:38.000Z","updated_at":"2026-05-13T00:30:53.000Z","time_to_close":73213,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"CHORE: Bump","group_name":"development-dependencies","update_count":7,"packages":[{"name":"pre-commit","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"click","old_version":"8.3.2","new_version":"8.3.3","repository_url":"https://github.com/pallets/click"},{"name":"pip","old_version":"26.0.1","new_version":"26.1","repository_url":"https://github.com/pypa/pip"},{"name":"jupyterlab","old_version":"4.5.6","new_version":"4.5.7","repository_url":"https://github.com/jupyterlab/jupyterlab"},{"name":"sphinx-gallery","old_version":"0.20.0","new_version":"0.21.0","repository_url":"https://github.com/sphinx-gallery/sphinx-gallery"},{"name":"matplotlib","old_version":"3.10.8","new_version":"3.10.9","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"build","old_version":"1.4.3","new_version":"1.5.0","repository_url":"https://github.com/pypa/build"}],"path":null,"ecosystem":"pip"},"body":"Bumps the development-dependencies group with 7 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.5.1` | `4.6.0` |\n| [click](https://github.com/pallets/click) | `8.3.2` | `8.3.3` |\n| [pip](https://github.com/pypa/pip) | `26.0.1` | `26.1` |\n| [jupyterlab](https://github.com/jupyterlab/jupyterlab) | `4.5.6` | `4.5.7` |\n| [sphinx-gallery](https://github.com/sphinx-gallery/sphinx-gallery) | `0.20.0` | `0.21.0` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.8` | `3.10.9` |\n| [build](https://github.com/pypa/build) | `1.4.3` | `1.5.0` |\n\n\nUpdates `pre-commit` from 4.5.1 to 4.6.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/releases\"\u003epre-commit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epre-commit v4.6.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: allow \u003ccode\u003e--hook-dir\u003c/code\u003e to be missing to enable easier usage with \u003ccode\u003egit\u003c/code\u003e 2.54+ git hooks.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3662\"\u003e#3662\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: \u003ccode\u003e--hook-type\u003c/code\u003e is required.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3661\"\u003e#3661\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md\"\u003epre-commit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e4.6.0 - 2026-04-21\u003c/h1\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: allow \u003ccode\u003e--hook-dir\u003c/code\u003e to be missing to enable easier\nusage with \u003ccode\u003egit\u003c/code\u003e 2.54+ git hooks.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3662\"\u003e#3662\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: \u003ccode\u003e--hook-type\u003c/code\u003e is required.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3661\"\u003e#3661\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/f35134b05028ec938ac605ae500fdf95462655d3\"\u003e\u003ccode\u003ef35134b\u003c/code\u003e\u003c/a\u003e v4.6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/2a51ffcb81f6c8ed2e6467913c3343a8800f3ab9\"\u003e\u003ccode\u003e2a51ffc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3662\"\u003e#3662\u003c/a\u003e from pre-commit/hook-impl-optional-hook-dir\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/d7dee322abfc765b042f2e3b872aab3c3a867610\"\u003e\u003ccode\u003ed7dee32\u003c/code\u003e\u003c/a\u003e make --hook-dir optional for hook-impl\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/965aeb1c680e8b526342153547f0ec014484c63d\"\u003e\u003ccode\u003e965aeb1\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3661\"\u003e#3661\u003c/a\u003e from pre-commit/hook-impl-required\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/2eacc064aa9b5bb33d3a0d84a234b475e34f3096\"\u003e\u003ccode\u003e2eacc06\u003c/code\u003e\u003c/a\u003e --hook-type is required for hook-impl\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/f5678bf4ac35cffc0ff7174ad85f7fdc2a5c977e\"\u003e\u003ccode\u003ef5678bf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3657\"\u003e#3657\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/054cc5bd6bb1b20faa1eefe09f0de3b68fceee94\"\u003e\u003ccode\u003e054cc5b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/5c0f3024d2524f6e029a4c333392fd9be9fb27f6\"\u003e\u003ccode\u003e5c0f302\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3652\"\u003e#3652\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/a5d91142676630f8130020b35e166e0c0e92b8f4\"\u003e\u003ccode\u003ea5d9114\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/129a1f5ca1eaee0c952a5e7a07faae305c5e15bc\"\u003e\u003ccode\u003e129a1f5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3641\"\u003e#3641\u003c/a\u003e from pre-commit/mxr-patch-1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pre-commit/pre-commit/compare/v4.5.1...v4.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.3.2 to 8.3.3\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.3\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.3 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.3/\"\u003ehttps://pypi.org/project/click/8.3.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-3\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-3\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/30\"\u003ehttps://github.com/pallets/click/milestone/30\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse :func:\u003ccode\u003eshlex.split\u003c/code\u003e to split pager and editor commands into \u003ccode\u003eargv\u003c/code\u003e\nlists for :class:\u003ccode\u003esubprocess.Popen\u003c/code\u003e, removing \u003ccode\u003eshell=True\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/1026\"\u003e#1026\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/1477\"\u003e#1477\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2775\"\u003e#2775\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eTypeError\u003c/code\u003e when rendering help for an option whose default value is\nan object that doesn't support equality comparison with strings, such as\n\u003ccode\u003esemver.Version\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3298\"\u003e#3298\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3299\"\u003e#3299\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix pager test pollution under parallel execution by using pytest's\n\u003ccode\u003etmp_path\u003c/code\u003e fixture instead of a shared temporary file path. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3238\"\u003e#3238\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values in a \u003ccode\u003edefault_map\u003c/code\u003e as absent, so they fall\nthrough to the next default source instead of being used as the value.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3224\"\u003e#3224\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3240\"\u003e#3240\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePatch \u003ccode\u003epdb.Pdb\u003c/code\u003e in \u003ccode\u003eCliRunner\u003c/code\u003e isolation so \u003ccode\u003epdb.set_trace()\u003c/code\u003e,\n\u003ccode\u003ebreakpoint()\u003c/code\u003e, and debuggers subclassing \u003ccode\u003epdb.Pdb\u003c/code\u003e (ipdb, pdbpp) can\ninteract with the real terminal instead of the captured I/O streams.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/654\"\u003e#654\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/824\"\u003e#824\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/843\"\u003e#843\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/951\"\u003e#951\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3235\"\u003e#3235\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd optional randomized parallel test execution using \u003ccode\u003epytest-randomly\u003c/code\u003e and\n\u003ccode\u003epytest-xdist\u003c/code\u003e to detect test pollution and race conditions. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3151\"\u003e#3151\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd contributor documentation for running stress tests, randomized\nparallel tests, and Flask smoke tests. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3151\"\u003e#3151\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3177\"\u003e#3177\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eShow custom \u003ccode\u003eshow_default\u003c/code\u003e string in prompts, matching the existing\nhelp text behavior. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2836\"\u003e#2836\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2837\"\u003e#2837\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3165\"\u003e#3165\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3262\"\u003e#3262\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3280\"\u003e#3280\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3328\"\u003e#3328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003edefault=True\u003c/code\u003e with boolean \u003ccode\u003eflag_value\u003c/code\u003e always returning the\n\u003ccode\u003eflag_value\u003c/code\u003e instead of \u003ccode\u003eTrue\u003c/code\u003e. The \u003ccode\u003edefault=True\u003c/code\u003e to \u003ccode\u003eflag_value\u003c/code\u003e\nsubstitution now only applies to non-boolean flags, where \u003ccode\u003eTrue\u003c/code\u003e acts as a\nsentinel meaning \u0026quot;activate this flag by default\u0026quot;. For boolean flags,\n\u003ccode\u003edefault=True\u003c/code\u003e is returned as a literal value. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3111\"\u003e#3111\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3239\"\u003e#3239\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark \u003ccode\u003emake_default_short_help\u003c/code\u003e as private API. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3189\"\u003e#3189\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3250\"\u003e#3250\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCliRunner\u003c/code\u003e's redirected streams now expose the original file descriptor\nvia \u003ccode\u003efileno()\u003c/code\u003e, so that \u003ccode\u003efaulthandler\u003c/code\u003e, \u003ccode\u003esubprocess\u003c/code\u003e, and other\nC-level consumers no longer crash with \u003ccode\u003eio.UnsupportedOperation\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/2865\"\u003e#2865\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange :class:\u003ccode\u003eParameterSource\u003c/code\u003e to an :class:\u003ccode\u003e~enum.IntEnum\u003c/code\u003e and reorder\nits members from most to least explicit, so values can be compared to\ncheck whether a parameter was explicitly provided. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2879\"\u003e#2879\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3248\"\u003e#3248\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.rst\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.3.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-04-20\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse :func:\u003ccode\u003eshlex.split\u003c/code\u003e to split pager and editor commands into \u003ccode\u003eargv\u003c/code\u003e\nlists for :class:\u003ccode\u003esubprocess.Popen\u003c/code\u003e, removing \u003ccode\u003eshell=True\u003c/code\u003e.\n:issue:\u003ccode\u003e1026\u003c/code\u003e :pr:\u003ccode\u003e1477\u003c/code\u003e :pr:\u003ccode\u003e2775\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eTypeError\u003c/code\u003e when rendering help for an option whose default value is\nan object that doesn't support equality comparison with strings, such as\n\u003ccode\u003esemver.Version\u003c/code\u003e. :issue:\u003ccode\u003e3298\u003c/code\u003e :pr:\u003ccode\u003e3299\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix pager test pollution under parallel execution by using pytest's\n\u003ccode\u003etmp_path\u003c/code\u003e fixture instead of a shared temporary file path. :pr:\u003ccode\u003e3238\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values in a \u003ccode\u003edefault_map\u003c/code\u003e as absent, so they fall\nthrough to the next default source instead of being used as the value.\n:issue:\u003ccode\u003e3224\u003c/code\u003e :pr:\u003ccode\u003e3240\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ePatch \u003ccode\u003epdb.Pdb\u003c/code\u003e in \u003ccode\u003eCliRunner\u003c/code\u003e isolation so \u003ccode\u003epdb.set_trace()\u003c/code\u003e,\n\u003ccode\u003ebreakpoint()\u003c/code\u003e, and debuggers subclassing \u003ccode\u003epdb.Pdb\u003c/code\u003e (ipdb, pdbpp) can\ninteract with the real terminal instead of the captured I/O streams.\n:issue:\u003ccode\u003e654\u003c/code\u003e :issue:\u003ccode\u003e824\u003c/code\u003e :issue:\u003ccode\u003e843\u003c/code\u003e :pr:\u003ccode\u003e951\u003c/code\u003e :pr:\u003ccode\u003e3235\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd optional randomized parallel test execution using \u003ccode\u003epytest-randomly\u003c/code\u003e and\n\u003ccode\u003epytest-xdist\u003c/code\u003e to detect test pollution and race conditions. :pr:\u003ccode\u003e3151\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd contributor documentation for running stress tests, randomized\nparallel tests, and Flask smoke tests. :pr:\u003ccode\u003e3151\u003c/code\u003e :pr:\u003ccode\u003e3177\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eShow custom \u003ccode\u003eshow_default\u003c/code\u003e string in prompts, matching the existing\nhelp text behavior. :issue:\u003ccode\u003e2836\u003c/code\u003e :pr:\u003ccode\u003e2837\u003c/code\u003e :pr:\u003ccode\u003e3165\u003c/code\u003e :pr:\u003ccode\u003e3262\u003c/code\u003e :pr:\u003ccode\u003e3280\u003c/code\u003e\n:pr:\u003ccode\u003e3328\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003edefault=True\u003c/code\u003e with boolean \u003ccode\u003eflag_value\u003c/code\u003e always returning the\n\u003ccode\u003eflag_value\u003c/code\u003e instead of \u003ccode\u003eTrue\u003c/code\u003e. The \u003ccode\u003edefault=True\u003c/code\u003e to \u003ccode\u003eflag_value\u003c/code\u003e\nsubstitution now only applies to non-boolean flags, where \u003ccode\u003eTrue\u003c/code\u003e acts as a\nsentinel meaning \u0026quot;activate this flag by default\u0026quot;. For boolean flags,\n\u003ccode\u003edefault=True\u003c/code\u003e is returned as a literal value. :issue:\u003ccode\u003e3111\u003c/code\u003e :pr:\u003ccode\u003e3239\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark \u003ccode\u003emake_default_short_help\u003c/code\u003e as private API. :issue:\u003ccode\u003e3189\u003c/code\u003e :pr:\u003ccode\u003e3250\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCliRunner\u003c/code\u003e's redirected streams now expose the original file descriptor\nvia \u003ccode\u003efileno()\u003c/code\u003e, so that \u003ccode\u003efaulthandler\u003c/code\u003e, \u003ccode\u003esubprocess\u003c/code\u003e, and other\nC-level consumers no longer crash with \u003ccode\u003eio.UnsupportedOperation\u003c/code\u003e.\n:issue:\u003ccode\u003e2865\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eChange :class:\u003ccode\u003eParameterSource\u003c/code\u003e to an :class:\u003ccode\u003e~enum.IntEnum\u003c/code\u003e and reorder\nits members from most to least explicit, so values can be compared to\ncheck whether a parameter was explicitly provided. :issue:\u003ccode\u003e2879\u003c/code\u003e :pr:\u003ccode\u003e3248\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/c06d2d0a6aee6bcc50bd8257be2a4a592f4e75d0\"\u003e\u003ccode\u003ec06d2d0\u003c/code\u003e\u003c/a\u003e Release 8.3.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/f1f191ecd2c790b161187c78e7c88440e9524e5c\"\u003e\u003ccode\u003ef1f191e\u003c/code\u003e\u003c/a\u003e Apply format guidelines to commits since latest 8.3.2 release (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3343\"\u003e#3343\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/bb59ba0fd279ca085d1113f0499b6a602ca31081\"\u003e\u003ccode\u003ebb59ba0\u003c/code\u003e\u003c/a\u003e Apply format guidelines to commits since latest 8.3.2 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/4a352253c9ff013e36d11e4a6820d36d00ff2cd4\"\u003e\u003ccode\u003e4a35225\u003c/code\u003e\u003c/a\u003e Reduce blast-radius of \u003ccode\u003eUNSET\u003c/code\u003e in \u003ccode\u003edefault_map\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3240\"\u003e#3240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/c07bb936de43fd303f9cfbefe248ab23fd2199c8\"\u003e\u003ccode\u003ec07bb93\u003c/code\u003e\u003c/a\u003e Merge branch 'stable' into unset-in-default-map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/c7e1ba8448cbcb2cdd9c1c7f4a592e863dcc3995\"\u003e\u003ccode\u003ec7e1ba8\u003c/code\u003e\u003c/a\u003e Reorder \u003ccode\u003eParameterSource\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3248\"\u003e#3248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/76552ff1e8c85837f911fc34037e702ae4327eda\"\u003e\u003ccode\u003e76552ff\u003c/code\u003e\u003c/a\u003e Show default string in prompt (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3328\"\u003e#3328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/ac5cec5fe54e5a691e7bac17f441ce9498e0744c\"\u003e\u003ccode\u003eac5cec5\u003c/code\u003e\u003c/a\u003e Reorder ParameterSource from most to least explicit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/8c452e00e6772931b7071d9316b82b77e5b8f280\"\u003e\u003ccode\u003e8c452e0\u003c/code\u003e\u003c/a\u003e Merge branch 'stable' into show-default-string-in-prompt\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/8c95c73bd5ef89eac638f85f1904a104ba4b1a32\"\u003e\u003ccode\u003e8c95c73\u003c/code\u003e\u003c/a\u003e Reconcile default value passing and default activation (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3239\"\u003e#3239\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.3.2...8.3.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pip` from 26.0.1 to 26.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/pip/blob/main/NEWS.rst\"\u003epip's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e26.1 (2026-04-26)\u003c/h1\u003e\n\u003ch2\u003eDeprecations and Removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.9. (\u003ccode\u003e[#13795](https://github.com/pypa/pip/issues/13795) \u0026lt;https://github.com/pypa/pip/issues/13795\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd experimental support to read requirements from standardized pylock.toml files (\u003ccode\u003e-r pylock.toml\u003c/code\u003e). (\u003ccode\u003e[#13876](https://github.com/pypa/pip/issues/13876) \u0026lt;https://github.com/pypa/pip/issues/13876\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003e--uploaded-prior-to\u003c/code\u003e to accept a duration in days (e.g., \u003ccode\u003eP3D\u003c/code\u003e for 3 days ago). (\u003ccode\u003e[#13674](https://github.com/pypa/pip/issues/13674) \u0026lt;https://github.com/pypa/pip/issues/13674\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eEnhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up dependency resolution when there are complex conflicts. (\u003ccode\u003e[#13859](https://github.com/pypa/pip/issues/13859) \u0026lt;https://github.com/pypa/pip/issues/13859\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eReduce memory usage when resolving large dependency trees. (\u003ccode\u003e[#13843](https://github.com/pypa/pip/issues/13843) \u0026lt;https://github.com/pypa/pip/issues/13843\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eEmit a deprecation warning when pip imports an unexpected module after\ninstallation of a distribution has started. (\u003ccode\u003e[#13912](https://github.com/pypa/pip/issues/13912) \u0026lt;https://github.com/pypa/pip/issues/13912\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAllow URL constraints to apply to requirements with extras. (\u003ccode\u003e[#12018](https://github.com/pypa/pip/issues/12018) \u0026lt;https://github.com/pypa/pip/issues/12018\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAllow unpinned requirements to use hashes from constraints. Constraints\nlike \u003ccode\u003e{name}=={version} --hash=...\u003c/code\u003e feeds into hash verification for\na corresponding requirement. (\u003ccode\u003e[#9243](https://github.com/pypa/pip/issues/9243) \u0026lt;https://github.com/pypa/pip/issues/9243\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eImprove conflict reports that involve direct URLs. (\u003ccode\u003e[#13932](https://github.com/pypa/pip/issues/13932) \u0026lt;https://github.com/pypa/pip/issues/13932\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eShow all errors instead of first error for faulty \u003ccode\u003edependency_groups\u003c/code\u003e definitions. (\u003ccode\u003e[#13917](https://github.com/pypa/pip/issues/13917) \u0026lt;https://github.com/pypa/pip/issues/13917\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix recovery hint for missing RECORD file to use \u003ccode\u003e--ignore-installed\u003c/code\u003e\ninstead of \u003ccode\u003e--force-reinstall\u003c/code\u003e. (\u003ccode\u003e[#12645](https://github.com/pypa/pip/issues/12645) \u0026lt;https://github.com/pypa/pip/issues/12645\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eFix misleading error message when a constraint file cannot be opened. (\u003ccode\u003e[#13226](https://github.com/pypa/pip/issues/13226) \u0026lt;https://github.com/pypa/pip/issues/13226\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eShow the filename rather than the full URL when downloading files from non-PyPI indexes in non-verbose mode. (\u003ccode\u003e[#13494](https://github.com/pypa/pip/issues/13494) \u0026lt;https://github.com/pypa/pip/issues/13494\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eRemove the adjacent \u003ccode\u003e__pycache__\u003c/code\u003e directory when a .py file is removed. (\u003ccode\u003e[#13725](https://github.com/pypa/pip/issues/13725) \u0026lt;https://github.com/pypa/pip/issues/13725\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eForce UTF-8 encoding for :pep:\u003ccode\u003e723\u003c/code\u003e metadata. (\u003ccode\u003e[#13861](https://github.com/pypa/pip/issues/13861) \u0026lt;https://github.com/pypa/pip/issues/13861\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eMinor performance improvement when filtering candidates during resolution. (\u003ccode\u003e[#13916](https://github.com/pypa/pip/issues/13916) \u0026lt;https://github.com/pypa/pip/issues/13916\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eFix a hang on Windows when stdout is closed during verbose output. (\u003ccode\u003e[#13927](https://github.com/pypa/pip/issues/13927) \u0026lt;https://github.com/pypa/pip/issues/13927\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eCommon path prefixes are determined by path segment, not character by character. (\u003ccode\u003e[#13847](https://github.com/pypa/pip/issues/13847) \u0026lt;https://github.com/pypa/pip/issues/13847\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eFix installing \u003ccode\u003e.tar.gz\u003c/code\u003e source distributions that look like a zip file. (\u003ccode\u003e[#13867](https://github.com/pypa/pip/issues/13867) \u0026lt;https://github.com/pypa/pip/issues/13867\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVendored Libraries\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade certifi to 2026.2.25\u003c/li\u003e\n\u003cli\u003eUpgrade packaging to 26.2\u003c/li\u003e\n\u003cli\u003eUpgrade requests to 2.33.1\u003c/li\u003e\n\u003cli\u003eUpgrade tomli to 2.3.1\u003c/li\u003e\n\u003cli\u003eUpgrade urllib3 to 2.6.3\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/90b2b3e0f7ef75c485155716d904e51654575803\"\u003e\u003ccode\u003e90b2b3e\u003c/code\u003e\u003c/a\u003e Bump for release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/193f289a6201f801b23885297332461ac8a65b6b\"\u003e\u003ccode\u003e193f289\u003c/code\u003e\u003c/a\u003e Update AUTHORS.txt\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/63c3709071c9596d7f4676502a90a3b06f241772\"\u003e\u003ccode\u003e63c3709\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pypa/pip/issues/13876\"\u003e#13876\u003c/a\u003e from sbidoul/install-from-pylock-reqs-sbi\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/e5fe7023ffe74a5895571eaf57bdd2989018fbf2\"\u003e\u003ccode\u003ee5fe702\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pypa/pip/issues/13949\"\u003e#13949\u003c/a\u003e from pypa/revert-13888-resolver-editable-links\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/122a14a8cd3dae7b3e959641f0b45849d4b21618\"\u003e\u003ccode\u003e122a14a\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Allow editable installs to satisfy direct-URL dependencies (\u003ca href=\"https://redirect.github.com/pypa/pip/issues/13888\"\u003e#13888\u003c/a\u003e)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/c3352524aae95ae959d4727dda5b5c65752261b3\"\u003e\u003ccode\u003ec335252\u003c/code\u003e\u003c/a\u003e -r pylock.toml: add pip-wheel -r pylock.toml test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/ba2fc12b7f386d89e233bdfd49e7b89d1af57ad1\"\u003e\u003ccode\u003eba2fc12\u003c/code\u003e\u003c/a\u003e -r pylock.toml: proper error with remote pylock.toml containing directory ent...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/747c4ae88837a8bb13946fe9d1b612c162a2e3df\"\u003e\u003ccode\u003e747c4ae\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pypa/pip/issues/13948\"\u003e#13948\u003c/a\u003e from ichard26/reword-news\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/3517841c5e2d92e04dbef52c61a8fa967c059efa\"\u003e\u003ccode\u003e3517841\u003c/code\u003e\u003c/a\u003e -r pylock: refine filename pylock-ness test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip/commit/2f7ad8caeed4471e63958df6cacba3a66a215588\"\u003e\u003ccode\u003e2f7ad8c\u003c/code\u003e\u003c/a\u003e -r pylock.toml: fix crash with pip wheel and pip lock\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/pip/compare/26.0.1...26.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jupyterlab` from 4.5.6 to 4.5.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jupyterlab/jupyterlab/releases\"\u003ejupyterlab's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.5.7\u003c/h2\u003e\n\u003ch2\u003e4.5.7\u003c/h2\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/jupyterlab/jupyterlab/compare/v4.5.6...66fe9adfc1d501d1368404037f26925870741933\"\u003eFull Changelog\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eSecurity patches\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2026-42557 \u003ca href=\"https://github.com/jupyterlab/jupyterlab/security/advisories/GHSA-mqcg-5x36-vfcg\"\u003ehttps://github.com/jupyterlab/jupyterlab/security/advisories/GHSA-mqcg-5x36-vfcg\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCVE-2026-42266 \u003ca href=\"https://github.com/jupyterlab/jupyterlab/security/advisories/GHSA-37w4-hwhx-4rc4\"\u003ehttps://github.com/jupyterlab/jupyterlab/security/advisories/GHSA-37w4-hwhx-4rc4\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCVE-2026-40171 \u003ca href=\"https://github.com/jupyter/notebook/security/advisories/GHSA-rch3-82jr-f9w9\"\u003ehttps://github.com/jupyter/notebook/security/advisories/GHSA-rch3-82jr-f9w9\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBugs fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eVideo and Audio Content Providers: Fix JupyterLite support \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18652\"\u003e#18652\u003c/a\u003e (\u003ca href=\"https://github.com/martinRenou\"\u003e\u003ccode\u003e@​martinRenou\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix notebook hang when dropping cells \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18808\"\u003e#18808\u003c/a\u003e (\u003ca href=\"https://github.com/MUFFANUJ\"\u003e\u003ccode\u003e@​MUFFANUJ\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Contextual Help keyboard shortcut reliability and menu Help functionality \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18747\"\u003e#18747\u003c/a\u003e (\u003ca href=\"https://github.com/itsmejay80\"\u003e\u003ccode\u003e@​itsmejay80\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix focusing input element when opening a dialog from Command Palette \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18735\"\u003e#18735\u003c/a\u003e (\u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix native context menu blocked even when context menu is suppressed \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18753\"\u003e#18753\u003c/a\u003e (\u003ca href=\"https://github.com/utsav-develops\"\u003e\u003ccode\u003e@​utsav-develops\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix flaky toolbar item placement in popup \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18618\"\u003e#18618\u003c/a\u003e (\u003ca href=\"https://github.com/filipeoliveira05\"\u003e\u003ccode\u003e@​filipeoliveira05\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate terminal default font family to honor macOS system-wide ui-monospace \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18647\"\u003e#18647\u003c/a\u003e (\u003ca href=\"https://github.com/flaviomartins\"\u003e\u003ccode\u003e@​flaviomartins\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance and upkeep improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix linting issue \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18819\"\u003e#18819\u003c/a\u003e (\u003ca href=\"https://github.com/krassowski\"\u003e\u003ccode\u003e@​krassowski\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix syntax for Python 3.9 on \u003ccode\u003e4.5.x\u003c/code\u003e branch \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18817\"\u003e#18817\u003c/a\u003e (\u003ca href=\"https://github.com/krassowski\"\u003e\u003ccode\u003e@​krassowski\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove unused CodeMirror v5 CSS rule \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18785\"\u003e#18785\u003c/a\u003e (\u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove unused CSS rule forgotten after CodeMirror migration \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18763\"\u003e#18763\u003c/a\u003e (\u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove unused progress bar CSS rule in execution indicator \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18759\"\u003e#18759\u003c/a\u003e (\u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove dead \u003ccode\u003e.jp-VariableRenderer-TrustButton\u003c/code\u003e CSS rule \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18762\"\u003e#18762\u003c/a\u003e (\u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove used \u003ccode\u003e.jp-Cell-Placeholder\u003c/code\u003e CSS rules \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18761\"\u003e#18761\u003c/a\u003e (\u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix name of option for extension manager implementation in docs \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18788\"\u003e#18788\u003c/a\u003e (\u003ca href=\"https://github.com/krassowski\"\u003e\u003ccode\u003e@​krassowski\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove 4.5.0 announcement from docs \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/pull/18740\"\u003e#18740\u003c/a\u003e (\u003ca href=\"https://github.com/krassowski\"\u003e\u003ccode\u003e@​krassowski\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors to this release\u003c/h3\u003e\n\u003cp\u003eThe following people contributed discussions, new ideas, code and documentation contributions, and review.\nSee \u003ca href=\"https://github-activity.readthedocs.io/en/latest/use/#how-does-this-tool-define-contributions-in-the-reports\"\u003eour definition of contributors\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/jupyterlab/jupyterlab/graphs/contributors?from=2026-03-11\u0026amp;to=2026-04-29\u0026amp;type=c\"\u003eGitHub contributors page for this release\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3ACarreau+updated%3A2026-03-11..2026-04-29\u0026amp;type=Issues\"\u003eactivity\u003c/a\u003e) | \u003ca href=\"https://github.com/filipeoliveira05\"\u003e\u003ccode\u003e@​filipeoliveira05\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Afilipeoliveira05+updated%3A2026-03-11..2026-04-29\u0026amp;type=Issues\"\u003eactivity\u003c/a\u003e) | \u003ca href=\"https://github.com/flaviomartins\"\u003e\u003ccode\u003e@​flaviomartins\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Aflaviomartins+updated%3A2026-03-11..2026-04-29\u0026amp;type=Issues\"\u003eactivity\u003c/a\u003e) | \u003ca href=\"https://github.com/itsmejay80\"\u003e\u003ccode\u003e@​itsmejay80\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Aitsmejay80+updated%3A2026-03-11..2026-04-29\u0026amp;type=Issues\"\u003eactivity\u003c/a\u003e) | \u003ca href=\"https://github.com/jtpio\"\u003e\u003ccode\u003e@​jtpio\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Ajtpio+updated%3A2026-03-11..2026-04-29\u0026amp;type=Issues\"\u003eactivity\u003c/a\u003e) | \u003ca href=\"https://github.com/krassowski\"\u003e\u003ccode\u003e@​krassowski\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Akrassowski+updated%3A2026-03-11..2026-04-29\u0026amp;type=Issues\"\u003eactivity\u003c/a\u003e) | \u003ca href=\"https://github.com/martinRenou\"\u003e\u003ccode\u003e@​martinRenou\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3AmartinRenou+updated%3A2026-03-11..2026-04-29\u0026amp;type=Issues\"\u003eactivity\u003c/a\u003e) | \u003ca href=\"https://github.com/MUFFANUJ\"\u003e\u003ccode\u003e@​MUFFANUJ\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3AMUFFANUJ+updated%3A2026-03-11..2026-04-29\u0026amp;type=Issues\"\u003eactivity\u003c/a\u003e) | \u003ca href=\"https://github.com/utsav-develops\"\u003e\u003ccode\u003e@​utsav-develops\u003c/code\u003e\u003c/a\u003e (\u003ca href=\"https://github.com/search?q=repo%3Ajupyterlab%2Fjupyterlab+involves%3Autsav-develops+updated%3A2026-03-11..2026-04-29\u0026amp;type=Issues\"\u003eactivity\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/jupyterlab/jupyterlab/commit/f51404192bf6d0ff79187c884f21e1f91b928146\"\u003e\u003ccode\u003ef514041\u003c/code\u003e\u003c/a\u003e [ci skip] Publish 4.5.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/66fe9adfc1d501d1368404037f26925870741933\"\u003e\u003ccode\u003e66fe9ad\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18652\"\u003e#18652\u003c/a\u003e on branch 4.5.x (Video and Audio Content Providers: Fix Ju...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/f4455fac1b3c5b3ac4f06c95f78cfd39fb3157ed\"\u003e\u003ccode\u003ef4455fa\u003c/code\u003e\u003c/a\u003e Fix syntax for Python 3.9 on \u003ccode\u003e4.5.x\u003c/code\u003e branch (\u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18817\"\u003e#18817\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/d2322b5f54c61945d1cfbaebfcfba1a76a1bce79\"\u003e\u003ccode\u003ed2322b5\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18819\"\u003e#18819\u003c/a\u003e on branch 4.5.x (Fix linting issue) (\u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18820\"\u003e#18820\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/5d9cb8c634e081028ea6df4dd7149a1b1a84ec56\"\u003e\u003ccode\u003e5d9cb8c\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/1de120b5fe52f1148b45ca6ccbb03754e259b792\"\u003e\u003ccode\u003e1de120b\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/6926100ea09e41a48446406c0b8cc02539c6ede1\"\u003e\u003ccode\u003e6926100\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18808\"\u003e#18808\u003c/a\u003e on branch 4.5.x (Fix notebook hang when dropping cells) (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/67e6e88f7c4ec02a064f24b7a0d3f09af7eaab70\"\u003e\u003ccode\u003e67e6e88\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18647\"\u003e#18647\u003c/a\u003e on branch 4.5.x (Update default font family to honor macOS...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/bf21eb97eb2d61f1a084a0562be73108fe8ddb4f\"\u003e\u003ccode\u003ebf21eb9\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18747\"\u003e#18747\u003c/a\u003e on branch 4.5.x (Fix Contextual Help keyboard shortcut rel...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyterlab/jupyterlab/commit/73cafa54f9dbaa5e7034223cd0961a9eb0195995\"\u003e\u003ccode\u003e73cafa5\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/jupyterlab/jupyterlab/issues/18788\"\u003e#18788\u003c/a\u003e on branch 4.5.x (Fix name of option for extension manager ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jupyterlab/jupyterlab/compare/@jupyterlab/lsp@4.5.6...@jupyterlab/lsp@4.5.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sphinx-gallery` from 0.20.0 to 0.21.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sphinx-gallery/sphinx-gallery/releases\"\u003esphinx-gallery's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v0.21.0\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/sphinx-gallery/sphinx-gallery/compare/v0.20.0...v0.21.0\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eSupport for Sphinx 5 dropped in this release. Requirement is now Sphinx \u0026gt;= 6.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eImplemented enhancements:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for dynamic filtering by tag \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1555\"\u003e#1555\u003c/a\u003e (\u003ca href=\"https://github.com/Cadair\"\u003eCadair\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed bugs:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix subsection header sanitization when \u003ccode\u003enested_sections=False\u003c/code\u003e \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1550\"\u003e#1550\u003c/a\u003e (\u003ca href=\"https://github.com/lucyleeow\"\u003elucyleeow\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003egenerate_gallery_rst\u003c/code\u003e when \u003ccode\u003enested_sections=False\u003c/code\u003e user provides own \u003ccode\u003eindex.rst\u003c/code\u003e \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1549\"\u003e#1549\u003c/a\u003e (\u003ca href=\"https://github.com/lucyleeow\"\u003elucyleeow\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDocumentation\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDOC Add v0.20.0 to CHANGES.rst \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1567\"\u003e#1567\u003c/a\u003e (\u003ca href=\"https://github.com/lucyleeow\"\u003elucyleeow\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDOC Note sphinx bump in changes \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1560\"\u003e#1560\u003c/a\u003e (\u003ca href=\"https://github.com/lucyleeow\"\u003elucyleeow\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDOC Fix typos in nested_sections docs \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1547\"\u003e#1547\u003c/a\u003e (\u003ca href=\"https://github.com/lucyleeow\"\u003elucyleeow\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSmall typo on the configuration page of documentation \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1537\"\u003e#1537\u003c/a\u003e (\u003ca href=\"https://github.com/floffy-f\"\u003efloffy-f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate the list of projects \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1532\"\u003e#1532\u003c/a\u003e (\u003ca href=\"https://github.com/timhoffm\"\u003etimhoffm\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eProject maintenance\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1602\"\u003e#1602\u003c/a\u003e (\u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003epre-commit-ci[bot]\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTST: Use tmp_path fixture instead of tempfile \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1601\"\u003e#1601\u003c/a\u003e (\u003ca href=\"https://github.com/QuLogic\"\u003eQuLogic\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRe-enable Sphinx dev CI \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1599\"\u003e#1599\u003c/a\u003e (\u003ca href=\"https://github.com/lucyleeow\"\u003elucyleeow\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eENH: Accept Paths in split_code_and_text_blocks \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1598\"\u003e#1598\u003c/a\u003e (\u003ca href=\"https://github.com/QuLogic\"\u003eQuLogic\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTYP: Fix typing for back references \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1597\"\u003e#1597\u003c/a\u003e (\u003ca href=\"https://github.com/QuLogic\"\u003eQuLogic\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1596\"\u003e#1596\u003c/a\u003e (\u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003epre-commit-ci[bot]\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTST Amend \u003ccode\u003eadd_rst\u003c/code\u003e to \u003ccode\u003eadd_file\u003c/code\u003e and make flexible \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1595\"\u003e#1595\u003c/a\u003e (\u003ca href=\"https://github.com/lucyleeow\"\u003elucyleeow\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSwitch from codecs.open to plain open \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1594\"\u003e#1594\u003c/a\u003e (\u003ca href=\"https://github.com/QuLogic\"\u003eQuLogic\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTST: Prefer Path over os.path in all test code \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1593\"\u003e#1593\u003c/a\u003e (\u003ca href=\"https://github.com/QuLogic\"\u003eQuLogic\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTST: Switch from tmpdir to tmp_path \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1592\"\u003e#1592\u003c/a\u003e (\u003ca href=\"https://github.com/QuLogic\"\u003eQuLogic\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove unused imports \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1591\"\u003e#1591\u003c/a\u003e (\u003ca href=\"https://github.com/QuLogic\"\u003eQuLogic\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1590\"\u003e#1590\u003c/a\u003e (\u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003epre-commit-ci[bot]\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1589\"\u003e#1589\u003c/a\u003e (\u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003epre-commit-ci[bot]\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump the actions group with 2 updates \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1588\"\u003e#1588\u003c/a\u003e (\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1586\"\u003e#1586\u003c/a\u003e (\u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003epre-commit-ci[bot]\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1585\"\u003e#1585\u003c/a\u003e (\u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003epre-commit-ci[bot]\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(projects): add the atomistic cookbook \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1584\"\u003e#1584\u003c/a\u003e (\u003ca href=\"https://github.com/HaoZeke\"\u003eHaoZeke\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1583\"\u003e#1583\u003c/a\u003e (\u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003epre-commit-ci[bot]\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1582\"\u003e#1582\u003c/a\u003e (\u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003epre-commit-ci[bot]\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump the actions group with 2 updates \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1581\"\u003e#1581\u003c/a\u003e (\u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMNT: Extract test-related functionality from utils into _testing \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1580\"\u003e#1580\u003c/a\u003e (\u003ca href=\"https://github.com/timhoffm\"\u003etimhoffm\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMAINT: Autolabel fix (maybe) \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1579\"\u003e#1579\u003c/a\u003e (\u003ca href=\"https://github.com/larsoner\"\u003elarsoner\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMNT: Extract character length calculation from _format_for_writing \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1578\"\u003e#1578\u003c/a\u003e (\u003ca href=\"https://github.com/timhoffm\"\u003etimhoffm\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMNT: Refactor costs to an explicit data class ExampleCost \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1577\"\u003e#1577\u003c/a\u003e (\u003ca href=\"https://github.com/timhoffm\"\u003etimhoffm\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMNT: Add type annotations to gen_gallery.py \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1575\"\u003e#1575\u003c/a\u003e (\u003ca href=\"https://github.com/timhoffm\"\u003etimhoffm\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate \u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/pull/1574\"\u003e#1574\u003c/a\u003e (\u003ca href=\"https://github.com/apps/pre-commit-ci\"\u003epre-commit-ci[bot]\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sphinx-gallery/sphinx-gallery/blob/master/CHANGES.rst\"\u003esphinx-gallery's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.21.0\u003c/h2\u003e\n\u003cp\u003eSupport for Sphinx 5 dropped in this release. Requirement is now Sphinx \u0026gt;= 6.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eImplemented enhancements:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for dynamic filtering by tag \u003ccode\u003e[#1555](https://github.com/sphinx-gallery/sphinx-gallery/issues/1555) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1555\u0026gt;\u003c/code\u003e__ (\u003ccode\u003eCadair \u0026lt;https://github.com/Cadair\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed bugs:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix subsection header sanitization when \u003ccode\u003enested_sections=False\u003c/code\u003e \u003ccode\u003e[#1550](https://github.com/sphinx-gallery/sphinx-gallery/issues/1550) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1550\u0026gt;\u003c/code\u003e__ (\u003ccode\u003elucyleeow \u0026lt;https://github.com/lucyleeow\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003egenerate_gallery_rst\u003c/code\u003e when \u003ccode\u003enested_sections=False\u003c/code\u003e user provides own \u003ccode\u003eindex.rst\u003c/code\u003e \u003ccode\u003e[#1549](https://github.com/sphinx-gallery/sphinx-gallery/issues/1549) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1549\u0026gt;\u003c/code\u003e__ (\u003ccode\u003elucyleeow \u0026lt;https://github.com/lucyleeow\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDocumentation\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDOC Add v0.20.0 to CHANGES.rst \u003ccode\u003e[#1567](https://github.com/sphinx-gallery/sphinx-gallery/issues/1567) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1567\u0026gt;\u003c/code\u003e__ (\u003ccode\u003elucyleeow \u0026lt;https://github.com/lucyleeow\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eDOC Note sphinx bump in changes \u003ccode\u003e[#1560](https://github.com/sphinx-gallery/sphinx-gallery/issues/1560) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1560\u0026gt;\u003c/code\u003e__ (\u003ccode\u003elucyleeow \u0026lt;https://github.com/lucyleeow\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eDOC Fix typos in nested_sections docs \u003ccode\u003e[#1547](https://github.com/sphinx-gallery/sphinx-gallery/issues/1547) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1547\u0026gt;\u003c/code\u003e__ (\u003ccode\u003elucyleeow \u0026lt;https://github.com/lucyleeow\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eSmall typo on the configuration page of documentation \u003ccode\u003e[#1537](https://github.com/sphinx-gallery/sphinx-gallery/issues/1537) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1537\u0026gt;\u003c/code\u003e__ (\u003ccode\u003efloffy-f \u0026lt;https://github.com/floffy-f\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eUpdate the list of projects \u003ccode\u003e[#1532](https://github.com/sphinx-gallery/sphinx-gallery/issues/1532) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1532\u0026gt;\u003c/code\u003e__ (\u003ccode\u003etimhoffm \u0026lt;https://github.com/timhoffm\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eProject maintenance\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate \u003ccode\u003e[#1602](https://github.com/sphinx-gallery/sphinx-gallery/issues/1602) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1602\u0026gt;\u003c/code\u003e__ (\u003ccode\u003epre-commit-ci[bot] \u0026lt;https://github.com/apps/pre-commit-ci\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eTST: Use tmp_path fixture instead of tempfile \u003ccode\u003e[#1601](https://github.com/sphinx-gallery/sphinx-gallery/issues/1601) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1601\u0026gt;\u003c/code\u003e__ (\u003ccode\u003eQuLogic \u0026lt;https://github.com/QuLogic\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eRe-enable Sphinx dev CI \u003ccode\u003e[#1599](https://github.com/sphinx-gallery/sphinx-gallery/issues/1599) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1599\u0026gt;\u003c/code\u003e__ (\u003ccode\u003elucyleeow \u0026lt;https://github.com/lucyleeow\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eENH: Accept Paths in split_code_and_text_blocks \u003ccode\u003e[#1598](https://github.com/sphinx-gallery/sphinx-gallery/issues/1598) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1598\u0026gt;\u003c/code\u003e__ (\u003ccode\u003eQuLogic \u0026lt;https://github.com/QuLogic\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eTYP: Fix typing for back references \u003ccode\u003e[#1597](https://github.com/sphinx-gallery/sphinx-gallery/issues/1597) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1597\u0026gt;\u003c/code\u003e__ (\u003ccode\u003eQuLogic \u0026lt;https://github.com/QuLogic\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate \u003ccode\u003e[#1596](https://github.com/sphinx-gallery/sphinx-gallery/issues/1596) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1596\u0026gt;\u003c/code\u003e__ (\u003ccode\u003epre-commit-ci[bot] \u0026lt;https://github.com/apps/pre-commit-ci\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eTST Amend \u003ccode\u003eadd_rst\u003c/code\u003e to \u003ccode\u003eadd_file\u003c/code\u003e and make flexible \u003ccode\u003e[#1595](https://github.com/sphinx-gallery/sphinx-gallery/issues/1595) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1595\u0026gt;\u003c/code\u003e__ (\u003ccode\u003elucyleeow \u0026lt;https://github.com/lucyleeow\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eSwitch from codecs.open to plain open \u003ccode\u003e[#1594](https://github.com/sphinx-gallery/sphinx-gallery/issues/1594) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1594\u0026gt;\u003c/code\u003e__ (\u003ccode\u003eQuLogic \u0026lt;https://github.com/QuLogic\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eTST: Prefer Path over os.path in all test code \u003ccode\u003e[#1593](https://github.com/sphinx-gallery/sphinx-gallery/issues/1593) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1593\u0026gt;\u003c/code\u003e__ (\u003ccode\u003eQuLogic \u0026lt;https://github.com/QuLogic\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eTST: Switch from tmpdir to tmp_path \u003ccode\u003e[#1592](https://github.com/sphinx-gallery/sphinx-gallery/issues/1592) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1592\u0026gt;\u003c/code\u003e__ (\u003ccode\u003eQuLogic \u0026lt;https://github.com/QuLogic\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eRemove unused imports \u003ccode\u003e[#1591](https://github.com/sphinx-gallery/sphinx-gallery/issues/1591) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1591\u0026gt;\u003c/code\u003e__ (\u003ccode\u003eQuLogic \u0026lt;https://github.com/QuLogic\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate \u003ccode\u003e[#1590](https://github.com/sphinx-gallery/sphinx-gallery/issues/1590) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1590\u0026gt;\u003c/code\u003e__ (\u003ccode\u003epre-commit-ci[bot] \u0026lt;https://github.com/apps/pre-commit-ci\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate \u003ccode\u003e[#1589](https://github.com/sphinx-gallery/sphinx-gallery/issues/1589) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1589\u0026gt;\u003c/code\u003e__ (\u003ccode\u003epre-commit-ci[bot] \u0026lt;https://github.com/apps/pre-commit-ci\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eBump the actions group with 2 updates \u003ccode\u003e[#1588](https://github.com/sphinx-gallery/sphinx-gallery/issues/1588) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1588\u0026gt;\u003c/code\u003e__ (\u003ccode\u003edependabot[bot] \u0026lt;https://github.com/apps/dependabot\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate \u003ccode\u003e[#1586](https://github.com/sphinx-gallery/sphinx-gallery/issues/1586) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1586\u0026gt;\u003c/code\u003e__ (\u003ccode\u003epre-commit-ci[bot] \u0026lt;https://github.com/apps/pre-commit-ci\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate \u003ccode\u003e[#1585](https://github.com/sphinx-gallery/sphinx-gallery/issues/1585) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1585\u0026gt;\u003c/code\u003e__ (\u003ccode\u003epre-commit-ci[bot] \u0026lt;https://github.com/apps/pre-commit-ci\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003echore(projects): add the atomistic cookbook \u003ccode\u003e[#1584](https://github.com/sphinx-gallery/sphinx-gallery/issues/1584) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1584\u0026gt;\u003c/code\u003e__ (\u003ccode\u003eHaoZeke \u0026lt;https://github.com/HaoZeke\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate \u003ccode\u003e[#1583](https://github.com/sphinx-gallery/sphinx-gallery/issues/1583) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1583\u0026gt;\u003c/code\u003e__ (\u003ccode\u003epre-commit-ci[bot] \u0026lt;https://github.com/apps/pre-commit-ci\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate \u003ccode\u003e[#1582](https://github.com/sphinx-gallery/sphinx-gallery/issues/1582) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1582\u0026gt;\u003c/code\u003e__ (\u003ccode\u003epre-commit-ci[bot] \u0026lt;https://github.com/apps/pre-commit-ci\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eBump the actions group with 2 updates \u003ccode\u003e[#1581](https://github.com/sphinx-gallery/sphinx-gallery/issues/1581) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1581\u0026gt;\u003c/code\u003e__ (\u003ccode\u003edependabot[bot] \u0026lt;https://github.com/apps/dependabot\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eMNT: Extract test-related functionality from utils into _testing \u003ccode\u003e[#1580](https://github.com/sphinx-gallery/sphinx-gallery/issues/1580) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1580\u0026gt;\u003c/code\u003e__ (\u003ccode\u003etimhoffm \u0026lt;https://github.com/timhoffm\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eMAINT: Autolabel fix (maybe) \u003ccode\u003e[#1579](https://github.com/sphinx-gallery/sphinx-gallery/issues/1579) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1579\u0026gt;\u003c/code\u003e__ (\u003ccode\u003elarsoner \u0026lt;https://github.com/larsoner\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eMNT: Extract character length calculation from _format_for_writing \u003ccode\u003e[#1578](https://github.com/sphinx-gallery/sphinx-gallery/issues/1578) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1578\u0026gt;\u003c/code\u003e__ (\u003ccode\u003etimhoffm \u0026lt;https://github.com/timhoffm\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eMNT: Refactor costs to an explicit data class ExampleCost \u003ccode\u003e[#1577](https://github.com/sphinx-gallery/sphinx-gallery/issues/1577) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1577\u0026gt;\u003c/code\u003e__ (\u003ccode\u003etimhoffm \u0026lt;https://github.com/timhoffm\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eMNT: Add type annotations to gen_gallery.py \u003ccode\u003e[#1575](https://github.com/sphinx-gallery/sphinx-gallery/issues/1575) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1575\u0026gt;\u003c/code\u003e__ (\u003ccode\u003etimhoffm \u0026lt;https://github.com/timhoffm\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate \u003ccode\u003e[#1574](https://github.com/sphinx-gallery/sphinx-gallery/issues/1574) \u0026lt;https://github.com/sphinx-gallery/sphinx-gallery/pull/1574\u0026gt;\u003c/code\u003e__ (\u003ccode\u003epre-commit-ci[bot] \u0026lt;https://github.com/apps/pre-commit-ci\u0026gt;\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/sphinx-gallery/sphinx-gallery/commit/eb1adbd18712e463e5d58ae0aac370492bff2366\"\u003e\u003ccode\u003eeb1adbd\u003c/code\u003e\u003c/a\u003e MNT Release 0.21 (\u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/issues/1603\"\u003e#1603\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-gallery/sphinx-gallery/commit/fd6dd59ddbc549405e364423cc0dc226ba2e5824\"\u003e\u003ccode\u003efd6dd59\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/issues/1602\"\u003e#1602\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-gallery/sphinx-gallery/commit/0ca9e4f5e648d4e7ecf1ccf96e6a35fa2505726e\"\u003e\u003ccode\u003e0ca9e4f\u003c/code\u003e\u003c/a\u003e TST: Use tmp_path fixture instead of tempfile (\u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/issues/1601\"\u003e#1601\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-gallery/sphinx-gallery/commit/ddee9abca662107db763fa222414d8ff08ef64ff\"\u003e\u003ccode\u003eddee9ab\u003c/code\u003e\u003c/a\u003e ENH: Accept Paths in split_code_and_text_blocks (\u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/issues/1598\"\u003e#1598\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-gallery/sphinx-gallery/commit/f651486ce3008d7a2ea5ff14c3576c38afddf143\"\u003e\u003ccode\u003ef651486\u003c/code\u003e\u003c/a\u003e Re-enable Sphinx dev CI (\u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/issues/1599\"\u003e#1599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-gallery/sphinx-gallery/commit/690479dafb7abd742b6af46fcd205193b3c720d9\"\u003e\u003ccode\u003e690479d\u003c/code\u003e\u003c/a\u003e TYP: Fix typing for back references (\u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/issues/1597\"\u003e#1597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-gallery/sphinx-gallery/commit/af56c30e027d8d6e24a9cbfc7b38385196339eb1\"\u003e\u003ccode\u003eaf56c30\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/issues/1596\"\u003e#1596\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-gallery/sphinx-gallery/commit/a37d9d00892fbe07e26ea75049366cfb47067b54\"\u003e\u003ccode\u003ea37d9d0\u003c/code\u003e\u003c/a\u003e TST Amend \u003ccode\u003eadd_rst\u003c/code\u003e to \u003ccode\u003eadd_file\u003c/code\u003e and make flexible (\u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/issues/1595\"\u003e#1595\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-gallery/sphinx-gallery/commit/deb9a0498f332f9b4dd80413a0b57403734b081b\"\u003e\u003ccode\u003edeb9a04\u003c/code\u003e\u003c/a\u003e TST: Prefer Path over os.path in all test code (\u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/issues/1593\"\u003e#1593\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-gallery/sphinx-gallery/commit/919cf069a1d9dc55989ea546b16694979ee1d528\"\u003e\u003ccode\u003e919cf06\u003c/code\u003e\u003c/a\u003e Switch from codecs.open to plain open (\u003ca href=\"https://redirect.github.com/sphinx-gallery/sphinx-gallery/issues/1594\"\u003e#1594\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sphinx-gallery/sphinx-gallery/compare/v0.20.0...v0.21.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `matplotlib` from 3.10.8 to 3.10.9\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/matplotlib/matplotlib/releases\"\u003ematplotlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.10.9\u003c/h2\u003e\n\u003cp\u003eThis is a micro release of the v3.10.x series.\nHighlights of this release include:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVarious minor bug and doc fixes\u003c/li\u003e\n\u003cli\u003eSecurity hardening validation of cyclers - Removing eval usage\u003c/li\u003e\n\u003cli\u003eSecurity hardening in Latex and PS calls - Removing shell escapes\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/dd8d78b8dce60b6c8db86132892577a0b9dbe469\"\u003e\u003ccode\u003edd8d78b\u003c/code\u003e\u003c/a\u003e REL: v3.10.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/2fb18915bcfe69a188832c776fe18d88337de9bc\"\u003e\u003ccode\u003e2fb1891\u003c/code\u003e\u003c/a\u003e REL: Release prep v3.10.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/d0e923abfa016c04901fe4e315b9d215949f6fc5\"\u003e\u003ccode\u003ed0e923a\u003c/code\u003e\u003c/a\u003e Merge branch 'v3.10.8-doc' into v3.10.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/163793248a5fc9f23a560e45551c44351a8bd716\"\u003e\u003ccode\u003e1637932\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31558\"\u003e#31558\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-31556-on-v...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/a83faacb0dbe7edd1bae38e1e715b77b6aaebb84\"\u003e\u003ccode\u003ea83faac\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31556\"\u003e#31556\u003c/a\u003e: FIX: Inverted PyErr_Occurred check in enum type caster (_...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/a4f57ab0623f9d26be29e0a3b0de904667c7eeb7\"\u003e\u003ccode\u003ea4f57ab\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31545\"\u003e#31545\u003c/a\u003e from ksunden/backport-of-pr-31282-on-v3.10.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/063288d0cc912aa2af5cc1b7e7ca3d228d9f8976\"\u003e\u003ccode\u003e063288d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31544\"\u003e#31544\u003c/a\u003e from ksunden/backport-of-pr-31248-on-v3.10.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/b2ed1969191a03ec8927f96573664474662ab4c1\"\u003e\u003ccode\u003eb2ed196\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31248\"\u003e#31248\u003c/a\u003e: SEC: Remove eval() from validate_cycler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/acc60241a70b920eaf04fce41a8cf0a77010fb7d\"\u003e\u003ccode\u003eacc6024\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31282\"\u003e#31282\u003c/a\u003e from scottshambaugh/tex_no_shell\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/e3fb54163b1ce9dbc1a9e8e0973289dc14e366c2\"\u003e\u003ccode\u003ee3fb541\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31078\"\u003e#31078\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-31075-on-v...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/matplotlib/matplotlib/compare/v3.10.8...v3.10.9\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `build` from 1.4.3 to 1.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/releases\"\u003ebuild's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: try to improve release docs by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1051\"\u003epypa/build#1051\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: drop 3.9, require 3.10+ by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1036\"\u003epypa/build#1036\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: tox toml by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1033\"\u003epypa/build#1033\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: api should not ignore installed, only CLI by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1056\"\u003epypa/build#1056\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.4...1.5.0\"\u003ehttps://github.com/pypa/build/compare/1.4.4...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.4.4\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(release): generate consistent CHANGELOG heading levels by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1032\"\u003epypa/build#1032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: move source links by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1034\"\u003epypa/build#1034\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erevert: drop PEP 660 change by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1039\"\u003epypa/build#1039\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: ignore installed when running pip by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1040\"\u003epypa/build#1040\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: revert part of \u003ca href=\"https://redirect.github.com/pypa/build/issues/973\"\u003e#973\u003c/a\u003e by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1044\"\u003epypa/build#1044\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: report coverage failure lines by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1046\"\u003epypa/build#1046\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: fix issue with uv run by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1048\"\u003epypa/build#1048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: reorganize testing docs for copy/paste by \u003ca href=\"https://github.com/abitrolly\"\u003e\u003ccode\u003e@​abitrolly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1043\"\u003epypa/build#1043\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: keep environment from leaking in Python 3.15 by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1049\"\u003epypa/build#1049\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix issue with changelog generation by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1050\"\u003epypa/build#1050\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.3...1.4.4\"\u003ehttps://github.com/pypa/build/compare/1.4.3...1.4.4\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e####################\n1.5.0 (2026-04-30)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.9 support - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1036\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003e--ignore-installed\u003c/code\u003e opt-in from the API via \u003ccode\u003efresh=True\u003c/code\u003e - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1056\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1033\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.4 (2026-04-22)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eFix release pipeline generating \u003ccode\u003eCHANGELOG.rst\u003c/code\u003e entries with inconsistent heading levels, which broke \u003ccode\u003esphinx -W\u003c/code\u003e\nand pinned Read the Docs \u003ccode\u003estable\u003c/code\u003e at 1.4.0 - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e1031\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRevert :pr:\u003ccode\u003e1039\u003c/code\u003e from build 1.4.3, no longer check direct_url (for now) - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1039\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--ignore-installed\u003c/code\u003e to pip install command to prevent issues with packages already present in the isolated\nbuild environment - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1037\u003c/code\u003e) (:issue:\u003ccode\u003e1040\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePartial revert of :pr:\u003ccode\u003e973\u003c/code\u003e, keeping log messages in one entry, multiple lines. (:issue:\u003ccode\u003e1044\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1048\u003c/code\u003e, :issue:\u003ccode\u003e1049\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.3 (2026-04-10)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/615d04cfc52ac3c1592a463f0afe484fee1cc368\"\u003e\u003ccode\u003e615d04c\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/776f702f84787525df62a5473dd13d4e2f45b977\"\u003e\u003ccode\u003e776f702\u003c/code\u003e\u003c/a\u003e fix: api should not ignore installed, only CLI (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/42da4c4b483563819fabdb8ecf2f6df53ed82123\"\u003e\u003ccode\u003e42da4c4\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1055\"\u003e#1055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b445cd2e736db5f80cde7d952d620a73cc26bf9d\"\u003e\u003ccode\u003eb445cd2\u003c/code\u003e\u003c/a\u003e chore: tox toml (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/c44c143876042ac6e1212a31684a3adca19beda4\"\u003e\u003ccode\u003ec44c143\u003c/code\u003e\u003c/a\u003e feat: drop 3.9, require 3.10+ (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/a9bb4560d213069b11c8068159f1de060abec5b7\"\u003e\u003ccode\u003ea9bb456\u003c/code\u003e\u003c/a\u003e build(deps): bump astral-sh/setup-uv from 8.0.0 to 8.1.0 in the actions group...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/cb3351155ce99902580022acb81dc0adb8124d53\"\u003e\u003ccode\u003ecb33511\u003c/code\u003e\u003c/a\u003e ci: try to improve release docs (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1051\"\u003e#1051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/70666a296c2e5bb7451f5a04eef259f6f943d0de\"\u003e\u003ccode\u003e70666a2\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/653d86586dea8b4e020086a276a15a27ac7bd25d\"\u003e\u003ccode\u003e653d865\u003c/code\u003e\u003c/a\u003e docs: fix issue with changelog generation (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1050\"\u003e#1050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/373b9ee171e2f16353365b1a9a02bc408b96ca73\"\u003e\u003ccode\u003e373b9ee\u003c/code\u003e\u003c/a\u003e tests: keep environment from leaking in Python 3.15 (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1049\"\u003e#1049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.4.3...1.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/ansys/pyconceptev/pull/336","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ansys%2Fpyconceptev/issues/336","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/336/packages"}},{"old_version":"1.4.4","new_version":"1.5.0","update_type":"minor","path":null,"pr_created_at":"2026-05-11T22:36:44.000Z","version_change":"1.4.4 → 1.5.0","issue":{"uuid":"4424780976","node_id":"PR_kwDOK8S49c7acy-_","number":91,"state":"open","title":":arrow_up: Bump the all group across 1 directory with 11 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-11T22:36:44.000Z","updated_at":"2026-05-11T22:38:12.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":":arrow_up: Bump","group_name":"all","update_count":11,"packages":[{"name":"mypy","old_version":"1.20.2","new_version":"2.1.0","repository_url":"https://github.com/python/mypy"},{"name":"backrefs","old_version":"6.2","new_version":"7.0","repository_url":"https://github.com/facelessuser/backrefs"},{"name":"build","old_version":"1.4.4","new_version":"1.5.0","repository_url":"https://github.com/pypa/build"},{"name":"coverage","old_version":"7.13.5","new_version":"7.14.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cryptography","old_version":"47.0.0","new_version":"48.0.0","repository_url":"https://github.com/pyca/cryptography"},{"name":"idna","old_version":"3.13","new_version":"3.14","repository_url":"https://github.com/kjd/idna"},{"name":"requests","old_version":"2.33.1","new_version":"2.34.0","repository_url":"https://github.com/psf/requests"},{"name":"tomlkit","old_version":"0.14.0","new_version":"0.15.0","repository_url":"https://github.com/python-poetry/tomlkit"},{"name":"trove-classifiers","old_version":"2026.1.14.14","new_version":"2026.5.7.17","repository_url":"https://github.com/pypa/trove-classifiers"},{"name":"urllib3","old_version":"2.6.3","new_version":"2.7.0","repository_url":"https://github.com/urllib3/urllib3"}],"path":null,"ecosystem":"pip"},"body":"Bumps the all group with 10 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [mypy](https://github.com/python/mypy) | `1.20.2` | `2.1.0` |\n| [backrefs](https://github.com/facelessuser/backrefs) | `6.2` | `7.0` |\n| [build](https://github.com/pypa/build) | `1.4.4` | `1.5.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.5` | `7.14.0` |\n| [cryptography](https://github.com/pyca/cryptography) | `47.0.0` | `48.0.0` |\n| [idna](https://github.com/kjd/idna) | `3.13` | `3.14` |\n| [requests](https://github.com/psf/requests) | `2.33.1` | `2.34.0` |\n| [tomlkit](https://github.com/python-poetry/tomlkit) | `0.14.0` | `0.15.0` |\n| [trove-classifiers](https://github.com/pypa/trove-classifiers) | `2026.1.14.14` | `2026.5.7.17` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.6.3` | `2.7.0` |\n\n\nUpdates `mypy` from 1.20.2 to 2.1.0\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\u003ch1\u003eMypy Release Notes\u003c/h1\u003e\n\u003ch2\u003eNext Release\u003c/h2\u003e\n\u003ch2\u003eMypy 2.1\u003c/h2\u003e\n\u003cp\u003eWe’ve just uploaded mypy 2.1.0 to the Python Package Index (\u003ca href=\"https://pypi.org/project/mypy/\"\u003ePyPI\u003c/a\u003e).\nMypy is a static type checker for Python. This release includes new features, performance\nimprovements and bug fixes. You can install it as follows:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install -U mypy\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eYou can read the full documentation for this release on \u003ca href=\"http://mypy.readthedocs.io\"\u003eRead the Docs\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003elibrt.vecs: Fast Growable Array Type for Mypyc\u003c/h3\u003e\n\u003cp\u003eThe new \u003ccode\u003elibrt.vecs\u003c/code\u003e module provides an efficient growable array type \u003ccode\u003evec\u003c/code\u003e that is\noptimized for mypyc use. It provides fast, packed arrays with integer and floating point\nvalue types, which can be \u003cstrong\u003eseveral times faster\u003c/strong\u003e than \u003ccode\u003elist\u003c/code\u003e, and tens of times faster\nthan \u003ccode\u003earray.array\u003c/code\u003e in code compiled using mypyc. It also supports nested \u003ccode\u003evec\u003c/code\u003e objects and\nnon-value-type items, such as \u003ccode\u003evec[vec[str]]\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eRefer to the \u003ca href=\"https://mypyc.readthedocs.io/en/latest/librt_vecs.html\"\u003edocumentation\u003c/a\u003e for\nthe details.\u003c/p\u003e\n\u003cp\u003eContributed by Jukka Lehtosalo.\u003c/p\u003e\n\u003ch3\u003elibrt.random: Fast Pseudo-Random Number Generation\u003c/h3\u003e\n\u003cp\u003eThe new \u003ccode\u003elibrt.random\u003c/code\u003e module provides fast pseudo-random number generation that is\noptimized for code compiled using mypyc. It can be 3x to 10x faster than the stdlib\n\u003ccode\u003erandom\u003c/code\u003e module in compiled code.\u003c/p\u003e\n\u003cp\u003eRefer to the \u003ca href=\"https://mypyc.readthedocs.io/en/latest/librt_random.html\"\u003edocumentation\u003c/a\u003e for\nthe details.\u003c/p\u003e\n\u003cp\u003eContributed by Jukka Lehtosalo (PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21433\"\u003e21433\u003c/a\u003e).\u003c/p\u003e\n\u003ch3\u003eMypyc Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMake compilation order with multiple files consistent (Piotr Sawicki, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21419\"\u003e21419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on accessing \u003ccode\u003eStopAsyncIteration\u003c/code\u003e (Piotr Sawicki, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21406\"\u003e21406\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix incremental compilation with \u003ccode\u003eseparate\u003c/code\u003e flag (Vaggelis Danias, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21299\"\u003e21299\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes to Crashes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix crash on partial type with \u003ccode\u003e--allow-redefinition\u003c/code\u003e and \u003ccode\u003eglobal\u003c/code\u003e declaration (Jukka Lehtosalo, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21428\"\u003e21428\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix broken awaitable generator patching (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21435\"\u003e21435\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanges to Messages\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/python/mypy/commit/c1c336d7e34eb313080c79b156518c58d27c7234\"\u003e\u003ccode\u003ec1c336d\u003c/code\u003e\u003c/a\u003e Remove +dev from version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/74df14b7cbf08140236aa45bbb7f42219b0b1df7\"\u003e\u003ccode\u003e74df14b\u003c/code\u003e\u003c/a\u003e Add changelog for mypy 2.1 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21464\"\u003e#21464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/022d9bc96f86c40f338a5cf150f1806cc8f300ff\"\u003e\u003ccode\u003e022d9bc\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;TypeForm: Enable by default (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21262\"\u003e#21262\u003c/a\u003e)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/8826288214f1cb31496e610667481221e025359c\"\u003e\u003ccode\u003e8826288\u003c/code\u003e\u003c/a\u003e [mypyc] Document librt.random (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21463\"\u003e#21463\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/3f4067b699dbe52d08e42ef3b3ebfdebdc06bd96\"\u003e\u003ccode\u003e3f4067b\u003c/code\u003e\u003c/a\u003e Bump librt version to 0.11.0 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21458\"\u003e#21458\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/2b1eb58a250c5f1eb4ef5fb1f312ff528c5a1d4e\"\u003e\u003ccode\u003e2b1eb58\u003c/code\u003e\u003c/a\u003e [mypyc] Enable incremental self-compilation (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21369\"\u003e#21369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/8152f4af3f6c03beaf2660026240f0fdce7feecc\"\u003e\u003ccode\u003e8152f4a\u003c/code\u003e\u003c/a\u003e Respect file config comments for stale modules (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21444\"\u003e#21444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/116d60bdd3fdfe8d97c6afe99370910db56f1b92\"\u003e\u003ccode\u003e116d60b\u003c/code\u003e\u003c/a\u003e Fix nondeterminism from nonassociativity of overload joins (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21455\"\u003e#21455\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/6c4af8e42110cea3f84bc02add2ca7b89c268210\"\u003e\u003ccode\u003e6c4af8e\u003c/code\u003e\u003c/a\u003e Fix function call message change for small number of args (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21432\"\u003e#21432\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/4b8fdcaf24032592510e8f15421fb32d82a71800\"\u003e\u003ccode\u003e4b8fdca\u003c/code\u003e\u003c/a\u003e [mypyc] Add librt.random module (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21433\"\u003e#21433\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.20.2...v2.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `backrefs` from 6.2 to 7.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facelessuser/backrefs/releases\"\u003ebackrefs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eBREAK\u003c/strong\u003e: Remove deprecated \u003ccode\u003e\\e\u003c/code\u003e and \u003ccode\u003e\\h\u003c/code\u003e support.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Drop Python 3.9 support.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNEW\u003c/strong\u003e: Lazy load Unicode tables as required.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Fix bad name for value for Joining Group, which was previously \u003ccode\u003enon_joining\u003c/code\u003e, but should have been\n\u003ccode\u003eno_joining_group\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFIX\u003c/strong\u003e: Update Unicode script to handle unexpected changes in alias of non-explicit value names.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/02197c06bf41a4a05d890061d94739d8d705fe9a\"\u003e\u003ccode\u003e02197c0\u003c/code\u003e\u003c/a\u003e Lazy load tables as needed (\u003ca href=\"https://redirect.github.com/facelessuser/backrefs/issues/201\"\u003e#201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/0a687333ac915dbbc6d524976fcd91c87d1dfba9\"\u003e\u003ccode\u003e0a68733\u003c/code\u003e\u003c/a\u003e remove deprecated support for \\e and \\h (\u003ca href=\"https://redirect.github.com/facelessuser/backrefs/issues/200\"\u003e#200\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/bfcafc7104a02983efa066e0d2f9763585e27b6a\"\u003e\u003ccode\u003ebfcafc7\u003c/code\u003e\u003c/a\u003e Drop Python 3.9 support (\u003ca href=\"https://redirect.github.com/facelessuser/backrefs/issues/199\"\u003e#199\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facelessuser/backrefs/commit/7780144ca340e9c0332aa9f5e54bcec114b1a8cd\"\u003e\u003ccode\u003e7780144\u003c/code\u003e\u003c/a\u003e Fix Unicode property generator script in relation to property values (\u003ca href=\"https://redirect.github.com/facelessuser/backrefs/issues/197\"\u003e#197\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/facelessuser/backrefs/compare/6.2...7.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `build` from 1.4.4 to 1.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/releases\"\u003ebuild's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: try to improve release docs by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1051\"\u003epypa/build#1051\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: drop 3.9, require 3.10+ by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1036\"\u003epypa/build#1036\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: tox toml by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1033\"\u003epypa/build#1033\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: api should not ignore installed, only CLI by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1056\"\u003epypa/build#1056\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.4...1.5.0\"\u003ehttps://github.com/pypa/build/compare/1.4.4...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e####################\n1.5.0 (2026-04-30)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.9 support - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1036\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003e--ignore-installed\u003c/code\u003e opt-in from the API via \u003ccode\u003efresh=True\u003c/code\u003e - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1056\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1033\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.4 (2026-04-22)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eFix release pipeline generating \u003ccode\u003eCHANGELOG.rst\u003c/code\u003e entries with inconsistent heading levels, which broke \u003ccode\u003esphinx -W\u003c/code\u003e\nand pinned Read the Docs \u003ccode\u003estable\u003c/code\u003e at 1.4.0 - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e1031\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRevert :pr:\u003ccode\u003e1039\u003c/code\u003e from build 1.4.3, no longer check direct_url (for now) - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1039\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--ignore-installed\u003c/code\u003e to pip install command to prevent issues with packages already present in the isolated\nbuild environment - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1037\u003c/code\u003e) (:issue:\u003ccode\u003e1040\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePartial revert of :pr:\u003ccode\u003e973\u003c/code\u003e, keeping log messages in one entry, multiple lines. (:issue:\u003ccode\u003e1044\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1048\u003c/code\u003e, :issue:\u003ccode\u003e1049\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.3 (2026-04-10)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/615d04cfc52ac3c1592a463f0afe484fee1cc368\"\u003e\u003ccode\u003e615d04c\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/776f702f84787525df62a5473dd13d4e2f45b977\"\u003e\u003ccode\u003e776f702\u003c/code\u003e\u003c/a\u003e fix: api should not ignore installed, only CLI (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/42da4c4b483563819fabdb8ecf2f6df53ed82123\"\u003e\u003ccode\u003e42da4c4\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1055\"\u003e#1055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b445cd2e736db5f80cde7d952d620a73cc26bf9d\"\u003e\u003ccode\u003eb445cd2\u003c/code\u003e\u003c/a\u003e chore: tox toml (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/c44c143876042ac6e1212a31684a3adca19beda4\"\u003e\u003ccode\u003ec44c143\u003c/code\u003e\u003c/a\u003e feat: drop 3.9, require 3.10+ (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/a9bb4560d213069b11c8068159f1de060abec5b7\"\u003e\u003ccode\u003ea9bb456\u003c/code\u003e\u003c/a\u003e build(deps): bump astral-sh/setup-uv from 8.0.0 to 8.1.0 in the actions group...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/cb3351155ce99902580022acb81dc0adb8124d53\"\u003e\u003ccode\u003ecb33511\u003c/code\u003e\u003c/a\u003e ci: try to improve release docs (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1051\"\u003e#1051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pypa/build/compare/1.4.4...1.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.13.5 to 7.14.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst\"\u003ecoverage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.14.0 — 2026-05-10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFeature: now when running one of the reporting commands, if there are\nparallel data files that need combining, they will be implicitly combined\nbefore creating the report. There is no option to avoid the combination; let\nus know if you have a use case that requires it.  Thanks, \u003ccode\u003eTim Hatch \u0026lt;pull 2162_\u0026gt;\u003c/code\u003e\u003cem\u003e. Closes \u003ccode\u003eissue 1781\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the output from \u003ccode\u003ecombine\u003c/code\u003e was too verbose, listing each file\nconsidered. Now it shows a single line with the counts of files combined,\nfiles skipped, and files with errors. The \u003ccode\u003e-q\u003c/code\u003e flag suppresses this line.\nThe old detailed lines are available with the new \u003ccode\u003e--debug=combine\u003c/code\u003e option.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: running a Python file through a symlink now sets the sys.path correctly,\nmatching regular Python behavior. Fixes \u003ccode\u003eissue 2157\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003eCollector.flush_data\u003c/code\u003e could fail with \u0026quot;RuntimeError: Set changed\nsize during iteration\u0026quot; when a tracer in another thread added a line to the\nper-file set that \u003ccode\u003eadd_lines\u003c/code\u003e (or \u003ccode\u003eadd_arcs\u003c/code\u003e) was iterating. The values\npassed to \u003ccode\u003eCoverageData\u003c/code\u003e are now snapshotted via \u003ccode\u003edict.copy()\u003c/code\u003e and\n\u003ccode\u003eset.copy()\u003c/code\u003e, which are atomic under the GIL. Thanks, \u003ccode\u003eAlex Vandiver \u0026lt;pull 2165_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the soft keyword \u003ccode\u003elazy\u003c/code\u003e is now bolded in HTML reports.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWe are no longer testing eventlet support. Eventlet started issuing stern\ndeprecation warnings that break our tests. Our support code is still there.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1781: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1781\"\u003ecoveragepy/coveragepy#1781\u003c/a\u003e\n.. _issue 2157: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2157\"\u003ecoveragepy/coveragepy#2157\u003c/a\u003e\n.. _pull 2162: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2162\"\u003ecoveragepy/coveragepy#2162\u003c/a\u003e\n.. _pull 2165: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2165\"\u003ecoveragepy/coveragepy#2165\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-13-5:\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/646351b60429f1b5760af6c1b97b28483244a955\"\u003e\u003ccode\u003e646351b\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/39cd015505c8b04369c5b06e34fc22449a697370\"\u003e\u003ccode\u003e39cd015\u003c/code\u003e\u003c/a\u003e docs: prep for 7.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/649e8aa34af7d80c386ae82e8a3a6c9a3acb0dab\"\u003e\u003ccode\u003e649e8aa\u003c/code\u003e\u003c/a\u003e docs: thanks Alex Vandiver for \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2165\"\u003e#2165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/8cd392e3b5c4bc15d534aaec0c21714f9f518469\"\u003e\u003ccode\u003e8cd392e\u003c/code\u003e\u003c/a\u003e fix: snapshot data in Collector.flush_data to avoid threading race (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2165\"\u003e#2165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c48e0edc2ebe44621b0053176e90f77b0c79bec1\"\u003e\u003ccode\u003ec48e0ed\u003c/code\u003e\u003c/a\u003e fix: less output for combining\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c2a3a284078556c911e0d9b6c6af1b7082a363ea\"\u003e\u003ccode\u003ec2a3a28\u003c/code\u003e\u003c/a\u003e docs: explain the change from \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2162\"\u003e#2162\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/1cd47aa6ac1da4e150da44055295d4e4f3a014e8\"\u003e\u003ccode\u003e1cd47aa\u003c/code\u003e\u003c/a\u003e fix: implicit combine-during-report now removes the combined data files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/2d99fd7696e0bccec8037479a4e45c1ecccb8058\"\u003e\u003ccode\u003e2d99fd7\u003c/code\u003e\u003c/a\u003e feat: automatically combine coverage in report, thanks Tim Hatch (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2162\"\u003e#2162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/9fbdcdfee1c122fac43f1bf9a5e2d1f4d835f21c\"\u003e\u003ccode\u003e9fbdcdf\u003c/code\u003e\u003c/a\u003e fix: lazy soft keywords are bolded\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/5de7d0267b9466d59995aaae1a7e707c8c6f66e7\"\u003e\u003ccode\u003e5de7d02\u003c/code\u003e\u003c/a\u003e build: oops, misplaced quote\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.13.5...7.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cryptography` from 47.0.0 to 48.0.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst\"\u003ecryptography's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e48.0.0 - 2026-05-04\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* **BACKWARDS INCOMPATIBLE:** Support for Python 3.8 has been removed.\n  ``cryptography`` now requires Python 3.9 or later.\n* **BACKWARDS INCOMPATIBLE:** Loading an X.509 CRL whose inner\n  ``TBSCertList.signature`` algorithm does not match the outer\n  ``signatureAlgorithm`` now raises ``ValueError``. Previously, such CRLs\n  were parsed successfully and only rejected during signature validation.\n* Added support for :doc:`/hazmat/primitives/asymmetric/mlkem` and\n  :doc:`/hazmat/primitives/asymmetric/mldsa` when using OpenSSL 3.5.0 or\n  later, in addition to the existing AWS-LC and BoringSSL support. This means\n  post-quantum algorithms are now available to users of our wheels.\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNote:\u003c/strong\u003e Going forward, we do not guarantee that all functionality\u003cbr /\u003e\nin \u003ccode\u003ecryptography\u003c/code\u003e will be available when building against\u003cbr /\u003e\nOpenSSL. See :doc:\u003ccode\u003e/statements/state-of-openssl\u003c/code\u003e for more information.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v47-0-0:\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\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/pyca/cryptography/commit/8e03e30e3aae01632a697e903e3593c924f0139d\"\u003e\u003ccode\u003e8e03e30\u003c/code\u003e\u003c/a\u003e bump for 48.0.0 release (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14796\"\u003e#14796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/295e0d254ef31ab864730aa41312ec355416ee71\"\u003e\u003ccode\u003e295e0d2\u003c/code\u003e\u003c/a\u003e Add AGENTS.md with CLAUDE.md symlink (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14794\"\u003e#14794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/104a2de19e268a433e6da92be9cb872dcf0003c8\"\u003e\u003ccode\u003e104a2de\u003c/code\u003e\u003c/a\u003e Bump BoringSSL, OpenSSL, AWS-LC in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14793\"\u003e#14793\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/67ec1e51988195e17993d2edef5258b27509b926\"\u003e\u003ccode\u003e67ec1e5\u003c/code\u003e\u003c/a\u003e call check_length early on AesSiv::encrypt (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14792\"\u003e#14792\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/b2da57a0d9e4bfd2b95364299091a18f74127b26\"\u003e\u003ccode\u003eb2da57a\u003c/code\u003e\u003c/a\u003e changelog for mldsa/mlkem for openssl (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14791\"\u003e#14791\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/3cf44adee25c368d4a136e072fa9f80465d91eb0\"\u003e\u003ccode\u003e3cf44ad\u003c/code\u003e\u003c/a\u003e ML-KEM OpenSSL support (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14781\"\u003e#14781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/2e31639666766f846fbab2c605879db0fa64fe83\"\u003e\u003ccode\u003e2e31639\u003c/code\u003e\u003c/a\u003e ML-DSA OpenSSL support (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14773\"\u003e#14773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/5affe5a286a986fdf512c4a5cb280d28a96c10e3\"\u003e\u003ccode\u003e5affe5a\u003c/code\u003e\u003c/a\u003e fix rust nightly clippy (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14790\"\u003e#14790\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/2e73ca448eaf64b6f0d4ffbb794cf96170cef5ec\"\u003e\u003ccode\u003e2e73ca4\u003c/code\u003e\u003c/a\u003e bump rust-openssl dep and update EcPoint::mul_generator to mul_generator2 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/1\"\u003e#1\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/82ebd3b9f49d49ad5fd8b4b1f1dd02487b6e1466\"\u003e\u003ccode\u003e82ebd3b\u003c/code\u003e\u003c/a\u003e Bump BoringSSL, OpenSSL, AWS-LC in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14785\"\u003e#14785\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/cryptography/compare/47.0.0...48.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `idna` from 3.13 to 3.14\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/blob/master/HISTORY.rst\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e3.14 (2026-05-10)\n+++++++++++++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved opportunity to process long inputs into quadratic\ntime by rejecting oversize inputs up-front. Closes a bypass\nof the CVE-2024-3651 mitigation. [GHSA-65pc-fj4g-8rjx]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Stan Ulbrych for reporting the issue.\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/kjd/idna/commit/37b6b7497aee4805f7a74a7d86206ac05be9669a\"\u003e\u003ccode\u003e37b6b74\u003c/code\u003e\u003c/a\u003e Release v3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/628fef84d3eda59321c21127e73dcd873db23ead\"\u003e\u003ccode\u003e628fef8\u003c/code\u003e\u003c/a\u003e Use valid_string_length() for early oversized-input check\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/1e26c7fd93c67995422af9d1f071f45ee6433fd0\"\u003e\u003ccode\u003e1e26c7f\u003c/code\u003e\u003c/a\u003e Tweak release wording\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/ab5668fb6eaf4254d91d6993c0b23e98e21202fb\"\u003e\u003ccode\u003eab5668f\u003c/code\u003e\u003c/a\u003e Pre-release 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/c0dda4501df5d91c3181ce6f962dc5de74e82cc1\"\u003e\u003ccode\u003ec0dda45\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/b7391f4c240bf2eae80eaed0a2ef7c2e0496af96\"\u003e\u003ccode\u003eb7391f4\u003c/code\u003e\u003c/a\u003e Add docstrings to package (\u003ca href=\"https://redirect.github.com/kjd/idna/issues/226\"\u003e#226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/0f4a28d88f8cce54269f0b6a42edf5e6a5424319\"\u003e\u003ccode\u003e0f4a28d\u003c/code\u003e\u003c/a\u003e Raise IDNAError on non-string input to encode/decode (\u003ca href=\"https://redirect.github.com/kjd/idna/issues/224\"\u003e#224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/7e6df7196e6396b5b84b9530eab8272b5ad51898\"\u003e\u003ccode\u003e7e6df71\u003c/code\u003e\u003c/a\u003e Address type issues found by \u003ccode\u003ety\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/kjd/idna/issues/225\"\u003e#225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/6ebfaab9ea718dce38a7c17ddafd7fb28b0468d4\"\u003e\u003ccode\u003e6ebfaab\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/221\"\u003e#221\u003c/a\u003e from kjd/release-3.13\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/kjd/idna/compare/v3.13...v3.14\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `librt` from 0.9.0 to 0.11.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mypyc/librt/commit/862679a0492f4433a286b2d53965ec2603623be1\"\u003e\u003ccode\u003e862679a\u003c/code\u003e\u003c/a\u003e Sync mypy and bump version to 0.11.0 (\u003ca href=\"https://redirect.github.com/mypyc/librt/issues/40\"\u003e#40\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mypyc/librt/commit/1d5e9b240ac073f10ef389e9e27a2f2647fcd653\"\u003e\u003ccode\u003e1d5e9b2\u003c/code\u003e\u003c/a\u003e Bump version to 0.10.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mypyc/librt/commit/963673e91ad7482aa46df25f7c68d4a5ced8a712\"\u003e\u003ccode\u003e963673e\u003c/code\u003e\u003c/a\u003e Sync mypy and add smoke tests (\u003ca href=\"https://redirect.github.com/mypyc/librt/issues/38\"\u003e#38\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/mypyc/librt/compare/v0.9.0...v0.11.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.33.1 to 2.34.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.34.0\u003c/h2\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. \u003cstrong\u003eWe believe types are comprehensive but if you find issues, please\nreport them to the \u003ca href=\"https://redirect.github.com/psf/requests/issues/7271\"\u003epinned tracking issue\u003c/a\u003e.\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be able to start testing prior to its release in October. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.14t. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResponse.history\u003c/code\u003e no longer contains a reference to itself, preventing\naccidental looping when traversing the history list. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7328\"\u003e#7328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer performs greedy matching on no_proxy domains. The\nproxy_bypass implementation has been updated with CPython's fix from\nbpo-39057. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer incorrectly strips duplicate leading slashes in\nURI paths. This should address user issues with specific presigned\nURLs. Note the full fix requires urllib3 2.7.0+. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7315\"\u003e#7315\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cjriches\"\u003e\u003ccode\u003e@​cjriches\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7365\"\u003epsf/requests#7365\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dsanader\"\u003e\u003ccode\u003e@​dsanader\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7376\"\u003epsf/requests#7376\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DimitriPapadopoulos\"\u003e\u003ccode\u003e@​DimitriPapadopoulos\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7393\"\u003epsf/requests#7393\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joshua-51\"\u003e\u003ccode\u003e@​joshua-51\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7416\"\u003epsf/requests#7416\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eggsort\"\u003e\u003ccode\u003e@​eggsort\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7421\"\u003epsf/requests#7421\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typhon8\"\u003e\u003ccode\u003e@​typhon8\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7315\"\u003epsf/requests#7315\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7425\"\u003epsf/requests#7425\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2340-2026-05-11\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2340-2026-05-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/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. We believe types are comprehensive but if you find issues, please\nreport them to the pinned tracking issue.\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be able to start testing prior to its release in October. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.14t. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResponse.history\u003c/code\u003e no longer contains a reference to itself, preventing\naccidental looping when traversing the history list. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7328\"\u003e#7328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer performs greedy matching on no_proxy domains. The\nproxy_bypass implementation has been updated with CPython's fix from\nbpo-39057. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer incorrectly strips duplicate leading slashes in\nURI paths. This should address user issues with specific presigned\nURLs. Note the full fix requires urllib3 2.7.0+. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7315\"\u003e#7315\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\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/0b401c76b6e80a4eecf3c690085b2553f6e261ca\"\u003e\u003ccode\u003e0b401c7\u003c/code\u003e\u003c/a\u003e v2.34.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/86b378d3f60f828daa13ca50aa82e287ff7b66b4\"\u003e\u003ccode\u003e86b378d\u003c/code\u003e\u003c/a\u003e Align Session.get parameters with requests.get (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7429\"\u003e#7429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/a4f9a5999bdb9bf2d6e7c8aa973b28cacb17134f\"\u003e\u003ccode\u003ea4f9a59\u003c/code\u003e\u003c/a\u003e Port bpo-39057 to Requests (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/3816cfa1abd42dca21b9e837f26c59b246016aaf\"\u003e\u003ccode\u003e3816cfa\u003c/code\u003e\u003c/a\u003e Parameterize SupportsItems to handle Mapping key invariance (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7426\"\u003e#7426\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b684dcb9bbf3aa557d1238e72062c4a29737dd1c\"\u003e\u003ccode\u003eb684dcb\u003c/code\u003e\u003c/a\u003e sessions: fix hooks type (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7425\"\u003e#7425\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/dc9dbdfb3434c6e58d48fd102f93e5342308817e\"\u003e\u003ccode\u003edc9dbdf\u003c/code\u003e\u003c/a\u003e Formalize 3.15 support (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/25340ebad09a38e0748aeb26232102022a03ec94\"\u003e\u003ccode\u003e25340eb\u003c/code\u003e\u003c/a\u003e Clear proxy env vars before every test run (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7423\"\u003e#7423\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/fd628095d7b9ddbf3e987d8a4bf0e6062768916f\"\u003e\u003ccode\u003efd62809\u003c/code\u003e\u003c/a\u003e Preserve leading slashes in request path_url (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7315\"\u003e#7315\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/e8d2c015eecda8273612dd4562425e00cd164ba5\"\u003e\u003ccode\u003ee8d2c01\u003c/code\u003e\u003c/a\u003e docs: Fix missing hook output in docs example (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7421\"\u003e#7421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/eb173bc819c72580deed2d54190d340cc769e529\"\u003e\u003ccode\u003eeb173bc\u003c/code\u003e\u003c/a\u003e Add 3.14t support to CI (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.33.1...v2.34.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tomlkit` from 0.14.0 to 0.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-poetry/tomlkit/releases\"\u003etomlkit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat(spec): update to toml spec v1.1 by \u003ca href=\"https://github.com/frostming\"\u003e\u003ccode\u003e@​frostming\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-poetry/tomlkit/pull/456\"\u003epython-poetry/tomlkit#456\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/python-poetry/tomlkit/pull/455\"\u003epython-poetry/tomlkit#455\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps-dev): bump virtualenv from 20.26.6 to 20.36.1 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/python-poetry/tomlkit/pull/454\"\u003epython-poetry/tomlkit#454\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/python-poetry/tomlkit/pull/458\"\u003epython-poetry/tomlkit#458\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump pygments from 2.18.0 to 2.20.0 in /docs 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/python-poetry/tomlkit/pull/464\"\u003epython-poetry/tomlkit#464\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps-dev): bump pygments from 2.17.2 to 2.20.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/python-poetry/tomlkit/pull/463\"\u003epython-poetry/tomlkit#463\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump requests from 2.32.4 to 2.33.0 in /docs 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/python-poetry/tomlkit/pull/462\"\u003epython-poetry/tomlkit#462\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/python-poetry/tomlkit/pull/461\"\u003epython-poetry/tomlkit#461\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eType annotations by \u003ca href=\"https://github.com/dimbleby\"\u003e\u003ccode\u003e@​dimbleby\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-poetry/tomlkit/pull/460\"\u003epython-poetry/tomlkit#460\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHonor sort_keys for parsed TOML documents by \u003ca href=\"https://github.com/ShipItAndPray\"\u003e\u003ccode\u003e@​ShipItAndPray\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-poetry/tomlkit/pull/471\"\u003epython-poetry/tomlkit#471\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/python-poetry/tomlkit/pull/469\"\u003epython-poetry/tomlkit#469\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: fix a parser hang by \u003ca href=\"https://github.com/dimbleby\"\u003e\u003ccode\u003e@​dimbleby\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-poetry/tomlkit/pull/470\"\u003epython-poetry/tomlkit#470\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/python-poetry/tomlkit/pull/472\"\u003epython-poetry/tomlkit#472\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: bump version to 0.15.0 and update changelog for release by \u003ca href=\"https://github.com/frostming\"\u003e\u003ccode\u003e@​frostming\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/python-poetry/tomlkit/pull/473\"\u003epython-poetry/tomlkit#473\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/dimbleby\"\u003e\u003ccode\u003e@​dimbleby\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-poetry/tomlkit/pull/460\"\u003epython-poetry/tomlkit#460\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ShipItAndPray\"\u003e\u003ccode\u003e@​ShipItAndPray\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/python-poetry/tomlkit/pull/471\"\u003epython-poetry/tomlkit#471\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-poetry/tomlkit/compare/0.14.0...0.15.0\"\u003ehttps://github.com/python-poetry/tomlkit/compare/0.14.0...0.15.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-poetry/tomlkit/blob/master/CHANGELOG.md\"\u003etomlkit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.15.0] - 2026-05-10\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate parser to support TOML spec v1.1.0. (\u003ca href=\"https://redirect.github.com/python-poetry/tomlkit/pull/456\"\u003e#456\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-poetry/tomlkit/commit/8694e4d3323df68eb325bf3d5ab7caa66f8c206a\"\u003e\u003ccode\u003e8694e4d\u003c/code\u003e\u003c/a\u003e chore: bump version to 0.15.0 and update changelog for release (\u003ca href=\"https://redirect.github.com/python-poetry/tomlkit/issues/473\"\u003e#473\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-poetry/tomlkit/commit/e636a5121260e811dba9fd1c33656021f6855490\"\u003e\u003ccode\u003ee636a51\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-poetry/tomlkit/issues/472\"\u003e#472\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-poetry/tomlkit/commit/96a4d22fdd07e25742009a6bcd8a2d23e9b5574a\"\u003e\u003ccode\u003e96a4d22\u003c/code\u003e\u003c/a\u003e fix: fix a parser hang (\u003ca href=\"https://redirect.github.com/python-poetry/tomlkit/issues/470\"\u003e#470\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-poetry/tomlkit/commit/843f79992139ec56266f52161b27a3eadd1f6a35\"\u003e\u003ccode\u003e843f799\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-poetry/tomlkit/issues/469\"\u003e#469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-poetry/tomlkit/commit/2c87eafe7c852d19c1b91a1c9bed4d47bd03816f\"\u003e\u003ccode\u003e2c87eaf\u003c/code\u003e\u003c/a\u003e Honor sort_keys for parsed TOML documents (\u003ca href=\"https://redirect.github.com/python-poetry/tomlkit/issues/471\"\u003e#471\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-poetry/tomlkit/commit/8e32f9cb7fcfbc45e893c34e0e9a590a26675fd6\"\u003e\u003ccode\u003e8e32f9c\u003c/code\u003e\u003c/a\u003e Type annotations (\u003ca href=\"https://redirect.github.com/python-poetry/tomlkit/issues/460\"\u003e#460\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-poetry/tomlkit/commit/df98af48778f865d270d2f53e816d3b0948c8927\"\u003e\u003ccode\u003edf98af4\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python-poetry/tomlkit/issues/461\"\u003e#461\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-poetry/tomlkit/commit/4bd97db2c8fda5cbffc01acc586e3328168bac36\"\u003e\u003ccode\u003e4bd97db\u003c/code\u003e\u003c/a\u003e chore(deps): bump requests from 2.32.4 to 2.33.0 in /docs (\u003ca href=\"https://redirect.github.com/python-poetry/tomlkit/issues/462\"\u003e#462\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-poetry/tomlkit/commit/b2d703032bf2e44e680b67f2897c3a7c67be55eb\"\u003e\u003ccode\u003eb2d7030\u003c/code\u003e\u003c/a\u003e chore(deps-dev): bump pygments from 2.17.2 to 2.20.0 (\u003ca href=\"https://redirect.github.com/python-poetry/tomlkit/issues/463\"\u003e#463\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-poetry/tomlkit/commit/87d98b1d0100c5bd39736eda4cd9cc3d8e24bf48\"\u003e\u003ccode\u003e87d98b1\u003c/code\u003e\u003c/a\u003e chore(deps): bump pygments from 2.18.0 to 2.20.0 in /docs (\u003ca href=\"https://redirect.github.com/python-poetry/tomlkit/issues/464\"\u003e#464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-poetry/tomlkit/compare/0.14.0...0.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `trove-classifiers` from 2026.1.14.14 to 2026.5.7.17\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/trove-classifiers/commit/a1105aa00670c8fc241e0bc2149a236b8be43b7a\"\u003e\u003ccode\u003ea1105aa\u003c/code\u003e\u003c/a\u003e Add Trove classifier for Python 3.16 (\u003ca href=\"https://redirect.github.com/pypa/trove-classifiers/issues/243\"\u003e#243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/trove-classifiers/commit/eca370658f6e81c8911567eab8209aaca2924493\"\u003e\u003ccode\u003eeca3706\u003c/code\u003e\u003c/a\u003e feat: add \u003ccode\u003elitestar\u003c/code\u003e classifier (\u003ca href=\"https://redirect.github.com/pypa/trove-classifiers/issues/148\"\u003e#148\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pypa/trove-classifiers/compare/2026.1.14.14...2026.5.7.17\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `urllib3` from 2.6.3 to 2.7.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/urllib3/urllib3/releases\"\u003eurllib3's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.7.0\u003c/h2\u003e\n\u003ch2\u003e🚀 urllib3 is fundraising for HTTP/2 support\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://sethmlarson.dev/urllib3-is-fundraising-for-http2-support\"\u003eurllib3 is raising ~$40,000 USD\u003c/a\u003e to release HTTP/2 support and ensure long-term sustainable maintenance of the project after a sharp decline in financial support. If your company or organization uses Python and would benefit from HTTP/2 support in Requests, pip, cloud SDKs, and thousands of other projects \u003ca href=\"https://opencollective.com/urllib3\"\u003eplease consider contributing financially\u003c/a\u003e to ensure HTTP/2 support is developed sustainably and maintained for the long-haul.\u003c/p\u003e\n\u003cp\u003eThank you for your support.\u003c/p\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cp\u003eAddressed high-severity security issues. Impact was limited to specific use cases detailed in the accompanying advisories; overall user exposure was estimated to be marginal.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eDecompression-bomb safeguards of the streaming API were bypassed:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eWhen \u003ccode\u003eHTTPResponse.drain_conn()\u003c/code\u003e was called after the response had been read and decompressed partially. (Reported by \u003ca href=\"https://github.com/Cycloctane\"\u003e\u003ccode\u003e@​Cycloctane\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDuring the second \u003ccode\u003eHTTPResponse.read(amt=N)\u003c/code\u003e or \u003ccode\u003eHTTPResponse.stream(amt=N)\u003c/code\u003e call when the response was decompressed using the official \u003ca href=\"https://pypi.org/project/brotli/\"\u003eBrotli\u003c/a\u003e library. (Reported by \u003ca href=\"https://github.com/kimkou2024\"\u003e\u003ccode\u003e@​kimkou2024\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eSee GHSA-mf9v-mfxr-j63j for details.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eHTTP pools created using \u003ccode\u003eProxyManager.connection_from_url\u003c/code\u003e did not strip sensitive headers specified in \u003ccode\u003eRetry.remove_headers_on_redirect\u003c/code\u003e when redirecting to a different host. (GHSA-qccp-gfcp-xxvc reported by \u003ca href=\"https://github.com/christos-spearbit\"\u003e\u003ccode\u003e@​christos-spearbit\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDeprecations and Removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUsed \u003ccode\u003eFutureWarning\u003c/code\u003e instead of \u003ccode\u003eDeprecationWarning\u003c/code\u003e for better visibility of existing deprecation notices. Rescheduled the removal of deprecated features to version 3.0. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3763\"\u003eurllib3/urllib3#3763\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoved support for end-of-life Python 3.9. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3720\"\u003eurllib3/urllib3#3720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemoved support for end-of-life PyPy3.10. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/4979\"\u003eurllib3/urllib3#4979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped the minimum supported pyOpenSSL version to 19.0.0. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3777\"\u003eurllib3/urllib3#3777\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a bug where \u003ccode\u003eHTTPResponse.read(amt=None)\u003c/code\u003e was ignoring decompressed data buffered from previous partial reads. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3636\"\u003eurllib3/urllib3#3636\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where \u003ccode\u003eHTTPResponse.read()\u003c/code\u003e could cache only part of the response after a partial read when \u003ccode\u003ecache_content=True\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/4967\"\u003eurllib3/urllib3#4967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eHTTPResponse.stream()\u003c/code\u003e and \u003ccode\u003eHTTPResponse.read_chunked()\u003c/code\u003e to handle \u003ccode\u003eamt=0\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3793\"\u003eurllib3/urllib3#3793\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003e_TYPE_BODY\u003c/code\u003e type alias to include missing \u003ccode\u003eIterable[str]\u003c/code\u003e, matching the documented and runtime behavior of chunked request bodies. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3798\"\u003eurllib3/urllib3#3798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eLocationParseError\u003c/code\u003e when paths resembling schemeless URIs were passed to \u003ccode\u003eHTTPConnectionPool.urlopen()\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3352\"\u003eurllib3/urllib3#3352\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eBaseHTTPResponse.readinto()\u003c/code\u003e type annotation to accept \u003ccode\u003ememoryview\u003c/code\u003e in addition to \u003ccode\u003ebytearray\u003c/code\u003e, matching the \u003ccode\u003eio.RawIOBase.readinto\u003c/code\u003e contract and enabling use with \u003ccode\u003eio.BufferedReader\u003c/code\u003e without type errors. (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/3764\"\u003eurllib3/urllib3#3764\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/urllib3/urllib3/blob/main/CHANGES.rst\"\u003eurllib3's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.7.0 (2026-05-07)\u003c/h1\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cp\u003eAddressed high-severity security issues.\nImpact was limited to specific use cases detailed in the accompanying\nadvisories; overall user exposure was estimated to be marginal.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eDecompression-bomb safeguards of the streaming API were bypassed:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eWhen \u003ccode\u003eHTTPResponse.drain_conn()\u003c/code\u003e was called after the response had been\nread and decompressed partially.\u003c/li\u003e\n\u003cli\u003eDuring the second \u003ccode\u003eHTTPResponse.read(amt=N)\u003c/code\u003e or\n\u003ccode\u003eHTTPResponse.stream(amt=N)\u003c/code\u003e call when the response was decompressed\nusing the official \u003ccode\u003eBrotli \u0026lt;https://pypi.org/project/brotli/\u0026gt;\u003c/code\u003e__ library.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eSee \u003ccode\u003eGHSA-mf9v-mfxr-j63j \u0026lt;https://github.com/urllib3/urllib3/security/advisories/GHSA-mf9v-mfxr-j63j\u0026gt;\u003c/code\u003e__\nfor details.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eHTTP pools created using \u003ccode\u003eProxyManager.connection_from_url\u003c/code\u003e did not strip\nsensitive headers specified in \u003ccode\u003eRetry.remove_headers_on_redirect\u003c/code\u003e when\nredirecting to a different host.\n(\u003ccode\u003eGHSA-qccp-gfcp-xxvc \u0026lt;https://github.com/urllib3/urllib3/security/advisories/GHSA-qccp-gfcp-xxvc\u0026gt;\u003c/code\u003e__)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDeprecations and Removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUsed \u003ccode\u003eFutureWarning\u003c/code\u003e instead of \u003ccode\u003eDeprecationWarning\u003c/code\u003e for better\nvisibility of existing deprecation notices. Rescheduled the removal of\ndeprecated features to version 3.0.\n(\u003ccode\u003e[#3763](https://github.com/urllib3/urllib3/issues/3763) \u0026lt;https://github.com/urllib3/urllib3/issues/3763\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eRemoved support for end-of-life Python 3.9.\n(\u003ccode\u003e[#3720](https://github.com/urllib3/urllib3/issues/3720) \u0026lt;https://github.com/urllib3/urllib3/issues/3720\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eRemoved support for end-of-life PyPy3.10.\n(\u003ccode\u003e[#4979](https://github.com/urllib3/urllib3/issues/4979) \u0026lt;https://github.com/urllib3/urllib3/issues/4979\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eBumped the minimum supported pyOpenSSL version to 19.0.0.\n(\u003ccode\u003e[#3777](https://github.com/urllib3/urllib3/issues/3777) \u0026lt;https://github.com/urllib3/urllib3/issues/3777\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a bug where \u003ccode\u003eHTTPResponse.read(amt=None)\u003c/code\u003e was ignoring decompressed\ndata buffered from previous partial reads.\n(\u003ccode\u003e[#3636](https://github.com/urllib3/urllib3/issues/3636) \u0026lt;https://github.com/urllib3/urllib3/issues/3636\u0026gt;\u003c/code\u003e__)\u003c/li\u003e\n\u003cli\u003eFixed a bug where \u003ccode\u003eHTTPResponse.read()\u003c/code\u003e could cache only part of the\nresponse after a partial read when \u003ccode\u003ecache_content=True\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/urllib3/urllib3/commit/9a950b92d999f906b6020bb2d1076ee56cddd5d2\"\u003e\u003ccode\u003e9a950b9\u003c/code\u003e\u003c/a\u003e Release 2.7.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/5ec0de499b9166ca71c65ab04f2a7e4eb0d66fcc\"\u003e\u003ccode\u003e5ec0de4\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/2bdcc44d1e163fb5cc48a8662425e35e15adfe6a\"\u003e\u003ccode\u003e2bdcc44\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/f45b0df09d8620ac6ed0491eb9362c8c87b7bc2c\"\u003e\u003ccode\u003ef45b0df\u003c/code\u003e\u003c/a\u003e Fix a misleading example for \u003ccode\u003eProxyManager\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/4970\"\u003e#4970\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/577193ca029872384f82c133449e0935f6d8a64b\"\u003e\u003ccode\u003e577193c\u003c/code\u003e\u003c/a\u003e Switch to nightly PyPy3.11 in CI for now (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/4984\"\u003e#4984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/e90af45bb006c3a452a3a21644a2681523f5c7fc\"\u003e\u003ccode\u003ee90af45\u003c/code\u003e\u003c/a\u003e Avoid infinite loop in \u003ccode\u003eHTTPResponse.read_chunked\u003c/code\u003e when \u003ccode\u003eamt=0\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/4974\"\u003e#4974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/67ed74fdaec6659a6534621ec8e3aaaa6f976210\"\u003e\u003ccode\u003e67ed74f\u003c/code\u003e\u003c/a\u003e Bump dev dependencies (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/4972\"\u003e#4972\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/3abd481097b54d87b574ac7ea593c3f40938a84d\"\u003e\u003ccode\u003e3abd481\u003c/code\u003e\u003c/a\u003e Upgrade mypy to version 1.20.2 (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/4978\"\u003e#4978\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/2b8725dfcac4f21d4d93cc0cc3a64a33af08f890\"\u003e\u003ccode\u003e2b8725d\u003c/code\u003e\u003c/a\u003e Drop support for EOL PyPy3.10 (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/4979\"\u003e#4979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urllib3/urllib3/commit/2944b2a0a6c573f5548a39cfd17196f98ee21b33\"\u003e\u003ccode\u003e2944b2a\u003c/code\u003e\u003c/a\u003e Upgrade \u003ccode\u003esetup-chrome\u003c/code\u003e and \u003ccode\u003esetup-firefox\u003c/code\u003e to fix warnings (\u003ca href=\"https://redirect.github.com/urllib3/urllib3/issues/4973\"\u003e#4973\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/urllib3/urllib3/compare/2.6.3...2.7.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/dribia/poetry-git-branch-plugin/pull/91","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/dribia%2Fpoetry-git-branch-plugin/issues/91","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/91/packages"}},{"old_version":"\u003c2,\u003e=1","new_version":"\u003e=1.5.0,\u003c2","update_type":null,"path":null,"pr_created_at":"2026-05-11T16:31:29.000Z","version_change":"\u003c2,\u003e=1 → \u003e=1.5.0,\u003c2","issue":{"uuid":"4422511484","node_id":"PR_kwDOSONHgM7aVZPf","number":23,"state":"closed","title":"chore(deps-dev): update build requirement from \u003c2,\u003e=1 to \u003e=1.5.0,\u003c2","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-05-11T22:00:43.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-11T16:31:29.000Z","updated_at":"2026-05-11T22:00:45.000Z","time_to_close":19754,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev): update","packages":[{"name":"build","old_version":"\u003c2,\u003e=1","new_version":"\u003e=1.5.0,\u003c2","repository_url":"https://github.com/pypa/build"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [build](https://github.com/pypa/build) 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/pypa/build/releases\"\u003ebuild's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: try to improve release docs by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1051\"\u003epypa/build#1051\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: drop 3.9, require 3.10+ by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1036\"\u003epypa/build#1036\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: tox toml by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1033\"\u003epypa/build#1033\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: api should not ignore installed, only CLI by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1056\"\u003epypa/build#1056\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.4...1.5.0\"\u003ehttps://github.com/pypa/build/compare/1.4.4...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e####################\n1.5.0 (2026-04-30)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.9 support - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1036\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003e--ignore-installed\u003c/code\u003e opt-in from the API via \u003ccode\u003efresh=True\u003c/code\u003e - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1056\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1033\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.4 (2026-04-22)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eFix release pipeline generating \u003ccode\u003eCHANGELOG.rst\u003c/code\u003e entries with inconsistent heading levels, which broke \u003ccode\u003esphinx -W\u003c/code\u003e\nand pinned Read the Docs \u003ccode\u003estable\u003c/code\u003e at 1.4.0 - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e1031\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRevert :pr:\u003ccode\u003e1039\u003c/code\u003e from build 1.4.3, no longer check direct_url (for now) - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1039\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--ignore-installed\u003c/code\u003e to pip install command to prevent issues with packages already present in the isolated\nbuild environment - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1037\u003c/code\u003e) (:issue:\u003ccode\u003e1040\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePartial revert of :pr:\u003ccode\u003e973\u003c/code\u003e, keeping log messages in one entry, multiple lines. (:issue:\u003ccode\u003e1044\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1048\u003c/code\u003e, :issue:\u003ccode\u003e1049\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.3 (2026-04-10)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/615d04cfc52ac3c1592a463f0afe484fee1cc368\"\u003e\u003ccode\u003e615d04c\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/776f702f84787525df62a5473dd13d4e2f45b977\"\u003e\u003ccode\u003e776f702\u003c/code\u003e\u003c/a\u003e fix: api should not ignore installed, only CLI (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/42da4c4b483563819fabdb8ecf2f6df53ed82123\"\u003e\u003ccode\u003e42da4c4\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1055\"\u003e#1055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b445cd2e736db5f80cde7d952d620a73cc26bf9d\"\u003e\u003ccode\u003eb445cd2\u003c/code\u003e\u003c/a\u003e chore: tox toml (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/c44c143876042ac6e1212a31684a3adca19beda4\"\u003e\u003ccode\u003ec44c143\u003c/code\u003e\u003c/a\u003e feat: drop 3.9, require 3.10+ (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/a9bb4560d213069b11c8068159f1de060abec5b7\"\u003e\u003ccode\u003ea9bb456\u003c/code\u003e\u003c/a\u003e build(deps): bump astral-sh/setup-uv from 8.0.0 to 8.1.0 in the actions group...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/cb3351155ce99902580022acb81dc0adb8124d53\"\u003e\u003ccode\u003ecb33511\u003c/code\u003e\u003c/a\u003e ci: try to improve release docs (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1051\"\u003e#1051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/70666a296c2e5bb7451f5a04eef259f6f943d0de\"\u003e\u003ccode\u003e70666a2\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/653d86586dea8b4e020086a276a15a27ac7bd25d\"\u003e\u003ccode\u003e653d865\u003c/code\u003e\u003c/a\u003e docs: fix issue with changelog generation (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1050\"\u003e#1050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/373b9ee171e2f16353365b1a9a02bc408b96ca73\"\u003e\u003ccode\u003e373b9ee\u003c/code\u003e\u003c/a\u003e tests: keep environment from leaking in Python 3.15 (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1049\"\u003e#1049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.0.0...1.5.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/atomadictech/atomadic-forge/pull/23","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/atomadictech%2Fatomadic-forge/issues/23","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/23/packages"}},{"old_version":"1.4.2","new_version":"1.4.4","update_type":"patch","path":null,"pr_created_at":"2026-05-11T05:33:44.000Z","version_change":"1.4.2 → 1.4.4","issue":{"uuid":"4418312184","node_id":"PR_kwDOR9Jo_c7aHnn4","number":7,"state":"closed","title":"build(deps-dev): bump build from 1.4.2 to 1.4.4","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-11T05:34:35.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-11T05:33:44.000Z","updated_at":"2026-05-11T05:34:43.000Z","time_to_close":51,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps-dev)","packages":[{"name":"build","old_version":"1.4.2","new_version":"1.4.4","repository_url":"https://github.com/pypa/build"}],"path":null,"ecosystem":"pip"},"body":"Bumps [build](https://github.com/pypa/build) from 1.4.2 to 1.4.4.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/releases\"\u003ebuild's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.4\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(release): generate consistent CHANGELOG heading levels by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1032\"\u003epypa/build#1032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: move source links by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1034\"\u003epypa/build#1034\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erevert: drop PEP 660 change by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1039\"\u003epypa/build#1039\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: ignore installed when running pip by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1040\"\u003epypa/build#1040\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: revert part of \u003ca href=\"https://redirect.github.com/pypa/build/issues/973\"\u003e#973\u003c/a\u003e by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1044\"\u003epypa/build#1044\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: report coverage failure lines by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1046\"\u003epypa/build#1046\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: fix issue with uv run by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1048\"\u003epypa/build#1048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: reorganize testing docs for copy/paste by \u003ca href=\"https://github.com/abitrolly\"\u003e\u003ccode\u003e@​abitrolly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1043\"\u003epypa/build#1043\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: keep environment from leaking in Python 3.15 by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1049\"\u003epypa/build#1049\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix issue with changelog generation by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1050\"\u003epypa/build#1050\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.3...1.4.4\"\u003ehttps://github.com/pypa/build/compare/1.4.3...1.4.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.4.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(api): resolve thread-safety races in build API by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1015\"\u003epypa/build#1015\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(builder): validate backend-path entries exist on disk by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1016\"\u003epypa/build#1016\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest: cover config settings build paths by \u003ca href=\"https://github.com/terminalchai\"\u003e\u003ccode\u003e@​terminalchai\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/992\"\u003epypa/build#992\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd kind=(step, ) for root messages with * by \u003ca href=\"https://github.com/abitrolly\"\u003e\u003ccode\u003e@​abitrolly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/973\"\u003epypa/build#973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: correct changelog category ordering by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1017\"\u003epypa/build#1017\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(cli): show full dependency chain in missing deps error by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1019\"\u003epypa/build#1019\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: fully annotate by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1020\"\u003epypa/build#1020\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: lazy imports by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1021\"\u003epypa/build#1021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: adding more ruff codes by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1022\"\u003epypa/build#1022\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: improve annotations by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1023\"\u003epypa/build#1023\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 test(coverage): achieve 100% test coverage by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1018\"\u003epypa/build#1018\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: add ruff PT by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1025\"\u003epypa/build#1025\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: add ruff PYI by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1026\"\u003epypa/build#1026\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: add ruff SIM/RET by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1028\"\u003epypa/build#1028\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(env): strip PYTHONPATH from isolated builds by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1024\"\u003epypa/build#1024\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: use ruff ALL by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1029\"\u003epypa/build#1029\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(env): prevent pip credential hang with private indexes by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1030\"\u003epypa/build#1030\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(check_dependency): verify URL reqs via PEP 610 by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1027\"\u003epypa/build#1027\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/terminalchai\"\u003e\u003ccode\u003e@​terminalchai\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pypa/build/pull/992\"\u003epypa/build#992\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.2...1.4.3\"\u003ehttps://github.com/pypa/build/compare/1.4.2...1.4.3\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e####################\n1.5.0 (2026-04-30)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.9 support - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1036\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003e--ignore-installed\u003c/code\u003e opt-in from the API via \u003ccode\u003efresh=True\u003c/code\u003e - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1056\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1033\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.4 (2026-04-22)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eFix release pipeline generating \u003ccode\u003eCHANGELOG.rst\u003c/code\u003e entries with inconsistent heading levels, which broke \u003ccode\u003esphinx -W\u003c/code\u003e\nand pinned Read the Docs \u003ccode\u003estable\u003c/code\u003e at 1.4.0 - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e1031\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRevert :pr:\u003ccode\u003e1039\u003c/code\u003e from build 1.4.3, no longer check direct_url (for now) - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1039\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--ignore-installed\u003c/code\u003e to pip install command to prevent issues with packages already present in the isolated\nbuild environment - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1037\u003c/code\u003e) (:issue:\u003ccode\u003e1040\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePartial revert of :pr:\u003ccode\u003e973\u003c/code\u003e, keeping log messages in one entry, multiple lines. (:issue:\u003ccode\u003e1044\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1048\u003c/code\u003e, :issue:\u003ccode\u003e1049\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.3 (2026-04-10)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/70666a296c2e5bb7451f5a04eef259f6f943d0de\"\u003e\u003ccode\u003e70666a2\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/653d86586dea8b4e020086a276a15a27ac7bd25d\"\u003e\u003ccode\u003e653d865\u003c/code\u003e\u003c/a\u003e docs: fix issue with changelog generation (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1050\"\u003e#1050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/373b9ee171e2f16353365b1a9a02bc408b96ca73\"\u003e\u003ccode\u003e373b9ee\u003c/code\u003e\u003c/a\u003e tests: keep environment from leaking in Python 3.15 (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1049\"\u003e#1049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/e37e2ae697f9dde82709affb9356281fc2a9b98b\"\u003e\u003ccode\u003ee37e2ae\u003c/code\u003e\u003c/a\u003e docs: reorganize testing docs for copy/paste (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1043\"\u003e#1043\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/e9c194ad54413f1923f727ad07c7faf7dff813c0\"\u003e\u003ccode\u003ee9c194a\u003c/code\u003e\u003c/a\u003e tests: fix issue with uv run (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1048\"\u003e#1048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/03b7d7032ae636be992c917c67f8efbf99527c62\"\u003e\u003ccode\u003e03b7d70\u003c/code\u003e\u003c/a\u003e chore: report coverage failure lines (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1046\"\u003e#1046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/2afa3b59977c7e08dc526f19ab670edf99ce6051\"\u003e\u003ccode\u003e2afa3b5\u003c/code\u003e\u003c/a\u003e fix: revert part of \u003ca href=\"https://redirect.github.com/pypa/build/issues/973\"\u003e#973\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1044\"\u003e#1044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b336f60e8008791b7c492078a0725fdadc5875e8\"\u003e\u003ccode\u003eb336f60\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1045\"\u003e#1045\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/6d8039a4503caa2327657eb288c6ce01dabc3eb7\"\u003e\u003ccode\u003e6d8039a\u003c/code\u003e\u003c/a\u003e fix: ignore installed when running pip (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1040\"\u003e#1040\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/ebf6eba272c732ae7e3136edc78ac2597035edd9\"\u003e\u003ccode\u003eebf6eba\u003c/code\u003e\u003c/a\u003e revert: drop PEP 660 change (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1039\"\u003e#1039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.4.2...1.4.4\"\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=build\u0026package-manager=pip\u0026previous-version=1.4.2\u0026new-version=1.4.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/fhafqi3uq/Honeypot-Monitor/pull/7","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/fhafqi3uq%2FHoneypot-Monitor/issues/7","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/7/packages"}},{"old_version":"1.4.4","new_version":"1.5.0","update_type":"minor","path":null,"pr_created_at":"2026-05-11T03:04:17.000Z","version_change":"1.4.4 → 1.5.0","issue":{"uuid":"4417786468","node_id":"PR_kwDOBXYo-M7aF9uV","number":13135,"state":"open","title":"chore(deps-dev): bump build from 1.4.4 to 1.5.0","user":"dependabot[bot]","labels":["Dependencies","Python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-11T03:04:17.000Z","updated_at":"2026-05-11T03:36:30.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"build","old_version":"1.4.4","new_version":"1.5.0","repository_url":"https://github.com/pypa/build"}],"path":null,"ecosystem":"pip"},"body":"Bumps [build](https://github.com/pypa/build) from 1.4.4 to 1.5.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/releases\"\u003ebuild's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: try to improve release docs by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1051\"\u003epypa/build#1051\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: drop 3.9, require 3.10+ by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1036\"\u003epypa/build#1036\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: tox toml by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1033\"\u003epypa/build#1033\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: api should not ignore installed, only CLI by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1056\"\u003epypa/build#1056\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.4...1.5.0\"\u003ehttps://github.com/pypa/build/compare/1.4.4...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e####################\n1.5.0 (2026-04-30)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.9 support - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1036\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003e--ignore-installed\u003c/code\u003e opt-in from the API via \u003ccode\u003efresh=True\u003c/code\u003e - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1056\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1033\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.4 (2026-04-22)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eFix release pipeline generating \u003ccode\u003eCHANGELOG.rst\u003c/code\u003e entries with inconsistent heading levels, which broke \u003ccode\u003esphinx -W\u003c/code\u003e\nand pinned Read the Docs \u003ccode\u003estable\u003c/code\u003e at 1.4.0 - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e1031\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRevert :pr:\u003ccode\u003e1039\u003c/code\u003e from build 1.4.3, no longer check direct_url (for now) - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1039\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--ignore-installed\u003c/code\u003e to pip install command to prevent issues with packages already present in the isolated\nbuild environment - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1037\u003c/code\u003e) (:issue:\u003ccode\u003e1040\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePartial revert of :pr:\u003ccode\u003e973\u003c/code\u003e, keeping log messages in one entry, multiple lines. (:issue:\u003ccode\u003e1044\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1048\u003c/code\u003e, :issue:\u003ccode\u003e1049\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.3 (2026-04-10)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/615d04cfc52ac3c1592a463f0afe484fee1cc368\"\u003e\u003ccode\u003e615d04c\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/776f702f84787525df62a5473dd13d4e2f45b977\"\u003e\u003ccode\u003e776f702\u003c/code\u003e\u003c/a\u003e fix: api should not ignore installed, only CLI (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/42da4c4b483563819fabdb8ecf2f6df53ed82123\"\u003e\u003ccode\u003e42da4c4\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1055\"\u003e#1055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b445cd2e736db5f80cde7d952d620a73cc26bf9d\"\u003e\u003ccode\u003eb445cd2\u003c/code\u003e\u003c/a\u003e chore: tox toml (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/c44c143876042ac6e1212a31684a3adca19beda4\"\u003e\u003ccode\u003ec44c143\u003c/code\u003e\u003c/a\u003e feat: drop 3.9, require 3.10+ (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/a9bb4560d213069b11c8068159f1de060abec5b7\"\u003e\u003ccode\u003ea9bb456\u003c/code\u003e\u003c/a\u003e build(deps): bump astral-sh/setup-uv from 8.0.0 to 8.1.0 in the actions group...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/cb3351155ce99902580022acb81dc0adb8124d53\"\u003e\u003ccode\u003ecb33511\u003c/code\u003e\u003c/a\u003e ci: try to improve release docs (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1051\"\u003e#1051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pypa/build/compare/1.4.4...1.5.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=build\u0026package-manager=pip\u0026previous-version=1.4.4\u0026new-version=1.5.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/freqtrade/freqtrade/pull/13135","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/freqtrade%2Ffreqtrade/issues/13135","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/13135/packages"}},{"old_version":"1.4.0","new_version":"1.5.0","update_type":"minor","path":null,"pr_created_at":"2026-05-09T06:18:46.000Z","version_change":"1.4.0 → 1.5.0","issue":{"uuid":"4411445358","node_id":"PR_kwDOQnuBaM7ZyxlG","number":111,"state":"closed","title":"chore(deps): bump the python-dependencies group across 1 directory with 45 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-16T06:15:40.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-09T06:18:46.000Z","updated_at":"2026-05-16T06:15:41.000Z","time_to_close":604614,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-dependencies","update_count":45,"packages":[{"name":"anthropic","old_version":"0.83.0","new_version":"0.100.0","repository_url":"https://github.com/anthropics/anthropic-sdk-python"},{"name":"anyio","old_version":"4.12.1","new_version":"4.13.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"attrs","old_version":"25.4.0","new_version":"26.1.0","repository_url":"https://github.com/python-attrs/attrs"},{"name":"build","old_version":"1.4.0","new_version":"1.5.0","repository_url":"https://github.com/pypa/build"},{"name":"certifi","old_version":"2026.1.4","new_version":"2026.4.22","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.4","new_version":"3.4.7","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.3.1","new_version":"8.3.3","repository_url":"https://github.com/pallets/click"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [setuptools](https://github.com/pypa/setuptools), [anthropic](https://github.com/anthropics/anthropic-sdk-python), [anyio](https://github.com/agronholm/anyio), [attrs](https://github.com/python-attrs/attrs), [build](https://github.com/pypa/build), [certifi](https://github.com/certifi/python-certifi), [charset-normalizer](https://github.com/jawah/charset_normalizer), [click](https://github.com/pallets/click), [coverage](https://github.com/coveragepy/coveragepy), [cryptography](https://github.com/pyca/cryptography), [docstring-parser](https://github.com/rr-/docstring_parser), [idna](https://github.com/kjd/idna), [jiter](https://github.com/pydantic/jiter), [jsonpointer](https://github.com/stefankoegl/python-json-pointer), [langchain-anthropic](https://github.com/langchain-ai/langchain), [langchain-core](https://github.com/langchain-ai/langchain), [langchain-ollama](https://github.com/langchain-ai/langchain), [langchain-openai](https://github.com/langchain-ai/langchain), [langsmith](https://github.com/langchain-ai/langsmith-sdk), [librt](https://github.com/mypyc/librt), [mcp](https://github.com/modelcontextprotocol/python-sdk), [mypy](https://github.com/python/mypy), [ollama](https://github.com/ollama/ollama-python), [openai](https://github.com/openai/openai-python), [orjson](https://github.com/ijl/orjson), [packaging](https://github.com/pypa/packaging), [pathspec](https://github.com/cpburnz/python-pathspec), [posthog](https://github.com/posthog/posthog-python), [pydantic](https://github.com/pydantic/pydantic), [pydantic-settings](https://github.com/pydantic/pydantic-settings), [pydantic-core](https://github.com/pydantic/pydantic), [pyjwt](https://github.com/jpadilla/pyjwt), [pyright](https://github.com/RobertCraigie/pyright-python), [pytest-cov](https://github.com/pytest-dev/pytest-cov), [types-pyyaml](https://github.com/python/typeshed), [types-defusedxml](https://github.com/python/typeshed), [regex](https://github.com/mrabarnett/mrab-regex), [requests](https://github.com/psf/requests), [sse-starlette](https://github.com/sysid/sse-starlette), [starlette](https://github.com/Kludex/starlette), [urllib3](https://github.com/urllib3/urllib3), [uvicorn](https://github.com/Kludex/uvicorn), [wcwidth](https://github.com/jquast/wcwidth), [ruff](https://github.com/astral-sh/ruff) and [pyinstaller](https://github.com/pyinstaller/pyinstaller) to permit the latest version.\nUpdates `setuptools` to 82.0.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/setuptools/blob/main/NEWS.rst\"\u003esetuptools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev82.0.1\u003c/h1\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix the loading of \u003ccode\u003elauncher manifest.xml\u003c/code\u003e file. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5047\"\u003e#5047\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReplaced deprecated \u003ccode\u003ejson.__version__\u003c/code\u003e with fixture in tests. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5186\"\u003e#5186\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImproved Documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd advice about how to improve predictability when installing sdists. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5168\"\u003e#5168\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMisc\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/4941\"\u003e#4941\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5157\"\u003e#5157\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5169\"\u003e#5169\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5175\"\u003e#5175\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev82.0.0\u003c/h1\u003e\n\u003ch2\u003eDeprecations and Removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epkg_resources\u003c/code\u003e has been removed from Setuptools. Most common uses of \u003ccode\u003epkg_resources\u003c/code\u003e have been superseded by the \u003ccode\u003eimportlib.resources \u0026lt;https://docs.python.org/3/library/importlib.resources.html\u0026gt;\u003c/code\u003e_ and \u003ccode\u003eimportlib.metadata \u0026lt;https://docs.python.org/3/library/importlib.metadata.html\u0026gt;\u003c/code\u003e_ projects. Projects and environments relying on \u003ccode\u003epkg_resources\u003c/code\u003e for namespace packages or other behavior should depend on older versions of \u003ccode\u003esetuptools\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/3085\"\u003e#3085\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev81.0.0\u003c/h1\u003e\n\u003ch2\u003eDeprecations and Removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved support for the --dry-run parameter to setup.py. This one feature by its nature threads through lots of core and ancillary functionality, adding complexity and friction. Removal of this parameter will help decouple the compiler functionality from distutils and thus the eventual full integration of distutils. These changes do affect some class and function signatures, so any derivative functionality may require some compatibility shims to support their expected interface. Please report any issues to the Setuptools project for investigation. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/4872\"\u003e#4872\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev80.10.2\u003c/h1\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate vendored dependencies. (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5159\"\u003e#5159\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMisc\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/5a13876673a41e3cd21d4d6e587f53d0fb4fd8e5\"\u003e\u003ccode\u003e5a13876\u003c/code\u003e\u003c/a\u003e Bump version: 82.0.0 → 82.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/51ab8f183f1c4112675d8d6ec6b004406d518ee8\"\u003e\u003ccode\u003e51ab8f1\u003c/code\u003e\u003c/a\u003e Avoid using (deprecated) 'json.\u003cstrong\u003eversion\u003c/strong\u003e' in tests (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5194\"\u003e#5194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/f9c37b20bb0ed11203f676f9683452a4c3ace6f6\"\u003e\u003ccode\u003ef9c37b2\u003c/code\u003e\u003c/a\u003e Docs/CI: Fix intersphinx references (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5195\"\u003e#5195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/8173db2a4fc0f6cb28926b3dba59116b79f435c8\"\u003e\u003ccode\u003e8173db2\u003c/code\u003e\u003c/a\u003e Docs: Fix intersphinx references\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/09bafbc74923f2a3591b5b098be75d6af6ca5141\"\u003e\u003ccode\u003e09bafbc\u003c/code\u003e\u003c/a\u003e Fix past tense on newsfragment\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/461ea56c8e629819a23920f44d9298d4f041abde\"\u003e\u003ccode\u003e461ea56\u003c/code\u003e\u003c/a\u003e Add news fragment\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/c4ffe535b58235ff9f9ebe90d24a2cffb57e70ae\"\u003e\u003ccode\u003ec4ffe53\u003c/code\u003e\u003c/a\u003e Avoid using (deprecated) 'json.\u003cstrong\u003eversion\u003c/strong\u003e' in tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/749258b1a96c7accc05ea7d842fb19fc378866fe\"\u003e\u003ccode\u003e749258b\u003c/code\u003e\u003c/a\u003e Cleanup \u003ccode\u003epkg_resources\u003c/code\u003e dependencies and configuration (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5175\"\u003e#5175\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/2019c16701667db1010c62ec11c6ef78c2e58206\"\u003e\u003ccode\u003e2019c16\u003c/code\u003e\u003c/a\u003e Parse \u003ccode\u003eext-module.define-macros\u003c/code\u003e from \u003ccode\u003epyproject.toml\u003c/code\u003e as list of tuples (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5169\"\u003e#5169\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/setuptools/commit/b809c86a37d97fcce290d5f51d4c293ab40bc685\"\u003e\u003ccode\u003eb809c86\u003c/code\u003e\u003c/a\u003e Sync setuptools schema with validate-pyproject (\u003ca href=\"https://redirect.github.com/pypa/setuptools/issues/5157\"\u003e#5157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/setuptools/compare/v61.0.0...v82.0.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `anthropic` from 0.83.0 to 0.100.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/releases\"\u003eanthropic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.100.0\u003c/h2\u003e\n\u003ch2\u003e0.100.0 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.99.0...v0.100.0\"\u003ev0.99.0...v0.100.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add support for Managed Agents multiagents and outcomes, webhooks, vault validation (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/3b3deee9c479ce5b54411a8572b66c5a90f1d50f\"\u003e3b3deee\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e Adjust webhook configuration (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/8c3339e532458e93585f2faf4f284ccbb5829717\"\u003e8c3339e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.99.0\u003c/h2\u003e\n\u003ch2\u003e0.99.0 (2026-05-05)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.98.1...v0.99.0\"\u003ev0.98.1...v0.99.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e allow targeting a workspace for OIDC federation token exchange (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/4ba8067daa634691ea8c8a3b970d42bdaf5f04eb\"\u003e4ba8067\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.98.1\u003c/h2\u003e\n\u003ch2\u003e0.98.1 (2026-05-04)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.98.0...v0.98.1\"\u003ev0.98.0...v0.98.1\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix typo in example (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1754\"\u003e#1754\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/de8ba13769837f92ff00be8a1b1e9ad0749eae2f\"\u003ede8ba13\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.98.0\u003c/h2\u003e\n\u003ch2\u003e0.98.0 (2026-05-04)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.97.0...v0.98.0\"\u003ev0.97.0...v0.98.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e improve Managed Agents APIs (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/7faf3939a803420e7efd85cc18b67b97b429c172\"\u003e7faf393\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e add Workload Identity Federation, interactive OAuth, and auth profiles (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/6458bcc28e83adcd96cd084ed19ec113d5462c80\"\u003e6458bcc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport setting headers via env (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/52eb8cdd6e9a899519010d7e6ebc4a74a88f82cd\"\u003e52eb8cd\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003estreaming:\u003c/strong\u003e propagate stop_details from message_delta onto accumulated Message (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1725\"\u003e#1725\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/900dd9b4376fd7a32d6e59d028b143558340d619\"\u003e900dd9b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003euse correct field name format for multipart file arrays (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/8350bdced9599d023565c0cca93ff2d05560f991\"\u003e8350bdc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evertex:\u003c/strong\u003e async client missing us/eu multi-region base_url branches (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1734\"\u003e#1734\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/3e78f71c0ab3f3ff0e5402477cff06771c94864c\"\u003e3e78f71\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/blob/main/CHANGELOG.md\"\u003eanthropic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.100.0 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.99.0...v0.100.0\"\u003ev0.99.0...v0.100.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add support for Managed Agents multiagents and outcomes, webhooks, vault validation (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/3b3deee9c479ce5b54411a8572b66c5a90f1d50f\"\u003e3b3deee\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e Adjust webhook configuration (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/8c3339e532458e93585f2faf4f284ccbb5829717\"\u003e8c3339e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.99.0 (2026-05-05)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.98.1...v0.99.0\"\u003ev0.98.1...v0.99.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e allow targeting a workspace for OIDC federation token exchange (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/4ba8067daa634691ea8c8a3b970d42bdaf5f04eb\"\u003e4ba8067\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.98.1 (2026-05-04)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.98.0...v0.98.1\"\u003ev0.98.0...v0.98.1\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix typo in example (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1754\"\u003e#1754\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/de8ba13769837f92ff00be8a1b1e9ad0749eae2f\"\u003ede8ba13\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.98.0 (2026-05-04)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.97.0...v0.98.0\"\u003ev0.97.0...v0.98.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e improve Managed Agents APIs (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/7faf3939a803420e7efd85cc18b67b97b429c172\"\u003e7faf393\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e add Workload Identity Federation, interactive OAuth, and auth profiles (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/6458bcc28e83adcd96cd084ed19ec113d5462c80\"\u003e6458bcc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport setting headers via env (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/52eb8cdd6e9a899519010d7e6ebc4a74a88f82cd\"\u003e52eb8cd\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003estreaming:\u003c/strong\u003e propagate stop_details from message_delta onto accumulated Message (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1725\"\u003e#1725\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/900dd9b4376fd7a32d6e59d028b143558340d619\"\u003e900dd9b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003euse correct field name format for multipart file arrays (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/8350bdced9599d023565c0cca93ff2d05560f991\"\u003e8350bdc\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003evertex:\u003c/strong\u003e async client missing us/eu multi-region base_url branches (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1734\"\u003e#1734\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/3e78f71c0ab3f3ff0e5402477cff06771c94864c\"\u003e3e78f71\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e reformat pyproject.toml (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/5a9d5fd106c52643b87881d341b27dc7b12d5975\"\u003e5a9d5fd\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/04b468daf76e4b95a949cecb03e29f4a1374d3b5\"\u003e\u003ccode\u003e04b468d\u003c/code\u003e\u003c/a\u003e release: 0.100.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/2c154079bf6a885b3acf1b91be45e12ff61d994e\"\u003e\u003ccode\u003e2c15407\u003c/code\u003e\u003c/a\u003e fix(api): Adjust webhook configuration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/dc0ce48d7525261275f197d3ff194034bb79387b\"\u003e\u003ccode\u003edc0ce48\u003c/code\u003e\u003c/a\u003e feat(api): add support for Managed Agents multiagents and outcomes, webhooks,...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/d573b82855d125f0ba133383670b6c4b5cb58dd5\"\u003e\u003ccode\u003ed573b82\u003c/code\u003e\u003c/a\u003e release: 0.99.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/119e1233e2f01cfd9decd748ed399208675524d4\"\u003e\u003ccode\u003e119e123\u003c/code\u003e\u003c/a\u003e feat(client): allow targeting a workspace for OIDC federation token exchange\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/637560c5b14d7bba15872cb1b2485f632e8d5cf2\"\u003e\u003ccode\u003e637560c\u003c/code\u003e\u003c/a\u003e release: 0.98.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/4fb779f015b77a4b22011db2b07b2ea4526d30ad\"\u003e\u003ccode\u003e4fb779f\u003c/code\u003e\u003c/a\u003e chore: fix typo in example (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1754\"\u003e#1754\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/11b87bc79308b0293f1a24b85901bb0bdc302441\"\u003e\u003ccode\u003e11b87bc\u003c/code\u003e\u003c/a\u003e release: 0.98.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/b669ad4c5d3604d614fe03d1c96fb5770f7ad5fd\"\u003e\u003ccode\u003eb669ad4\u003c/code\u003e\u003c/a\u003e codegen metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/3be1e8996f3364d11fe8cc1d4154a1939aa89282\"\u003e\u003ccode\u003e3be1e89\u003c/code\u003e\u003c/a\u003e feat(client): add Workload Identity Federation, interactive OAuth, and auth p...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.83.0...v0.100.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `anyio` from 4.12.1 to 4.13.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.13.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ettl\u003c/code\u003e parameter to the \u003ccode\u003eanyio.functools.lru_cache\u003c/code\u003e wrapper (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1073\"\u003e#1073\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWidened the type annotations of file I/O streams to accept \u003ccode\u003eIO[bytes]\u003c/code\u003e instead of just \u003ccode\u003eBinaryIO\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1078\"\u003e#1078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path\u003c/code\u003e not being compatible with Python 3.15 due to the removal of \u003ccode\u003epathlib.Path.is_reserved()\u003c/code\u003e and the addition of \u003ccode\u003epathlib.Path.__vfspath__()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1061\"\u003e#1061\u003c/a\u003e; PR by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the \u003ccode\u003eBrokenResourceError\u003c/code\u003e raised by the asyncio \u003ccode\u003eSocketStream\u003c/code\u003e not having the original exception as its cause (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1055\"\u003e#1055\u003c/a\u003e; PR by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the \u003ccode\u003eTypeError\u003c/code\u003e raised when using \u0026quot;func\u0026quot; as a parameter name in \u003ccode\u003epytest.mark.parametrize\u003c/code\u003e when using the pytest plugin (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1068\"\u003e#1068\u003c/a\u003e; PR by \u003ca href=\"https://github.com/JohnnyDeuss\"\u003e\u003ccode\u003e@​JohnnyDeuss\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the pytest plugin not running tests that had the \u003ccode\u003eanyio\u003c/code\u003e marker added programmatically via \u003ccode\u003epytest_collection_modifyitems\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/422\"\u003e#422\u003c/a\u003e; PR by \u003ca href=\"https://github.com/chbndrhnns\"\u003e\u003ccode\u003e@​chbndrhnns\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed cancellation exceptions leaking from a \u003ccode\u003eCancelScope\u003c/code\u003e on asyncio when they are contained in an exception group alongside non-cancellation exceptions (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1091\"\u003e#1091\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\u003eCondition.wait()\u003c/code\u003e not passing on a notification when the task is cancelled but already received a notification\u003c/li\u003e\n\u003cli\u003eFixed inverted condition in the process pool shutdown phase which would cause still-running pooled processes not to be terminated (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1074\"\u003e#1074\u003c/a\u003e; PR by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\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/agronholm/anyio/commit/afbe93ca9d0c447adf26e9c1715ac20870622bf2\"\u003e\u003ccode\u003eafbe93c\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/33bdf2e4b4f40c2df178123746147a6d2471808d\"\u003e\u003ccode\u003e33bdf2e\u003c/code\u003e\u003c/a\u003e Rearranged the changelog entries\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/19e09e25bc5a23dd78a577d8c3909dd377057c78\"\u003e\u003ccode\u003e19e09e2\u003c/code\u003e\u003c/a\u003e Fixed inverted condition in _forcibly_shutdown_process_pool_on_exit (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1074\"\u003e#1074\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9369d80b9e8292f2a892a9d5c73923c6a28aa08c\"\u003e\u003ccode\u003e9369d80\u003c/code\u003e\u003c/a\u003e Fixed Condition.wait() not handing over notification when cancelled\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6f122abdc6f6b166c6b6ac27d36d55cdf8fa08e8\"\u003e\u003ccode\u003e6f122ab\u003c/code\u003e\u003c/a\u003e Fixed cancellation exceptions leaking from a \u003ccode\u003eCancelScope\u003c/code\u003e on asyncio when th...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/beaa45aff568a4020f2faf317321dd92f0e1f4a0\"\u003e\u003ccode\u003ebeaa45a\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1097\"\u003e#1097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/602f6606dcf3f37702686a4f3e161328c537b07f\"\u003e\u003ccode\u003e602f660\u003c/code\u003e\u003c/a\u003e Widened type annotations to accept IO[bytes] in file streams\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b5dcd45170701a756ba634197398f05d4710cab3\"\u003e\u003ccode\u003eb5dcd45\u003c/code\u003e\u003c/a\u003e Added note about erasing the template\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d68670b3b4e0917d4caff2de082e03220f3e05a1\"\u003e\u003ccode\u003ed68670b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1090\"\u003e#1090\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/fc17a22dd948e6a3d90d99908813f0010dfc3d2c\"\u003e\u003ccode\u003efc17a22\u003c/code\u003e\u003c/a\u003e tweak to_thread docs about abandon_on_cancel (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1088\"\u003e#1088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.12.1...4.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `attrs` from 25.4.0 to 26.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-attrs/attrs/releases\"\u003eattrs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.1.0\u003c/h2\u003e\n\u003ch2\u003eHighlights\u003c/h2\u003e\n\u003cp\u003eThe main outward change here only affects people using field transformers, but it should be a nice quality of life improvement!\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eFull changelog below!\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eSpecial Thanks\u003c/h2\u003e\n\u003cp\u003eThis release would not be possible without my generous sponsors! Thank you to all of you making sustainable maintenance possible! If \u003cem\u003eyou\u003c/em\u003e would like to join them, go to \u003ca href=\"https://github.com/sponsors/hynek\"\u003ehttps://github.com/sponsors/hynek\u003c/a\u003e and check out the sweet perks!\u003c/p\u003e\n\u003ch3\u003eAbove and Beyond\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://www.variomedia.de/\"\u003eVariomedia AG\u003c/a\u003e (@\u003ca href=\"https://github.com/variomedia\"\u003evariomedia\u003c/a\u003e), \u003ca href=\"https://www.tidelift.com/\"\u003eTidelift\u003c/a\u003e (@\u003ca href=\"https://github.com/tidelift\"\u003etidelift\u003c/a\u003e), \u003ca href=\"https://kraken.tech\"\u003eKraken Tech\u003c/a\u003e (@\u003ca href=\"https://github.com/kraken-tech\"\u003ekraken-tech\u003c/a\u003e), \u003ca href=\"https://privacy-solutions.org\"\u003ePrivacy Solutions GmbH\u003c/a\u003e (@\u003ca href=\"https://github.com/privacy-solutions\"\u003eprivacy-solutions\u003c/a\u003e), \u003ca href=\"http://filepreviews.io/\"\u003eFilePreviews\u003c/a\u003e (@\u003ca href=\"https://github.com/filepreviews\"\u003efilepreviews\u003c/a\u003e), \u003ca href=\"https://ecosyste.ms\"\u003eEcosystems\u003c/a\u003e (@\u003ca href=\"https://github.com/ecosyste-ms\"\u003eecosyste-ms\u003c/a\u003e), \u003ca href=\"https://www.lambdatest.com\"\u003eTestMu AI Open Source Office (Formerly LambdaTest)\u003c/a\u003e (@\u003ca href=\"https://github.com/LambdaTest-Inc\"\u003eLambdaTest-Inc\u003c/a\u003e), \u003ca href=\"https://doist.com/\"\u003eDoist\u003c/a\u003e (@\u003ca href=\"https://github.com/Doist\"\u003eDoist\u003c/a\u003e), Daniel Fortunov (@\u003ca href=\"https://github.com/asqui\"\u003easqui\u003c/a\u003e), and Kevin P. Fleming (@\u003ca href=\"https://github.com/kpfleming\"\u003ekpfleming\u003c/a\u003e).\u003c/p\u003e\n\u003ch3\u003eMaintenance Sustainers\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://buttondown.com\"\u003eButtondown\u003c/a\u003e (@\u003ca href=\"https://github.com/buttondown\"\u003ebuttondown\u003c/a\u003e), \u003ca href=\"https://christopher.xyz\"\u003eChristopher Dignam\u003c/a\u003e (@\u003ca href=\"https://github.com/chdsbd\"\u003echdsbd\u003c/a\u003e), Magnus Watn (@\u003ca href=\"https://github.com/magnuswatn\"\u003emagnuswatn\u003c/a\u003e), \u003ca href=\"https://cra.mr\"\u003eDavid Cramer\u003c/a\u003e (@\u003ca href=\"https://github.com/dcramer\"\u003edcramer\u003c/a\u003e), \u003ca href=\"https://rivolaks.com\"\u003eRivo Laks\u003c/a\u003e (@\u003ca href=\"https://github.com/rivol\"\u003erivol\u003c/a\u003e), \u003ca href=\"https://polar.sh\"\u003ePolar\u003c/a\u003e (@\u003ca href=\"https://github.com/polarsource\"\u003epolarsource\u003c/a\u003e), \u003ca href=\"https://miketheman.dev\"\u003eMike Fiedler\u003c/a\u003e (@\u003ca href=\"https://github.com/miketheman\"\u003emiketheman\u003c/a\u003e), Duncan Hill (@\u003ca href=\"https://github.com/cricalix\"\u003ecricalix\u003c/a\u003e), Colin Marquardt (@\u003ca href=\"https://github.com/cmarqu\"\u003ecmarqu\u003c/a\u003e), \u003ca href=\"https://blog.journeythatcounts.nl\"\u003ePieter Swinkels\u003c/a\u003e (@\u003ca href=\"https://github.com/swinkels\"\u003eswinkels\u003c/a\u003e), Nick Libertini (@\u003ca href=\"https://github.com/libertininick\"\u003elibertininick\u003c/a\u003e), \u003ca href=\"https://bmdphd.info/\"\u003eBrian M. Dennis\u003c/a\u003e (@\u003ca href=\"https://github.com/crossjam\"\u003ecrossjam\u003c/a\u003e), Celebrity News AG (@\u003ca href=\"https://github.com/celebritynewsag\"\u003ecelebritynewsag\u003c/a\u003e), \u003ca href=\"https://westervelt.com\"\u003eThe Westervelt Company\u003c/a\u003e (@\u003ca href=\"https://github.com/westerveltco\"\u003ewesterveltco\u003c/a\u003e), \u003ca href=\"https://slafs.net\"\u003eSławomir Ehlert\u003c/a\u003e (@\u003ca href=\"https://github.com/slafs\"\u003eslafs\u003c/a\u003e), Mostafa Khalil (@\u003ca href=\"https://github.com/khadrawy\"\u003ekhadrawy\u003c/a\u003e), \u003ca href=\"https://fmularczyk.pl\"\u003eFilip Mularczyk\u003c/a\u003e (@\u003ca href=\"https://github.com/mukiblejlok\"\u003emukiblejlok\u003c/a\u003e), Thomas Klinger (@\u003ca href=\"https://github.com/thmsklngr\"\u003ethmsklngr\u003c/a\u003e), \u003ca href=\"https://poehlmann.io\"\u003eAndreas Poehlmann\u003c/a\u003e (@\u003ca href=\"https://github.com/ap--\"\u003eap--\u003c/a\u003e), \u003ca href=\"https://atbigelow.com\"\u003eAugust Trapper Bigelow\u003c/a\u003e (@\u003ca href=\"https://github.com/atbigelow\"\u003eatbigelow\u003c/a\u003e), \u003ca href=\"https://noumenal.es/\"\u003eCarlton Gibson\u003c/a\u003e (@\u003ca href=\"https://github.com/carltongibson\"\u003ecarltongibson\u003c/a\u003e), and \u003ca href=\"https://roboflow.com\"\u003eRoboflow\u003c/a\u003e (@\u003ca href=\"https://github.com/roboflow\"\u003eroboflow\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003eFull Changelog\u003c/h2\u003e\n\u003ch3\u003eBackwards-incompatible Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eField aliases are now resolved \u003cem\u003ebefore\u003c/em\u003e calling \u003ccode\u003efield_transformer\u003c/code\u003e, so transformers receive fully populated \u003ccode\u003eAttribute\u003c/code\u003e objects with usable \u003ccode\u003ealias\u003c/code\u003e values instead of \u003ccode\u003eNone\u003c/code\u003e. The new \u003ccode\u003eAttribute.alias_is_default\u003c/code\u003e flag indicates whether the alias was auto-generated (\u003ccode\u003eTrue\u003c/code\u003e) or explicitly set by the user (\u003ccode\u003eFalse\u003c/code\u003e). \u003ca href=\"https://redirect.github.com/python-attrs/attrs/issues/1509\"\u003e#1509\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanges\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix type annotations for \u003ccode\u003eattrs.validators.optional()\u003c/code\u003e, so it no longer rejects tuples with more than one validator. \u003ca href=\"https://redirect.github.com/python-attrs/attrs/issues/1496\"\u003e#1496\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003eattrs.validators.disabled()\u003c/code\u003e contextmanager can now be nested. \u003ca href=\"https://redirect.github.com/python-attrs/attrs/issues/1513\"\u003e#1513\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFrozen classes can set \u003ccode\u003eon_setattr=attrs.setters.NO_OP\u003c/code\u003e in addition to \u003ccode\u003eNone\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/python-attrs/attrs/issues/1515\"\u003e#1515\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIt's now possible to pass \u003cem\u003eattrs\u003c/em\u003e \u003cstrong\u003einstances\u003c/strong\u003e in addition to \u003cem\u003eattrs\u003c/em\u003e \u003cstrong\u003eclasses\u003c/strong\u003e to \u003ccode\u003eattrs.fields()\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/python-attrs/attrs/issues/1529\"\u003e#1529\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eThis release contains contributions from \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/DavidCEllis\"\u003e\u003ccode\u003e@​DavidCEllis\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/finite-state-machine\"\u003e\u003ccode\u003e@​finite-state-machine\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/hynek\"\u003e\u003ccode\u003e@​hynek\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/vstinner\"\u003e\u003ccode\u003e@​vstinner\u003c/code\u003e\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eArtifact Attestations\u003c/h2\u003e\n\u003cp\u003eYou can verify this release's \u003ca href=\"https://docs.github.com/en/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds\"\u003eartifact attestions\u003c/a\u003e using \u003ca href=\"https://cli.github.com\"\u003eGitHub's CLI tool\u003c/a\u003e by downloading the sdist and wheel from \u003ca href=\"https://pypi.org/project/attrs\"\u003ePyPI\u003c/a\u003e and running:\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003e$ gh attestation verify --owner python-attrs attrs-26.1.0.tar.gz\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-attrs/attrs/blob/main/CHANGELOG.md\"\u003eattrs's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/python-attrs/attrs/tree/26.1.0\"\u003e26.1.0\u003c/a\u003e - 2026-03-19\u003c/h2\u003e\n\u003ch3\u003eBackwards-incompatible Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eField aliases are now resolved \u003cem\u003ebefore\u003c/em\u003e calling \u003ccode\u003efield_transformer\u003c/code\u003e, so transformers receive fully populated \u003ccode\u003eAttribute\u003c/code\u003e objects with usable \u003ccode\u003ealias\u003c/code\u003e values instead of \u003ccode\u003eNone\u003c/code\u003e.\nThe new \u003ccode\u003eAttribute.alias_is_default\u003c/code\u003e flag indicates whether the alias was auto-generated (\u003ccode\u003eTrue\u003c/code\u003e) or explicitly set by the user (\u003ccode\u003eFalse\u003c/code\u003e).\n\u003ca href=\"https://redirect.github.com/python-attrs/attrs/issues/1509\"\u003e#1509\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanges\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix type annotations for \u003ccode\u003eattrs.validators.optional()\u003c/code\u003e, so it no longer rejects tuples with more than one validator.\n\u003ca href=\"https://redirect.github.com/python-attrs/attrs/issues/1496\"\u003e#1496\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003eattrs.validators.disabled()\u003c/code\u003e contextmanager can now be nested.\n\u003ca href=\"https://redirect.github.com/python-attrs/attrs/issues/1513\"\u003e#1513\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFrozen classes can set \u003ccode\u003eon_setattr=attrs.setters.NO_OP\u003c/code\u003e in addition to \u003ccode\u003eNone\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/python-attrs/attrs/issues/1515\"\u003e#1515\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIt's now possible to pass \u003cem\u003eattrs\u003c/em\u003e \u003cstrong\u003einstances\u003c/strong\u003e in addition to \u003cem\u003eattrs\u003c/em\u003e \u003cstrong\u003eclasses\u003c/strong\u003e to \u003ccode\u003eattrs.fields()\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/python-attrs/attrs/issues/1529\"\u003e#1529\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-attrs/attrs/commit/7bfc49e9b22d5ba25b6e429524c3d49fee27cb36\"\u003e\u003ccode\u003e7bfc49e\u003c/code\u003e\u003c/a\u003e Prepare 26.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-attrs/attrs/commit/31e02869da10824b492c378c1dc87ccc720ee5ad\"\u003e\u003ccode\u003e31e0286\u003c/code\u003e\u003c/a\u003e Update test_validators.py for Python 3.15a7 (\u003ca href=\"https://redirect.github.com/python-attrs/attrs/issues/1530\"\u003e#1530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-attrs/attrs/commit/48b8611c27779811d161200e17de8da24aae7feb\"\u003e\u003ccode\u003e48b8611\u003c/code\u003e\u003c/a\u003e Add instance support to attrs.fields() (\u003ca href=\"https://redirect.github.com/python-attrs/attrs/issues/1529\"\u003e#1529\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-attrs/attrs/commit/3a68d4913221abc6f8ad3be50937f7ae49300a98\"\u003e\u003ccode\u003e3a68d49\u003c/code\u003e\u003c/a\u003e dev: document missing git tags failure mode\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-attrs/attrs/commit/a572c3a4c558a8b9b48cf989fcd956ab1a279439\"\u003e\u003ccode\u003ea572c3a\u003c/code\u003e\u003c/a\u003e Allow field(on_setattr=NO_OP) on frozen classes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-attrs/attrs/commit/af9c510912ce604a94896cc35c27368d5baf6ae6\"\u003e\u003ccode\u003eaf9c510\u003c/code\u003e\u003c/a\u003e Fix validators.disabled() to save/restore state on nesting (\u003ca href=\"https://redirect.github.com/python-attrs/attrs/issues/1513\"\u003e#1513\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-attrs/attrs/commit/ab7f8b2f4c0f747d5b1575247ce35e5adaad182e\"\u003e\u003ccode\u003eab7f8b2\u003c/code\u003e\u003c/a\u003e update dev\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-attrs/attrs/commit/ce89f5d11feb0805da9ed10bb165238cc959f1bb\"\u003e\u003ccode\u003ece89f5d\u003c/code\u003e\u003c/a\u003e Fix message passing in frozen errors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-attrs/attrs/commit/eccd966d80aff5196efc959316961cfa780439f9\"\u003e\u003ccode\u003eeccd966\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eoptional\u003c/code\u003e validator to accept tuples of len \u0026gt; 1 (\u003ca href=\"https://redirect.github.com/python-attrs/attrs/issues/1496\"\u003e#1496\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-attrs/attrs/commit/e92fe52dfe1eb07167e6473724c5a8ada978add0\"\u003e\u003ccode\u003ee92fe52\u003c/code\u003e\u003c/a\u003e policies: tighten screws (\u003ca href=\"https://redirect.github.com/python-attrs/attrs/issues/1528\"\u003e#1528\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-attrs/attrs/compare/25.4.0...26.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `build` from 1.4.0 to 1.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/releases\"\u003ebuild's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: try to improve release docs by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1051\"\u003epypa/build#1051\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: drop 3.9, require 3.10+ by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1036\"\u003epypa/build#1036\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: tox toml by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1033\"\u003epypa/build#1033\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: api should not ignore installed, only CLI by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1056\"\u003epypa/build#1056\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.4...1.5.0\"\u003ehttps://github.com/pypa/build/compare/1.4.4...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.4.4\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(release): generate consistent CHANGELOG heading levels by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1032\"\u003epypa/build#1032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: move source links by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1034\"\u003epypa/build#1034\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erevert: drop PEP 660 change by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1039\"\u003epypa/build#1039\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: ignore installed when running pip by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1040\"\u003epypa/build#1040\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: revert part of \u003ca href=\"https://redirect.github.com/pypa/build/issues/973\"\u003e#973\u003c/a\u003e by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1044\"\u003epypa/build#1044\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: report coverage failure lines by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1046\"\u003epypa/build#1046\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: fix issue with uv run by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1048\"\u003epypa/build#1048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: reorganize testing docs for copy/paste by \u003ca href=\"https://github.com/abitrolly\"\u003e\u003ccode\u003e@​abitrolly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1043\"\u003epypa/build#1043\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: keep environment from leaking in Python 3.15 by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1049\"\u003epypa/build#1049\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix issue with changelog generation by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1050\"\u003epypa/build#1050\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.3...1.4.4\"\u003ehttps://github.com/pypa/build/compare/1.4.3...1.4.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.4.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(api): resolve thread-safety races in build API by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1015\"\u003epypa/build#1015\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(builder): validate backend-path entries exist on disk by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1016\"\u003epypa/build#1016\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest: cover config settings build paths by \u003ca href=\"https://github.com/terminalchai\"\u003e\u003ccode\u003e@​terminalchai\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/992\"\u003epypa/build#992\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd kind=(step, ) for root messages with * by \u003ca href=\"https://github.com/abitrolly\"\u003e\u003ccode\u003e@​abitrolly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/973\"\u003epypa/build#973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: correct changelog category ordering by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1017\"\u003epypa/build#1017\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(cli): show full dependency chain in missing deps error by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1019\"\u003epypa/build#1019\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: fully annotate by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1020\"\u003epypa/build#1020\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: lazy imports by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1021\"\u003epypa/build#1021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: adding more ruff codes by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1022\"\u003epypa/build#1022\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: improve annotations by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1023\"\u003epypa/build#1023\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 test(coverage): achieve 100% test coverage by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1018\"\u003epypa/build#1018\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: add ruff PT by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1025\"\u003epypa/build#1025\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: add ruff PYI by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1026\"\u003epypa/build#1026\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: add ruff SIM/RET by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1028\"\u003epypa/build#1028\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(env): strip PYTHONPATH from isolated builds by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1024\"\u003epypa/build#1024\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: use ruff ALL by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1029\"\u003epypa/build#1029\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e####################\n1.5.0 (2026-04-30)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.9 support - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1036\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003e--ignore-installed\u003c/code\u003e opt-in from the API via \u003ccode\u003efresh=True\u003c/code\u003e - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1056\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1033\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.4 (2026-04-22)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eFix release pipeline generating \u003ccode\u003eCHANGELOG.rst\u003c/code\u003e entries with inconsistent heading levels, which broke \u003ccode\u003esphinx -W\u003c/code\u003e\nand pinned Read the Docs \u003ccode\u003estable\u003c/code\u003e at 1.4.0 - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e1031\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRevert :pr:\u003ccode\u003e1039\u003c/code\u003e from build 1.4.3, no longer check direct_url (for now) - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1039\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--ignore-installed\u003c/code\u003e to pip install command to prevent issues with packages already present in the isolated\nbuild environment - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1037\u003c/code\u003e) (:issue:\u003ccode\u003e1040\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePartial revert of :pr:\u003ccode\u003e973\u003c/code\u003e, keeping log messages in one entry, multiple lines. (:issue:\u003ccode\u003e1044\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1048\u003c/code\u003e, :issue:\u003ccode\u003e1049\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.3 (2026-04-10)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/615d04cfc52ac3c1592a463f0afe484fee1cc368\"\u003e\u003ccode\u003e615d04c\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/776f702f84787525df62a5473dd13d4e2f45b977\"\u003e\u003ccode\u003e776f702\u003c/code\u003e\u003c/a\u003e fix: api should not ignore installed, only CLI (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/42da4c4b483563819fabdb8ecf2f6df53ed82123\"\u003e\u003ccode\u003e42da4c4\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1055\"\u003e#1055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b445cd2e736db5f80cde7d952d620a73cc26bf9d\"\u003e\u003ccode\u003eb445cd2\u003c/code\u003e\u003c/a\u003e chore: tox toml (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/c44c143876042ac6e1212a31684a3adca19beda4\"\u003e\u003ccode\u003ec44c143\u003c/code\u003e\u003c/a\u003e feat: drop 3.9, require 3.10+ (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/a9bb4560d213069b11c8068159f1de060abec5b7\"\u003e\u003ccode\u003ea9bb456\u003c/code\u003e\u003c/a\u003e build(deps): bump astral-sh/setup-uv from 8.0.0 to 8.1.0 in the actions group...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/cb3351155ce99902580022acb81dc0adb8124d53\"\u003e\u003ccode\u003ecb33511\u003c/code\u003e\u003c/a\u003e ci: try to improve release docs (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1051\"\u003e#1051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/70666a296c2e5bb7451f5a04eef259f6f943d0de\"\u003e\u003ccode\u003e70666a2\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/653d86586dea8b4e020086a276a15a27ac7bd25d\"\u003e\u003ccode\u003e653d865\u003c/code\u003e\u003c/a\u003e docs: fix issue with changelog generation (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1050\"\u003e#1050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/373b9ee171e2f16353365b1a9a02bc408b96ca73\"\u003e\u003ccode\u003e373b9ee\u003c/code\u003e\u003c/a\u003e tests: keep environment from leaking in Python 3.15 (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1049\"\u003e#1049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.4.0...1.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2026.1.4 to 2026.4.22\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/5dddfb072243da27adde885b73ba9b809c3224ca\"\u003e\u003ccode\u003e5dddfb0\u003c/code\u003e\u003c/a\u003e 2026.04.22 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/410\"\u003e#410\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/f99eccdaf87f7c10e521a58a700ca3eb94a0787e\"\u003e\u003ccode\u003ef99eccd\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 8.1.0 to 8.1.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/404\"\u003e#404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/918bed055f7291719512af186c1c24710f845660\"\u003e\u003ccode\u003e918bed0\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 7.0.0 to 7.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/405\"\u003e#405\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/0a49067eb434e53e1f8df5f7707d5dc05ef9def4\"\u003e\u003ccode\u003e0a49067\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish from 1.13.0 to 1.14.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/403\"\u003e#403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/acf6ce8e39e3b125f4349e11904295e4fe4c1bed\"\u003e\u003ccode\u003eacf6ce8\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 8.0.0 to 8.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/398\"\u003e#398\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/feb0ed26163a9417ea0fb8eb52d47e79fcf202ab\"\u003e\u003ccode\u003efeb0ed2\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 7.0.0 to 8.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/397\"\u003e#397\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d9c11a50369cc377abb40f7909ded3d6da4d98a3\"\u003e\u003ccode\u003ed9c11a5\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 6.0.0 to 7.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/396\"\u003e#396\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/8571a4ba5205675107f9026d0008ad2d7a2778bf\"\u003e\u003ccode\u003e8571a4b\u003c/code\u003e\u003c/a\u003e 2026.02.25 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/395\"\u003e#395\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6f7de00579d292af565bbb8a947643219794eb6d\"\u003e\u003ccode\u003e6f7de00\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 8.0.0 to 8.1.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/390\"\u003e#390\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a1de59b15105cad768afed4f066b36171134f04a\"\u003e\u003ccode\u003ea1de59b\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.1 to 6.0.2 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2026.01.04...2026.04.22\"\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.4 to 3.4.7\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.7\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.6...3.4.7\"\u003e3.4.7\u003c/a\u003e (2026-04-02)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePre-built optimized version using mypy[c] v1.20.\u003c/li\u003e\n\u003cli\u003eRelax \u003ccode\u003esetuptools\u003c/code\u003e constraint to \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;82.1\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCorrectly remove SIG remnant in utf-7 decoded string. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/718\"\u003e#718\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/716\"\u003e#716\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.6\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.5...3.4.6\"\u003e3.4.6\u003c/a\u003e (2026-03-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFlattened the logic in \u003ccode\u003echarset_normalizer.md\u003c/code\u003e for higher performance. Removed \u003ccode\u003eeligible(..)\u003c/code\u003e and \u003ccode\u003efeed(...)\u003c/code\u003e\nin favor of \u003ccode\u003efeed_info(...)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound for mypy[c] to 1.20, for our optimized version.\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eUNICODE_RANGES_COMBINED\u003c/code\u003e using Unicode blocks v17.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEdge case where noise difference between two candidates can be almost insignificant. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/672\"\u003e#672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCLI \u003ccode\u003e--normalize\u003c/code\u003e writing to wrong path when passing multiple files in. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/702\"\u003e#702\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFreethreaded pre-built wheels now shipped in PyPI starting with 3.14t. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/616\"\u003e#616\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.5\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.4...3.4.5\"\u003e3.4.5\u003c/a\u003e (2026-03-06)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003esetuptools\u003c/code\u003e constraint to \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=82\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.19.1\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd explicit link to lib math in our optimized build. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/692\"\u003e#692\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLogger level not restored correctly for empty byte sequences. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/701\"\u003e#701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTypeError when passing bytearray to from_bytes. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/703\"\u003e#703\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eApplied safe micro-optimizations in both our noise detector and language detector.\u003c/li\u003e\n\u003cli\u003eRewrote the \u003ccode\u003equery_yes_no\u003c/code\u003e function (inside CLI) to avoid using ambiguous licensed code.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ecd.py\u003c/code\u003e submodule into mypyc optional compilation to reduce further the performance impact.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003cbr /\u003e\nmypyc changed the usual binary output for the optimized wheel. Beware, especially if using PyInstaller or alike. See \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/714\"\u003ejawah/charset_normalizer#714\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.6...3.4.7\"\u003e3.4.7\u003c/a\u003e (2026-04-02)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePre-built optimized version using mypy[c] v1.20.\u003c/li\u003e\n\u003cli\u003eRelax \u003ccode\u003esetuptools\u003c/code\u003e constraint to \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;82.1\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCorrectly remove SIG remnant in utf-7 decoded string. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/718\"\u003e#718\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/716\"\u003e#716\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.5...3.4.6\"\u003e3.4.6\u003c/a\u003e (2026-03-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFlattened the logic in \u003ccode\u003echarset_normalizer.md\u003c/code\u003e for higher performance. Removed \u003ccode\u003eeligible(..)\u003c/code\u003e and \u003ccode\u003efeed(...)\u003c/code\u003e\nin favor of \u003ccode\u003efeed_info(...)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound for mypy[c] to 1.20, for our optimized version.\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eUNICODE_RANGES_COMBINED\u003c/code\u003e using Unicode blocks v17.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEdge case where noise difference between two candidates can be almost insignificant. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/672\"\u003e#672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCLI \u003ccode\u003e--normalize\u003c/code\u003e writing to wrong path when passing multiple files in. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/702\"\u003e#702\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFreethreaded pre-built wheels now shipped in PyPI starting with 3.14t. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/616\"\u003e#616\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.4...3.4.5\"\u003e3.4.5\u003c/a\u003e (2026-03-06)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003esetuptools\u003c/code\u003e constraint to \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=82\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.19.1\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd explicit link to lib math in our optimized build. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/692\"\u003e#692\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLogger level not restored correctly for empty byte sequences. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/701\"\u003e#701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTypeError when passing bytearray to from_bytes. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/703\"\u003e#703\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eApplied safe micro-optimizations in both our noise detector and language detector.\u003c/li\u003e\n\u003cli\u003eRewrote the \u003ccode\u003equery_yes_no\u003c/code\u003e function (inside CLI) to avoid using ambiguous licensed code.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ecd.py\u003c/code\u003e submodule into mypyc optional compilation to reduce further the performance impact.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0f07891bf516b5d5231f1bd4dd2d8da7d4d09a9a\"\u003e\u003ccode\u003e0f07891\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/729\"\u003e#729\u003c/a\u003e from jawah/release-3.4.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/fdbeb299479e8f4d737e4d227cd0b2bd5d273dc0\"\u003e\u003ccode\u003efdbeb29\u003c/code\u003e\u003c/a\u003e chore: update dev, and ci requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b66f922bfbdbdd9dd46af18a8964d4fb888756d4\"\u003e\u003ccode\u003eb66f922\u003c/code\u003e\u003c/a\u003e chore: add ft classifier\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f94249d0a2c712f2d03124f4de6b77f5e03aaa96\"\u003e\u003ccode\u003ef94249d\u003c/code\u003e\u003c/a\u003e chore: add test cases for utf_7 recent fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/95c866f6c984bbd043e7e3ed0628aa4f3f8d5a26\"\u003e\u003ccode\u003e95c866f\u003c/code\u003e\u003c/a\u003e chore: bump version to 3.4.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/4f429bb764c7e893f99bb4bceb60856da1baacfb\"\u003e\u003ccode\u003e4f429bb\u003c/code\u003e\u003c/a\u003e chore: bump mypy pre-commit to v1.20\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b579cd6cab9bd83aa3fc0ca169d4df022bf4888c\"\u003e\u003ccode\u003eb579cd6\u003c/code\u003e\u003c/a\u003e fix: correctly remove SIG remnant in utf-7 decoded string\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/58bf944a77cc0883fc46a6ee8edac3549fea5d59\"\u003e\u003ccode\u003e58bf944\u003c/code\u003e\u003c/a\u003e :arrow_up: Bump github/codeql-action from 4.32.4 to 4.35.1 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/728\"\u003e#728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/44cf8a1b676a2532a8f1694e62e4f4f98f9132e1\"\u003e\u003ccode\u003e44cf8a1\u003c/code\u003e\u003c/a\u003e :arrow_up: Bump actions/download-artifact from 8.0.0 to 8.0.1 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/726\"\u003e#726\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/362bc20073f737b1ba4ca2f68cffb0c4cc024d20\"\u003e\u003ccode\u003e362bc20\u003c/code\u003e\u003c/a\u003e :arrow_up: Bump docker/setup-qemu-action from 3.7.0 to 4.0.0 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/725\"\u003e#725\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.4...3.4.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.3.1 to 8.3.3\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.3\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.3 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.3/\"\u003ehttps://pypi.org/project/click/8.3.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-3\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-3\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/30\"\u003ehttps://github.com/pallets/click/milestone/30\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse :func:\u003ccode\u003eshlex.split\u003c/code\u003e to split pager and editor commands into \u003ccode\u003eargv\u003c/code\u003e\nlists for :class:\u003ccode\u003esubprocess.Popen\u003c/code\u003e, removing \u003ccode\u003eshell=True\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/1026\"\u003e#1026\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/1477\"\u003e#1477\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2775\"\u003e#2775\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eTypeError\u003c/code\u003e when rendering help for an option whose default value is\nan object that doesn't support equality comparison with strings, such as\n\u003ccode\u003esemver.Version\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3298\"\u003e#3298\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3299\"\u003e#3299\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix pager test pollution under parallel execution by using pytest's\n\u003ccode\u003etmp_path\u003c/code\u003e fixture instead of a shared temporary file path. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3238\"\u003e#3238\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values in a \u003ccode\u003edefault_map\u003c/code\u003e as absent, so they fall\nthrough to the next default source instead of being used as the value.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3224\"\u003e#3224\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3240\"\u003e#3240\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePatch \u003ccode\u003epdb.Pdb\u003c/code\u003e in \u003ccode\u003eCliRunner\u003c/code\u003e isolation so \u003ccode\u003epdb.set_trace()\u003c/code\u003e,\n\u003ccode\u003ebreakpoint()\u003c/code\u003e, and debuggers subclassing \u003ccode\u003epdb.Pdb\u003c/code\u003e (ipdb, pdbpp) can\ninteract with the real terminal instead of the captured I/O streams.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/654\"\u003e#654\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/824\"\u003e#824\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/843\"\u003e#843\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/951\"\u003e#951\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3235\"\u003e#3235\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd optional randomized parallel test execution using \u003ccode\u003epytest-randomly\u003c/code\u003e and\n\u003ccode\u003epytest-xdist\u003c/code\u003e to detect test pollution and race conditions. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3151\"\u003e#3151\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd contributor documentation for running stress tests, randomized\nparallel tests, and Flask smoke tests. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3151\"\u003e#3151\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3177\"\u003e#3177\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eShow custom \u003ccode\u003eshow_default\u003c/code\u003e string in prompts, matching the existing\nhelp text behavior. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2836\"\u003e#2836\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2837\"\u003e#2837\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3165\"\u003e#3165\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3262\"\u003e#3262\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3280\"\u003e#3280\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3328\"\u003e#3328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003edefault=True\u003c/code\u003e with boolean \u003ccode\u003eflag_value\u003c/code\u003e always returning the\n\u003ccode\u003eflag_value\u003c/code\u003e instead of \u003ccode\u003eTrue\u003c/code\u003e. The \u003ccode\u003edefault=True\u003c/code\u003e to \u003ccode\u003eflag_value\u003c/code\u003e\nsubstitution now only applies to non-boolean flags, where \u003ccode\u003eTrue\u003c/code\u003e acts as a\nsentinel meaning \u0026quot;activate this flag by default\u0026quot;. For boolean flags,\n\u003ccode\u003edefault=True\u003c/code\u003e is returned as a literal value. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3111\"\u003e#3111\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3239\"\u003e#3239\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark \u003ccode\u003emake_default_short_help\u003c/code\u003e as private API. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3189\"\u003e#3189\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3250\"\u003e#3250\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCliRunner\u003c/code\u003e's redirected streams now expose the original file descriptor\nvia \u003ccode\u003efileno()\u003c/code\u003e, so that \u003ccode\u003efaulthandler\u003c/code\u003e, \u003ccode\u003esubprocess\u003c/code\u003e, and other\nC-level consumers no longer crash with \u003ccode\u003eio.UnsupportedOperation\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/2865\"\u003e#2865\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange :class:\u003ccode\u003eParameterSource\u003c/code\u003e to an :class:\u003ccode\u003e~enum.IntEnum\u003c/code\u003e and reorder\nits members from most to least explicit, so values can be compared to\ncheck whether a parameter was explicitly provided. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2879\"\u003e#2879\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3248\"\u003e#3248\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.3.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.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.3.2/\"\u003ehttps://pypi.org/project/click/8.3.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-2\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/29\"\u003ehttps://github.com/pallets/click/milestone/29\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.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-04-20\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse :func:\u003ccode\u003eshlex.split\u003c/code\u003e to split pager and editor commands into \u003ccode\u003eargv\u003c/code\u003e\nlists for :class:\u003ccode\u003esubprocess.Popen\u003c/code\u003e, removing \u003ccode\u003eshell=True\u003c/code\u003e.\n:issue:\u003ccode\u003e1026\u003c/code\u003e :pr:\u003ccode\u003e1477\u003c/code\u003e :pr:\u003ccode\u003e2775\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eTypeError\u003c/code\u003e when rendering help for an option whose default value is\nan object that doesn't support equality comparison with strings, such as\n\u003ccode\u003esemver.Version\u003c/code\u003e. :issue:\u003ccode\u003e3298\u003c/code\u003e :pr:\u003ccode\u003e3299\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix pager test pollution under parallel execution by using pytest's\n\u003ccode\u003etmp_path\u003c/code\u003e fixture instead of a shared temporary file path. :pr:\u003ccode\u003e3238\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values in a \u003ccode\u003edefault_map\u003c/code\u003e as absent, so they fall\nthrough to the next default source instead of being used as the value.\n:issue:\u003ccode\u003e3224\u003c/code\u003e :pr:\u003ccode\u003e3240\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ePatch \u003ccode\u003epdb.Pdb\u003c/code\u003e in \u003ccode\u003eCliRunner\u003c/code\u003e isolation so \u003ccode\u003epdb.set_trace()\u003c/code\u003e,\n\u003ccode\u003ebreakpoint()\u003c/code\u003e, and debuggers subclassing \u003ccode\u003epdb.Pdb\u003c/code\u003e (ipdb, pdbpp) can\ninteract with the real terminal instead of the captured I/O streams.\n:issue:\u003ccode\u003e654\u003c/code\u003e :issue:\u003ccode\u003e824\u003c/code\u003e :issue:\u003ccode\u003e843\u003c/code\u003e :pr:\u003ccode\u003e951\u003c/code\u003e :pr:\u003ccode\u003e3235\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd optional randomized parallel test execution using \u003ccode\u003epytest-randomly\u003c/code\u003e and\n\u003ccode\u003epytest-xdist\u003c/code\u003e to detect test pollution and race conditions. :pr:\u003ccode\u003e3151\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd contributor documentation for running stress tests, randomized\nparallel tests, and Flask smoke tests. :pr:\u003ccode\u003e3151\u003c/code\u003e :pr:\u003ccode\u003e3177\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eShow custom \u003ccode\u003eshow_default\u003c/code\u003e string in prompts, matching the existing\nhelp text behavior. :issue:\u003ccode\u003e2836\u003c/code\u003e :pr:\u003ccode\u003e2837\u003c/code\u003e :pr:\u003ccode\u003e3165\u003c/code\u003e :pr:\u003ccode\u003e3262\u003c/code\u003e :pr:\u003ccode\u003e3280\u003c/code\u003e\n:pr:\u003ccode\u003e3328\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003edefault=True\u003c/code\u003e with boolean \u003ccode\u003eflag_value\u003c/code\u003e always returning the\n\u003ccode\u003eflag_value\u003c/code\u003e instead of \u003ccode\u003eTrue\u003c/code\u003e. The \u003ccode\u003edefault=True\u003c/code\u003e to \u003ccode\u003eflag_value\u003c/code\u003e\nsubstitution now only applies to non-boolean flags, where \u003ccode\u003eTrue\u003c/code\u003e acts as a\nsentinel meaning \u0026quot;activate this flag by default\u0026quot;. For boolean flags,\n\u003ccode\u003edefault=True\u003c/code\u003e is returned as a literal value. :issue:\u003ccode\u003e3111\u003c/code\u003e :pr:\u003ccode\u003e3239\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark \u003ccode\u003emake_default_short_help\u003c/code\u003e as private API. :issue:\u003ccode\u003e3189\u003c/code\u003e :pr:\u003ccode\u003e3250\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCliRunner\u003c/code\u003e's redirected streams now expose the original file descriptor\nvia \u003ccode\u003efileno()\u003c/code\u003e, so that \u003ccode\u003efaulthandler\u003c/code\u003e, \u003ccode\u003esubprocess\u003c/code\u003e, and other\nC-level consumers no longer crash with \u003ccode\u003eio.UnsupportedOperation\u003c/code\u003e.\n:issue:\u003ccode\u003e2865\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eChange :class:\u003ccode\u003eParameterSource\u003c/code\u003e to an :class:\u003ccode\u003e~enum.IntEnum\u003c/code\u003e and reorder\nits members from most to least explicit, so values can be compared to\ncheck whether a parameter was explicitly provided. :issue:\u003ccode\u003e2879\u003c/code\u003e :pr:\u003ccode\u003e3248\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.3.2\u003c/h2\u003e\n\u003cp\u003eReleased 2026-04-02\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eflag_value\u003c/code\u003e when \u003ccode\u003eis_flag=False\u003c/code\u003e to allow such options to be\nused without an explicit value. :issue:\u003ccode\u003e3084\u003c/code\u003e :pr:\u003ccode\u003e3152\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when using \u003ccode\u003elookup_default()\u003c/code\u003e.\n:issue:\u003ccode\u003e3136\u003c/code\u003e :pr:\u003ccode\u003e3199\u003c/code\u003e :pr:\u003ccode\u003e3202\u003c/code\u003e :pr:\u003ccode\u003e3209\u003c/code\u003e :pr:\u003ccode\u003e3212\u003c/code\u003e :pr:\u003ccode\u003e3224\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/c06d2d0a6aee6bcc50bd8257be2a4a592f4e75d0\"\u003e\u003ccode\u003ec06d2d0\u003c/code\u003e\u003c/a\u003e Release 8.3.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/f1f191ecd2c790b161187c78e7c88440e9524e5c\"\u003e\u003ccode\u003ef1f191e\u003c/code\u003e\u003c/a\u003e Apply format guidelines to commits since latest 8.3.2 release (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3343\"\u003e#3343\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/bb59ba0fd279ca085d1113f0499b6a602ca31081\"\u003e\u003ccode\u003ebb59ba0\u003c/code\u003e\u003c/a\u003e Apply format guidelines to commits since latest 8.3.2 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/4a352253c9ff013e36d11e4a6820d36d00ff2cd4\"\u003e\u003ccode\u003e4a35225\u003c/code\u003e\u003c/a\u003e Reduce blast-radius of \u003ccode\u003eUNSET\u003c/code\u003e in \u003ccode\u003edefault_map\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3240\"\u003e#3240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/c07bb936de43fd303f9cfbefe248ab23fd2199c8\"\u003e\u003ccode\u003ec07bb93\u003c/code\u003e\u003c/a\u003e Merge branch 'stable' into unset-in-default-map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/c7e1ba8448cbcb2cdd9c1c7f4a592e863dcc3995\"\u003e\u003ccode\u003ec7e1ba8\u003c/code\u003e\u003c/a\u003e Reorder \u003ccode\u003eParameterSource\u003c/code\u003e (\u003ca href=\"https://...\n\n_Description has been truncated_","html_url":"https://github.com/toniantunovi/lucidshark/pull/111","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/toniantunovi%2Flucidshark/issues/111","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/111/packages"}},{"old_version":"1.2.2.post1","new_version":"1.5.0","update_type":"minor","path":null,"pr_created_at":"2026-05-08T21:42:28.000Z","version_change":"1.2.2.post1 → 1.5.0","issue":{"uuid":"4409576139","node_id":"PR_kwDONrwnDc7ZslCF","number":581,"state":"closed","title":"chore(deps): bump the production group across 1 directory with 52 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":5,"pull_request":true,"closed_at":"2026-05-29T23:35:55.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-08T21:42:28.000Z","updated_at":"2026-05-29T23:35:57.000Z","time_to_close":1821207,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"production","update_count":52,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.13.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"build","old_version":"1.2.2.post1","new_version":"1.5.0","repository_url":"https://github.com/pypa/build"},{"name":"certifi","old_version":"2025.1.31","new_version":"2026.4.22","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.7","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.3","repository_url":"https://github.com/pallets/click"},{"name":"cryptography","old_version":"46.0.7","new_version":"48.0.0","repository_url":"https://github.com/pyca/cryptography"},{"name":"dnspython","old_version":"2.7.0","new_version":"2.8.0","repository_url":"https://github.com/rthalley/dnspython"},{"name":"email-validator","old_version":"2.2.0","new_version":"2.3.0","repository_url":"https://github.com/JoshData/python-email-validator"},{"name":"exceptiongroup","old_version":"1.2.2","new_version":"1.3.1","repository_url":"https://github.com/agronholm/exceptiongroup"},{"name":"fastapi","old_version":"0.120.3","new_version":"0.136.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"fastapi-cli","old_version":"0.0.7","new_version":"0.0.24","repository_url":"https://github.com/fastapi/fastapi-cli"},{"name":"fastapi-keycloak-middleware","old_version":"1.2.0","new_version":"1.6.0"},{"name":"greenlet","old_version":"3.1.1","new_version":"3.5.0","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"httptools","old_version":"0.6.4","new_version":"0.7.1","repository_url":"https://github.com/MagicStack/httptools"},{"name":"idna","old_version":"3.10","new_version":"3.13","repository_url":"https://github.com/kjd/idna"},{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"jwcrypto","old_version":"1.5.6","new_version":"1.5.7","repository_url":"https://github.com/latchset/jwcrypto"},{"name":"markdown-it-py","old_version":"3.0.0","new_version":"4.2.0","repository_url":"https://github.com/executablebooks/markdown-it-py"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"packaging","old_version":"24.2","new_version":"26.2","repository_url":"https://github.com/pypa/packaging"},{"name":"pluggy","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pluggy"},{"name":"psycopg2-binary","old_version":"2.9.10","new_version":"2.9.12","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"pycparser","old_version":"2.22","new_version":"3.0","repository_url":"https://github.com/eliben/pycparser"},{"name":"pydantic","old_version":"2.11.2","new_version":"2.13.4","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-core","old_version":"2.33.1","new_version":"2.46.4","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pytest-asyncio","old_version":"0.15.1","new_version":"1.3.0","repository_url":"https://github.com/pytest-dev/pytest-asyncio"},{"name":"python-multipart","old_version":"0.0.26","new_version":"0.0.27","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"requests","old_version":"2.33.0","new_version":"2.33.1","repository_url":"https://github.com/psf/requests"},{"name":"rfc3986","old_version":"1.5.0","new_version":"2.0.0","repository_url":"https://github.com/python-hyper/rfc3986"},{"name":"rich","old_version":"14.0.0","new_version":"15.0.0","repository_url":"https://github.com/Textualize/rich"},{"name":"rich-toolkit","old_version":"0.14.1","new_version":"0.19.7"},{"name":"sqlalchemy","old_version":"2.0.40","new_version":"2.0.49","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"sqlmodel","old_version":"0.0.22","new_version":"0.0.38","repository_url":"https://github.com/fastapi/sqlmodel"},{"name":"starlette","old_version":"0.49.1","new_version":"1.0.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"tomli","old_version":"2.0.1","new_version":"2.4.1","repository_url":"https://github.com/hukkin/tomli"},{"name":"typer","old_version":"0.15.2","new_version":"0.25.1","repository_url":"https://github.com/fastapi/typer"},{"name":"typing-extensions","old_version":"4.13.1","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.6.3","new_version":"2.7.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uvicorn","old_version":"0.30.6","new_version":"0.46.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"uvloop","old_version":"0.21.0","new_version":"0.22.1","repository_url":"https://github.com/MagicStack/uvloop"},{"name":"watchfiles","old_version":"1.0.4","new_version":"1.1.1","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"websockets","old_version":"14.2","new_version":"16.0","repository_url":"https://github.com/python-websockets/websockets"},{"name":"jsonschema","old_version":"4.25.1","new_version":"4.26.0","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"attrs","old_version":"25.3.0","new_version":"26.1.0","repository_url":"https://github.com/python-attrs/attrs"},{"name":"cached-property","old_version":"1.5.2","new_version":"2.0.1","repository_url":"https://github.com/pydanny/cached-property"},{"name":"filelock","old_version":"3.20.3","new_version":"3.29.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"httpx","old_version":"0.26.0","new_version":"0.28.1","repository_url":"https://github.com/encode/httpx"},{"name":"python-keycloak","old_version":"4.7.3","new_version":"7.1.1","repository_url":"https://github.com/marcospereirampj/python-keycloak"},{"name":"referencing","old_version":"0.36.2","new_version":"0.37.0","repository_url":"https://github.com/python-jsonschema/referencing"},{"name":"rpds-py","old_version":"0.27.1","new_version":"0.30.0","repository_url":"https://github.com/crate-py/rpds"},{"name":"typing-inspection","old_version":"0.4.1","new_version":"0.4.2","repository_url":"https://github.com/pydantic/typing-inspection"}],"path":null,"ecosystem":"pip"},"body":"Bumps the production group with 52 updates in the /ichub-backend directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.13.0` |\n| [build](https://github.com/pypa/build) | `1.2.2.post1` | `1.5.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2026.4.22` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.7` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.3` |\n| [cryptography](https://github.com/pyca/cryptography) | `46.0.7` | `48.0.0` |\n| [dnspython](https://github.com/rthalley/dnspython) | `2.7.0` | `2.8.0` |\n| [email-validator](https://github.com/JoshData/python-email-validator) | `2.2.0` | `2.3.0` |\n| [exceptiongroup](https://github.com/agronholm/exceptiongroup) | `1.2.2` | `1.3.1` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.120.3` | `0.136.1` |\n| [fastapi-cli](https://github.com/fastapi/fastapi-cli) | `0.0.7` | `0.0.24` |\n| fastapi-keycloak-middleware | `1.2.0` | `1.6.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.5.0` |\n| [httptools](https://github.com/MagicStack/httptools) | `0.6.4` | `0.7.1` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.13` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.0` |\n| [jwcrypto](https://github.com/latchset/jwcrypto) | `1.5.6` | `1.5.7` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `3.0.0` | `4.2.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [packaging](https://github.com/pypa/packaging) | `24.2` | `26.2` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [psycopg2-binary](https://github.com/psycopg/psycopg2) | `2.9.10` | `2.9.12` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `3.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.2` | `2.13.4` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.33.1` | `2.46.4` |\n| [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) | `0.15.1` | `1.3.0` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.26` | `0.0.27` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [requests](https://github.com/psf/requests) | `2.33.0` | `2.33.1` |\n| [rfc3986](https://github.com/python-hyper/rfc3986) | `1.5.0` | `2.0.0` |\n| [rich](https://github.com/Textualize/rich) | `14.0.0` | `15.0.0` |\n| rich-toolkit | `0.14.1` | `0.19.7` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.40` | `2.0.49` |\n| [sqlmodel](https://github.com/fastapi/sqlmodel) | `0.0.22` | `0.0.38` |\n| [starlette](https://github.com/Kludex/starlette) | `0.49.1` | `1.0.0` |\n| [tomli](https://github.com/hukkin/tomli) | `2.0.1` | `2.4.1` |\n| [typer](https://github.com/fastapi/typer) | `0.15.2` | `0.25.1` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.13.1` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.6.3` | `2.7.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.30.6` | `0.46.0` |\n| [uvloop](https://github.com/MagicStack/uvloop) | `0.21.0` | `0.22.1` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.0.4` | `1.1.1` |\n| [websockets](https://github.com/python-websockets/websockets) | `14.2` | `16.0` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.25.1` | `4.26.0` |\n| [attrs](https://github.com/python-attrs/attrs) | `25.3.0` | `26.1.0` |\n| [cached-property](https://github.com/pydanny/cached-property) | `1.5.2` | `2.0.1` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.20.3` | `3.29.0` |\n| [httpx](https://github.com/encode/httpx) | `0.26.0` | `0.28.1` |\n| [python-keycloak](https://github.com/marcospereirampj/python-keycloak) | `4.7.3` | `7.1.1` |\n| [referencing](https://github.com/python-jsonschema/referencing) | `0.36.2` | `0.37.0` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.27.1` | `0.30.0` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.1` | `0.4.2` |\n\n\nUpdates `anyio` from 4.9.0 to 4.13.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.13.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ettl\u003c/code\u003e parameter to the \u003ccode\u003eanyio.functools.lru_cache\u003c/code\u003e wrapper (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1073\"\u003e#1073\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWidened the type annotations of file I/O streams to accept \u003ccode\u003eIO[bytes]\u003c/code\u003e instead of just \u003ccode\u003eBinaryIO\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1078\"\u003e#1078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path\u003c/code\u003e not being compatible with Python 3.15 due to the removal of \u003ccode\u003epathlib.Path.is_reserved()\u003c/code\u003e and the addition of \u003ccode\u003epathlib.Path.__vfspath__()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1061\"\u003e#1061\u003c/a\u003e; PR by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the \u003ccode\u003eBrokenResourceError\u003c/code\u003e raised by the asyncio \u003ccode\u003eSocketStream\u003c/code\u003e not having the original exception as its cause (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1055\"\u003e#1055\u003c/a\u003e; PR by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the \u003ccode\u003eTypeError\u003c/code\u003e raised when using \u0026quot;func\u0026quot; as a parameter name in \u003ccode\u003epytest.mark.parametrize\u003c/code\u003e when using the pytest plugin (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1068\"\u003e#1068\u003c/a\u003e; PR by \u003ca href=\"https://github.com/JohnnyDeuss\"\u003e\u003ccode\u003e@​JohnnyDeuss\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the pytest plugin not running tests that had the \u003ccode\u003eanyio\u003c/code\u003e marker added programmatically via \u003ccode\u003epytest_collection_modifyitems\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/422\"\u003e#422\u003c/a\u003e; PR by \u003ca href=\"https://github.com/chbndrhnns\"\u003e\u003ccode\u003e@​chbndrhnns\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed cancellation exceptions leaking from a \u003ccode\u003eCancelScope\u003c/code\u003e on asyncio when they are contained in an exception group alongside non-cancellation exceptions (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1091\"\u003e#1091\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\u003eCondition.wait()\u003c/code\u003e not passing on a notification when the task is cancelled but already received a notification\u003c/li\u003e\n\u003cli\u003eFixed inverted condition in the process pool shutdown phase which would cause still-running pooled processes not to be terminated (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1074\"\u003e#1074\u003c/a\u003e; PR by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\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\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/afbe93ca9d0c447adf26e9c1715ac20870622bf2\"\u003e\u003ccode\u003eafbe93c\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/33bdf2e4b4f40c2df178123746147a6d2471808d\"\u003e\u003ccode\u003e33bdf2e\u003c/code\u003e\u003c/a\u003e Rearranged the changelog entries\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/19e09e25bc5a23dd78a577d8c3909dd377057c78\"\u003e\u003ccode\u003e19e09e2\u003c/code\u003e\u003c/a\u003e Fixed inverted condition in _forcibly_shutdown_process_pool_on_exit (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1074\"\u003e#1074\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9369d80b9e8292f2a892a9d5c73923c6a28aa08c\"\u003e\u003ccode\u003e9369d80\u003c/code\u003e\u003c/a\u003e Fixed Condition.wait() not handing over notification when cancelled\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6f122abdc6f6b166c6b6ac27d36d55cdf8fa08e8\"\u003e\u003ccode\u003e6f122ab\u003c/code\u003e\u003c/a\u003e Fixed cancellation exceptions leaking from a \u003ccode\u003eCancelScope\u003c/code\u003e on asyncio when th...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/beaa45aff568a4020f2faf317321dd92f0e1f4a0\"\u003e\u003ccode\u003ebeaa45a\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1097\"\u003e#1097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/602f6606dcf3f37702686a4f3e161328c537b07f\"\u003e\u003ccode\u003e602f660\u003c/code\u003e\u003c/a\u003e Widened type annotations to accept IO[bytes] in file streams\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b5dcd45170701a756ba634197398f05d4710cab3\"\u003e\u003ccode\u003eb5dcd45\u003c/code\u003e\u003c/a\u003e Added note about erasing the template\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d68670b3b4e0917d4caff2de082e03220f3e05a1\"\u003e\u003ccode\u003ed68670b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1090\"\u003e#1090\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/fc17a22dd948e6a3d90d99908813f0010dfc3d2c\"\u003e\u003ccode\u003efc17a22\u003c/code\u003e\u003c/a\u003e tweak to_thread docs about abandon_on_cancel (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1088\"\u003e#1088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `build` from 1.2.2.post1 to 1.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/releases\"\u003ebuild's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: try to improve release docs by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1051\"\u003epypa/build#1051\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: drop 3.9, require 3.10+ by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1036\"\u003epypa/build#1036\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: tox toml by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1033\"\u003epypa/build#1033\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: api should not ignore installed, only CLI by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1056\"\u003epypa/build#1056\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.4...1.5.0\"\u003ehttps://github.com/pypa/build/compare/1.4.4...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.4.4\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(release): generate consistent CHANGELOG heading levels by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1032\"\u003epypa/build#1032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: move source links by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1034\"\u003epypa/build#1034\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erevert: drop PEP 660 change by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1039\"\u003epypa/build#1039\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: ignore installed when running pip by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1040\"\u003epypa/build#1040\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: revert part of \u003ca href=\"https://redirect.github.com/pypa/build/issues/973\"\u003e#973\u003c/a\u003e by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1044\"\u003epypa/build#1044\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: report coverage failure lines by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1046\"\u003epypa/build#1046\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: fix issue with uv run by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1048\"\u003epypa/build#1048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: reorganize testing docs for copy/paste by \u003ca href=\"https://github.com/abitrolly\"\u003e\u003ccode\u003e@​abitrolly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1043\"\u003epypa/build#1043\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: keep environment from leaking in Python 3.15 by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1049\"\u003epypa/build#1049\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix issue with changelog generation by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1050\"\u003epypa/build#1050\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.3...1.4.4\"\u003ehttps://github.com/pypa/build/compare/1.4.3...1.4.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.4.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(api): resolve thread-safety races in build API by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1015\"\u003epypa/build#1015\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(builder): validate backend-path entries exist on disk by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1016\"\u003epypa/build#1016\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest: cover config settings build paths by \u003ca href=\"https://github.com/terminalchai\"\u003e\u003ccode\u003e@​terminalchai\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/992\"\u003epypa/build#992\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd kind=(step, ) for root messages with * by \u003ca href=\"https://github.com/abitrolly\"\u003e\u003ccode\u003e@​abitrolly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/973\"\u003epypa/build#973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: correct changelog category ordering by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1017\"\u003epypa/build#1017\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(cli): show full dependency chain in missing deps error by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1019\"\u003epypa/build#1019\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: fully annotate by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1020\"\u003epypa/build#1020\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: lazy imports by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1021\"\u003epypa/build#1021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: adding more ruff codes by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1022\"\u003epypa/build#1022\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: improve annotations by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1023\"\u003epypa/build#1023\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 test(coverage): achieve 100% test coverage by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1018\"\u003epypa/build#1018\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: add ruff PT by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1025\"\u003epypa/build#1025\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: add ruff PYI by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1026\"\u003epypa/build#1026\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: add ruff SIM/RET by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1028\"\u003epypa/build#1028\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(env): strip PYTHONPATH from isolated builds by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1024\"\u003epypa/build#1024\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: use ruff ALL by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1029\"\u003epypa/build#1029\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e####################\n1.5.0 (2026-04-30)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.9 support - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1036\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003e--ignore-installed\u003c/code\u003e opt-in from the API via \u003ccode\u003efresh=True\u003c/code\u003e - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1056\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1033\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.4 (2026-04-22)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eFix release pipeline generating \u003ccode\u003eCHANGELOG.rst\u003c/code\u003e entries with inconsistent heading levels, which broke \u003ccode\u003esphinx -W\u003c/code\u003e\nand pinned Read the Docs \u003ccode\u003estable\u003c/code\u003e at 1.4.0 - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e1031\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRevert :pr:\u003ccode\u003e1039\u003c/code\u003e from build 1.4.3, no longer check direct_url (for now) - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1039\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--ignore-installed\u003c/code\u003e to pip install command to prevent issues with packages already present in the isolated\nbuild environment - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1037\u003c/code\u003e) (:issue:\u003ccode\u003e1040\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePartial revert of :pr:\u003ccode\u003e973\u003c/code\u003e, keeping log messages in one entry, multiple lines. (:issue:\u003ccode\u003e1044\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1048\u003c/code\u003e, :issue:\u003ccode\u003e1049\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.3 (2026-04-10)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/615d04cfc52ac3c1592a463f0afe484fee1cc368\"\u003e\u003ccode\u003e615d04c\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/776f702f84787525df62a5473dd13d4e2f45b977\"\u003e\u003ccode\u003e776f702\u003c/code\u003e\u003c/a\u003e fix: api should not ignore installed, only CLI (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/42da4c4b483563819fabdb8ecf2f6df53ed82123\"\u003e\u003ccode\u003e42da4c4\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1055\"\u003e#1055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b445cd2e736db5f80cde7d952d620a73cc26bf9d\"\u003e\u003ccode\u003eb445cd2\u003c/code\u003e\u003c/a\u003e chore: tox toml (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/c44c143876042ac6e1212a31684a3adca19beda4\"\u003e\u003ccode\u003ec44c143\u003c/code\u003e\u003c/a\u003e feat: drop 3.9, require 3.10+ (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/a9bb4560d213069b11c8068159f1de060abec5b7\"\u003e\u003ccode\u003ea9bb456\u003c/code\u003e\u003c/a\u003e build(deps): bump astral-sh/setup-uv from 8.0.0 to 8.1.0 in the actions group...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/cb3351155ce99902580022acb81dc0adb8124d53\"\u003e\u003ccode\u003ecb33511\u003c/code\u003e\u003c/a\u003e ci: try to improve release docs (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1051\"\u003e#1051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/70666a296c2e5bb7451f5a04eef259f6f943d0de\"\u003e\u003ccode\u003e70666a2\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/653d86586dea8b4e020086a276a15a27ac7bd25d\"\u003e\u003ccode\u003e653d865\u003c/code\u003e\u003c/a\u003e docs: fix issue with changelog generation (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1050\"\u003e#1050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/373b9ee171e2f16353365b1a9a02bc408b96ca73\"\u003e\u003ccode\u003e373b9ee\u003c/code\u003e\u003c/a\u003e tests: keep environment from leaking in Python 3.15 (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1049\"\u003e#1049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.2.2.post1...1.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2025.1.31 to 2026.4.22\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/5dddfb072243da27adde885b73ba9b809c3224ca\"\u003e\u003ccode\u003e5dddfb0\u003c/code\u003e\u003c/a\u003e 2026.04.22 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/410\"\u003e#410\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/f99eccdaf87f7c10e521a58a700ca3eb94a0787e\"\u003e\u003ccode\u003ef99eccd\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 8.1.0 to 8.1.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/404\"\u003e#404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/918bed055f7291719512af186c1c24710f845660\"\u003e\u003ccode\u003e918bed0\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 7.0.0 to 7.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/405\"\u003e#405\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/0a49067eb434e53e1f8df5f7707d5dc05ef9def4\"\u003e\u003ccode\u003e0a49067\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish from 1.13.0 to 1.14.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/403\"\u003e#403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/acf6ce8e39e3b125f4349e11904295e4fe4c1bed\"\u003e\u003ccode\u003eacf6ce8\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 8.0.0 to 8.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/398\"\u003e#398\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/feb0ed26163a9417ea0fb8eb52d47e79fcf202ab\"\u003e\u003ccode\u003efeb0ed2\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 7.0.0 to 8.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/397\"\u003e#397\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d9c11a50369cc377abb40f7909ded3d6da4d98a3\"\u003e\u003ccode\u003ed9c11a5\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 6.0.0 to 7.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/396\"\u003e#396\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/8571a4ba5205675107f9026d0008ad2d7a2778bf\"\u003e\u003ccode\u003e8571a4b\u003c/code\u003e\u003c/a\u003e 2026.02.25 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/395\"\u003e#395\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6f7de00579d292af565bbb8a947643219794eb6d\"\u003e\u003ccode\u003e6f7de00\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 8.0.0 to 8.1.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/390\"\u003e#390\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a1de59b15105cad768afed4f066b36171134f04a\"\u003e\u003ccode\u003ea1de59b\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.1 to 6.0.2 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.01.31...2026.04.22\"\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.7\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.7\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.6...3.4.7\"\u003e3.4.7\u003c/a\u003e (2026-04-02)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePre-built optimized version using mypy[c] v1.20.\u003c/li\u003e\n\u003cli\u003eRelax \u003ccode\u003esetuptools\u003c/code\u003e constraint to \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;82.1\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCorrectly remove SIG remnant in utf-7 decoded string. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/718\"\u003e#718\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/716\"\u003e#716\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.6\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.5...3.4.6\"\u003e3.4.6\u003c/a\u003e (2026-03-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFlattened the logic in \u003ccode\u003echarset_normalizer.md\u003c/code\u003e for higher performance. Removed \u003ccode\u003eeligible(..)\u003c/code\u003e and \u003ccode\u003efeed(...)\u003c/code\u003e\nin favor of \u003ccode\u003efeed_info(...)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound for mypy[c] to 1.20, for our optimized version.\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eUNICODE_RANGES_COMBINED\u003c/code\u003e using Unicode blocks v17.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEdge case where noise difference between two candidates can be almost insignificant. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/672\"\u003e#672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCLI \u003ccode\u003e--normalize\u003c/code\u003e writing to wrong path when passing multiple files in. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/702\"\u003e#702\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFreethreaded pre-built wheels now shipped in PyPI starting with 3.14t. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/616\"\u003e#616\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.5\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.4...3.4.5\"\u003e3.4.5\u003c/a\u003e (2026-03-06)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003esetuptools\u003c/code\u003e constraint to \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=82\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.19.1\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd explicit link to lib math in our optimized build. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/692\"\u003e#692\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLogger level not restored correctly for empty byte sequences. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/701\"\u003e#701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTypeError when passing bytearray to from_bytes. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/703\"\u003e#703\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eApplied safe micro-optimizations in both our noise detector and language detector.\u003c/li\u003e\n\u003cli\u003eRewrote the \u003ccode\u003equery_yes_no\u003c/code\u003e function (inside CLI) to avoid using ambiguous licensed code.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ecd.py\u003c/code\u003e submodule into mypyc optional compilation to reduce further the performance impact.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003cbr /\u003e\nmypyc changed the usual binary output for the optimized wheel. Beware, especially if using PyInstaller or alike. See \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/714\"\u003ejawah/charset_normalizer#714\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eVersion 3.4.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.3...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.6...3.4.7\"\u003e3.4.7\u003c/a\u003e (2026-04-02)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePre-built optimized version using mypy[c] v1.20.\u003c/li\u003e\n\u003cli\u003eRelax \u003ccode\u003esetuptools\u003c/code\u003e constraint to \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;82.1\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCorrectly remove SIG remnant in utf-7 decoded string. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/718\"\u003e#718\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/716\"\u003e#716\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.5...3.4.6\"\u003e3.4.6\u003c/a\u003e (2026-03-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFlattened the logic in \u003ccode\u003echarset_normalizer.md\u003c/code\u003e for higher performance. Removed \u003ccode\u003eeligible(..)\u003c/code\u003e and \u003ccode\u003efeed(...)\u003c/code\u003e\nin favor of \u003ccode\u003efeed_info(...)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound for mypy[c] to 1.20, for our optimized version.\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eUNICODE_RANGES_COMBINED\u003c/code\u003e using Unicode blocks v17.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEdge case where noise difference between two candidates can be almost insignificant. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/672\"\u003e#672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCLI \u003ccode\u003e--normalize\u003c/code\u003e writing to wrong path when passing multiple files in. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/702\"\u003e#702\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFreethreaded pre-built wheels now shipped in PyPI starting with 3.14t. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/616\"\u003e#616\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.4...3.4.5\"\u003e3.4.5\u003c/a\u003e (2026-03-06)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003esetuptools\u003c/code\u003e constraint to \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=82\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.19.1\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd explicit link to lib math in our optimized build. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/692\"\u003e#692\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLogger level not restored correctly for empty byte sequences. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/701\"\u003e#701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTypeError when passing bytearray to from_bytes. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/703\"\u003e#703\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eApplied safe micro-optimizations in both our noise detector and language detector.\u003c/li\u003e\n\u003cli\u003eRewrote the \u003ccode\u003equery_yes_no\u003c/code\u003e function (inside CLI) to avoid using ambiguous licensed code.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ecd.py\u003c/code\u003e submodule into mypyc optional compilation to reduce further the performance impact.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0f07891bf516b5d5231f1bd4dd2d8da7d4d09a9a\"\u003e\u003ccode\u003e0f07891\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/729\"\u003e#729\u003c/a\u003e from jawah/release-3.4.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/fdbeb299479e8f4d737e4d227cd0b2bd5d273dc0\"\u003e\u003ccode\u003efdbeb29\u003c/code\u003e\u003c/a\u003e chore: update dev, and ci requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b66f922bfbdbdd9dd46af18a8964d4fb888756d4\"\u003e\u003ccode\u003eb66f922\u003c/code\u003e\u003c/a\u003e chore: add ft classifier\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f94249d0a2c712f2d03124f4de6b77f5e03aaa96\"\u003e\u003ccode\u003ef94249d\u003c/code\u003e\u003c/a\u003e chore: add test cases for utf_7 recent fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/95c866f6c984bbd043e7e3ed0628aa4f3f8d5a26\"\u003e\u003ccode\u003e95c866f\u003c/code\u003e\u003c/a\u003e chore: bump version to 3.4.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/4f429bb764c7e893f99bb4bceb60856da1baacfb\"\u003e\u003ccode\u003e4f429bb\u003c/code\u003e\u003c/a\u003e chore: bump mypy pre-commit to v1.20\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/b579cd6cab9bd83aa3fc0ca169d4df022bf4888c\"\u003e\u003ccode\u003eb579cd6\u003c/code\u003e\u003c/a\u003e fix: correctly remove SIG remnant in utf-7 decoded string\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/58bf944a77cc0883fc46a6ee8edac3549fea5d59\"\u003e\u003ccode\u003e58bf944\u003c/code\u003e\u003c/a\u003e :arrow_up: Bump github/codeql-action from 4.32.4 to 4.35.1 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/728\"\u003e#728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/44cf8a1b676a2532a8f1694e62e4f4f98f9132e1\"\u003e\u003ccode\u003e44cf8a1\u003c/code\u003e\u003c/a\u003e :arrow_up: Bump actions/download-artifact from 8.0.0 to 8.0.1 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/726\"\u003e#726\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/362bc20073f737b1ba4ca2f68cffb0c4cc024d20\"\u003e\u003ccode\u003e362bc20\u003c/code\u003e\u003c/a\u003e :arrow_up: Bump docker/setup-qemu-action from 3.7.0 to 4.0.0 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/725\"\u003e#725\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.1...3.4.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.1.8 to 8.3.3\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.3\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.3 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.3/\"\u003ehttps://pypi.org/project/click/8.3.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-3\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-3\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/30\"\u003ehttps://github.com/pallets/click/milestone/30\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse :func:\u003ccode\u003eshlex.split\u003c/code\u003e to split pager and editor commands into \u003ccode\u003eargv\u003c/code\u003e\nlists for :class:\u003ccode\u003esubprocess.Popen\u003c/code\u003e, removing \u003ccode\u003eshell=True\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/1026\"\u003e#1026\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/1477\"\u003e#1477\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2775\"\u003e#2775\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eTypeError\u003c/code\u003e when rendering help for an option whose default value is\nan object that doesn't support equality comparison with strings, such as\n\u003ccode\u003esemver.Version\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3298\"\u003e#3298\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3299\"\u003e#3299\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix pager test pollution under parallel execution by using pytest's\n\u003ccode\u003etmp_path\u003c/code\u003e fixture instead of a shared temporary file path. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3238\"\u003e#3238\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values in a \u003ccode\u003edefault_map\u003c/code\u003e as absent, so they fall\nthrough to the next default source instead of being used as the value.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3224\"\u003e#3224\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3240\"\u003e#3240\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePatch \u003ccode\u003epdb.Pdb\u003c/code\u003e in \u003ccode\u003eCliRunner\u003c/code\u003e isolation so \u003ccode\u003epdb.set_trace()\u003c/code\u003e,\n\u003ccode\u003ebreakpoint()\u003c/code\u003e, and debuggers subclassing \u003ccode\u003epdb.Pdb\u003c/code\u003e (ipdb, pdbpp) can\ninteract with the real terminal instead of the captured I/O streams.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/654\"\u003e#654\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/824\"\u003e#824\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/843\"\u003e#843\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/951\"\u003e#951\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3235\"\u003e#3235\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd optional randomized parallel test execution using \u003ccode\u003epytest-randomly\u003c/code\u003e and\n\u003ccode\u003epytest-xdist\u003c/code\u003e to detect test pollution and race conditions. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3151\"\u003e#3151\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd contributor documentation for running stress tests, randomized\nparallel tests, and Flask smoke tests. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3151\"\u003e#3151\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3177\"\u003e#3177\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eShow custom \u003ccode\u003eshow_default\u003c/code\u003e string in prompts, matching the existing\nhelp text behavior. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2836\"\u003e#2836\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2837\"\u003e#2837\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3165\"\u003e#3165\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3262\"\u003e#3262\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3280\"\u003e#3280\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3328\"\u003e#3328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003edefault=True\u003c/code\u003e with boolean \u003ccode\u003eflag_value\u003c/code\u003e always returning the\n\u003ccode\u003eflag_value\u003c/code\u003e instead of \u003ccode\u003eTrue\u003c/code\u003e. The \u003ccode\u003edefault=True\u003c/code\u003e to \u003ccode\u003eflag_value\u003c/code\u003e\nsubstitution now only applies to non-boolean flags, where \u003ccode\u003eTrue\u003c/code\u003e acts as a\nsentinel meaning \u0026quot;activate this flag by default\u0026quot;. For boolean flags,\n\u003ccode\u003edefault=True\u003c/code\u003e is returned as a literal value. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3111\"\u003e#3111\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3239\"\u003e#3239\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark \u003ccode\u003emake_default_short_help\u003c/code\u003e as private API. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3189\"\u003e#3189\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3250\"\u003e#3250\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCliRunner\u003c/code\u003e's redirected streams now expose the original file descriptor\nvia \u003ccode\u003efileno()\u003c/code\u003e, so that \u003ccode\u003efaulthandler\u003c/code\u003e, \u003ccode\u003esubprocess\u003c/code\u003e, and other\nC-level consumers no longer crash with \u003ccode\u003eio.UnsupportedOperation\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/2865\"\u003e#2865\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange :class:\u003ccode\u003eParameterSource\u003c/code\u003e to an :class:\u003ccode\u003e~enum.IntEnum\u003c/code\u003e and reorder\nits members from most to least explicit, so values can be compared to\ncheck whether a parameter was explicitly provided. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2879\"\u003e#2879\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3248\"\u003e#3248\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.3.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.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.3.2/\"\u003ehttps://pypi.org/project/click/8.3.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-2\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/29\"\u003ehttps://github.com/pallets/click/milestone/29\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.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-04-20\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse :func:\u003ccode\u003eshlex.split\u003c/code\u003e to split pager and editor commands into \u003ccode\u003eargv\u003c/code\u003e\nlists for :class:\u003ccode\u003esubprocess.Popen\u003c/code\u003e, removing \u003ccode\u003eshell=True\u003c/code\u003e.\n:issue:\u003ccode\u003e1026\u003c/code\u003e :pr:\u003ccode\u003e1477\u003c/code\u003e :pr:\u003ccode\u003e2775\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eTypeError\u003c/code\u003e when rendering help for an option whose default value is\nan object that doesn't support equality comparison with strings, such as\n\u003ccode\u003esemver.Version\u003c/code\u003e. :issue:\u003ccode\u003e3298\u003c/code\u003e :pr:\u003ccode\u003e3299\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix pager test pollution under parallel execution by using pytest's\n\u003ccode\u003etmp_path\u003c/code\u003e fixture instead of a shared temporary file path. :pr:\u003ccode\u003e3238\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values in a \u003ccode\u003edefault_map\u003c/code\u003e as absent, so they fall\nthrough to the next default source instead of being used as the value.\n:issue:\u003ccode\u003e3224\u003c/code\u003e :pr:\u003ccode\u003e3240\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ePatch \u003ccode\u003epdb.Pdb\u003c/code\u003e in \u003ccode\u003eCliRunner\u003c/code\u003e isolation so \u003ccode\u003epdb.set_trace()\u003c/code\u003e,\n\u003ccode\u003ebreakpoint()\u003c/code\u003e, and debuggers subclassing \u003ccode\u003epdb.Pdb\u003c/code\u003e (ipdb, pdbpp) can\ninteract with the real terminal instead of the captured I/O streams.\n:issue:\u003ccode\u003e654\u003c/code\u003e :issue:\u003ccode\u003e824\u003c/code\u003e :issue:\u003ccode\u003e843\u003c/code\u003e :pr:\u003ccode\u003e951\u003c/code\u003e :pr:\u003ccode\u003e3235\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd optional randomized parallel test execution using \u003ccode\u003epytest-randomly\u003c/code\u003e and\n\u003ccode\u003epytest-xdist\u003c/code\u003e to detect test pollution and race conditions. :pr:\u003ccode\u003e3151\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd contributor documentation for running stress tests, randomized\nparallel tests, and Flask smoke tests. :pr:\u003ccode\u003e3151\u003c/code\u003e :pr:\u003ccode\u003e3177\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eShow custom \u003ccode\u003eshow_default\u003c/code\u003e string in prompts, matching the existing\nhelp text behavior. :issue:\u003ccode\u003e2836\u003c/code\u003e :pr:\u003ccode\u003e2837\u003c/code\u003e :pr:\u003ccode\u003e3165\u003c/code\u003e :pr:\u003ccode\u003e3262\u003c/code\u003e :pr:\u003ccode\u003e3280\u003c/code\u003e\n:pr:\u003ccode\u003e3328\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003edefault=True\u003c/code\u003e with boolean \u003ccode\u003eflag_value\u003c/code\u003e always returning the\n\u003ccode\u003eflag_value\u003c/code\u003e instead of \u003ccode\u003eTrue\u003c/code\u003e. The \u003ccode\u003edefault=True\u003c/code\u003e to \u003ccode\u003eflag_value\u003c/code\u003e\nsubstitution now only applies to non-boolean flags, where \u003ccode\u003eTrue\u003c/code\u003e acts as a\nsentinel meaning \u0026quot;activate this flag by default\u0026quot;. For boolean flags,\n\u003ccode\u003edefault=True\u003c/code\u003e is returned as a literal value. :issue:\u003ccode\u003e3111\u003c/code\u003e :pr:\u003ccode\u003e3239\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark \u003ccode\u003emake_default_short_help\u003c/code\u003e as private API. :issue:\u003ccode\u003e3189\u003c/code\u003e :pr:\u003ccode\u003e3250\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCliRunner\u003c/code\u003e's redirected streams now expose the original file descriptor\nvia \u003ccode\u003efileno()\u003c/code\u003e, so that \u003ccode\u003efaulthandler\u003c/code\u003e, \u003ccode\u003esubprocess\u003c/code\u003e, and other\nC-level consumers no longer crash with \u003ccode\u003eio.UnsupportedOperation\u003c/code\u003e.\n:issue:\u003ccode\u003e2865\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eChange :class:\u003ccode\u003eParameterSource\u003c/code\u003e to an :class:\u003ccode\u003e~enum.IntEnum\u003c/code\u003e and reorder\nits members from most to least explicit, so values can be compared to\ncheck whether a parameter was explicitly provided. :issue:\u003ccode\u003e2879\u003c/code\u003e :pr:\u003ccode\u003e3248\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.3.2\u003c/h2\u003e\n\u003cp\u003eReleased 2026-04-02\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eflag_value\u003c/code\u003e when \u003ccode\u003eis_flag=False\u003c/code\u003e to allow such options to be\nused without an explicit value. :issue:\u003ccode\u003e3084\u003c/code\u003e :pr:\u003ccode\u003e3152\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when using \u003ccode\u003elookup_default()\u003c/code\u003e.\n:issue:\u003ccode\u003e3136\u003c/code\u003e :pr:\u003ccode\u003e3199\u003c/code\u003e :pr:\u003ccode\u003e3202\u003c/code\u003e :pr:\u003ccode\u003e3209\u003c/code\u003e :pr:\u003ccode\u003e3212\u003c/code\u003e :pr:\u003ccode\u003e3224\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/c06d2d0a6aee6bcc50bd8257be2a4a592f4e75d0\"\u003e\u003ccode\u003ec06d2d0\u003c/code\u003e\u003c/a\u003e Release 8.3.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/f1f191ecd2c790b161187c78e7c88440e9524e5c\"\u003e\u003ccode\u003ef1f191e\u003c/code\u003e\u003c/a\u003e Apply format guidelines to commits since latest 8.3.2 release (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3343\"\u003e#3343\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/bb59ba0fd279ca085d1113f0499b6a602ca31081\"\u003e\u003ccode\u003ebb59ba0\u003c/code\u003e\u003c/a\u003e Apply format guidelines to commits since latest 8.3.2 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/4a352253c9ff013e36d11e4a6820d36d00ff2cd4\"\u003e\u003ccode\u003e4a35225\u003c/code\u003e\u003c/a\u003e Reduce blast-radius of \u003ccode\u003eUNSET\u003c/code\u003e in \u003ccode\u003edefault_map\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3240\"\u003e#3240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/c07bb936de43fd303f9cfbefe248ab23fd2199c8\"\u003e\u003ccode\u003ec07bb93\u003c/code\u003e\u003c/a\u003e Merge branch 'stable' into unset-in-default-map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/c7e1ba8448cbcb2cdd9c1c7f4a592e863dcc3995\"\u003e\u003ccode\u003ec7e1ba8\u003c/code\u003e\u003c/a\u003e Reorder \u003ccode\u003eParameterSource\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3248\"\u003e#3248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/76552ff1e8c85837f911fc34037e702ae4327eda\"\u003e\u003ccode\u003e76552ff\u003c/code\u003e\u003c/a\u003e Show default string in prompt (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3328\"\u003e#3328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/ac5cec5fe54e5a691e7bac17f441ce9498e0744c\"\u003e\u003ccode\u003eac5cec5\u003c/code\u003e\u003c/a\u003e Reorder ParameterSource from most to least explicit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/8c452e00e6772931b7071d9316b82b77e5b8f280\"\u003e\u003ccode\u003e8c452e0\u003c/code\u003e\u003c/a\u003e Merge branch 'stable' into show-default-string-in-prompt\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/8c95c73bd5ef89eac638f85f1904a104ba4b1a32\"\u003e\u003ccode\u003e8c95c73\u003c/code\u003e\u003c/a\u003e Reconcile default value passing and default activation (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3239\"\u003e#3239\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.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cryptography` from 46.0.7 to 48.0.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst\"\u003ecryptography's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e48.0.0 - 2026-05-04\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* **BACKWARDS INCOMPATIBLE:** Support for Python 3.8 has been removed.\n  ``cryptography`` now requires Python 3.9 or later.\n* **BACKWARDS INCOMPATIBLE:** Loading an X.509 CRL whose inner\n  ``TBSCertList.signature`` algorithm does not match the outer\n  ``signatureAlgorithm`` now raises ``ValueError``. Previously, such CRLs\n  were parsed successfully and only rejected during signature validation.\n* Added support for :doc:`/hazmat/primitives/asymmetric/mlkem` and\n  :doc:`/hazmat/primitives/asymmetric/mldsa` when using OpenSSL 3.5.0 or\n  later, in addition to the existing AWS-LC and BoringSSL support. This means\n  post-quantum algorithms are now available to users of our wheels.\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNote:\u003c/strong\u003e Going forward, we do not guarantee that all functionality\u003cbr /\u003e\nin \u003ccode\u003ecryptography\u003c/code\u003e will be available when building against\u003cbr /\u003e\nOpenSSL. See :doc:\u003ccode\u003e/statements/state-of-openssl\u003c/code\u003e for more information.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _v47-0-0:\u003c/p\u003e\n\u003cp\u003e47.0.0 - 2026-04-24\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.8 is deprecated and will be removed in the next\n\u003ccode\u003ecryptography\u003c/code\u003e release.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Support for binary elliptic curves\n(\u003ccode\u003eSECT*\u003c/code\u003e classes) has been removed. These curves are rarely used and\nhave additional security considerations that make them undesirable.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Support for OpenSSL 1.1.x has been removed.\nOpenSSL 3.0.0 or later is now required. LibreSSL, BoringSSL, and AWS-LC\ncontinue to be supported.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Dropped support for LibreSSL \u0026lt; 4.1.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e Loading keys with unsupported algorithms or\nkeys with unsupported explicit curve encodings now raises\n:class:\u003ccode\u003e~cryptography.exceptions.UnsupportedAlgorithm\u003c/code\u003e instead of\n\u003ccode\u003eValueError\u003c/code\u003e. This change affects\n:func:\u003ccode\u003e~cryptography.hazmat.primitives.serialization.load_pem_private_key\u003c/code\u003e,\n:func:\u003ccode\u003e~cryptography.hazmat.primitives.serialization.load_der_private_key\u003c/code\u003e,\n:func:\u003ccode\u003e~cryptography.hazmat.primitives.serialization.load_pem_public_key\u003c/code\u003e,\n:func:\u003ccode\u003e~cryptography.hazmat.primitives.serialization.load_der_public_key\u003c/code\u003e,\nand :meth:\u003ccode\u003e~cryptography.x509.Certificate.public_key\u003c/code\u003e when called on\ncertificates with unsupported public key algorithms.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBACKWARDS INCOMPATIBLE:\u003c/strong\u003e When parsing elliptic curve private keys, we now\nreject keys that incorrectly encode a private key of the wrong length because\nsuch keys are impossible to process in a constant-time manner. We do not\nbelieve keys with this problem are in wide use, however we may revert this\nchange based on the feedback we receive.\u003c/li\u003e\n\u003cli\u003eDeprecated passing 64-bit (8-byte) and 128-bit (16-byte) keys to\n:class:\u003ccode\u003e~cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES\u003c/code\u003e. In a\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/8e03e30e3aae01632a697e903e3593c924f0139d\"\u003e\u003ccode\u003e8e03e30\u003c/code\u003e\u003c/a\u003e bump for 48.0.0 release (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14796\"\u003e#14796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/295e0d254ef31ab864730aa41312ec355416ee71\"\u003e\u003ccode\u003e295e0d2\u003c/code\u003e\u003c/a\u003e Add AGENTS.md with CLAUDE.md symlink (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14794\"\u003e#14794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/104a2de19e268a433e6da92be9cb872dcf0003c8\"\u003e\u003ccode\u003e104a2de\u003c/code\u003e\u003c/a\u003e Bump BoringSSL, OpenSSL, AWS-LC in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14793\"\u003e#14793\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/67ec1e51988195e17993d2edef5258b27509b926\"\u003e\u003ccode\u003e67ec1e5\u003c/code\u003e\u003c/a\u003e call check_length early on AesSiv::encrypt (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14792\"\u003e#14792\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/b2da57a0d9e4bfd2b95364299091a18f74127b26\"\u003e\u003ccode\u003eb2da57a\u003c/code\u003e\u003c/a\u003e changelog for mldsa/mlkem for openssl (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14791\"\u003e#14791\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/3cf44adee25c368d4a136e072fa9f80465d91eb0\"\u003e\u003ccode\u003e3cf44ad\u003c/code\u003e\u003c/a\u003e ML-KEM OpenSSL support (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14781\"\u003e#14781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/2e31639666766f846fbab2c605879db0fa64fe83\"\u003e\u003ccode\u003e2e31639\u003c/code\u003e\u003c/a\u003e ML-DSA OpenSSL support (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14773\"\u003e#14773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/5affe5a286a986fdf512c4a5cb280d28a96c10e3\"\u003e\u003ccode\u003e5affe5a\u003c/code\u003e\u003c/a\u003e fix rust nightly clippy (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14790\"\u003e#14790\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/2e73ca448eaf64b6f0d4ffbb794cf96170cef5ec\"\u003e\u003ccode\u003e2e73ca4\u003c/code\u003e\u003c/a\u003e bump rust-openssl dep and update EcPoint::mul_generator to mul_generator2 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/1\"\u003e#1\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/82ebd3b9f49d49ad5fd8b4b1f1dd02487b6e1466\"\u003e\u003ccode\u003e82ebd3b\u003c/code\u003e\u003c/a\u003e Bump BoringSSL, OpenSSL, AWS-LC in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14785\"\u003e#14785\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/cryptography/compare/46.0.7...48.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `dnspython` from 2.7.0 to 2.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/rthalley/dnspython/releases\"\u003ednspython's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ednspython 2.8.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://dnspython.readthedocs.io/en/stable/whatsnew.html\"\u003eWhat's New\u003c/a\u003e for details.\u003c/p\u003e\n\u003cp\u003eThe minimum supported version of Python is 3.10.\u003c/p\u003e\n\u003cp\u003eMy thanks to the many people who have contributed to this release. Also thanks to my co-maintainers: Tomáš Křížek, Petr Špaček, and Brian Wellington.\u003c/p\u003e\n\u003cp\u003eThis release was published to PyPI using Trusted Publishing.\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/rthalley/dnspython/blob/main/doc/whatsnew.rst\"\u003ednspython's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.8.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003edns/btreezone.py provides another zone versioned implementation built on top of a\nB-tree.  It maintains DNSSEC sort order, labels nodes as delegation points or glue,\nand can find the \u0026quot;bounds\u0026quot; of a name (useful for DNSSEC responses).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003edns/query.py now provides make_socket(), make_ssl_socket(), and make_ssl_context()\nto make using persistent connections with the query code easier.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003edns/win32util.py now supports explicitly setting the configuration method used to get\nsystem dns info, using the set_config_method() function.   There is a new configuration\nmethod that uses the Win32 API, which can be set using\nset_config_method(ConfigMethod.Win32).  We are considering making the Win32 API\nthe default in the future as we believe it to be the most accurate.  Any feedback on\nit compared to the other methods is welcome.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe DSYNC record is now supported.  This type is still in draft stage at the IETF\nand is subject to change.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe minimum supported Python version is now 3.10.\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/rthalley/dnspython/commit/77fd94cd9716faf23e0a6e333f6568fc24284402\"\u003e\u003ccode\u003e77fd94c\u003c/code\u003e\u003c/a\u003e 2.8.0 versioning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/884f38345a8152342fe8ab5da8db9aab654051ba\"\u003e\u003ccode\u003e884f383\u003c/code\u003e\u003c/a\u003e update 2.8 branch workflows\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/1938fe331f97376bf91c028fbfb8c7588c1b84f4\"\u003e\u003ccode\u003e1938fe3\u003c/code\u003e\u003c/a\u003e update 2.8 branch workflows\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/a35d6925efe20744e8cf7545d19d03ba06e7ab6f\"\u003e\u003ccode\u003ea35d692\u003c/code\u003e\u003c/a\u003e 2.8.0rc1 prep\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/c862baaf0d0aa36d2e7003dfe226cd6ad4d827c4\"\u003e\u003ccode\u003ec862baa\u003c/code\u003e\u003c/a\u003e 2.8.0rc1 prep\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/0945d5923d58048c17325975f70f0738c87570b4\"\u003e\u003ccode\u003e0945d59\u003c/code\u003e\u003c/a\u003e more lint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/8fa6766d2f7a2431372fc912fb334e752290ebf2\"\u003e\u003ccode\u003e8fa6766\u003c/code\u003e\u003c/a\u003e lint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/641633503ee6b07bf382594ac04707072b90de18\"\u003e\u003ccode\u003e6416335\u003c/code\u003e\u003c/a\u003e Type syntax (\u003ca href=\"https://redirect.github.com/rthalley/dnspython/issues/1218\"\u003e#1218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/a4591447b7d6e38479bcddb14de3b69f314e7009\"\u003e\u003ccode\u003ea459144\u003c/code\u003e\u003c/a\u003e lint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rthalley/dnspython/commit/a0d5f172e89f30709b47b59fb0919d8cf137f611\"\u003e\u003ccode\u003ea0d5f17\u003c/code\u003e\u003c/a\u003e fix the all entries\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/rthalley/dnspython/compare/v2.7.0...v2.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `email-validator` from 2.2.0 to 2.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/JoshData/python-email-validator/releases\"\u003eemail-validator's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.3.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThe package name is changed from using an underscore (email_validator) to a dash (email-validator) to match PyPi's normalized package name.\u003c/li\u003e\n\u003cli\u003eThe library no longer checks that the local part is at most 64 characters because a more careful reading of RFC 5321 indicates the limit is optional and such email addresses have been found in the wild. However the check can be restored using a new \u003ccode\u003estrict=True\u003c/code\u003e parameter, and the overall 254 character email address length limit is still in place.\u003c/li\u003e\n\u003cli\u003eNew EmailSyntaxError messages are used for some exiting syntax errors related to @-sign homoglyphs and invalid characters in internationalized domains.\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003eallow_display_name=True\u003c/code\u003e, display names are now returned with Unicode NFC normalization.\u003c/li\u003e\n\u003cli\u003eTypeError is now raised if something other than str (or bytes) is passed as the email address.\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/JoshData/python-email-validator/blob/main/CHANGELOG.md\"\u003eemail-validator's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.3.0 (August 26, 2025)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThe package name is changed from using an underscore (email_validator) to a dash (email-validator) to match PyPi's normalized package name.\u003c/li\u003e\n\u003cli\u003eThe library no longer checks that the local part is at most 64 characters because a more careful reading of RFC 5321 indicates the limit is optional and such email addresses have been found in the wild. However the check can be restored using a new \u003ccode\u003estrict=True\u003c/code\u003e parameter, and the overall 254 character email address length limit is still in place.\u003c/li\u003e\n\u003cli\u003eNew EmailSyntaxError messages are used for some exiting syntax errors related to @-sign homoglyphs and invalid characters in internationalized domains.\u003c/li\u003e\n\u003cli\u003eWhen using \u003ccode\u003eallow_display_name=True\u003c/code\u003e, display names are now returned with Unicode NFC normalization.\u003c/li\u003e\n\u003cli\u003eTypeError is now raised if something other than str (or bytes) is passed as the email address.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/030a63a183a6a66450e98381ca9a23ab9769706a\"\u003e\u003ccode\u003e030a63a\u003c/code\u003e\u003c/a\u003e Version 2.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/e943a0f07f5c130b4a419e0cd79f705f36bf24fe\"\u003e\u003ccode\u003ee943a0f\u003c/code\u003e\u003c/a\u003e Raise TypeError when an invalid argument is passed for email, closes \u003ca href=\"https://redirect.github.com/JoshData/python-email-validator/issues/155\"\u003e#155\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/f90d256045dc1ccbcffd5514189267d14a9e3ea1\"\u003e\u003ccode\u003ef90d256\u003c/code\u003e\u003c/a\u003e Remove local part length check unless new strict flag is given, fixes \u003ca href=\"https://redirect.github.com/JoshData/python-email-validator/issues/158\"\u003e#158\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/98800bac023b8713351393a5043034065f1ea6cb\"\u003e\u003ccode\u003e98800ba\u003c/code\u003e\u003c/a\u003e Add explicit checks for internationalized domain name characters invalid unde...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/936aead3bf5c608f8561954e0d2955b7f97bfdad\"\u003e\u003ccode\u003e936aead\u003c/code\u003e\u003c/a\u003e Fix final syntax checks on normalized internationalized domains checking the ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/8043de49596f08d54a07e2bc7c442ced074216a6\"\u003e\u003ccode\u003e8043de4\u003c/code\u003e\u003c/a\u003e NFC-normalize display names per UTS \u003ca href=\"https://redirect.github.com/JoshData/python-email-validator/issues/39\"\u003e#39\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/bc08faa2a74b51a9e7ba7ff4f995c0b475cb5b12\"\u003e\u003ccode\u003ebc08faa\u003c/code\u003e\u003c/a\u003e Add one-off error messages for full-width-at and small-commercial-at which ar...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/a1c90ab58fb0f5d969a8351a68ca15bff068527c\"\u003e\u003ccode\u003ea1c90ab\u003c/code\u003e\u003c/a\u003e Split exceptions_types.py into exceptions.py and types.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/dbcf07cc5c8066c14b6dc58d2dbb4a1e582eeefd\"\u003e\u003ccode\u003edbcf07c\u003c/code\u003e\u003c/a\u003e Change package name from using underscore to dash to match PyPi normalized pa...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JoshData/python-email-validator/commit/7c22208ee5b82c377e960ddcea5293691eadc6cc\"\u003e\u003ccode\u003e7c22208\u003c/code\u003e\u003c/a\u003e Support ALLOW_DISPLAY_NAME and ALLOW_EMPTY_LOCAL in the CLI (\u003ca href=\"https://redirect.github.com/JoshData/python-email-validator/issues/145\"\u003e#145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/JoshData/python-email-validator/compare/v2.2.0...v2.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `exceptiongroup` from 1.2.2 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/agronholm/exceptiongroup/releases\"\u003eexceptiongroup's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.3.1\u003c...\n\n_Description has been truncated_","html_url":"https://github.com/eclipse-tractusx/industry-core-hub/pull/581","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-tractusx%2Findustry-core-hub/issues/581","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/581/packages"}},{"old_version":"1.4.0","new_version":"1.5.0","update_type":"minor","path":null,"pr_created_at":"2026-05-08T11:08:27.000Z","version_change":"1.4.0 → 1.5.0","issue":{"uuid":"4405898798","node_id":"PR_kwDOLzgXB87ZgWuw","number":731,"state":"open","title":"Bump the allpip group across 1 directory with 59 updates","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-08T11:08:27.000Z","updated_at":"2026-05-08T11:08:48.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"allpip","update_count":59,"packages":[{"name":"fastapi","old_version":"0.121.3","new_version":"0.136.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"alembic","old_version":"1.18.3","new_version":"1.18.4","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"pydantic","old_version":"2.11.9","new_version":"2.13.4","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.12.0","new_version":"2.14.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"psycopg2-binary","old_version":"2.9.11","new_version":"2.9.12","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"uvicorn","old_version":"0.35.0","new_version":"0.46.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"click","old_version":"8.3.1","new_version":"8.3.3","repository_url":"https://github.com/pallets/click"},{"name":"sqlalchemy","old_version":"2.0.46","new_version":"2.0.49","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"authlib","old_version":"1.6.11","new_version":"1.7.2","repository_url":"https://github.com/authlib/authlib"},{"name":"aiosqlite","old_version":"0.21.0","new_version":"0.22.1","repository_url":"https://github.com/omnilib/aiosqlite"},{"name":"asyncpg","old_version":"0.30.0","new_version":"0.31.0","repository_url":"https://github.com/MagicStack/asyncpg"},{"name":"async-lru","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/aio-libs/async-lru"},{"name":"poetry","old_version":"2.3.4","new_version":"2.4.0","repository_url":"https://github.com/python-poetry/poetry"},{"name":"urllib3","old_version":"2.6.3","new_version":"2.7.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"aenum","old_version":"3.1.16","new_version":"3.1.17","repository_url":"https://github.com/ethanfurman/aenum"},{"name":"coverage","old_version":"7.13.2","new_version":"7.13.5","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"playwright","old_version":"1.58.0","new_version":"1.59.0","repository_url":"https://github.com/microsoft/playwright-python"},{"name":"ruff","old_version":"0.14.14","new_version":"0.15.12","repository_url":"https://github.com/astral-sh/ruff"},{"name":"pre-commit","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"pyright","old_version":"1.1.408","new_version":"1.1.409","repository_url":"https://github.com/RobertCraigie/pyright-python"},{"name":"setuptools","old_version":"80.10.2","new_version":"82.0.1","repository_url":"https://github.com/pypa/setuptools"},{"name":"types-pyyaml","old_version":"6.0.12.20250915","new_version":"6.0.12.20260508","repository_url":"https://github.com/python/typeshed"},{"name":"anyio","old_version":"4.12.1","new_version":"4.13.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"blessed","old_version":"1.29.0","new_version":"1.39.0","repository_url":"https://github.com/jquast/blessed"},{"name":"build","old_version":"1.4.0","new_version":"1.5.0","repository_url":"https://github.com/pypa/build"},{"name":"certifi","old_version":"2026.1.4","new_version":"2026.4.22","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.4","new_version":"3.4.7","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"cryptography","old_version":"46.0.7","new_version":"48.0.0","repository_url":"https://github.com/pyca/cryptography"},{"name":"dulwich","old_version":"1.0.0","new_version":"1.2.1","repository_url":"https://github.com/dulwich/dulwich"},{"name":"filelock","old_version":"3.20.3","new_version":"3.29.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"findpython","old_version":"0.7.1","new_version":"0.8.0","repository_url":"https://github.com/frostming/findpython"},{"name":"fsspec","old_version":"2026.1.0","new_version":"2026.4.0","repository_url":"https://github.com/fsspec/filesystem_spec"},{"name":"greenlet","old_version":"3.3.1","new_version":"3.5.0","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"identify","old_version":"2.6.16","new_version":"2.6.19","repository_url":"https://github.com/pre-commit/identify"},{"name":"idna","old_version":"3.11","new_version":"3.13","repository_url":"https://github.com/kjd/idna"},{"name":"jaraco-context","old_version":"6.1.0","new_version":"6.1.2","repository_url":"https://github.com/jaraco/jaraco.context"},{"name":"json5","old_version":"0.13.0","new_version":"0.14.0","repository_url":"https://github.com/dpranke/pyjson5"},{"name":"mako","old_version":"1.3.10","new_version":"1.3.12","repository_url":"https://github.com/sqlalchemy/mako"},{"name":"more-itertools","old_version":"10.8.0","new_version":"11.0.2","repository_url":"https://github.com/more-itertools/more-itertools"},{"name":"ovld","old_version":"0.5.14","new_version":"0.5.15","repository_url":"https://github.com/breuleux/ovld"},{"name":"packaging","old_version":"26.0","new_version":"26.2","repository_url":"https://github.com/pypa/packaging"},{"name":"pathspec","old_version":"1.0.4","new_version":"1.1.1","repository_url":"https://github.com/cpburnz/python-pathspec"},{"name":"pbs-installer","old_version":"2026.1.27","new_version":"2026.5.4","repository_url":"https://github.com/frostming/pbs-installer"},{"name":"platformdirs","old_version":"4.5.1","new_version":"4.9.6","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"prometheus-client","old_version":"0.24.1","new_version":"0.25.0","repository_url":"https://github.com/prometheus/client_python"},{"name":"pyee","old_version":"13.0.0","new_version":"13.0.1","repository_url":"https://github.com/jfhbrook/pyee"},{"name":"rapidfuzz","old_version":"3.14.3","new_version":"3.14.5","repository_url":"https://github.com/rapidfuzz/RapidFuzz"},{"name":"regex","old_version":"2026.1.15","new_version":"2026.4.4","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"requests","old_version":"2.33.0","new_version":"2.33.1","repository_url":"https://github.com/psf/requests"},{"name":"starlette","old_version":"0.50.0","new_version":"0.52.1","repository_url":"https://github.com/Kludex/starlette"},{"name":"tqdm","old_version":"4.67.2","new_version":"4.67.3","repository_url":"https://github.com/tqdm/tqdm"},{"name":"trove-classifiers","old_version":"2026.1.14.14","new_version":"2026.5.7.17","repository_url":"https://github.com/pypa/trove-classifiers"},{"name":"virtualenv","old_version":"20.36.1","new_version":"21.3.1","repository_url":"https://github.com/pypa/virtualenv"},{"name":"wrapt","old_version":"2.1.0","new_version":"2.1.2","repository_url":"https://github.com/GrahamDumpleton/wrapt"}],"path":null,"ecosystem":"pip"},"body":"Bumps the allpip group with 54 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.121.3` | `0.136.1` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.18.3` | `1.18.4` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.11.9` | `2.13.4` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.12.0` | `2.14.0` |\n| [psycopg2-binary](https://github.com/psycopg/psycopg2) | `2.9.11` | `2.9.12` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.35.0` | `0.46.0` |\n| [click](https://github.com/pallets/click) | `8.3.1` | `8.3.3` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.46` | `2.0.49` |\n| [authlib](https://github.com/authlib/authlib) | `1.6.11` | `1.7.2` |\n| [aiosqlite](https://github.com/omnilib/aiosqlite) | `0.21.0` | `0.22.1` |\n| [asyncpg](https://github.com/MagicStack/asyncpg) | `0.30.0` | `0.31.0` |\n| [async-lru](https://github.com/aio-libs/async-lru) | `2.1.0` | `2.3.0` |\n| [poetry](https://github.com/python-poetry/poetry) | `2.3.4` | `2.4.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.6.3` | `2.7.0` |\n| [aenum](https://github.com/ethanfurman/aenum) | `3.1.16` | `3.1.17` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.2` | `7.13.5` |\n| [playwright](https://github.com/microsoft/playwright-python) | `1.58.0` | `1.59.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.14` | `0.15.12` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.5.1` | `4.6.0` |\n| [pyright](https://github.com/RobertCraigie/pyright-python) | `1.1.408` | `1.1.409` |\n| [setuptools](https://github.com/pypa/setuptools) | `80.10.2` | `82.0.1` |\n| [types-pyyaml](https://github.com/python/typeshed) | `6.0.12.20250915` | `6.0.12.20260508` |\n| [anyio](https://github.com/agronholm/anyio) | `4.12.1` | `4.13.0` |\n| [blessed](https://github.com/jquast/blessed) | `1.29.0` | `1.39.0` |\n| [build](https://github.com/pypa/build) | `1.4.0` | `1.5.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2026.1.4` | `2026.4.22` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.4` | `3.4.7` |\n| [cryptography](https://github.com/pyca/cryptography) | `46.0.7` | `48.0.0` |\n| [dulwich](https://github.com/dulwich/dulwich) | `1.0.0` | `1.2.1` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.20.3` | `3.29.0` |\n| [findpython](https://github.com/frostming/findpython) | `0.7.1` | `0.8.0` |\n| [fsspec](https://github.com/fsspec/filesystem_spec) | `2026.1.0` | `2026.4.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.3.1` | `3.5.0` |\n| [identify](https://github.com/pre-commit/identify) | `2.6.16` | `2.6.19` |\n| [idna](https://github.com/kjd/idna) | `3.11` | `3.13` |\n| [jaraco-context](https://github.com/jaraco/jaraco.context) | `6.1.0` | `6.1.2` |\n| [json5](https://github.com/dpranke/pyjson5) | `0.13.0` | `0.14.0` |\n| [mako](https://github.com/sqlalchemy/mako) | `1.3.10` | `1.3.12` |\n| [more-itertools](https://github.com/more-itertools/more-itertools) | `10.8.0` | `11.0.2` |\n| [ovld](https://github.com/breuleux/ovld) | `0.5.14` | `0.5.15` |\n| [packaging](https://github.com/pypa/packaging) | `26.0` | `26.2` |\n| [pathspec](https://github.com/cpburnz/python-pathspec) | `1.0.4` | `1.1.1` |\n| [pbs-installer](https://github.com/frostming/pbs-installer) | `2026.1.27` | `2026.5.4` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.5.1` | `4.9.6` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.24.1` | `0.25.0` |\n| [pyee](https://github.com/jfhbrook/pyee) | `13.0.0` | `13.0.1` |\n| [rapidfuzz](https://github.com/rapidfuzz/RapidFuzz) | `3.14.3` | `3.14.5` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2026.1.15` | `2026.4.4` |\n| [requests](https://github.com/psf/requests) | `2.33.0` | `2.33.1` |\n| [starlette](https://github.com/Kludex/starlette) | `0.50.0` | `0.52.1` |\n| [tqdm](https://github.com/tqdm/tqdm) | `4.67.2` | `4.67.3` |\n| [trove-classifiers](https://github.com/pypa/trove-classifiers) | `2026.1.14.14` | `2026.5.7.17` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.36.1` | `21.3.1` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `2.1.0` | `2.1.2` |\n\n\nUpdates `fastapi` from 0.121.3 to 0.136.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.136.1\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Update Pydantic v2 code to address deprecations. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15101\"\u003e#15101\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔨 Tweak translation script. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15174\"\u003e#15174\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump mkdocs-material from 9.7.1 to 9.7.6. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15408\"\u003e#15408\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump inline-snapshot from 0.31.1 to 0.32.6. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15409\"\u003e#15409\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pytest-codspeed from 4.3.0 to 4.4.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15407\"\u003e#15407\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pytest-cov from 7.0.0 to 7.1.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15406\"\u003e#15406\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump cloudflare/wrangler-action from 3.14.1 to 3.15.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15405\"\u003e#15405\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump mypy from 1.19.1 to 1.20.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15410\"\u003e#15410\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump python-dotenv from 1.2.1 to 1.2.2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15400\"\u003e#15400\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump starlette from 0.52.1 to 1.0.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15397\"\u003e#15397\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pygithub from 2.8.1 to 2.9.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15396\"\u003e#15396\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pyjwt from 2.12.0 to 2.12.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15393\"\u003e#15393\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump zizmor from 1.23.1 to 1.24.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15394\"\u003e#15394\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump strawberry-graphql from 0.312.3 to 0.314.3. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15395\"\u003e#15395\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump python-multipart from 0.0.22 to 0.0.26. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15360\"\u003e#15360\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump authlib from 1.6.9 to 1.6.11. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15373\"\u003e#15373\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump aiohttp from 3.13.3 to 3.13.4. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15282\"\u003e#15282\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pygments from 2.19.2 to 2.20.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15263\"\u003e#15263\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pymdown-extensions from 10.20.1 to 10.21.2. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15391\"\u003e#15391\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pillow from 12.1.1 to 12.2.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15333\"\u003e#15333\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump pytest from 9.0.2 to 9.0.3. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15334\"\u003e#15334\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/upload-artifact from 7.0.0 to 7.0.1. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15374\"\u003e#15374\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/cache from 5.0.4 to 5.0.5. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15385\"\u003e#15385\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Zuplo. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15369\"\u003e#15369\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔧 Update sponsors: remove Speakeasy. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15368\"\u003e#15368\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Add zizmor and fix audit findings. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15316\"\u003e#15316\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.136.0\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Support free-threaded Python 3.14t. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15149\"\u003e#15149\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.135.4\u003c/h2\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔥 Remove April Fool's \u003ccode\u003e@app.vibe()\u003c/code\u003e 🤪. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15363\"\u003e#15363\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ Bump cryptography from 46.0.5 to 46.0.7. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15314\"\u003e#15314\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump strawberry-graphql from 0.307.1 to 0.312.3. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15309\"\u003e#15309\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Add pre-commit hook to ensure latest release header has date. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15293\"\u003e#15293\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.135.3\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/fastapi/fastapi/commit/e54e5a8980ffa6d7ff68ee7b25a1c46036375521\"\u003e\u003ccode\u003ee54e5a8\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.136.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/9a8a5fd99902c3b80d4cc94b85e120e2b808825f\"\u003e\u003ccode\u003e9a8a5fd\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/7815a32f2ed177b8b786a48b3e0712c05b5c644f\"\u003e\u003ccode\u003e7815a32\u003c/code\u003e\u003c/a\u003e ⬆️ Update Pydantic v2 code to address deprecations (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15101\"\u003e#15101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ef1c927b0558d414e199a666833942a6fabb3a51\"\u003e\u003ccode\u003eef1c927\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/38039e12a86e67f2001b9b7d96c219691d6cb4af\"\u003e\u003ccode\u003e38039e1\u003c/code\u003e\u003c/a\u003e 🔨 Tweak translation script (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15174\"\u003e#15174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4fa826ce0a3b16884a04f51e5aac95d01790b599\"\u003e\u003ccode\u003e4fa826c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c39415673e621665fdb7bbdde69beba7eb1dfd12\"\u003e\u003ccode\u003ec394156\u003c/code\u003e\u003c/a\u003e ⬆ Bump mkdocs-material from 9.7.1 to 9.7.6 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15408\"\u003e#15408\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ae230ad2f9d90a4e3f6222ff1a5d6e8da41ec0ad\"\u003e\u003ccode\u003eae230ad\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d9eb39d1a1bf2f6e6e5d3a55088f61c712cb864e\"\u003e\u003ccode\u003ed9eb39d\u003c/code\u003e\u003c/a\u003e ⬆ Bump inline-snapshot from 0.31.1 to 0.32.6 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15409\"\u003e#15409\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/4f8b5d14d324ae8e15cfae8d85adb4186d4c2175\"\u003e\u003ccode\u003e4f8b5d1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.121.3...0.136.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `alembic` from 1.18.3 to 1.18.4\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.4\u003c/h1\u003e\n\u003cp\u003eReleased: February 10, 2026\u003c/p\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [operations]\u003c/strong\u003e Reverted the behavior of \u003ccode\u003eOperations.add_column()\u003c/code\u003e that would\nautomatically render the \u0026quot;PRIMARY KEY\u0026quot; keyword inline when a\n\u003ccode\u003eColumn\u003c/code\u003e with \u003ccode\u003eprimary_key=True\u003c/code\u003e is added. The automatic\nbehavior, added in version 1.18.2, is now opt-in via the new\n\u003ccode\u003eOperations.add_column.inline_primary_key\u003c/code\u003e parameter. This\nchange restores the ability to render a PostgreSQL SERIAL column, which is\nrequired to be \u003ccode\u003eprimary_key=True\u003c/code\u003e, while not impacting the ability to\nrender a separate primary key constraint. This also provides consistency\nwith the \u003ccode\u003eOperations.add_column.inline_references\u003c/code\u003e parameter and\ngives users explicit control over SQL generation.\u003c/p\u003e\n\u003cp\u003eTo render PRIMARY KEY inline, use the\n\u003ccode\u003eOperations.add_column.inline_primary_key\u003c/code\u003e parameter set to\n\u003ccode\u003eTrue\u003c/code\u003e:\u003c/p\u003e\n\u003cp\u003eop.add_column(\n\u0026quot;my_table\u0026quot;,\nColumn(\u0026quot;id\u0026quot;, Integer, primary_key=True),\ninline_primary_key=True\n)References: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1232\"\u003e#1232\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.9 to 2.13.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.13.4 2026-05-06\u003c/h2\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.3 2026-04-20\u003c/h2\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.2 2026-04-17\u003c/h2\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.1 2026-04-15\u003c/h2\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.data\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\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/pull/13079\"\u003e#13079\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.0...v2.13.1\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.0...v2.13.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.0 2026-04-13\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/v2.13.4/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.3\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.2\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.1\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.data\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\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/pull/13079\"\u003e#13079\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.0 (2026-04-13)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.0\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThe highlights of the v2.13 release are available in the \u003ca href=\"https://pydantic.dev/articles/pydantic-v2-13-release\"\u003eblog post\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/cf67d4b3193c3fe43ede18612ed62785eee11382\"\u003e\u003ccode\u003ecf67d4b\u003c/code\u003e\u003c/a\u003e Fix linting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/f0d8a214a5803036db46a56b1f62f1e56b81d662\"\u003e\u003ccode\u003ef0d8a21\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/5e3fe1d41a00f441204241c66078003ae0391f9a\"\u003e\u003ccode\u003e5e3fe1d\u003c/code\u003e\u003c/a\u003e Check for pydantic tag pattern in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7f9edcc2a191d2eaa9751220eb910914e716a686\"\u003e\u003ccode\u003e7f9edcc\u003c/code\u003e\u003c/a\u003e Document tagging conventions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b46a0c9b8a4dd967fda8ec1a92f6437076bf262c\"\u003e\u003ccode\u003eb46a0c9\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/50629c851e61d887d5420452c311ec6203f1f400\"\u003e\u003ccode\u003e50629c8\u003c/code\u003e\u003c/a\u003e Update to PyPy 7.3.22\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/8522ebb71e5e9a6f7188af5f009f01785b8cf725\"\u003e\u003ccode\u003e8522ebb\u003c/code\u003e\u003c/a\u003e Preserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a37f3aff090ca342dc5f48304889963530b993f8\"\u003e\u003ccode\u003ea37f3af\u003c/code\u003e\u003c/a\u003e Adapt \u003ccode\u003eMISSING\u003c/code\u003e sentinel test to work with unreleased \u003ccode\u003etyping_extensions\u003c/code\u003e ver...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/909259a9df660518033aa686b689f045a6eaf9d2\"\u003e\u003ccode\u003e909259a\u003c/code\u003e\u003c/a\u003e Remove Logfire example in documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2c4174c366606fc2dc46cb806833a080aefa77df\"\u003e\u003ccode\u003e2c4174c\u003c/code\u003e\u003c/a\u003e Bump libc from 0.2.155 to 0.2.185\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.11.9...v2.13.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic-settings` from 2.12.0 to 2.14.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic-settings/releases\"\u003epydantic-settings's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.14.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix parsing env vars into Optional Strict types by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/792\"\u003epydantic/pydantic-settings#792\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix RecursionError with mutually recursive models in CLI by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/794\"\u003epydantic/pydantic-settings#794\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix env_file from model_config ignored in CliApp.run() (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/795\"\u003e#795\u003c/a\u003e) by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/796\"\u003epydantic/pydantic-settings#796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependencies by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/798\"\u003epydantic/pydantic-settings#798\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Dependabot configuration by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/801\"\u003epydantic/pydantic-settings#801\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump samuelcolvin/check-python-version from 4.1 to 5 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/802\"\u003epydantic/pydantic-settings#802\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/upload-artifact from 4 to 7 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/pydantic/pydantic-settings/pull/803\"\u003epydantic/pydantic-settings#803\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 4 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/804\"\u003epydantic/pydantic-settings#804\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump astral-sh/setup-uv from 5 to 7 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/pydantic/pydantic-settings/pull/805\"\u003epydantic/pydantic-settings#805\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/setup-python from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/806\"\u003epydantic/pydantic-settings#806\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIgnore chardet and group GitHub Actions in Dependabot by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/808\"\u003epydantic/pydantic-settings#808\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact from 4 to 8 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/pydantic/pydantic-settings/pull/809\"\u003epydantic/pydantic-settings#809\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages 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/pydantic/pydantic-settings/pull/810\"\u003epydantic/pydantic-settings#810\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport reading .env files from FIFOs (e.g. 1Password Environments) by \u003ca href=\"https://github.com/JacobHayes\"\u003e\u003ccode\u003e@​JacobHayes\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/776\"\u003epydantic/pydantic-settings#776\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix AliasChoices ignored when changing provider priority by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/813\"\u003epydantic/pydantic-settings#813\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: resolve KeyError in run_subcommand for underscore field names by \u003ca href=\"https://github.com/bradykieffer\"\u003e\u003ccode\u003e@​bradykieffer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/799\"\u003epydantic/pydantic-settings#799\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages 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/pydantic/pydantic-settings/pull/814\"\u003epydantic/pydantic-settings#814\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eLiteral[numeric Enum]\u003c/code\u003e coercion for CLI and env vars by \u003ca href=\"https://github.com/m9810223\"\u003e\u003ccode\u003e@​m9810223\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/811\"\u003epydantic/pydantic-settings#811\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix nested discriminated unions not discovered by env/CLI providers by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/816\"\u003epydantic/pydantic-settings#816\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages 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/pydantic/pydantic-settings/pull/820\"\u003epydantic/pydantic-settings#820\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI ensure env nested max split internally. by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/821\"\u003epydantic/pydantic-settings#821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 4 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/824\"\u003epydantic/pydantic-settings#824\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMigrate \u003ccode\u003eboto3-stubs\u003c/code\u003e to \u003ccode\u003etypes-boto3\u003c/code\u003e by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/831\"\u003epydantic/pydantic-settings#831\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix CLI not recognizing field name with validate_by_name and AliasChoices by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/826\"\u003epydantic/pydantic-settings#826\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow customisation of the dotevn setting source to filter variables by \u003ca href=\"https://github.com/CaselIT\"\u003e\u003ccode\u003e@​CaselIT\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/832\"\u003epydantic/pydantic-settings#832\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages 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/pydantic/pydantic-settings/pull/833\"\u003epydantic/pydantic-settings#833\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIntroduce yamlfmt 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-settings/pull/836\"\u003epydantic/pydantic-settings#836\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump boto3 from 1.42.82 to 1.42.83 in the python-packages 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/pydantic/pydantic-settings/pull/837\"\u003epydantic/pydantic-settings#837\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIntroduce zizmor 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-settings/pull/838\"\u003epydantic/pydantic-settings#838\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix CliPositionalArg[list[CustomType]] crash for custom types by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/839\"\u003epydantic/pydantic-settings#839\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd note about Mypy plugin for \u003ccode\u003eBaseSettings.__init__()\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-settings/pull/842\"\u003epydantic/pydantic-settings#842\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ecli_ignore_unknown_args=True\u003c/code\u003e not working on subcommands by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/844\"\u003epydantic/pydantic-settings#844\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the python-packages group with 4 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/847\"\u003epydantic/pydantic-settings#847\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix CLI descriptions lost under \u003ccode\u003epython -OO\u003c/code\u003e by falling back to \u003ccode\u003ejson_schema_extra\u003c/code\u003e by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/843\"\u003epydantic/pydantic-settings#843\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare release 2.14.0 by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/848\"\u003epydantic/pydantic-settings#848\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/pydantic/pydantic-settings/pull/802\"\u003epydantic/pydantic-settings#802\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/JacobHayes\"\u003e\u003ccode\u003e@​JacobHayes\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/776\"\u003epydantic/pydantic-settings#776\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bradykieffer\"\u003e\u003ccode\u003e@​bradykieffer\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/799\"\u003epydantic/pydantic-settings#799\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/CaselIT\"\u003e\u003ccode\u003e@​CaselIT\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/832\"\u003epydantic/pydantic-settings#832\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-settings/compare/v2.13.1...v2.14.0\"\u003ehttps://github.com/pydantic/pydantic-settings/compare/v2.13.1...v2.14.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression for bool fields since 2.13.0 by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/784\"\u003epydantic/pydantic-settings#784\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix RecursionError with self-referential models in CliApp by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/783\"\u003epydantic/pydantic-settings#783\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/pydantic/pydantic-settings/commit/8916beeecc6d0510e3d0532a0ed839937400ddc3\"\u003e\u003ccode\u003e8916bee\u003c/code\u003e\u003c/a\u003e Prepare release 2.14.0 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/848\"\u003e#848\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/39e551c0910c85505b608ff85a103b2c9f7396c5\"\u003e\u003ccode\u003e39e551c\u003c/code\u003e\u003c/a\u003e Fix CLI descriptions lost under \u003ccode\u003epython -OO\u003c/code\u003e by falling back to `json_schema_...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/9ed7f48ea2c90f436a03b01f721fe6656c869b14\"\u003e\u003ccode\u003e9ed7f48\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 4 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/847\"\u003e#847\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/617c690fb16c95eb0fb98fc88c0d6d82b9af4fa9\"\u003e\u003ccode\u003e617c690\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003ecli_ignore_unknown_args=True\u003c/code\u003e not working on subcommands (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/844\"\u003e#844\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/577c05f7e8ac25904da2381db51ed4ddd4b3e4fe\"\u003e\u003ccode\u003e577c05f\u003c/code\u003e\u003c/a\u003e Add note about Mypy plugin for \u003ccode\u003eBaseSettings.__init__()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/842\"\u003e#842\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/2355bc54e9d442ca7916f02de28d0c936e75441c\"\u003e\u003ccode\u003e2355bc5\u003c/code\u003e\u003c/a\u003e Fix CliPositionalArg[list[CustomType]] crash for custom types (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/839\"\u003e#839\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/16bd6fd230d6280d52db6ce2a0ffef8f908cc89d\"\u003e\u003ccode\u003e16bd6fd\u003c/code\u003e\u003c/a\u003e Introduce zizmor (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/838\"\u003e#838\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/df8b239fe09ba712767bdf378bc90627df375f04\"\u003e\u003ccode\u003edf8b239\u003c/code\u003e\u003c/a\u003e Bump boto3 from 1.42.82 to 1.42.83 in the python-packages group (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/837\"\u003e#837\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/c5401a27999cd6c0e93925deb0660cd51013c8b1\"\u003e\u003ccode\u003ec5401a2\u003c/code\u003e\u003c/a\u003e Introduce yamlfmt (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/836\"\u003e#836\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/953e28e6cfe9a9e536375d771a4ffd48535a4ab2\"\u003e\u003ccode\u003e953e28e\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 3 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/833\"\u003e#833\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.12.0...v2.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psycopg2-binary` from 2.9.11 to 2.9.12\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-binary'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.12\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix infinite loop with malformed interval (:ticket:\u003ccode\u003e1835\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\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\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/3a6d9d6ddc6b53eaa80b712f5fa6b23abbdc38db\"\u003e\u003ccode\u003e3a6d9d6\u003c/code\u003e\u003c/a\u003e ci: include almalinux in whieel building\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/ebca6bf0f86bc6cbdc86de1eb3a53eaf49966d86\"\u003e\u003ccode\u003eebca6bf\u003c/code\u003e\u003c/a\u003e chore: bump to version 3.9.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/0196f02cc9512df8de3c941f87d27bda98f9f7af\"\u003e\u003ccode\u003e0196f02\u003c/code\u003e\u003c/a\u003e build(deps): bump pypa/cibuildwheel from 3.3.1 to 3.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/d157bdc2235a42dc1742936dbb0f5cfc8e4d2eb7\"\u003e\u003ccode\u003ed157bdc\u003c/code\u003e\u003c/a\u003e build(deps): bump docker/setup-qemu-action from 3 to 4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/7fccc0f5066a40dea530512abbf02621f4182b81\"\u003e\u003ccode\u003e7fccc0f\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 6 to 7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/d52a61eb2e6095fc1b9891bfcca44ebfac509e55\"\u003e\u003ccode\u003ed52a61e\u003c/code\u003e\u003c/a\u003e chore: bump dependency libraries\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/b231d726a01d55e07ec3620b2b82f4a2da37ba62\"\u003e\u003ccode\u003eb231d72\u003c/code\u003e\u003c/a\u003e chore: fix building binary images\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/6d76e8479f0f522c2e07ce0e2701030d8fd63785\"\u003e\u003ccode\u003e6d76e84\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg2/issues/1836\"\u003e#1836\u003c/a\u003e from psycopg/fix-1835\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/f7e314c7ab418ab9b9956e694956089a49c5c3b9\"\u003e\u003ccode\u003ef7e314c\u003c/code\u003e\u003c/a\u003e fix: overflow in malformed interval\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg2/commit/eb905c124b75f2a5183d22177b85af20914b0f17\"\u003e\u003ccode\u003eeb905c1\u003c/code\u003e\u003c/a\u003e docs: replace bare except clause with except Exception\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psycopg/psycopg2/compare/2.9.11...2.9.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn` from 0.35.0 to 0.46.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.46.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003ews_max_size\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2915\"\u003eKludex/uvicorn#2915\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003ews_ping_interval\u003c/code\u003e and \u003ccode\u003ews_ping_timeout\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2916\"\u003eKludex/uvicorn#2916\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ebytearray\u003c/code\u003e for incoming WebSocket message buffer in websockets-sansio by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2917\"\u003eKludex/uvicorn#2917\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.45.0...0.46.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.45.0...0.46.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.45.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve forwarded client ports in proxy headers middleware by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2903\"\u003eKludex/uvicorn#2903\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003eos.PathLike\u003c/code\u003e for \u003ccode\u003elog_config\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2905\"\u003eKludex/uvicorn#2905\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003elog_level\u003c/code\u003e strings case-insensitively by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2907\"\u003eKludex/uvicorn#2907\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRaise helpful \u003ccode\u003eImportError\u003c/code\u003e when PyYAML is missing for YAML log config by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2906\"\u003eKludex/uvicorn#2906\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert empty context for ASGI runs by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2911\"\u003eKludex/uvicorn#2911\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--reset-contextvars\u003c/code\u003e flag to isolate ASGI request context by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2912\"\u003eKludex/uvicorn#2912\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert \u0026quot;Emit \u003ccode\u003ehttp.disconnect\u003c/code\u003e on server shutdown for streaming responses\u0026quot; (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2829\"\u003e#2829\u003c/a\u003e) by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2913\"\u003eKludex/uvicorn#2913\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/Krishnachaitanyakc\"\u003e\u003ccode\u003e@​Krishnachaitanyakc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2870\"\u003eKludex/uvicorn#2870\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.44.0...0.45.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.44.0...0.45.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.44.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImplement websocket keepalive pings for websockets-sansio by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2888\"\u003eKludex/uvicorn#2888\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.43.0...0.44.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.43.0...0.44.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.43.0\u003c/h2\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEmit \u003ccode\u003ehttp.disconnect\u003c/code\u003e ASGI \u003ccode\u003ereceive()\u003c/code\u003e event on server shutting down for streaming responses (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2829\"\u003e#2829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse native \u003ccode\u003econtext\u003c/code\u003e parameter for \u003ccode\u003ecreate_task\u003c/code\u003e on Python 3.11+ (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2859\"\u003e#2859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop cast in ASGI types (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2875\"\u003e#2875\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.42.0...0.43.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.42.0...0.43.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.42.0\u003c/h2\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003ebytearray\u003c/code\u003e for request body accumulation to avoid O(n^2) allocation on fragmented bodies (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2845\"\u003e#2845\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixed\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.46.0 (April 23, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport \u003ccode\u003ews_max_size\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2915\"\u003e#2915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003ews_ping_interval\u003c/code\u003e and \u003ccode\u003ews_ping_timeout\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2916\"\u003e#2916\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003ebytearray\u003c/code\u003e for incoming WebSocket message buffer in \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2917\"\u003e#2917\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.45.0 (April 21, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--reset-contextvars\u003c/code\u003e flag to isolate ASGI request context (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2912\"\u003e#2912\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003eos.PathLike\u003c/code\u003e for \u003ccode\u003elog_config\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2905\"\u003e#2905\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003elog_level\u003c/code\u003e strings case-insensitively (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2907\"\u003e#2907\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRevert \u0026quot;Emit \u003ccode\u003ehttp.disconnect\u003c/code\u003e on server shutdown for streaming responses\u0026quot; (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2913\"\u003e#2913\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRevert \u0026quot;Explicitly start ASGI run with empty context\u0026quot; (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2911\"\u003e#2911\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve forwarded client ports in proxy headers middleware (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2903\"\u003e#2903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRaise helpful \u003ccode\u003eImportError\u003c/code\u003e when PyYAML is missing for YAML log config (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2906\"\u003e#2906\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.44.0 (April 6, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement websocket keepalive pings for websockets-sansio (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2888\"\u003e#2888\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.43.0 (April 3, 2026)\u003c/h2\u003e\n\u003cp\u003eYou can quit Uvicorn now. We heard you, \u003ca href=\"https://github.com/pamelafox\"\u003e\u003ccode\u003e@​pamelafox\u003c/code\u003e\u003c/a\u003e - all 47 of your Ctrl+C's (thanks for flagging it, and thanks to \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e for the fix 🙏). \u003ca href=\"https://x.com/pamelafox/status/2039097686155227623\"\u003eSee the tweet\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEmit \u003ccode\u003ehttp.disconnect\u003c/code\u003e ASGI \u003ccode\u003ereceive()\u003c/code\u003e event on server shutting down for streaming responses (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2829\"\u003e#2829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse native \u003ccode\u003econtext\u003c/code\u003e parameter for \u003ccode\u003ecreate_task\u003c/code\u003e on Python 3.11+ (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2859\"\u003e#2859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop cast in ASGI types (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2875\"\u003e#2875\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.42.0 (March 16, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003ebytearray\u003c/code\u003e for request body accumulation to avoid O(n^2) allocation on fragmented bodies (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2845\"\u003e#2845\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/b224045f5900b7f766743bcb16ba9fc3adea2606\"\u003e\u003ccode\u003eb224045\u003c/code\u003e\u003c/a\u003e Version 0.46.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2918\"\u003e#2918\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/7375b5bf66d962186d663e85615d4b4d956bf880\"\u003e\u003ccode\u003e7375b5b\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003ebytearray\u003c/code\u003e for incoming WebSocket message buffer in websockets-sansio (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/d438fb16fe2d23c7bbc2ca7094645cff1f116458\"\u003e\u003ccode\u003ed438fb1\u003c/code\u003e\u003c/a\u003e Support \u003ccode\u003ews_ping_interval\u003c/code\u003e and \u003ccode\u003ews_ping_timeout\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3e6b96446653d0156434bce529a14c80764c9eda\"\u003e\u003ccode\u003e3e6b964\u003c/code\u003e\u003c/a\u003e Support \u003ccode\u003ews_max_size\u003c/code\u003e in \u003ccode\u003ewsproto\u003c/code\u003e implementation (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2915\"\u003e#2915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/2c423bd82be169459ea254a61476de34767e0326\"\u003e\u003ccode\u003e2c423bd\u003c/code\u003e\u003c/a\u003e Version 0.45.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2914\"\u003e#2914\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/7f027f8e25e47668a9c2ce8b5c21b35054c48d02\"\u003e\u003ccode\u003e7f027f8\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Emit \u003ccode\u003ehttp.disconnect\u003c/code\u003e on server shutdown for streaming responses\u0026quot; (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/73a80c3cc87de269ed016e584a25e585ae6f2b44\"\u003e\u003ccode\u003e73a80c3\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003e--reset-contextvars\u003c/code\u003e flag to isolate ASGI request context (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2912\"\u003e#2912\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/45c0b568d38e9bf4f2f036bc2d79eb98b0e72f72\"\u003e\u003ccode\u003e45c0b56\u003c/code\u003e\u003c/a\u003e Revert empty context for ASGI runs (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2911\"\u003e#2911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/850d92656de0cb5859ee5f6ba252e19ad3d38989\"\u003e\u003ccode\u003e850d926\u003c/code\u003e\u003c/a\u003e Raise helpful \u003ccode\u003eImportError\u003c/code\u003e when PyYAML is missing for YAML log config (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2906\"\u003e#2906\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/fdcacb4b83bc686ea1ba9e50ffe5b8cfe49b3e00\"\u003e\u003ccode\u003efdcacb4\u003c/code\u003e\u003c/a\u003e Accept \u003ccode\u003elog_level\u003c/code\u003e strings case-insensitively (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2907\"\u003e#2907\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.35.0...0.46.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.3.1 to 8.3.3\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.3\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.3 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.3/\"\u003ehttps://pypi.org/project/click/8.3.3/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-3\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-3\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/30\"\u003ehttps://github.com/pallets/click/milestone/30\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse :func:\u003ccode\u003eshlex.split\u003c/code\u003e to split pager and editor commands into \u003ccode\u003eargv\u003c/code\u003e\nlists for :class:\u003ccode\u003esubprocess.Popen\u003c/code\u003e, removing \u003ccode\u003eshell=True\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/1026\"\u003e#1026\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/1477\"\u003e#1477\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2775\"\u003e#2775\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eTypeError\u003c/code\u003e when rendering help for an option whose default value is\nan object that doesn't support equality comparison with strings, such as\n\u003ccode\u003esemver.Version\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3298\"\u003e#3298\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3299\"\u003e#3299\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix pager test pollution under parallel execution by using pytest's\n\u003ccode\u003etmp_path\u003c/code\u003e fixture instead of a shared temporary file path. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3238\"\u003e#3238\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values in a \u003ccode\u003edefault_map\u003c/code\u003e as absent, so they fall\nthrough to the next default source instead of being used as the value.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3224\"\u003e#3224\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3240\"\u003e#3240\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePatch \u003ccode\u003epdb.Pdb\u003c/code\u003e in \u003ccode\u003eCliRunner\u003c/code\u003e isolation so \u003ccode\u003epdb.set_trace()\u003c/code\u003e,\n\u003ccode\u003ebreakpoint()\u003c/code\u003e, and debuggers subclassing \u003ccode\u003epdb.Pdb\u003c/code\u003e (ipdb, pdbpp) can\ninteract with the real terminal instead of the captured I/O streams.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/654\"\u003e#654\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/824\"\u003e#824\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/843\"\u003e#843\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/951\"\u003e#951\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3235\"\u003e#3235\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd optional randomized parallel test execution using \u003ccode\u003epytest-randomly\u003c/code\u003e and\n\u003ccode\u003epytest-xdist\u003c/code\u003e to detect test pollution and race conditions. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3151\"\u003e#3151\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd contributor documentation for running stress tests, randomized\nparallel tests, and Flask smoke tests. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3151\"\u003e#3151\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3177\"\u003e#3177\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eShow custom \u003ccode\u003eshow_default\u003c/code\u003e string in prompts, matching the existing\nhelp text behavior. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2836\"\u003e#2836\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2837\"\u003e#2837\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3165\"\u003e#3165\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3262\"\u003e#3262\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3280\"\u003e#3280\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3328\"\u003e#3328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003edefault=True\u003c/code\u003e with boolean \u003ccode\u003eflag_value\u003c/code\u003e always returning the\n\u003ccode\u003eflag_value\u003c/code\u003e instead of \u003ccode\u003eTrue\u003c/code\u003e. The \u003ccode\u003edefault=True\u003c/code\u003e to \u003ccode\u003eflag_value\u003c/code\u003e\nsubstitution now only applies to non-boolean flags, where \u003ccode\u003eTrue\u003c/code\u003e acts as a\nsentinel meaning \u0026quot;activate this flag by default\u0026quot;. For boolean flags,\n\u003ccode\u003edefault=True\u003c/code\u003e is returned as a literal value. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3111\"\u003e#3111\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3239\"\u003e#3239\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark \u003ccode\u003emake_default_short_help\u003c/code\u003e as private API. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3189\"\u003e#3189\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3250\"\u003e#3250\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCliRunner\u003c/code\u003e's redirected streams now expose the original file descriptor\nvia \u003ccode\u003efileno()\u003c/code\u003e, so that \u003ccode\u003efaulthandler\u003c/code\u003e, \u003ccode\u003esubprocess\u003c/code\u003e, and other\nC-level consumers no longer crash with \u003ccode\u003eio.UnsupportedOperation\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/2865\"\u003e#2865\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange :class:\u003ccode\u003eParameterSource\u003c/code\u003e to an :class:\u003ccode\u003e~enum.IntEnum\u003c/code\u003e and reorder\nits members from most to least explicit, so values can be compared to\ncheck whether a parameter was explicitly provided. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2879\"\u003e#2879\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3248\"\u003e#3248\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.3.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.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.3.2/\"\u003ehttps://pypi.org/project/click/8.3.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-2\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/29\"\u003ehttps://github.com/pallets/click/milestone/29\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.3\u003c/h2\u003e\n\u003cp\u003eReleased 2026-04-20\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse :func:\u003ccode\u003eshlex.split\u003c/code\u003e to split pager and editor commands into \u003ccode\u003eargv\u003c/code\u003e\nlists for :class:\u003ccode\u003esubprocess.Popen\u003c/code\u003e, removing \u003ccode\u003eshell=True\u003c/code\u003e.\n:issue:\u003ccode\u003e1026\u003c/code\u003e :pr:\u003ccode\u003e1477\u003c/code\u003e :pr:\u003ccode\u003e2775\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eTypeError\u003c/code\u003e when rendering help for an option whose default value is\nan object that doesn't support equality comparison with strings, such as\n\u003ccode\u003esemver.Version\u003c/code\u003e. :issue:\u003ccode\u003e3298\u003c/code\u003e :pr:\u003ccode\u003e3299\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix pager test pollution under parallel execution by using pytest's\n\u003ccode\u003etmp_path\u003c/code\u003e fixture instead of a shared temporary file path. :pr:\u003ccode\u003e3238\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values in a \u003ccode\u003edefault_map\u003c/code\u003e as absent, so they fall\nthrough to the next default source instead of being used as the value.\n:issue:\u003ccode\u003e3224\u003c/code\u003e :pr:\u003ccode\u003e3240\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ePatch \u003ccode\u003epdb.Pdb\u003c/code\u003e in \u003ccode\u003eCliRunner\u003c/code\u003e isolation so \u003ccode\u003epdb.set_trace()\u003c/code\u003e,\n\u003ccode\u003ebreakpoint()\u003c/code\u003e, and debuggers subclassing \u003ccode\u003epdb.Pdb\u003c/code\u003e (ipdb, pdbpp) can\ninteract with the real terminal instead of the captured I/O streams.\n:issue:\u003ccode\u003e654\u003c/code\u003e :issue:\u003ccode\u003e824\u003c/code\u003e :issue:\u003ccode\u003e843\u003c/code\u003e :pr:\u003ccode\u003e951\u003c/code\u003e :pr:\u003ccode\u003e3235\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd optional randomized parallel test execution using \u003ccode\u003epytest-randomly\u003c/code\u003e and\n\u003ccode\u003epytest-xdist\u003c/code\u003e to detect test pollution and race conditions. :pr:\u003ccode\u003e3151\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd contributor documentation for running stress tests, randomized\nparallel tests, and Flask smoke tests. :pr:\u003ccode\u003e3151\u003c/code\u003e :pr:\u003ccode\u003e3177\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eShow custom \u003ccode\u003eshow_default\u003c/code\u003e string in prompts, matching the existing\nhelp text behavior. :issue:\u003ccode\u003e2836\u003c/code\u003e :pr:\u003ccode\u003e2837\u003c/code\u003e :pr:\u003ccode\u003e3165\u003c/code\u003e :pr:\u003ccode\u003e3262\u003c/code\u003e :pr:\u003ccode\u003e3280\u003c/code\u003e\n:pr:\u003ccode\u003e3328\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003edefault=True\u003c/code\u003e with boolean \u003ccode\u003eflag_value\u003c/code\u003e always returning the\n\u003ccode\u003eflag_value\u003c/code\u003e instead of \u003ccode\u003eTrue\u003c/code\u003e. The \u003ccode\u003edefault=True\u003c/code\u003e to \u003ccode\u003eflag_value\u003c/code\u003e\nsubstitution now only applies to non-boolean flags, where \u003ccode\u003eTrue\u003c/code\u003e acts as a\nsentinel meaning \u0026quot;activate this flag by default\u0026quot;. For boolean flags,\n\u003ccode\u003edefault=True\u003c/code\u003e is returned as a literal value. :issue:\u003ccode\u003e3111\u003c/code\u003e :pr:\u003ccode\u003e3239\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMark \u003ccode\u003emake_default_short_help\u003c/code\u003e as private API. :issue:\u003ccode\u003e3189\u003c/code\u003e :pr:\u003ccode\u003e3250\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCliRunner\u003c/code\u003e's redirected streams now expose the original file descriptor\nvia \u003ccode\u003efileno()\u003c/code\u003e, so that \u003ccode\u003efaulthandler\u003c/code\u003e, \u003ccode\u003esubprocess\u003c/code\u003e, and other\nC-level consumers no longer crash with \u003ccode\u003eio.UnsupportedOperation\u003c/code\u003e.\n:issue:\u003ccode\u003e2865\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eChange :class:\u003ccode\u003eParameterSource\u003c/code\u003e to an :class:\u003ccode\u003e~enum.IntEnum\u003c/code\u003e and reorder\nits members from most to least explicit, so values can be compared to\ncheck whether a parameter was explicitly provided. :issue:\u003ccode\u003e2879\u003c/code\u003e :pr:\u003ccode\u003e3248\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 8.3.2\u003c/h2\u003e\n\u003cp\u003eReleased 2026-04-02\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eflag_value\u003c/code\u003e when \u003ccode\u003eis_flag=False\u003c/code\u003e to allow such options to be\nused without an explicit value. :issue:\u003ccode\u003e3084\u003c/code\u003e :pr:\u003ccode\u003e3152\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when using \u003ccode\u003elookup_default()\u003c/code\u003e.\n:issue:\u003ccode\u003e3136\u003c/code\u003e :pr:\u003ccode\u003e3199\u003c/code\u003e :pr:\u003ccode\u003e3202\u003c/code\u003e :pr:\u003ccode\u003e3209\u003c/code\u003e :pr:\u003ccode\u003e3212\u003c/code\u003e :pr:\u003ccode\u003e3224\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/c06d2d0a6aee6bcc50bd8257be2a4a592f4e75d0\"\u003e\u003ccode\u003ec06d2d0\u003c/code\u003e\u003c/a\u003e Release 8.3.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/f1f191ecd2c790b161187c78e7c88440e9524e5c\"\u003e\u003ccode\u003ef1f191e\u003c/code\u003e\u003c/a\u003e Apply format guidelines to commits since latest 8.3.2 release (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3343\"\u003e#3343\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/bb59ba0fd279ca085d1113f0499b6a602ca31081\"\u003e\u003ccode\u003ebb59ba0\u003c/code\u003e\u003c/a\u003e Apply format guidelines to commits since latest 8.3.2 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/4a352253c9ff013e36d11e4a6820d36d00ff2cd4\"\u003e\u003ccode\u003e4a35225\u003c/code\u003e\u003c/a\u003e Reduce blast-radius of \u003ccode\u003eUNSET\u003c/code\u003e in \u003ccode\u003edefault_map\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3240\"\u003e#3240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/c07bb936de43fd303f9cfbefe248ab23fd2199c8\"\u003e\u003ccode\u003ec07bb93\u003c/code\u003e\u003c/a\u003e Merge branch 'stable' into unset-in-default-map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/c7e1ba8448cbcb2cdd9c1c7f4a592e863dcc3995\"\u003e\u003ccode\u003ec7e1ba8\u003c/code\u003e\u003c/a\u003e Reorder \u003ccode\u003eParameterSource\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3248\"\u003e#3248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/76552ff1e8c85837f911fc34037e702ae4327eda\"\u003e\u003ccode\u003e76552ff\u003c/code\u003e\u003c/a\u003e Show default string in prompt (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3328\"\u003e#3328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/ac5cec5fe54e5a691e7bac17f441ce9498e0744c\"\u003e\u003ccode\u003eac5cec5\u003c/code\u003e\u003c/a\u003e Reorder ParameterSource from most to least explicit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/8c452e00e6772931b7071d9316b82b77e5b8f280\"\u003e\u003ccode\u003e8c452e0\u003c/code\u003e\u003c/a\u003e Merge branch 'stable' into show-default-string-in-prompt\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/8c95c73bd5ef89eac638f85f1904a104ba4b1a32\"\u003e\u003ccode\u003e8c95c73\u003c/code\u003e\u003c/a\u003e Reconcile default value passing and default activation (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3239\"\u003e#3239\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.3.1...8.3.3\"\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.46 to 2.0.49\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.49\u003c/h1\u003e\n\u003cp\u003eReleased: April 3, 2026\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 \u003ccode\u003e_orm.Session.get()\u003c/code\u003e would bypass the identity map\nand emit unnecessary SQL when \u003ccode\u003ewith_for_update=False\u003c/code\u003e was passed,\nrather than treating it equivalently to the default of \u003ccode\u003eNone\u003c/code\u003e.\nPull request courtesy of Joshua Swanson.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13176\"\u003e#13176\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 chained \u003ccode\u003e_orm.joinedload()\u003c/code\u003e options would not be\napplied correctly when the final relationship in the chain is declared on a\nbase mapper and accessed through a subclass mapper in a\n\u003ccode\u003e_orm.with_polymorphic()\u003c/code\u003e query. The path registry now correctly\ncomputes the natural path when a property declared on a base class is\naccessed through a path containing a subclass mapper, ensuring the loader\noption can be located during query compilation.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13193\"\u003e#13193\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug] [inheritance]\u003c/strong\u003e Fixed issue where using \u003ccode\u003e_orm.Load.options()\u003c/code\u003e to apply a chained loader\noption such as \u003ccode\u003e_orm.joinedload()\u003c/code\u003e or \u003ccode\u003e_orm.selectinload()\u003c/code\u003e with\n\u003ccode\u003e_orm.PropComparator.of_type()\u003c/code\u003e for a polymorphic relationship would\nnot generate the necessary clauses for the polymorphic subclasses. The\npolymorphic loading strategy is now correctly propagated when using a call\nsuch as \u003ccode\u003ejoinedload(A.b).options(joinedload(B.c.of_type(poly)))\u003c/code\u003e to match\nthe behavior of direct chaining e.g.\n\u003ccode\u003ejoinedload(A.b).joinedload(B.c.of_type(poly))\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13202\"\u003e#13202\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug] [inheritance]\u003c/strong\u003e Fixed issue where using chained loader options such as\n\u003ccode\u003e_orm.selectinload()\u003c/code\u003e after \u003ccode\u003e_orm.joinedload()\u003c/code\u003e with\n\u003ccode\u003e_orm.PropComparator.of_type()\u003c/code\u003e for a polymorphic relationship would\nnot properly apply the chained loader option. The loader option is now\ncorrectly applied when using a call such as\n\u003ccode\u003ejoinedload(A.b.of_type(poly)).selectinload(poly.SubClass.c)\u003c/code\u003e to eagerly\nload related objects.\u003c/p\u003e\n\u003c...\n\n_Description has been truncated_","html_url":"https://github.com/MinBZK/amt/pull/731","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/MinBZK%2Famt/issues/731","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/731/packages"}},{"old_version":"1.4.3","new_version":"1.4.4","update_type":"patch","path":null,"pr_created_at":"2026-05-08T10:04:39.000Z","version_change":"1.4.3 → 1.4.4","issue":{"uuid":"4405549370","node_id":"PR_kwDOAh2bWs7ZfMqk","number":40106,"state":"closed","title":"build(deps-dev): bump build from 1.4.3 to 1.4.4","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-08T10:07:57.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-08T10:04:39.000Z","updated_at":"2026-05-08T10:07:59.000Z","time_to_close":198,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps-dev)","packages":[{"name":"build","old_version":"1.4.3","new_version":"1.4.4","repository_url":"https://github.com/pypa/build"}],"path":null,"ecosystem":"pip"},"body":"Bumps [build](https://github.com/pypa/build) from 1.4.3 to 1.4.4.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/releases\"\u003ebuild's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.4\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(release): generate consistent CHANGELOG heading levels by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1032\"\u003epypa/build#1032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: move source links by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1034\"\u003epypa/build#1034\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erevert: drop PEP 660 change by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1039\"\u003epypa/build#1039\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: ignore installed when running pip by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1040\"\u003epypa/build#1040\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: revert part of \u003ca href=\"https://redirect.github.com/pypa/build/issues/973\"\u003e#973\u003c/a\u003e by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1044\"\u003epypa/build#1044\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: report coverage failure lines by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1046\"\u003epypa/build#1046\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: fix issue with uv run by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1048\"\u003epypa/build#1048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: reorganize testing docs for copy/paste by \u003ca href=\"https://github.com/abitrolly\"\u003e\u003ccode\u003e@​abitrolly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1043\"\u003epypa/build#1043\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: keep environment from leaking in Python 3.15 by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1049\"\u003epypa/build#1049\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix issue with changelog generation by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1050\"\u003epypa/build#1050\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.3...1.4.4\"\u003ehttps://github.com/pypa/build/compare/1.4.3...1.4.4\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e####################\n1.5.0 (2026-04-30)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.9 support - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1036\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003e--ignore-installed\u003c/code\u003e opt-in from the API via \u003ccode\u003efresh=True\u003c/code\u003e - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1056\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1033\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.4 (2026-04-22)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eFix release pipeline generating \u003ccode\u003eCHANGELOG.rst\u003c/code\u003e entries with inconsistent heading levels, which broke \u003ccode\u003esphinx -W\u003c/code\u003e\nand pinned Read the Docs \u003ccode\u003estable\u003c/code\u003e at 1.4.0 - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e1031\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRevert :pr:\u003ccode\u003e1039\u003c/code\u003e from build 1.4.3, no longer check direct_url (for now) - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1039\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--ignore-installed\u003c/code\u003e to pip install command to prevent issues with packages already present in the isolated\nbuild environment - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1037\u003c/code\u003e) (:issue:\u003ccode\u003e1040\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePartial revert of :pr:\u003ccode\u003e973\u003c/code\u003e, keeping log messages in one entry, multiple lines. (:issue:\u003ccode\u003e1044\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1048\u003c/code\u003e, :issue:\u003ccode\u003e1049\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.3 (2026-04-10)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/70666a296c2e5bb7451f5a04eef259f6f943d0de\"\u003e\u003ccode\u003e70666a2\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/653d86586dea8b4e020086a276a15a27ac7bd25d\"\u003e\u003ccode\u003e653d865\u003c/code\u003e\u003c/a\u003e docs: fix issue with changelog generation (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1050\"\u003e#1050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/373b9ee171e2f16353365b1a9a02bc408b96ca73\"\u003e\u003ccode\u003e373b9ee\u003c/code\u003e\u003c/a\u003e tests: keep environment from leaking in Python 3.15 (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1049\"\u003e#1049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/e37e2ae697f9dde82709affb9356281fc2a9b98b\"\u003e\u003ccode\u003ee37e2ae\u003c/code\u003e\u003c/a\u003e docs: reorganize testing docs for copy/paste (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1043\"\u003e#1043\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/e9c194ad54413f1923f727ad07c7faf7dff813c0\"\u003e\u003ccode\u003ee9c194a\u003c/code\u003e\u003c/a\u003e tests: fix issue with uv run (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1048\"\u003e#1048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/03b7d7032ae636be992c917c67f8efbf99527c62\"\u003e\u003ccode\u003e03b7d70\u003c/code\u003e\u003c/a\u003e chore: report coverage failure lines (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1046\"\u003e#1046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/2afa3b59977c7e08dc526f19ab670edf99ce6051\"\u003e\u003ccode\u003e2afa3b5\u003c/code\u003e\u003c/a\u003e fix: revert part of \u003ca href=\"https://redirect.github.com/pypa/build/issues/973\"\u003e#973\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1044\"\u003e#1044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b336f60e8008791b7c492078a0725fdadc5875e8\"\u003e\u003ccode\u003eb336f60\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1045\"\u003e#1045\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/6d8039a4503caa2327657eb288c6ce01dabc3eb7\"\u003e\u003ccode\u003e6d8039a\u003c/code\u003e\u003c/a\u003e fix: ignore installed when running pip (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1040\"\u003e#1040\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/ebf6eba272c732ae7e3136edc78ac2597035edd9\"\u003e\u003ccode\u003eebf6eba\u003c/code\u003e\u003c/a\u003e revert: drop PEP 660 change (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1039\"\u003e#1039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.4.3...1.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=build\u0026package-manager=pip\u0026previous-version=1.4.3\u0026new-version=1.4.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/cowrie/cowrie/pull/40106","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/cowrie%2Fcowrie/issues/40106","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/40106/packages"}},{"old_version":"1.4.2","new_version":"1.5.0","update_type":"minor","path":null,"pr_created_at":"2026-05-08T05:28:38.000Z","version_change":"1.4.2 → 1.5.0","issue":{"uuid":"4404007221","node_id":"PR_kwDOLzxzKM7ZaFVT","number":323,"state":"open","title":"chore(deps): bump the dependencies group across 2 directories with 47 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":["matmair"],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-08T05:28:38.000Z","updated_at":"2026-05-08T05:31:32.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"dependencies","update_count":47,"packages":[{"name":"bleach","old_version":"4.1.0","new_version":"6.3.0","repository_url":"https://github.com/mozilla/bleach"},{"name":"boto3","old_version":"1.42.87","new_version":"1.43.1","repository_url":"https://github.com/boto/boto3"},{"name":"botocore","old_version":"1.42.87","new_version":"1.43.1","repository_url":"https://github.com/boto/botocore"},{"name":"certifi","old_version":"2026.2.25","new_version":"2026.4.22","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cryptography","old_version":"46.0.7","new_version":"47.0.0","repository_url":"https://github.com/pyca/cryptography"},{"name":"django","old_version":"5.2.13","new_version":"6.0.4","repository_url":"https://github.com/django/django"},{"name":"django-allauth","old_version":"65.14.3","new_version":"65.16.1","repository_url":"https://github.com/sponsors/pennersr"},{"name":"django-anymail","old_version":"14.0","new_version":"15.0","repository_url":"https://github.com/anymail/django-anymail"},{"name":"django-otp","old_version":"1.3.0","new_version":"1.7.0","repository_url":"https://github.com/django-otp/django-otp"},{"name":"dulwich","old_version":"1.1.0","new_version":"1.2.1","repository_url":"https://github.com/dulwich/dulwich"},{"name":"fido2","old_version":"2.1.1","new_version":"2.2.0","repository_url":"https://github.com/Yubico/python-fido2"},{"name":"icalendar","old_version":"7.0.3","new_version":"7.1.0","repository_url":"https://github.com/collective/icalendar"},{"name":"idna","old_version":"3.11","new_version":"3.13","repository_url":"https://github.com/kjd/idna"},{"name":"importlib-metadata","old_version":"8.7.1","new_version":"9.0.0","repository_url":"https://github.com/python/importlib_metadata"},{"name":"lxml","old_version":"6.0.3","new_version":"6.1.0","repository_url":"https://github.com/lxml/lxml"},{"name":"nh3","old_version":"0.3.4","new_version":"0.3.5","repository_url":"https://github.com/messense/nh3"},{"name":"opentelemetry-exporter-otlp-proto-common","old_version":"1.40.0","new_version":"1.41.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.40.0","new_version":"1.41.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-http","old_version":"1.40.0","new_version":"1.41.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.61b0","new_version":"0.62b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-dbapi","old_version":"0.61b0","new_version":"0.62b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.40.0","new_version":"1.41.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.61b0","new_version":"0.62b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.61b0","new_version":"0.62b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"packaging","old_version":"26.0","new_version":"26.2","repository_url":"https://github.com/pypa/packaging"},{"name":"protobuf","old_version":"6.33.6","new_version":"7.34.1","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"s3transfer","old_version":"0.16.0","new_version":"0.17.0","repository_url":"https://github.com/boto/s3transfer"},{"name":"sentry-sdk","old_version":"2.57.0","new_version":"2.58.0","repository_url":"https://github.com/getsentry/sentry-python"},{"name":"tzdata","old_version":"2026.1","new_version":"2026.2","repository_url":"https://github.com/python/tzdata"},{"name":"wrapt","old_version":"1.17.3","new_version":"2.1.2","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"zipp","old_version":"3.23.0","new_version":"3.23.1","repository_url":"https://github.com/jaraco/zipp"},{"name":"build","old_version":"1.4.2","new_version":"1.5.0","repository_url":"https://github.com/pypa/build"},{"name":"click","old_version":"8.3.2","new_version":"8.3.3","repository_url":"https://github.com/pallets/click"},{"name":"django-stubs","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/typeddjango/django-stubs"},{"name":"django-stubs-ext","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/typeddjango/django-stubs"},{"name":"django-types","old_version":"0.23.0","new_version":"0.24.0","repository_url":"https://github.com/sbdchd/django-types"},{"name":"filelock","old_version":"3.25.2","new_version":"3.29.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"identify","old_version":"2.6.18","new_version":"2.6.19","repository_url":"https://github.com/pre-commit/identify"},{"name":"pip","old_version":"26.0.1","new_version":"26.1","repository_url":"https://github.com/pypa/pip"},{"name":"pre-commit","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"pytest-codspeed","old_version":"4.3.0","new_version":"4.5.0","repository_url":"https://github.com/CodSpeedHQ/pytest-codspeed"},{"name":"rich","old_version":"14.3.3","new_version":"15.0.0","repository_url":"https://github.com/Textualize/rich"},{"name":"ty","old_version":"0.0.1a21","new_version":"0.0.33","repository_url":"https://github.com/astral-sh/ty"},{"name":"types-psycopg2","old_version":"2.9.21.20260408","new_version":"2.9.21.20260422","repository_url":"https://github.com/python/typeshed"},{"name":"virtualenv","old_version":"21.2.1","new_version":"21.3.0","repository_url":"https://github.com/pypa/virtualenv"},{"name":"wheel","old_version":"0.46.3","new_version":"0.47.0","repository_url":"https://github.com/pypa/wheel"}],"path":null,"ecosystem":"pip"},"body":"Bumps the dependencies group with 1 update in the /docs directory: [mkdocstrings](https://github.com/mkdocstrings/mkdocstrings).\nBumps the dependencies group with 46 updates in the /src/backend directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [bleach](https://github.com/mozilla/bleach) | `4.1.0` | `6.3.0` |\n| [boto3](https://github.com/boto/boto3) | `1.42.87` | `1.43.1` |\n| [botocore](https://github.com/boto/botocore) | `1.42.87` | `1.43.1` |\n| [certifi](https://github.com/certifi/python-certifi) | `2026.2.25` | `2026.4.22` |\n| [cryptography](https://github.com/pyca/cryptography) | `46.0.7` | `47.0.0` |\n| [django](https://github.com/django/django) | `5.2.13` | `6.0.4` |\n| [django-allauth](https://github.com/sponsors/pennersr) | `65.14.3` | `65.16.1` |\n| [django-anymail](https://github.com/anymail/django-anymail) | `14.0` | `15.0` |\n| [django-otp](https://github.com/django-otp/django-otp) | `1.3.0` | `1.7.0` |\n| [dulwich](https://github.com/dulwich/dulwich) | `1.1.0` | `1.2.1` |\n| [fido2](https://github.com/Yubico/python-fido2) | `2.1.1` | `2.2.0` |\n| [icalendar](https://github.com/collective/icalendar) | `7.0.3` | `7.1.0` |\n| [idna](https://github.com/kjd/idna) | `3.11` | `3.13` |\n| [importlib-metadata](https://github.com/python/importlib_metadata) | `8.7.1` | `9.0.0` |\n| [lxml](https://github.com/lxml/lxml) | `6.0.3` | `6.1.0` |\n| [nh3](https://github.com/messense/nh3) | `0.3.4` | `0.3.5` |\n| [opentelemetry-exporter-otlp-proto-common](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.41.1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.41.1` |\n| [opentelemetry-exporter-otlp-proto-http](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.41.1` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.62b1` |\n| [opentelemetry-instrumentation-dbapi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.62b1` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.41.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.61b0` | `0.62b1` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.62b1` |\n| [packaging](https://github.com/pypa/packaging) | `26.0` | `26.2` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `6.33.6` | `7.34.1` |\n| [s3transfer](https://github.com/boto/s3transfer) | `0.16.0` | `0.17.0` |\n| [sentry-sdk](https://github.com/getsentry/sentry-python) | `2.57.0` | `2.58.0` |\n| [tzdata](https://github.com/python/tzdata) | `2026.1` | `2026.2` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.3` | `2.1.2` |\n| [zipp](https://github.com/jaraco/zipp) | `3.23.0` | `3.23.1` |\n| [build](https://github.com/pypa/build) | `1.4.2` | `1.5.0` |\n| [click](https://github.com/pallets/click) | `8.3.2` | `8.3.3` |\n| [django-stubs](https://github.com/typeddjango/django-stubs) | `6.0.2` | `6.0.3` |\n| [django-stubs-ext](https://github.com/typeddjango/django-stubs) | `6.0.2` | `6.0.3` |\n| [django-types](https://github.com/sbdchd/django-types) | `0.23.0` | `0.24.0` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.25.2` | `3.29.0` |\n| [identify](https://github.com/pre-commit/identify) | `2.6.18` | `2.6.19` |\n| [pip](https://github.com/pypa/pip) | `26.0.1` | `26.1` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.5.1` | `4.6.0` |\n| [pytest-codspeed](https://github.com/CodSpeedHQ/pytest-codspeed) | `4.3.0` | `4.5.0` |\n| [rich](https://github.com/Textualize/rich) | `14.3.3` | `15.0.0` |\n| [ty](https://github.com/astral-sh/ty) | `0.0.1a21` | `0.0.33` |\n| [types-psycopg2](https://github.com/python/typeshed) | `2.9.21.20260408` | `2.9.21.20260422` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `21.2.1` | `21.3.0` |\n| [wheel](https://github.com/pypa/wheel) | `0.46.3` | `0.47.0` |\n\n\nUpdates `mkdocstrings` from 1.0.3 to 1.0.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/releases\"\u003emkdocstrings's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.0.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/releases/tag/1.0.4\"\u003e1.0.4\u003c/a\u003e - 2026-04-15\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/compare/1.0.3...1.0.4\"\u003eCompare with 1.0.3\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd timeout when downloading inventories (10 seconds) (\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/3d1969a279ea396792c682810d029503e48d8fcd\"\u003e3d1969a\u003c/a\u003e by Simon Lloyd). \u003ca href=\"https://redirect.github.com/mkdocstrings/mkdocstrings/issues/819\"\u003eIssue-819\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/blob/main/CHANGELOG.md\"\u003emkdocstrings's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/releases/tag/1.0.4\"\u003e1.0.4\u003c/a\u003e - 2026-04-15\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/compare/1.0.3...1.0.4\"\u003eCompare with 1.0.3\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd timeout when downloading inventories (10 seconds) (\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/3d1969a279ea396792c682810d029503e48d8fcd\"\u003e3d1969a\u003c/a\u003e by Simon Lloyd). \u003ca href=\"https://redirect.github.com/mkdocstrings/mkdocstrings/issues/819\"\u003eIssue-819\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/a938528b51b42cde52465d06d8b1a52484837366\"\u003e\u003ccode\u003ea938528\u003c/code\u003e\u003c/a\u003e chore: Prepare release 1.0.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/1eaa2242ec33e4b6ce666f0bbc25391f2a72c1d2\"\u003e\u003ccode\u003e1eaa224\u003c/code\u003e\u003c/a\u003e ci: Lint and type-check\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/80e090d0bfbfa5688639e78559a4bb7bd3f7a55b\"\u003e\u003ccode\u003e80e090d\u003c/code\u003e\u003c/a\u003e Merge branch 'main' of github.com:mkdocstrings/mkdocstrings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/5f82a5822c50dc928ee4a133c1445543d3afa393\"\u003e\u003ccode\u003e5f82a58\u003c/code\u003e\u003c/a\u003e chore: Template upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/3d1969a279ea396792c682810d029503e48d8fcd\"\u003e\u003ccode\u003e3d1969a\u003c/code\u003e\u003c/a\u003e fix: Add timeout when downloading inventories (10 seconds)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/a0c47b9992416cf02b8dfc7a76a6c5503e98cd9c\"\u003e\u003ccode\u003ea0c47b9\u003c/code\u003e\u003c/a\u003e docs: Fix broken link in README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/commit/e500a2b416656ede76aac316304415e428dd0aa1\"\u003e\u003ccode\u003ee500a2b\u003c/code\u003e\u003c/a\u003e chore: Update sponsors section in README\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/mkdocstrings/mkdocstrings/compare/1.0.3...1.0.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bleach` from 4.1.0 to 6.3.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mozilla/bleach/blob/main/CHANGES\"\u003ebleach's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.3.0 (October 27th, 2025)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBackwards incompatible changes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/756\"\u003e#756\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eNone\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.14. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/758\"\u003e#758\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix wbr handling. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/488\"\u003e#488\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 6.2.0 (October 29th, 2024)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBackwards incompatible changes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.8. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/737\"\u003e#737\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eNone\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.13. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/736\"\u003e#736\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove six depdenncy. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/618\"\u003e#618\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate known-good versions for tinycss2. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/732\"\u003e#732\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix additional \u0026lt; followed by characters and EOF issues. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/728\"\u003e#728\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 6.1.0 (October 6th, 2023)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBackwards incompatible changes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.7. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/709\"\u003e#709\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eNone\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for Python 3.12. (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/710\"\u003e#710\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/mozilla/bleach/commit/5546d5dbce60d08ccb99d981778d74044d646d4e\"\u003e\u003ccode\u003e5546d5d\u003c/code\u003e\u003c/a\u003e chore: prep for 6.3.0 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/88df3ff23fb2a43e174b3fdfe9191ef516de868a\"\u003e\u003ccode\u003e88df3ff\u003c/code\u003e\u003c/a\u003e chore: fix readthedocs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/d8b2fb45b2606515c58787c223d6605c6c70868f\"\u003e\u003ccode\u003ed8b2fb4\u003c/code\u003e\u003c/a\u003e fix: fix wbr handling (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/488\"\u003e#488\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/55e48cedb20bda23940ab34753a1fb378d5d30b9\"\u003e\u003ccode\u003e55e48ce\u003c/code\u003e\u003c/a\u003e chore: add support for Python 3.14 (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/758\"\u003e#758\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/a4d6cddac6e338c3d6f84c755a5fcb32e9e18fba\"\u003e\u003ccode\u003ea4d6cdd\u003c/code\u003e\u003c/a\u003e chore: drop support for Python 3.9 (\u003ca href=\"https://redirect.github.com/mozilla/bleach/issues/756\"\u003e#756\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/172d92faef543a83c6760c63c32749586cdd564b\"\u003e\u003ccode\u003e172d92f\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.6.0 to 6.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/df88612f2e9daf8f4ee23cf0e29b712d9d9147b6\"\u003e\u003ccode\u003edf88612\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4.2.2 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/cbcf6b18d19aeb7777699f9385013d0a04052b68\"\u003e\u003ccode\u003ecbcf6b1\u003c/code\u003e\u003c/a\u003e Bump actions/cache from 4.2.3 to 4.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/d9aa7ef592d57dda56e26ba31d06e1b279c58eca\"\u003e\u003ccode\u003ed9aa7ef\u003c/code\u003e\u003c/a\u003e Switch from dependabot reviewers to CODEOWNERS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mozilla/bleach/commit/06f0f76cc68112bda3fa101d1730d5ba914d54a1\"\u003e\u003ccode\u003e06f0f76\u003c/code\u003e\u003c/a\u003e Update setuptools, wheel, and twine for devs\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/mozilla/bleach/compare/v4.1.0...v6.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3` from 1.42.87 to 1.43.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/753bcab42942e4e0f6e3deb5e4eb5af40d0ffb8b\"\u003e\u003ccode\u003e753bcab\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.1'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/dd5b3a659894c0c8c92c4c696625fe7735fddcb1\"\u003e\u003ccode\u003edd5b3a6\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/014f4adb1a991f5575fca9688568a388e9f0d339\"\u003e\u003ccode\u003e014f4ad\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/32edf1c268b58c8e16e144271252ce90ebfdc1ef\"\u003e\u003ccode\u003e32edf1c\u003c/code\u003e\u003c/a\u003e Bump requests from 2.32.4 to 2.33.1 (\u003ca href=\"https://redirect.github.com/boto/boto3/issues/4781\"\u003e#4781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/959ae842a0048833cab303e1cf88dfc523f604b1\"\u003e\u003ccode\u003e959ae84\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.0'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/146ede25caacdfdc8bff79cc8f5028292dfe41f6\"\u003e\u003ccode\u003e146ede2\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.0' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/048bf84492d9d55b327a67f4ab07476eb62c2ee1\"\u003e\u003ccode\u003e048bf84\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/20381d5695aa766f041b42dcda9600e14f32bd15\"\u003e\u003ccode\u003e20381d5\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/ee6aa9711b74b165eac0b26bb724c7326791dc24\"\u003e\u003ccode\u003eee6aa97\u003c/code\u003e\u003c/a\u003e Deprecate Python 3.9 support (\u003ca href=\"https://redirect.github.com/boto/boto3/issues/4770\"\u003e#4770\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/1780d6b791333f1279e03a04a2efc476af2af5d9\"\u003e\u003ccode\u003e1780d6b\u003c/code\u003e\u003c/a\u003e Remove CC-BY-NC-SA-4.0 license headers from docs files (\u003ca href=\"https://redirect.github.com/boto/boto3/issues/4778\"\u003e#4778\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.42.87...1.43.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `botocore` from 1.42.87 to 1.43.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/7084f04c816749a7275317441440f3705ec25cf4\"\u003e\u003ccode\u003e7084f04\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.1'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/1dd07e0619e1c4d7eaa5443e7a28667f7b0a5431\"\u003e\u003ccode\u003e1dd07e0\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/eebf8158db41450f23ae0365dcbb3d8671311490\"\u003e\u003ccode\u003eeebf815\u003c/code\u003e\u003c/a\u003e Update endpoints model\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/98952d24c3e7cecd87b48f717c358ab526f065b0\"\u003e\u003ccode\u003e98952d2\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/33559569fbb76b88e23f9e7be870be028e44a45e\"\u003e\u003ccode\u003e3355956\u003c/code\u003e\u003c/a\u003e Bump requests from 2.32.4 to 2.33.1 (\u003ca href=\"https://redirect.github.com/boto/botocore/issues/3695\"\u003e#3695\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/05dafea17e8a7758d0099d11ef573b8a62c413bf\"\u003e\u003ccode\u003e05dafea\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.0'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/dc9312350d2bf85ec07d0f7d27cd77c96fc8b5a1\"\u003e\u003ccode\u003edc93123\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.43.0' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/047f23f3b089f10c098010d41e0c355cc13a92be\"\u003e\u003ccode\u003e047f23f\u003c/code\u003e\u003c/a\u003e Bumping version to 1.43.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/44df5850e51fe566075fd5ecd3a8a512aedec47a\"\u003e\u003ccode\u003e44df585\u003c/code\u003e\u003c/a\u003e Update endpoints model\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/924fe63134e9608c083b298a9e3007d64453e27e\"\u003e\u003ccode\u003e924fe63\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/botocore/compare/1.42.87...1.43.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2026.2.25 to 2026.4.22\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/5dddfb072243da27adde885b73ba9b809c3224ca\"\u003e\u003ccode\u003e5dddfb0\u003c/code\u003e\u003c/a\u003e 2026.04.22 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/410\"\u003e#410\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/f99eccdaf87f7c10e521a58a700ca3eb94a0787e\"\u003e\u003ccode\u003ef99eccd\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 8.1.0 to 8.1.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/404\"\u003e#404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/918bed055f7291719512af186c1c24710f845660\"\u003e\u003ccode\u003e918bed0\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 7.0.0 to 7.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/405\"\u003e#405\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/0a49067eb434e53e1f8df5f7707d5dc05ef9def4\"\u003e\u003ccode\u003e0a49067\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish from 1.13.0 to 1.14.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/403\"\u003e#403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/acf6ce8e39e3b125f4349e11904295e4fe4c1bed\"\u003e\u003ccode\u003eacf6ce8\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 8.0.0 to 8.0.1 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/398\"\u003e#398\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/feb0ed26163a9417ea0fb8eb52d47e79fcf202ab\"\u003e\u003ccode\u003efeb0ed2\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 7.0.0 to 8.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/397\"\u003e#397\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d9c11a50369cc377abb40f7909ded3d6da4d98a3\"\u003e\u003ccode\u003ed9c11a5\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 6.0.0 to 7.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/396\"\u003e#396\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2026.02.25...2026.04.22\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cryptography` from 46.0.7 to 47.0.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst\"\u003ecryptography's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e47.0.0 - 2026-04-24\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Support for Python 3.8 is deprecated and will be removed in the next\n  ``cryptography`` release.\n* **BACKWARDS INCOMPATIBLE:** Support for binary elliptic curves\n  (``SECT*`` classes) has been removed. These curves are rarely used and\n  have additional security considerations that make them undesirable.\n* **BACKWARDS INCOMPATIBLE:** Support for OpenSSL 1.1.x has been removed.\n  OpenSSL 3.0.0 or later is now required. LibreSSL, BoringSSL, and AWS-LC\n  continue to be supported.\n* **BACKWARDS INCOMPATIBLE:** Dropped support for LibreSSL \u0026lt; 4.1.\n* **BACKWARDS INCOMPATIBLE:** Loading keys with unsupported algorithms or\n  keys with unsupported explicit curve encodings now raises\n  :class:`~cryptography.exceptions.UnsupportedAlgorithm` instead of\n  ``ValueError``. This change affects\n  :func:`~cryptography.hazmat.primitives.serialization.load_pem_private_key`,\n  :func:`~cryptography.hazmat.primitives.serialization.load_der_private_key`,\n  :func:`~cryptography.hazmat.primitives.serialization.load_pem_public_key`,\n  :func:`~cryptography.hazmat.primitives.serialization.load_der_public_key`,\n  and :meth:`~cryptography.x509.Certificate.public_key` when called on\n  certificates with unsupported public key algorithms.\n* **BACKWARDS INCOMPATIBLE:** When parsing elliptic curve private keys, we now\n  reject keys that incorrectly encode a private key of the wrong length because\n  such keys are impossible to process in a constant-time manner. We do not\n  believe keys with this problem are in wide use, however we may revert this\n  change based on the feedback we receive.\n* Deprecated passing 64-bit (8-byte) and 128-bit (16-byte) keys to\n  :class:`~cryptography.hazmat.decrepit.ciphers.algorithms.TripleDES`. In a\n  future release, only 192-bit (24-byte) keys will be accepted. Users should\n  expand shorter keys themselves (e.g., for single DES: ``key + key + key``,\n  for two-key: ``key + key[:8]``).\n* Updated the minimum supported Rust version (MSRV) to 1.83.0, from 1.74.0.\n* Support for ``x86_64`` macOS (including publishing wheels) is deprecated\n  and will be removed in the next release. 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 the next release. Users should move to a 64-bit\n  Python installation.\n* ``public_bytes`` and ``private_bytes`` methods on keys now raise\n  ``TypeError`` (instead of ``ValueError``) if an invalid encoding is provided\n  for the given ``format``.\n* Moved :class:`~cryptography.hazmat.decrepit.ciphers.modes.CFB`,\n  :class:`~cryptography.hazmat.decrepit.ciphers.modes.OFB`, and\n  :class:`~cryptography.hazmat.decrepit.ciphers.modes.CFB8` into\n  :doc:`/hazmat/decrepit/index` and deprecated them in the ``modes`` module.\n  They will be removed from the ``modes`` module in 49.0.0.\n* Moved :class:`~cryptography.hazmat.primitives.ciphers.algorithms.Camellia`\n  into  :doc:`/hazmat/decrepit/index` and deprecated it in the ``cipher`` module.\n  It will be removed from the ``cipher`` module in 49.0.0.\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/59c5f5e4b9395f32d407f66467d59ccea9f9829f\"\u003e\u003ccode\u003e59c5f5e\u003c/code\u003e\u003c/a\u003e bump for 47.0.0 release (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14730\"\u003e#14730\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/9025578c87f14096f9332264881f5370a1c64e93\"\u003e\u003ccode\u003e9025578\u003c/code\u003e\u003c/a\u003e Add MLKEM1024-P384 hybrid KEM support in HPKE (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14722\"\u003e#14722\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/ef66de49e0bd281da86750178ab2fb4b5b104162\"\u003e\u003ccode\u003eef66de4\u003c/code\u003e\u003c/a\u003e Recommend Argon2id over PBKDF2HMAC as KDF (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14724\"\u003e#14724\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/d996a37666524c606419e71de15eb527bae655aa\"\u003e\u003ccode\u003ed996a37\u003c/code\u003e\u003c/a\u003e Add ubuntu-resolute to CI workflow (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14729\"\u003e#14729\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/e86da41ff7e21a04529a933856dc27dacd9e7fc0\"\u003e\u003ccode\u003ee86da41\u003c/code\u003e\u003c/a\u003e chore(deps): bump libc from 0.2.185 to 0.2.186 (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14725\"\u003e#14725\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/1c33c9a5d96a7b1a975ab5a465a75517e0ebadd6\"\u003e\u003ccode\u003e1c33c9a\u003c/code\u003e\u003c/a\u003e Bump downstream dependencies in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14728\"\u003e#14728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/67fb6be685bbc0952a47cf18e9ee4533b411cd8b\"\u003e\u003ccode\u003e67fb6be\u003c/code\u003e\u003c/a\u003e Bump x509-limbo and/or wycheproof in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14727\"\u003e#14727\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/6cb20b3141c6391ae11075f30b992375c05adad5\"\u003e\u003ccode\u003e6cb20b3\u003c/code\u003e\u003c/a\u003e Bump BoringSSL, OpenSSL, AWS-LC in CI (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14726\"\u003e#14726\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/d6f372d7ea7f7df96aeda240252a23b6ed46bc71\"\u003e\u003ccode\u003ed6f372d\u003c/code\u003e\u003c/a\u003e Update supported OpenSSL versions in installation docs (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14721\"\u003e#14721\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/ebd26194cd6a3315b122a44d2ee5aeb138bee55b\"\u003e\u003ccode\u003eebd2619\u003c/code\u003e\u003c/a\u003e openssl 3.3 is out of upstream support (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14720\"\u003e#14720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/cryptography/compare/46.0.7...47.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django` from 5.2.13 to 6.0.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/141e791f48592011b0f38fb30d44291e3ce74ee0\"\u003e\u003ccode\u003e141e791\u003c/code\u003e\u003c/a\u003e [6.0.x] Bumped version for 6.0.4 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/393dbc53e848876fdba92fbf02e10ee6a6eace6b\"\u003e\u003ccode\u003e393dbc5\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-33034 -- Enforced DATA_UPLOAD_MAX_MEMORY_SIZE on body ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/0910af60468216c856dfbcac1177372c225deb76\"\u003e\u003ccode\u003e0910af6\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-33033 -- Mitigated potential DoS in MultiPartParser.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/428c48f358c5a0ed5ca2834fb721d615eb2b0e11\"\u003e\u003ccode\u003e428c48f\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-4292 -- Disallowed instance creation via ModelAdmin.li...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/08a752c1cd8f378b4c64d96c319da23726df6ed3\"\u003e\u003ccode\u003e08a752c\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-4277 -- Checked add permissions in GenericInlineModelA...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/a623c3982857e80324448f85c7faf9a6710330ef\"\u003e\u003ccode\u003ea623c39\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-3902 -- Ignored headers with underscores in ASGIRequest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/ffc83c554a7bc99e138445fa2c4beaf0ca17c71c\"\u003e\u003ccode\u003effc83c5\u003c/code\u003e\u003c/a\u003e [6.0.x] Refs \u003ca href=\"https://redirect.github.com/django/django/issues/36949\"\u003e#36949\u003c/a\u003e -- Removed hardcoded pks in modeladmin tests.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/4eb38f6994f233feeac5852cbee2ae6663a9b1ef\"\u003e\u003ccode\u003e4eb38f6\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed \u003ca href=\"https://redirect.github.com/django/django/issues/36973\"\u003e#36973\u003c/a\u003e -- Made fields.E348 check detect further clashes between...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/640c431a47c4075538e1de0211501f911346b65e\"\u003e\u003ccode\u003e640c431\u003c/code\u003e\u003c/a\u003e [6.0.x] Refs \u003ca href=\"https://redirect.github.com/django/django/issues/36862\"\u003e#36862\u003c/a\u003e -- Reiterated security note on both variants of RemoteUse...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/ea8e293fda0dd1e78f5489efa73e5d19e195b4f0\"\u003e\u003ccode\u003eea8e293\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed \u003ca href=\"https://redirect.github.com/django/django/issues/36949\"\u003e#36949\u003c/a\u003e -- Improved RelatedFieldWidgetWrapper \u0026lt;label\u0026gt;s.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/django/compare/5.2.13...6.0.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-allauth` from 65.14.3 to 65.16.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/pennersr/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-anymail` from 14.0 to 15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anymail/django-anymail/releases\"\u003edjango-anymail's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev15.0\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://anymail.dev/en/stable/changelog/#v15-0\"\u003eChangelog\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/anymail/django-anymail/blob/main/CHANGELOG.rst\"\u003edjango-anymail's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev15.0\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2026-04-18\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eBreaking changes\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Require **Django 5.0 or later** and Python 3.10 or later.\n  (Thanks to `@terencehonles`_.)\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* **Resend:** Add support for inbound email. (Thanks to `@btimby`_.)\n\nFixes\n~~~~~\n\n* **Inbound:** Convert carriage return and line feed characters in attachment\n  filenames to spaces for ESPs that parse them from invalid headers (e.g.,\n  Postmark). (Thanks to `@BHSPitMonkey`_ for reporting the issue and providing\n  an example.)\n\u0026lt;/code\u0026gt;\u0026lt;/pre\u0026gt;\n\u0026lt;/blockquote\u0026gt;\n\u0026lt;/details\u0026gt;\n\u0026lt;details\u0026gt;\n\u0026lt;summary\u0026gt;Commits\u0026lt;/summary\u0026gt;\n\n\u0026lt;ul\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/anymail/django-anymail/commit/17acea06b9361c3cc4ab6d9678bd5aea45db80ff\u0026quot;\u0026gt;\u0026lt;code\u0026gt;17acea0\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Release 15.0\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/anymail/django-anymail/commit/8ad9d6e7e463efb770e3440871a05f2be4249ddf\u0026quot;\u0026gt;\u0026lt;code\u0026gt;8ad9d6e\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Inbound: sanitize CRNL in ESP-parsed attachment filenames\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/anymail/django-anymail/commit/a6339d6c65bed21bcfe28e3c7b9b4ada4a290263\u0026quot;\u0026gt;\u0026lt;code\u0026gt;a6339d6\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Upgrade actions versions\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/anymail/django-anymail/commit/4626462d49512b0c423071a8a6fe43a9610ead8a\u0026quot;\u0026gt;\u0026lt;code\u0026gt;4626462\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Drop Django 4.x\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/anymail/django-anymail/commit/2bcfd620d2f1fa6705a13ad8645aa25a4572fd08\u0026quot;\u0026gt;\u0026lt;code\u0026gt;2bcfd62\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Resend: Add inbound support\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/anymail/django-anymail/commit/13a08718571ca853f04336e15c525a98dd6dc48a\u0026quot;\u0026gt;\u0026lt;code\u0026gt;13a0871\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Run pyupgrade\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/anymail/django-anymail/commit/7bf7a1a42e7fe1dbc008d22dc6d03579e4523b34\u0026quot;\u0026gt;\u0026lt;code\u0026gt;7bf7a1a\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Drop Django 4.0--4.2, Python 3.8--3.9 support\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;See full diff in \u0026lt;a href=\u0026quot;https://github.com/anymail/django-anymail/compare/v14.0...v15.0\u0026quot;\u0026gt;compare view\u0026lt;/a\u0026gt;\u0026lt;/li\u0026gt;\n\u0026lt;/ul\u0026gt;\n\u0026lt;/details\u0026gt;\n\n\u0026lt;br /\u0026gt;\u003c/code\u003e\u003c/pre\u003e\n\nUpdates `django-otp` from 1.3.0 to 1.7.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-otp/django-otp/blob/master/CHANGES.rst\"\u003edjango-otp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.7.0 - January 07, 2026 - Async support\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[#185](https://github.com/django-otp/django-otp/issues/185)\u003c/code\u003e_: Make OTPMiddleware async capable\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Aljosha Papsch.\u003c/p\u003e\n\u003cp\u003e.. _\u003ca href=\"https://redirect.github.com/django-otp/django-otp/issues/185\"\u003e#185\u003c/a\u003e: \u003ca href=\"https://redirect.github.com/django-otp/django-otp/pull/185\"\u003edjango-otp/django-otp#185\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.6.3 - October 25, 2025 - Spanish update\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[#182](https://github.com/django-otp/django-otp/issues/182)\u003c/code\u003e_: Correct missing Spanish translations\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#181](https://github.com/django-otp/django-otp/issues/181)\u003c/code\u003e_: Wrong :rtype: in StaticToken.random_token docstring\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _\u003ca href=\"https://redirect.github.com/django-otp/django-otp/issues/181\"\u003e#181\u003c/a\u003e: \u003ca href=\"https://redirect.github.com/django-otp/django-otp/issues/181\"\u003edjango-otp/django-otp#181\u003c/a\u003e\n.. _\u003ca href=\"https://redirect.github.com/django-otp/django-otp/issues/182\"\u003e#182\u003c/a\u003e: \u003ca href=\"https://redirect.github.com/django-otp/django-otp/pull/182\"\u003edjango-otp/django-otp#182\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.6.2 - October 21, 2025 - Cleanup\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[#179](https://github.com/django-otp/django-otp/issues/179)\u003c/code\u003e_: Add missing gettext strings\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#180](https://github.com/django-otp/django-otp/issues/180)\u003c/code\u003e_: Remove tests from wheels\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _\u003ca href=\"https://redirect.github.com/django-otp/django-otp/issues/179\"\u003e#179\u003c/a\u003e: \u003ca href=\"https://redirect.github.com/django-otp/django-otp/pull/179\"\u003edjango-otp/django-otp#179\u003c/a\u003e\n.. _\u003ca href=\"https://redirect.github.com/django-otp/django-otp/issues/180\"\u003e#180\u003c/a\u003e: \u003ca href=\"https://redirect.github.com/django-otp/django-otp/pull/180\"\u003edjango-otp/django-otp#180\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.6.1 - July 08, 2025 - Small improvements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAllow a {token} placeholder in :setting:\u003ccode\u003eOTP_EMAIL_SUBJECT\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.6.0 - April 02, 2025 - Django 5.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate test matrix for Django 5.2.\u003c/li\u003e\n\u003cli\u003eRemove support for Django 3.2.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.5.4 - September 06, 2024 - Ignore proxy models when enumerating device classes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[#161](https://github.com/django-otp/django-otp/issues/161)\u003c/code\u003e_: Discard proxied models when iterating device models\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _\u003ca href=\"https://redirect.github.com/django-otp/django-otp/issues/161\"\u003e#161\u003c/a\u003e: \u003ca href=\"https://redirect.github.com/django-otp/django-otp/pull/161\"\u003edjango-otp/django-otp#161\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/django-otp/django-otp/commit/fc0d50b6f66da10fad250ce1640f0385f3229f48\"\u003e\u003ccode\u003efc0d50b\u003c/code\u003e\u003c/a\u003e Version 1.7.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-otp/django-otp/commit/56e4ce3b5618de5d5a8a24c9eb709b51802ad06b\"\u003e\u003ccode\u003e56e4ce3\u003c/code\u003e\u003c/a\u003e Refactor test utilities\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-otp/django-otp/commit/8c4d4c23649316c55dad6a79fb06fa975e5e4702\"\u003e\u003ccode\u003e8c4d4c2\u003c/code\u003e\u003c/a\u003e Update test matrix for Django 6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-otp/django-otp/commit/0ac4ff33aa88fa73c12aa60713881481116a6d5f\"\u003e\u003ccode\u003e0ac4ff3\u003c/code\u003e\u003c/a\u003e Cleanup and changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-otp/django-otp/commit/b10df0d8cb94c8242ca48bbcea3d307b553808a5\"\u003e\u003ccode\u003eb10df0d\u003c/code\u003e\u003c/a\u003e Make OTPMiddleware async capable. (\u003ca href=\"https://redirect.github.com/django-otp/django-otp/issues/185\"\u003e#185\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-otp/django-otp/commit/81211794b8cc9c8befc6c8330b6652d3c4e78fd5\"\u003e\u003ccode\u003e8121179\u003c/code\u003e\u003c/a\u003e Raise requires-python to 3.8.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-otp/django-otp/commit/38b7ebabd7b4817aec92f884d448eeb462e82108\"\u003e\u003ccode\u003e38b7eba\u003c/code\u003e\u003c/a\u003e Version 1.6.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-otp/django-otp/commit/b9026d7025da45b0144c99e91b5286c734448012\"\u003e\u003ccode\u003eb9026d7\u003c/code\u003e\u003c/a\u003e Correct Missing Spanish Translations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-otp/django-otp/commit/ae18ba95bd03534e15583d456572f86ea2f41442\"\u003e\u003ccode\u003eae18ba9\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/django-otp/django-otp/issues/181\"\u003e#181\u003c/a\u003e: misdocumented return type.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-otp/django-otp/commit/c9eef89240985293e0c9f197d0257a5352cfb62d\"\u003e\u003ccode\u003ec9eef89\u003c/code\u003e\u003c/a\u003e Version 1.6.2\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django-otp/django-otp/compare/v1.3.0...v1.7.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `dulwich` from 1.1.0 to 1.2.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/dulwich/dulwich/releases\"\u003edulwich's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003edulwich-1.2.1\u003c/h2\u003e\n\u003ch2\u003eChanges since 1.2.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eDerive the LFS endpoint as the remote's on-disk LFS store\n(\u003ccode\u003e\u0026lt;remote\u0026gt;/.git/lfs\u003c/code\u003e for worktrees, \u003ccode\u003e\u0026lt;remote\u0026gt;/lfs\u003c/code\u003e for bare repos)\nwhen \u003ccode\u003eremote.origin.url\u003c/code\u003e points at a local filesystem path or\n\u003ccode\u003efile://\u003c/code\u003e URL, matching git-lfs behaviour. Previously the built-in\nsmudge filter constructed an HTTP-style \u003ccode\u003e\u0026lt;remote\u0026gt;.git/info/lfs\u003c/code\u003e path\nthat did not exist on disk, leaving LFS-tracked files as pointers\nwhen cloning from a local repo.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDeduplicate objects when writing a multi-pack-index. Objects present\nin multiple packs (e.g. after \u003ccode\u003egit gc\u003c/code\u003e creates a cruft pack) would\notherwise produce an OIDL chunk with repeated SHAs, causing\n\u003ccode\u003egit multi-pack-index verify\u003c/code\u003e to fail with \u0026quot;oid lookup out of order\u0026quot;.\n(\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/2152\"\u003e#2152\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eExtend ignorecase and precomposeunicode support to index lookups.\n(\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/1807\"\u003e#1807\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.2.0\u003c/h2\u003e\n\u003ch2\u003eNotable changes since 1.1.0\u003c/h2\u003e\n\u003ch3\u003eNew features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eam\u003c/code\u003e command and \u003ccode\u003eporcelain.am()\u003c/code\u003e for applying mailbox-style email patches (\u003ccode\u003egit am\u003c/code\u003e), with state persistence for \u003ccode\u003e--continue\u003c/code\u003e, \u003ccode\u003e--skip\u003c/code\u003e, \u003ccode\u003e--abort\u003c/code\u003e, and \u003ccode\u003e--quit\u003c/code\u003e recovery (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/1692\"\u003e#1692\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eapply\u003c/code\u003e command and \u003ccode\u003eporcelain.apply_patch()\u003c/code\u003e for applying unified diffs, including rename/copy detection, binary patches with Git's base85 encoding, and \u003ccode\u003e--3way\u003c/code\u003e merge fallback (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/1784\"\u003e#1784\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eExpand \u003ccode\u003elog\u003c/code\u003e command options: \u003ccode\u003e--oneline\u003c/code\u003e, \u003ccode\u003e--abbrev-commit\u003c/code\u003e, \u003ccode\u003e--author\u003c/code\u003e, \u003ccode\u003e--committer\u003c/code\u003e, \u003ccode\u003e--grep\u003c/code\u003e, \u003ccode\u003e--since\u003c/code\u003e/\u003ccode\u003e--after\u003c/code\u003e, \u003ccode\u003e--until\u003c/code\u003e/\u003ccode\u003e--before\u003c/code\u003e, \u003ccode\u003e-n\u003c/code\u003e/\u003ccode\u003e--max-count\u003c/code\u003e, \u003ccode\u003e--no-merges\u003c/code\u003e, \u003ccode\u003e--merges\u003c/code\u003e, \u003ccode\u003e--stat\u003c/code\u003e, \u003ccode\u003e-p\u003c/code\u003e/\u003ccode\u003e--patch\u003c/code\u003e, \u003ccode\u003e--name-only\u003c/code\u003e, and \u003ccode\u003e--follow\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/1779\"\u003e#1779\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd support for push options (\u003ccode\u003e-o\u003c/code\u003e/\u003ccode\u003e--push-option\u003c/code\u003e) in \u003ccode\u003epush\u003c/code\u003e, enabling AGit flow and other server-side push option workflows.\u003c/li\u003e\n\u003cli\u003eAdd missing push options: \u003ccode\u003e--all\u003c/code\u003e, \u003ccode\u003e--tags\u003c/code\u003e, \u003ccode\u003e--delete\u003c/code\u003e, \u003ccode\u003e--dry-run\u003c/code\u003e, \u003ccode\u003e--prune\u003c/code\u003e, \u003ccode\u003e--set-upstream\u003c/code\u003e, \u003ccode\u003e--follow-tags\u003c/code\u003e, and \u003ccode\u003e--mirror\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/1844\"\u003e#1844\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd support for atomic push operations (\u003ccode\u003e--atomic\u003c/code\u003e): either all ref updates succeed or none are applied (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/1781\"\u003e#1781\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eextensions.relativeworktrees\u003c/code\u003e repository extension, allowing worktrees to use relative paths (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/2112\"\u003e#2112\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration support\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003egc.pruneExpire\u003c/code\u003e — grace period before unreachable objects are pruned (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/1859\"\u003e#1859\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ecore.precomposeunicode\u003c/code\u003e — normalize NFD Unicode paths from macOS filesystems to NFC (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/1804\"\u003e#1804\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ecore.gitProxy\u003c/code\u003e — proxy command for \u003ccode\u003egit://\u003c/code\u003e protocol connections (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/1850\"\u003e#1850\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ecore.maxStat\u003c/code\u003e — limit stat operations when checking for unstaged changes (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/1853\"\u003e#1853\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ecore.packedGitLimit\u003c/code\u003e — cap memory used for mmapped pack files, closing LRU packs when exceeded (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/1848\"\u003e#1848\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ecore.deltaBaseCacheLimit\u003c/code\u003e — cap memory used for caching delta base objects; defaults to 96 MiB (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/1849\"\u003e#1849\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ehttp.userAgent\u003c/code\u003e — customize the User-Agent header (global and URL-specific); default is \u003ccode\u003egit/dulwich/{version}\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix GPG signature verification to raise \u003ccode\u003eBadSignature\u003c/code\u003e for all GPG errors, not just \u003ccode\u003eBadSignatures\u003c/code\u003e; also detect when GPG returns no signatures.\u003c/li\u003e\n\u003cli\u003eFix client incorrectly sending \u003ccode\u003eunborn\u003c/code\u003e argument in Git protocol v2 \u003ccode\u003els-refs\u003c/code\u003e requests to servers that don't advertise \u003ccode\u003els-refs=unborn\u003c/code\u003e, preventing clones from older servers like Gerrit 3.12.2 (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/2104\"\u003e#2104\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImprove error message in \u003ccode\u003eread_info_refs()\u003c/code\u003e to show the actual line content when parsing fails (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/2103\"\u003e#2103\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003ePreserve quoted trailing whitespace in config values (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/2145\"\u003e#2145\u003c/a\u003e, Christopher Toth).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e.gitignore\u003c/code\u003e parent re-include handling so a later \u003ccode\u003e!dir/\u003c/code\u003e re-include allows a subsequent file-level negation to take effect (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/2141\"\u003e#2141\u003c/a\u003e, N0zoM1z0).\u003c/li\u003e\n\u003cli\u003eFix host key verification in \u003ccode\u003econtrib/paramiko_vendor.py\u003c/code\u003e by loading known hosts and rejecting unknown SSH host keys by default (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/2123\"\u003e#2123\u003c/a\u003e, quart27219).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\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/jelmer/dulwich/blob/main/NEWS\"\u003edulwich's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e1.2.1\t2026-04-29\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRecover from concurrent pack removals (e.g. a racing \u003ccode\u003egit repack\u003c/code\u003e or\n\u003ccode\u003egit gc --auto\u003c/code\u003e) instead of raising spurious \u003ccode\u003eKeyError\u003c/code\u003e /\n\u003ccode\u003eFileNotFoundError\u003c/code\u003e. \u003ccode\u003ePack.index\u003c/code\u003e and \u003ccode\u003ePack.data\u003c/code\u003e now translate\n\u003ccode\u003eFileNotFoundError\u003c/code\u003e during lazy load into \u003ccode\u003ePackFileDisappeared\u003c/code\u003e,\nand \u003ccode\u003ePackBasedObjectStore\u003c/code\u003e evicts the stale pack and rescans the\npack directory before retrying — equivalent to git's\n\u003ccode\u003ereprepare_packed_git()\u003c/code\u003e. (Jelmer Vernooĳ, \u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/2159\"\u003e#2159\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDerive the LFS endpoint as the remote's on-disk LFS store\n(\u003ccode\u003e\u0026lt;remote\u0026gt;/.git/lfs\u003c/code\u003e for worktrees, \u003ccode\u003e\u0026lt;remote\u0026gt;/lfs\u003c/code\u003e for bare repos)\nwhen \u003ccode\u003eremote.origin.url\u003c/code\u003e points at a local filesystem path or\n\u003ccode\u003efile://\u003c/code\u003e URL, matching git-lfs behaviour. Previously the built-in\nsmudge filter constructed an HTTP-style \u003ccode\u003e\u0026lt;remote\u0026gt;.git/info/lfs\u003c/code\u003e path\nthat did not exist on disk, leaving LFS-tracked files as pointers when\ncloning from a local repo. (Jelmer Vernooĳ)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDeduplicate objects when writing a multi-pack-index. Objects present\nin multiple packs (e.g. after \u003ccode\u003egit gc\u003c/code\u003e creates a cruft pack) would\notherwise produce an OIDL chunk with repeated SHAs, causing \u003ccode\u003egit multi-pack-index verify\u003c/code\u003e to fail with \u0026quot;oid lookup out of order\u0026quot;.\n(Jelmer Vernooĳ, \u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/2152\"\u003e#2152\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eExtend ignorecase and precomposeunicode support to index lookups.\n(Jelmer Vernooĳ, \u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/1807\"\u003e#1807\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e1.2.0\t2026-04-21\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRespect the \u003ccode\u003eGIT_PROTOCOL\u003c/code\u003e environment variable when choosing the\ndefault Git wire protocol version to send. Colon-separated\n\u003ccode\u003eversion=N\u003c/code\u003e entries are parsed and applied when no explicit\n\u003ccode\u003eprotocol_version\u003c/code\u003e is passed. (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/1862\"\u003e#1862\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eExpand \u003ccode\u003elog\u003c/code\u003e command options: add \u003ccode\u003e--oneline\u003c/code\u003e, \u003ccode\u003e--abbrev-commit\u003c/code\u003e,\n\u003ccode\u003e--author\u003c/code\u003e, \u003ccode\u003e--committer\u003c/code\u003e, \u003ccode\u003e--grep\u003c/code\u003e, \u003ccode\u003e--since\u003c/code\u003e/\u003ccode\u003e--after\u003c/code\u003e,\n\u003ccode\u003e--until\u003c/code\u003e/\u003ccode\u003e--before\u003c/code\u003e, \u003ccode\u003e-n\u003c/code\u003e/\u003ccode\u003e--max-count\u003c/code\u003e, \u003ccode\u003e--no-merges\u003c/code\u003e,\n\u003ccode\u003e--merges\u003c/code\u003e, \u003ccode\u003e--stat\u003c/code\u003e, \u003ccode\u003e-p\u003c/code\u003e/\u003ccode\u003e--patch\u003c/code\u003e, \u003ccode\u003e--name-only\u003c/code\u003e,\nand \u003ccode\u003e--follow\u003c/code\u003e. (Jelmer Vernooĳ, \u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/1779\"\u003e#1779\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003eam\u003c/code\u003e command and \u003ccode\u003eporcelain.am()\u003c/code\u003e for applying mailbox-style\nemail patches (\u003ccode\u003egit am\u003c/code\u003e), with state persistence for\n\u003ccode\u003e--continue\u003c/code\u003e, \u003ccode\u003e--skip\u003c/code\u003e, \u003ccode\u003e--abort\u003c/code\u003e, and \u003ccode\u003e--quit\u003c/code\u003e recovery\noperations. (Jelmer Vernooĳ, \u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/1692\"\u003e#1692\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd support for \u003ccode\u003eextensions.relativeworktrees\u003c/code\u003e repository extension,\nallowing Git worktrees to use relative paths instead of absolute paths\nwhen linking worktrees. (Jelmer Vernooĳ, \u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/2112\"\u003e#2112\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd support for push options (\u003ccode\u003e-o\u003c/code\u003e/\u003ccode\u003e--push-option\u003c/code\u003e) in the \u003ccode\u003epush\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelmer/dulwich/commit/57806b8a4d041cd18bf84ba8d715f4dd0bc5e200\"\u003e\u003ccode\u003e57806b8\u003c/code\u003e\u003c/a\u003e Release 1.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelmer/dulwich/commit/a127d330de1ef497935146bcd978211d9894787f\"\u003e\u003ccode\u003ea127d33\u003c/code\u003e\u003c/a\u003e Honor GIT_PROTOCOL env var when picking default protocol version (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/1862\"\u003e#1862\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/2149\"\u003e#2149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelmer/dulwich/commit/6c1697a108757766aba71624422a93900f2a867a\"\u003e\u003ccode\u003e6c1697a\u003c/code\u003e\u003c/a\u003e lfs: derive correct file:// LFS endpoint from local remote URL (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/2161\"\u003e#2161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelmer/dulwich/commit/6685fde81a717d91d747953c2f9277939ea5ab6b\"\u003e\u003ccode\u003e6685fde\u003c/code\u003e\u003c/a\u003e lfs: use pathlib.Path.as_uri() for portable file:// URLs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelmer/dulwich/commit/0d0b9f8d205eb45660d81d1efc5b7ff1fc579e61\"\u003e\u003ccode\u003e0d0b9f8\u003c/code\u003e\u003c/a\u003e Migrate from testrepository to inquest (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/2160\"\u003e#2160\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelmer/dulwich/commit/a0dac57db7ba8a6d9fe67d1cf4303cef306647a2\"\u003e\u003ccode\u003ea0dac57\u003c/code\u003e\u003c/a\u003e Migrate from testrepository to inquest\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelmer/dulwich/commit/cd6ebd90fc8f2f1b267db29c418c12c7ebb971a3\"\u003e\u003ccode\u003ecd6ebd9\u003c/code\u003e\u003c/a\u003e lfs: derive correct file:// LFS endpoint from local remote URL\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelmer/dulwich/commit/bfaf192aaba90df54e4e7b07bba11a28cf36012b\"\u003e\u003ccode\u003ebfaf192\u003c/code\u003e\u003c/a\u003e Disable background processes to prevent issues with races (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/2158\"\u003e#2158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelmer/dulwich/commit/06d7afdeb87f742bdfff93563fd0acd042473b0a\"\u003e\u003ccode\u003e06d7afd\u003c/code\u003e\u003c/a\u003e Move GIT_SSH/GIT_SSH_COMMAND env lookup from client.py to cli.py (\u003ca href=\"https://redirect.github.com/dulwich/dulwich/issues/2156\"\u003e#2156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelmer/dulwich/commit/e60e0c1a4d44441d2f6edfc01ba5098d2ed24cf0\"\u003e\u003ccode\u003ee60e0c1\u003c/code\u003e\u003c/a\u003e Disable background processes to prevent issues with races\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/dulwich/dulwich/compare/dulwich-1.1.0...dulwich-1.2.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fido2` from 2.1.1 to 2.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Yubico/python-fido2/releases\"\u003efido2's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epython-fido2 2.2.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eVersion 2.2.0 (released 2026-04-15)\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRestrict DLL search paths (YSA-2026-01).\u003c/li\u003e\n\u003cli\u003eAdd support for experimental previewSign extension: \u003ca href=\"https://yubicolabs.github.io/webauthn-sign-extension/4/#sctn-sign-extension\"\u003ehttps://yubicolabs.github.io/webauthn-sign-extension/4/#sctn-sign-extension\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for PSL wildcard and exception rules to RP validation.\u003c/li\u003e\n\u003cli\u003eFix: WindowsClient hmac_secret extension raising Null pointer access error.\u003c/li\u003e\n\u003cli\u003eFix: TPM attestation certificate Subject field validation.\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/Yubico/python-fido2/blob/main/NEWS\"\u003efido2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cul\u003e\n\u003cli\u003eVersion 2.2.0 (released 2026-04-15)\n** Restrict DLL search paths (YSA-2026-01).\n** Add support for experimental previewSign extension:\n\u003ca href=\"https://yubicolabs.github.io/webauthn-sign-extension/4/#sctn-sign-extension\"\u003ehttps://yubicolabs.github.io/webauthn-sign-extension/4/#sctn-sign-extension\u003c/a\u003e\n** Add support for PSL wildcard and exception rules to RP validation.\n** Fix: WindowsClient hmac_secret extension raising Null pointer access error.\n** Fix: TPM attestation certificate Subject field validation.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Yubico/python-fido2/commit/176ba47e58ae1d2837d615bfd471de45eb9af97a\"\u003e\u003ccode\u003e176ba47\u003c/code\u003e\u003c/a\u003e Update NEWS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Yubico/python-fido2/commit/dbacb5284de2cb145f538b1bad56ece0dfcf877e\"\u003e\u003ccode\u003edbacb52\u003c/code\u003e\u003c/a\u003e Restrict DLL loading to System32\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Yubico/python-fido2/commit/000e26b2174b8753735bde5df55923d8db55cc14\"\u003e\u003ccode\u003e000e26b\u003c/code\u003e\u003c/a\u003e Bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Yubico/python-fido2/commit/4f473784676405c90c3f1b96c5416f77b6e9e7d4\"\u003e\u003ccode\u003e4f47378\u003c/code\u003e\u003c/a\u003e Bump example dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Yubico/python-fido2/commit/e095fc4d930eb24947075d2ab93f5cf92892e6ee\"\u003e\u003ccode\u003ee095fc4\u003c/code\u003e\u003c/a\u003e Pass ClientPin.PERMISSIONS when 0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Yubico/python-fido2/commit/cd5fe1fa882fa8c7809c9bd9ac7f822919063ee7\"\u003e\u003ccode\u003ecd5fe1f\u003c/code\u003e\u003c/a\u003e Use constant_time for consistency.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Yubico/python-fido2/commit/19cba78e03fe65824b4fabfa2b3a86da224b83db\"\u003e\u003ccode\u003e19cba78\u003c/code\u003e\u003c/a\u003e Merge PR \u003ca href=\"https://redirect.github.com/Yubico/python-fido2/issues/285\"\u003e#285\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Yubico/python-fido2/commit/84edc052c1ce7f8ecd70cf9a2c211454c5053457\"\u003e\u003ccode\u003e84edc05\u003c/code\u003e\u003c/a\u003e Add ARKG sign extension\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Yubico/python-fido2/commit/6430bf946987f53f67725a85fce61a1609296370\"\u003e\u003ccode\u003e6430bf9\u003c/code\u003e\u003c/a\u003e Windows: Check that pHmacSecret is populated\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Yubico/python-fido2/commit/efb81ef0bbb44f07cfe18071e2c9286fe69d4163\"\u003e\u003ccode\u003eefb81ef\u003c/code\u003e\u003c/a\u003e More type checking for tests\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Yubico/python-fido2/compare/2.1.1...2.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `icalendar` from 7.0.3 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/collective/icalendar/releases\"\u003eicalendar's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev7.1.0\u003c/h2\u003e\n\u003cp\u003eTo view the changes, please see the \u003ca href=\"https://icalendar.readthedocs.io/en/latest/changelog.html\"\u003eChangelog\u003c/a\u003e. This release can be installed from \u003ca href=\"https://pypi.org/project/icalendar/#history\"\u003ePyPI\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/collective/icalendar/blob/main/CHANGES.rst\"\u003eicalendar's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.0 (2026-04-30)\u003c/h2\u003e\n\u003cp\u003eMinor changes\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n- Deprecate ``icalendar.parser.escape_string`` and ``icalendar.parser.unescape_string`` for icalendar version 8. Use ``_escape_string`` and ``_unescape_string`` internally. :issue:`1011`\n- Added behavioral tests for :class:`~icalendar.cal.lazy.LazyCalendar` covering serialization round-trips, ``.todos``, ``.journals``, forward timezone references, and ``with_uid()`` substring false-positives. :issue:`1050`\n- Added edge case tests for :class:`~icalendar.prop.conference.Conference` parameter normalization covering string passthrough, empty list filtering, and ``None`` omission. :issue:`925`\n- Make icalendar an explicit editable install for clarity. :pr:`1268`\n- Do not run some tests until a pull request is approved. :pr:`1246`\n- Mark skipped CI tasks as skipped instead of running them. :issue:`1286`\n- Created an :meth:`~icalendar.prop.boolean.vBoolean.ical_value` property for the :class:`~icalendar.prop.boolean.vBoolean` component. :issue:`876`\n- Created an :meth:`~icalendar.prop.float.vFloat.ical_value` property for the :class:`~icalendar.prop.float.vFloat` component. :issue:`876`\n- Created an :meth:`~icalendar.prop.integer.vInt.ical_value` property for the :class:`~icalendar.prop.integer.vInt` component. :issue:`876`\n- Created an :meth:`~icalendar.prop.binary.vBinary.ical_value` property for the :class:`~icalendar.prop.binary.vBinary` component. :issue:`876`\n- Put the link check as the last documentation CI task, allowing the documentation build and Vale to run first and fail faster. :pr:`1295`\n- Extended :func:`~icalendar.timezone.tzp.TZP.localize` to support localizing both :class:`datetime.datetime` and :class:`datetime.time` objects, returning timezone-aware :class:`datetime.time` objects for the latter. :issue:`1142`\n- Add type hints to tests directory functions. :issue:`938`\n- Update to Contributor Covenant 3.0 Code of Conduct, hosted at https://pycal.org/code-of-conduct/.\n\u003cp\u003eNew features\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n- Added :class:`~icalendar.cal.lazy.LazyCalendar` for lazy parsing of subcomponents. :issue:`158`, :issue:`1050`\n- Updated :func:`icalendar.prop.dt.time.vTime.from_ical` to support parsing time values with TZID parameters, returning timezone-aware :class:`datetime.time` objects. :issue:`1142`\n- Added ``subcomponents`` parameter to :meth:`Component.new \u0026amp;lt;icalendar.cal.component.Component.new\u0026amp;gt;`, :meth:`Event.new \u0026amp;lt;icalendar.cal.event.Event.new\u0026amp;gt;`, :meth:`Todo.new \u0026amp;lt;icalendar.cal.todo.Todo.new\u0026amp;gt;`, and :meth:`Availability.new \u0026amp;lt;icalendar.cal.availability.Availability.new\u0026amp;gt;`. :issue:`1065`\n- Switch to uv for development. :issue:`1102`\n\nBug fixes\n~~~~~~~~~\n\n- Allow lenient parsing of content lines with optional whitespace around property and parameter delimiters (for example, ``REFRESH - INTERVAL; VALUE = DURATION:PT48H``) when parsing calendars with ``strict=False``. :issue:`351`\n- X-properties with a ``VALUE`` parameter are now parsed using the correct type instead of falling back to :class:`~icalendar.prop.unkown.vUnknown`. :issue:`1238`\n- Test that the ``DURATION`` property catches :class:`datetime.timedelta` objects without vProperty wrappers. :issue:`884`\n- Fixed :func:`~icalendar.attr.get_end_property` to avoid allowing the creating of VEVENT components with negative durations. Only VTODO components are allowed to have negative durations. :issue:`999`\n- GitHub Actions: conditional tests now show as \u0026amp;quot;skipped\u0026amp;quot; instead of \u0026amp;quot;pending\u0026amp;quot;. :issue:`1264`\n- Fixed :meth:`Component.__eq__ \u0026amp;lt;icalendar.cal.component.Component.__eq__\u0026amp;gt;` method not being commutative when comparing subcomponents. :issue:`1224`\n- Verified that the ``VALUE`` parameter of jCal components is used for the type of the component property. :issue:`1237`\n- Fix :func:`~icalendar.parser.string.escape_char` handling of ``bytes`` input by converting with :func:`icalendar.parser_tools.to_unicode` before escaping. :issue:`1226`\n- Fixed ``RecursionError`` in ``walk()``, ``property_items()``, and ``to_ical()`` by using iterative implementations for component traversal and property extraction. :pr:`1348`\n\nDocumentation\n\u0026lt;/code\u0026gt;\u0026lt;/pre\u0026gt;\n\u0026lt;ul\u0026gt;\n\u0026lt;li\u0026gt;Convert docstring of :func:\u0026lt;code\u0026gt;~icalendar.param.string_parameter\u0026lt;/code\u0026gt; to Google style. :issue:\u0026lt;code\u0026gt;1072\u0026lt;/code\u0026gt;, :pr:\u0026lt;code\u0026gt;1316\u0026lt;/code\u0026gt;\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;Run \u0026lt;code\u0026gt;sphinx-build\u0026lt;/code\u0026gt; with \u0026lt;code\u0026gt;-W\u0026lt;/code\u0026gt; to turn warnings into errors. :issue:\u0026lt;code\u0026gt;1306\u0026lt;/code\u0026gt;\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;Added \u0026lt;code\u0026gt;sphinx-llms-txt \u0026amp;lt;https://sphinx-llms-txt.readthedocs.io/en/stable/\u0026amp;gt;\u0026lt;/code\u0026gt;_ extension to generate :file:\u0026lt;code\u0026gt;llms.txt\u0026lt;/code\u0026gt; and :file:\u0026lt;code\u0026gt;llms-full.txt\u0026lt;/code\u0026gt; files for AI/LLM documentation consumption. :issue:\u0026lt;code\u0026gt;1302\u0026lt;/code\u0026gt;\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;Fixed CI Vale check reporting and resolved Vale errors. :issue:\u0026lt;code\u0026gt;1277\u0026lt;/code\u0026gt;\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;Include :file:\u0026lt;code\u0026gt;Makefile\u0026lt;/code\u0026gt; in documentation workflow path filters so documentation CI runs when Makefile logic changes, and keep Vale failures visible in CI output. :issue:\u0026lt;code\u0026gt;1277\u0026lt;/code\u0026gt;\u0026lt;/li\u0026gt;\n\u0026lt;/ul\u0026gt;\n\u0026lt;!-- raw HTML omitted --\u0026gt;\n\u0026lt;/blockquote\u0026gt;\n\u0026lt;p\u0026gt;... (truncated)\u0026lt;/p\u0026gt;\n\u0026lt;/details\u0026gt;\n\u0026lt;details\u0026gt;\n\u0026lt;summary\u0026gt;Commits\u0026lt;/summary\u0026gt;\n\n\u0026lt;ul\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/collective/icalendar/commit/1300b76fb3fe40d987cc3715735c026b3c1a2191\u0026quot;\u0026gt;\u0026lt;code\u0026gt;1300b76\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Merge branch 'main' into 7.x\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/collective/icalendar/commit/255e6b841331e2d5cf2901402e08ab788899d465\u0026quot;\u0026gt;\u0026lt;code\u0026gt;255e6b8\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; add 7.x to run the tests\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/collective/icalendar/commit/fc8a4f5674eaa05bf3546b296f166583f670561a\u0026quot;\u0026gt;\u0026lt;code\u0026gt;fc8a4f5\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; disable the version switcher on the 7.x branch\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/collective/icalendar/commit/f5aa35d2ff6d106f5a7b286970b65b5f9d9211b4\u0026quot;\u0026gt;\u0026lt;code\u0026gt;f5aa35d\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; version 7.1.0\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/collective/icalendar/commit/b4ffb8345deea76e4cca72689907ed2f8488e7de\u0026quot;\u0026gt;\u0026lt;code\u0026gt;b4ffb83\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Merge pull request \u0026lt;a href=\u0026quot;https://redirect.github.com/collective/icalendar/issues/1348\u0026quot;\u0026gt;#1348\u0026lt;/a\u0026gt; from uwezkhan/fix/property-items-recursion\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/collective/icalendar/commit/1d6d18d357335367d72f4628b7158dd4800caf39\u0026quot;\u0026gt;\u0026lt;code\u0026gt;1d6d18d\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Merge branch 'main' into fix/property-items-recursion\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/collective/icalendar/commit/05a34d48d3223b2780c9afffd0cdbab9d5c50ffd\u0026quot;\u0026gt;\u0026lt;code\u0026gt;05a34d4\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Merge pull request \u0026lt;a href=\u0026quot;https://redirect.github.com/collective/icalendar/issues/1346\u0026quot;\u0026gt;#1346\u0026lt;/a\u0026gt; from uwezkhan/fix/deep-component-walk-dos\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/collective/icalendar/commit/a4829d4d43b29e430b97ab66313f6357edd3742d\u0026quot;\u0026gt;\u0026lt;code\u0026gt;a4829d4\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Merge branch 'main' into fix/property-items-recursion\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/collective/icalendar/commit/66579fbf8fb4aeb6bf1ded0cfa353ba3d500e35a\u0026quot;\u0026gt;\u0026lt;code\u0026gt;66579fb\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; fix formatting\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;\u0026lt;a href=\u0026quot;https://github.com/collective/icalendar/commit/1f55c2035315e53b8d9a6eeacf1aee046d794fd3\u0026quot;\u0026gt;\u0026lt;code\u0026gt;1f55c20\u0026lt;/code\u0026gt;\u0026lt;/a\u0026gt; Merge branch 'main' into fix/deep-component-walk-dos\u0026lt;/li\u0026gt;\n\u0026lt;li\u0026gt;Additional commits viewable in \u0026lt;a href=\u0026quot;https://github.com/collective/icalendar/compare/v7.0.3...v7.1.0\u0026quot;\u0026gt;compare view\u0026lt;/a\u0026gt;\u0026lt;/li\u0026gt;\n\u0026lt;/ul\u0026gt;\n\u0026lt;/details\u0026gt;\n\n\u0026lt;br /\u0026gt;\u003c/code\u003e\u003c/pre\u003e\n\nUpdates `idna` from 3.11 to 3.13\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/blob/master/HISTORY.rst\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e3.13 (2026-04-22)\n+++++++++++++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCorrect classification error for codepoint U+A7F1\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e3.12 (2026-04-21)\n+++++++++++++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate to Unicode 17.0.0.\u003c/li\u003e\n\u003cli\u003eIssue a deprecation warning for the transitional argument.\u003c/li\u003e\n\u003cli\u003eAdded lazy-loading to provide some performance improvements.\u003c/li\u003e\n\u003cli\u003eRemoved vestiges of code related to Python 2 support, including\nsegmentation of data structures specific to Jython.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to Rodrigo Nogueira for contributions to this release.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/89cdfd27338896cee6b1ee18e64c96ac28684ce0\"\u003e\u003ccode\u003e89cdfd2\u003c/code\u003e\u003c/a\u003e Release v3.13\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/1eb068687543118147417a8d8a70674e2c172891\"\u003e\u003ccode\u003e1eb0686\u003c/code\u003e\u003c/a\u003e Pre-release 3.13\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/5f20d1e41eea3b3873d18d83d7a384784f72a92e\"\u003e\u003ccode\u003e5f20d1e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/220\"\u003e#220\u003c/a\u003e from kjd/unicode-next\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/4ea84252ab21e62a79e5a3273746112b5dcfb810\"\u003e\u003ccode\u003e4ea8425\u003c/code\u003e\u003c/a\u003e Regenerate idnadata.py with correct NFKC_CF data\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/fd47341a08bbdcffda33694211ca4de10170cd41\"\u003e\u003ccode\u003efd47341\u003c/code\u003e\u003c/a\u003e Use NFKC_CF from Unicode data files instead of Python's unicodedata module\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/a5304a4cdbd7b31595f8ac42ffdfa88f5b936467\"\u003e\u003ccode\u003ea5304a4\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/219\"\u003e#219\u003c/a\u003e from kjd/release-3.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/d80d6f9254d699961fa2c669a1534cde9d4ee5b6\"\u003e\u003ccode\u003ed80d6f9\u003c/code\u003e\u003c/a\u003e Release v3.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/1bb44ddb3f2a9dcf97a6ac11aba34e5b6ed31291\"\u003e\u003ccode\u003e1bb44dd\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/218\"\u003e#218\u003c/a\u003e from kjd/release-candidate-3.12rc0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/909c49d15b8d159be163bccc7972116baffdb47b\"\u003e\u003ccode\u003e909c49d\u003c/code\u003e\u003c/a\u003e Release candidate for 3.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/c5459a10370f005dc09921aee3201b5a45699f9d\"\u003e\u003ccode\u003ec5459a1\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/217\"\u003e#217\u003c/a\u003e from kjd/housekeeping-2\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.11...v3.13\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `importlib-metadata` from 8.7.1 to 9.0.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/importlib_metadata/blob/main/NEWS.rst\"\u003eimportlib-metadata's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev9.0.0\u003c/h1\u003e\n\u003ch2\u003eDeprecations and Removals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eMetadataNotFound\u003c/code\u003e (subclass of \u003ccode\u003eFileNotFoundError\u003c/code\u003e) and updated \u003ccode\u003eDistribution.metadata\u003c/code\u003e/\u003ccode\u003emetadata()\u003c/code\u003e to raise it when the metadata files are missing instead of returning \u003ccode\u003eNone\u003c/code\u003e\u003ccode\u003epython/cpython#143387\u003c/code\u003e\u003ca href=\"https://redirect.github.com/python/importlib_metadata/issues/532\"\u003e#532\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev8.9.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epython/cpython#110937\u003c/code\u003e\u003ca href=\"https://redirect.github.com/python/cpython/issues/140141\"\u003epython/cpython#140141\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/python/cpython/issues/143658\"\u003epython/cpython#143658\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev8.8.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved Python 3.9 compatibility.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\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/importlib_metadata/commit/a9f883fef337c667a81a987bc0cbc0dbb43b2bfe\"\u003e\u003ccode\u003ea9f883f\u003c/code\u003e\u003c/a\u003e Finalize\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/importlib_metadata/commit/9b0dfdfe2e187dca6644007570189aadc6c97a34\"\u003e\u003ccode\u003e9b0dfdf\u003c/code\u003e\u003c/a\u003e Raise an exception when no metadata file is found (\u003ca href=\"https://redirect.github.com/python/importlib_metadata/issues/532\"\u003e#532\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/importlib_metadata/commit/0f2229ca84f20be2ceaaa4c62a276fa9b003f5bc\"\u003e\u003ccode\u003e0f2229c\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into feature/no-metadata-exception\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/importlib_metadata/commit/2f4088e490a73ac7f39b86214d2da16d2eb1ff39\"\u003e\u003ccode\u003e2f4088e\u003c/code\u003e\u003c/a\u003e Remove news fragments about internal details.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/importlib_metadata/commit/0ac27203f8044daf634c22f385838122a0707449\"\u003e\u003ccode\u003e0ac2720\u003c/code\u003e\u003c/a\u003e Add news fragment.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/importlib_metadata/commit/a5c2154835facb4a9d0a6f5b3aac1f3d1ff86170\"\u003e\u003ccode\u003ea5c2154\u003c/code\u003e\u003c/a\u003e Finalize\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/importlib_metadata/commit/e66e22634f7522e7778b66e8a8b19782a11d4943\"\u003e\u003ccode\u003ee66e226\u003c/code\u003e\u003c/a\u003e Drop support for EOL Python 3.9 (\u003ca href=\"https://redirect.github.com/python/importlib_metadata/issues/530\"\u003e#530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/importlib_metadata/commit/6027933ae96c9e51dd0b7ce392cb30f6fcae1940\"\u003e\u003ccode\u003e6027933\u003c/code\u003e\u003c/a\u003e Add news fragment.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/importlib_metadata/commit/b89388a53bf857127e0a6860dfcfe2cd69a79ab8\"\u003e\u003ccode\u003eb89388a\u003c/code\u003e\u003c/a\u003e Import os_helper directly.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/importlib_metadata/commit/2dcb761d940b0115b786ab3b6f336af7d94630f4\"\u003e\u003ccode\u003e2dcb761\u003c/code\u003e\u003c/a\u003e Add uniform exclusions for test.support.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/importlib_metadata/compare/v8.7.1...v9.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `lxml` from 6.0.3 to 6.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/lxml/lxml/blob/master/CHANGES.txt\"\u003elxml's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e6.1.0 (2026-04-17)\u003c/h1\u003e\n\u003cp\u003eThis release fixes a possible external entity injection (XXE) vulnerability in\n\u003ccode\u003eiterparse()\u003c/code\u003e and the \u003ccode\u003eETCompatXMLParser\u003c/code\u003e.\u003c/p\u003e\n\u003ch2\u003eFeatures added\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eGH#486: The HTML ARIA accessibility attributes were added to the set of safe attributes\nin \u003ccode\u003elxml.html.defs\u003c/code\u003e.  This allows \u003ccode\u003elxml_html_clean\u003c/code\u003e to pass them through.\nPatch by oomsveta.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe default chunk size for reading from file-likes in \u003ccode\u003eiterparse()\u003c/code\u003e is now configurable\nwith a new \u003ccode\u003echunk_size\u003c/code\u003e argument.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugs fixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eLP#2146291: The \u003ccode\u003eresolve_entities\u003c/code\u003e option was still set to \u003ccode\u003eTrue\u003c/code\u003e for\n\u003ccode\u003eiterparse\u003c/code\u003e and \u003ccode\u003eETCompatXMLParser\u003c/code\u003e, allowing for external entity injection (XXE)\nwhen using these parsers without setting this option explicitly.\nThe default was now changed to \u003ccode\u003e'internal'\u003c/code\u003e only (as for the normal XML and HTML parsers\nsince lxml 5.0).\nIssue found by Sihao Qiu as CVE-2026-41066.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e6.0.4 (2026-04-12)\u003c/h1\u003e\n\u003ch2\u003eBugs fixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eLP#2148019: Spurious MemoryError during namespace cleanup.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/43722...\n\n_Description has been truncated_","html_url":"https://github.com/invenhost/InvenTree/pull/323","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/invenhost%2FInvenTree/issues/323","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/323/packages"}},{"old_version":"1.4.4","new_version":"1.5.0","update_type":"minor","path":null,"pr_created_at":"2026-05-07T17:54:53.000Z","version_change":"1.4.4 → 1.5.0","issue":{"uuid":"4400874596","node_id":"PR_kwDOIEpTDs7ZQGfo","number":1007,"state":"open","title":"build: bump build from 1.4.4 to 1.5.0","user":"dependabot[bot]","labels":["dependencies:pyproject"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-07T17:54:53.000Z","updated_at":"2026-05-07T20:38:08.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build","packages":[{"name":"build","old_version":"1.4.4","new_version":"1.5.0","repository_url":"https://github.com/pypa/build"}],"path":null,"ecosystem":"pip"},"body":"Bumps [build](https://github.com/pypa/build) from 1.4.4 to 1.5.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/releases\"\u003ebuild's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: try to improve release docs by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1051\"\u003epypa/build#1051\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: drop 3.9, require 3.10+ by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1036\"\u003epypa/build#1036\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: tox toml by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1033\"\u003epypa/build#1033\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: api should not ignore installed, only CLI by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1056\"\u003epypa/build#1056\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.4...1.5.0\"\u003ehttps://github.com/pypa/build/compare/1.4.4...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e####################\n1.5.0 (2026-04-30)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.9 support - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1036\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003e--ignore-installed\u003c/code\u003e opt-in from the API via \u003ccode\u003efresh=True\u003c/code\u003e - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1056\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1033\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.4 (2026-04-22)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eFix release pipeline generating \u003ccode\u003eCHANGELOG.rst\u003c/code\u003e entries with inconsistent heading levels, which broke \u003ccode\u003esphinx -W\u003c/code\u003e\nand pinned Read the Docs \u003ccode\u003estable\u003c/code\u003e at 1.4.0 - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e1031\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRevert :pr:\u003ccode\u003e1039\u003c/code\u003e from build 1.4.3, no longer check direct_url (for now) - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1039\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--ignore-installed\u003c/code\u003e to pip install command to prevent issues with packages already present in the isolated\nbuild environment - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1037\u003c/code\u003e) (:issue:\u003ccode\u003e1040\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePartial revert of :pr:\u003ccode\u003e973\u003c/code\u003e, keeping log messages in one entry, multiple lines. (:issue:\u003ccode\u003e1044\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1048\u003c/code\u003e, :issue:\u003ccode\u003e1049\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.3 (2026-04-10)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/615d04cfc52ac3c1592a463f0afe484fee1cc368\"\u003e\u003ccode\u003e615d04c\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/776f702f84787525df62a5473dd13d4e2f45b977\"\u003e\u003ccode\u003e776f702\u003c/code\u003e\u003c/a\u003e fix: api should not ignore installed, only CLI (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/42da4c4b483563819fabdb8ecf2f6df53ed82123\"\u003e\u003ccode\u003e42da4c4\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1055\"\u003e#1055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b445cd2e736db5f80cde7d952d620a73cc26bf9d\"\u003e\u003ccode\u003eb445cd2\u003c/code\u003e\u003c/a\u003e chore: tox toml (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/c44c143876042ac6e1212a31684a3adca19beda4\"\u003e\u003ccode\u003ec44c143\u003c/code\u003e\u003c/a\u003e feat: drop 3.9, require 3.10+ (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/a9bb4560d213069b11c8068159f1de060abec5b7\"\u003e\u003ccode\u003ea9bb456\u003c/code\u003e\u003c/a\u003e build(deps): bump astral-sh/setup-uv from 8.0.0 to 8.1.0 in the actions group...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/cb3351155ce99902580022acb81dc0adb8124d53\"\u003e\u003ccode\u003ecb33511\u003c/code\u003e\u003c/a\u003e ci: try to improve release docs (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1051\"\u003e#1051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pypa/build/compare/1.4.4...1.5.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=build\u0026package-manager=pip\u0026previous-version=1.4.4\u0026new-version=1.5.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/ansys/pystk/pull/1007","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ansys%2Fpystk/issues/1007","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1007/packages"}},{"old_version":"1.4.3","new_version":"1.5.0","update_type":"minor","path":null,"pr_created_at":"2026-05-06T21:22:27.000Z","version_change":"1.4.3 → 1.5.0","issue":{"uuid":"4394527696","node_id":"PR_kwDOR4YgX87Y7aeA","number":63,"state":"closed","title":"chore(deps): bump the python-minor-patch group across 1 directory with 3 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-06T23:38:26.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-06T21:22:27.000Z","updated_at":"2026-05-06T23:38:27.000Z","time_to_close":8159,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-minor-patch","update_count":3,"packages":[{"name":"ruff","old_version":"0.15.11","new_version":"0.15.12","repository_url":"https://github.com/astral-sh/ruff"},{"name":"build","old_version":"1.4.3","new_version":"1.5.0","repository_url":"https://github.com/pypa/build"},{"name":"pre-commit","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/pre-commit/pre-commit"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor-patch group with 3 updates in the / directory: [ruff](https://github.com/astral-sh/ruff), [build](https://github.com/pypa/build) and [pre-commit](https://github.com/pre-commit/pre-commit).\n\nUpdates `ruff` from 0.15.11 to 0.15.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.12\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-24.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:file-ignore\u003c/code\u003e file-level suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23599\"\u003e#23599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:ignore\u003c/code\u003e logical-line suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23404\"\u003e#23404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRevert preview changes to displayed diagnostic severity in LSP (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24789\"\u003e#24789\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003etask-branch-as-short-circuit\u003c/code\u003e (\u003ccode\u003eAIR004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23579\"\u003e#23579\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Fix \u003ccode\u003ebreak\u003c/code\u003e/\u003ccode\u003econtinue\u003c/code\u003e handling in \u003ccode\u003eloop-iterator-mutation\u003c/code\u003e (\u003ccode\u003eB909\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24440\"\u003e#24440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLC2701\u003c/code\u003e for type parameter scopes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24576\"\u003e#24576\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epandas-vet\u003c/code\u003e] Suggest \u003ccode\u003e.array\u003c/code\u003e as well in \u003ccode\u003ePD011\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24805\"\u003e#24805\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRespect default Unix permissions for cache files (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24794\"\u003e#24794\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLR0124\u003c/code\u003e description not to claim self-comparison always returns the same value (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24749\"\u003e#24749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Expand docs on reusable \u003ccode\u003eTypeVar\u003c/code\u003es and scoping (\u003ccode\u003eUP046\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24153\"\u003e#24153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove rules table accessibility (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24711\"\u003e#24711\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/woodruffw\"\u003e\u003ccode\u003e@​woodruffw\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/avasis-ai\"\u003e\u003ccode\u003e@​avasis-ai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dev-iL\"\u003e\u003ccode\u003e@​Dev-iL\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/denyszhak\"\u003e\u003ccode\u003e@​denyszhak\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ShipItAndPray\"\u003e\u003ccode\u003e@​ShipItAndPray\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/augustelalande\"\u003e\u003ccode\u003e@​augustelalande\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/majiayu000\"\u003e\u003ccode\u003e@​majiayu000\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.15.12\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.15.12/ruff-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.12\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-24.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:file-ignore\u003c/code\u003e file-level suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23599\"\u003e#23599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:ignore\u003c/code\u003e logical-line suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23404\"\u003e#23404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRevert preview changes to displayed diagnostic severity in LSP (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24789\"\u003e#24789\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003etask-branch-as-short-circuit\u003c/code\u003e (\u003ccode\u003eAIR004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23579\"\u003e#23579\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Fix \u003ccode\u003ebreak\u003c/code\u003e/\u003ccode\u003econtinue\u003c/code\u003e handling in \u003ccode\u003eloop-iterator-mutation\u003c/code\u003e (\u003ccode\u003eB909\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24440\"\u003e#24440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLC2701\u003c/code\u003e for type parameter scopes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24576\"\u003e#24576\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epandas-vet\u003c/code\u003e] Suggest \u003ccode\u003e.array\u003c/code\u003e as well in \u003ccode\u003ePD011\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24805\"\u003e#24805\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRespect default Unix permissions for cache files (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24794\"\u003e#24794\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLR0124\u003c/code\u003e description not to claim self-comparison always returns the same value (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24749\"\u003e#24749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Expand docs on reusable \u003ccode\u003eTypeVar\u003c/code\u003es and scoping (\u003ccode\u003eUP046\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24153\"\u003e#24153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove rules table accessibility (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24711\"\u003e#24711\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/woodruffw\"\u003e\u003ccode\u003e@​woodruffw\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/avasis-ai\"\u003e\u003ccode\u003e@​avasis-ai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dev-iL\"\u003e\u003ccode\u003e@​Dev-iL\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/denyszhak\"\u003e\u003ccode\u003e@​denyszhak\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ShipItAndPray\"\u003e\u003ccode\u003e@​ShipItAndPray\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/augustelalande\"\u003e\u003ccode\u003e@​augustelalande\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/majiayu000\"\u003e\u003ccode\u003e@​majiayu000\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/astral-sh/ruff/commit/66f93cf7ed4d36325f35a452e4afa28268fbcd28\"\u003e\u003ccode\u003e66f93cf\u003c/code\u003e\u003c/a\u003e Bump 0.15.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24815\"\u003e#24815\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/476a4d02e8e3b6c157ac39979d8b698a1b6baa91\"\u003e\u003ccode\u003e476a4d0\u003c/code\u003e\u003c/a\u003e [ty] Complete support for more detailed diagnostics on possibly unbound error...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ed669eab30095d6c51fe6cdef6050fb01276bcb3\"\u003e\u003ccode\u003eed669ea\u003c/code\u003e\u003c/a\u003e Implement \u003ccode\u003e#ruff:file-ignore\u003c/code\u003e file-level suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23599\"\u003e#23599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e73d952e43feb51356ee740c5a973fce81396ff6\"\u003e\u003ccode\u003ee73d952\u003c/code\u003e\u003c/a\u003e [ty] Include inferred type in \u003ccode\u003einvalid-key\u003c/code\u003e concise diagnostic for union/inte...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/80feb29b31cd98c093316df2e0407b0c70c01b55\"\u003e\u003ccode\u003e80feb29\u003c/code\u003e\u003c/a\u003e [ty] report only dead annotation-only locals as unused (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24811\"\u003e#24811\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/0fbf2bc27336a3d17d39af52cf89b78dcda8c7c8\"\u003e\u003ccode\u003e0fbf2bc\u003c/code\u003e\u003c/a\u003e Drop deprecated license classifier (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24808\"\u003e#24808\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/43b174cc7f2fcb0080bb1d4843cd4bf6b72bbe27\"\u003e\u003ccode\u003e43b174c\u003c/code\u003e\u003c/a\u003e [ty] Infer lambda parameter types with \u003ccode\u003eCallable\u003c/code\u003e type context (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24317\"\u003e#24317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/4f449ae4a2377569330a5ab94799d389357b5a3f\"\u003e\u003ccode\u003e4f449ae\u003c/code\u003e\u003c/a\u003e [ty] Add error context for intersection types (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24772\"\u003e#24772\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5b4e753acb46e96ad408e4904c15308e33efe307\"\u003e\u003ccode\u003e5b4e753\u003c/code\u003e\u003c/a\u003e [ty] Add support for goto in literal enum member inlay hint (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24792\"\u003e#24792\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e7cc76275a758ce1c636ea1c2d091fd576aac794\"\u003e\u003ccode\u003ee7cc762\u003c/code\u003e\u003c/a\u003e [ty] Add error context for TypedDict assignments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24790\"\u003e#24790\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.11...0.15.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `build` from 1.4.3 to 1.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/releases\"\u003ebuild's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: try to improve release docs by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1051\"\u003epypa/build#1051\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: drop 3.9, require 3.10+ by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1036\"\u003epypa/build#1036\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: tox toml by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1033\"\u003epypa/build#1033\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: api should not ignore installed, only CLI by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1056\"\u003epypa/build#1056\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.4...1.5.0\"\u003ehttps://github.com/pypa/build/compare/1.4.4...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.4.4\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(release): generate consistent CHANGELOG heading levels by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1032\"\u003epypa/build#1032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: move source links by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1034\"\u003epypa/build#1034\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erevert: drop PEP 660 change by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1039\"\u003epypa/build#1039\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: ignore installed when running pip by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1040\"\u003epypa/build#1040\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: revert part of \u003ca href=\"https://redirect.github.com/pypa/build/issues/973\"\u003e#973\u003c/a\u003e by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1044\"\u003epypa/build#1044\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: report coverage failure lines by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1046\"\u003epypa/build#1046\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: fix issue with uv run by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1048\"\u003epypa/build#1048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: reorganize testing docs for copy/paste by \u003ca href=\"https://github.com/abitrolly\"\u003e\u003ccode\u003e@​abitrolly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1043\"\u003epypa/build#1043\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: keep environment from leaking in Python 3.15 by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1049\"\u003epypa/build#1049\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix issue with changelog generation by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1050\"\u003epypa/build#1050\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.3...1.4.4\"\u003ehttps://github.com/pypa/build/compare/1.4.3...1.4.4\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e####################\n1.5.0 (2026-04-30)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.9 support - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1036\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003e--ignore-installed\u003c/code\u003e opt-in from the API via \u003ccode\u003efresh=True\u003c/code\u003e - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1056\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1033\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.4 (2026-04-22)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eFix release pipeline generating \u003ccode\u003eCHANGELOG.rst\u003c/code\u003e entries with inconsistent heading levels, which broke \u003ccode\u003esphinx -W\u003c/code\u003e\nand pinned Read the Docs \u003ccode\u003estable\u003c/code\u003e at 1.4.0 - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e1031\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRevert :pr:\u003ccode\u003e1039\u003c/code\u003e from build 1.4.3, no longer check direct_url (for now) - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1039\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--ignore-installed\u003c/code\u003e to pip install command to prevent issues with packages already present in the isolated\nbuild environment - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1037\u003c/code\u003e) (:issue:\u003ccode\u003e1040\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePartial revert of :pr:\u003ccode\u003e973\u003c/code\u003e, keeping log messages in one entry, multiple lines. (:issue:\u003ccode\u003e1044\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1048\u003c/code\u003e, :issue:\u003ccode\u003e1049\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.3 (2026-04-10)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/615d04cfc52ac3c1592a463f0afe484fee1cc368\"\u003e\u003ccode\u003e615d04c\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/776f702f84787525df62a5473dd13d4e2f45b977\"\u003e\u003ccode\u003e776f702\u003c/code\u003e\u003c/a\u003e fix: api should not ignore installed, only CLI (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/42da4c4b483563819fabdb8ecf2f6df53ed82123\"\u003e\u003ccode\u003e42da4c4\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1055\"\u003e#1055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b445cd2e736db5f80cde7d952d620a73cc26bf9d\"\u003e\u003ccode\u003eb445cd2\u003c/code\u003e\u003c/a\u003e chore: tox toml (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/c44c143876042ac6e1212a31684a3adca19beda4\"\u003e\u003ccode\u003ec44c143\u003c/code\u003e\u003c/a\u003e feat: drop 3.9, require 3.10+ (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/a9bb4560d213069b11c8068159f1de060abec5b7\"\u003e\u003ccode\u003ea9bb456\u003c/code\u003e\u003c/a\u003e build(deps): bump astral-sh/setup-uv from 8.0.0 to 8.1.0 in the actions group...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/cb3351155ce99902580022acb81dc0adb8124d53\"\u003e\u003ccode\u003ecb33511\u003c/code\u003e\u003c/a\u003e ci: try to improve release docs (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1051\"\u003e#1051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/70666a296c2e5bb7451f5a04eef259f6f943d0de\"\u003e\u003ccode\u003e70666a2\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/653d86586dea8b4e020086a276a15a27ac7bd25d\"\u003e\u003ccode\u003e653d865\u003c/code\u003e\u003c/a\u003e docs: fix issue with changelog generation (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1050\"\u003e#1050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/373b9ee171e2f16353365b1a9a02bc408b96ca73\"\u003e\u003ccode\u003e373b9ee\u003c/code\u003e\u003c/a\u003e tests: keep environment from leaking in Python 3.15 (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1049\"\u003e#1049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.4.3...1.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pre-commit` from 4.5.1 to 4.6.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/releases\"\u003epre-commit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epre-commit v4.6.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: allow \u003ccode\u003e--hook-dir\u003c/code\u003e to be missing to enable easier usage with \u003ccode\u003egit\u003c/code\u003e 2.54+ git hooks.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3662\"\u003e#3662\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: \u003ccode\u003e--hook-type\u003c/code\u003e is required.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3661\"\u003e#3661\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md\"\u003epre-commit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e4.6.0 - 2026-04-21\u003c/h1\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: allow \u003ccode\u003e--hook-dir\u003c/code\u003e to be missing to enable easier\nusage with \u003ccode\u003egit\u003c/code\u003e 2.54+ git hooks.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3662\"\u003e#3662\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: \u003ccode\u003e--hook-type\u003c/code\u003e is required.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3661\"\u003e#3661\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/f35134b05028ec938ac605ae500fdf95462655d3\"\u003e\u003ccode\u003ef35134b\u003c/code\u003e\u003c/a\u003e v4.6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/2a51ffcb81f6c8ed2e6467913c3343a8800f3ab9\"\u003e\u003ccode\u003e2a51ffc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3662\"\u003e#3662\u003c/a\u003e from pre-commit/hook-impl-optional-hook-dir\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/d7dee322abfc765b042f2e3b872aab3c3a867610\"\u003e\u003ccode\u003ed7dee32\u003c/code\u003e\u003c/a\u003e make --hook-dir optional for hook-impl\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/965aeb1c680e8b526342153547f0ec014484c63d\"\u003e\u003ccode\u003e965aeb1\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3661\"\u003e#3661\u003c/a\u003e from pre-commit/hook-impl-required\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/2eacc064aa9b5bb33d3a0d84a234b475e34f3096\"\u003e\u003ccode\u003e2eacc06\u003c/code\u003e\u003c/a\u003e --hook-type is required for hook-impl\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/f5678bf4ac35cffc0ff7174ad85f7fdc2a5c977e\"\u003e\u003ccode\u003ef5678bf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3657\"\u003e#3657\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/054cc5bd6bb1b20faa1eefe09f0de3b68fceee94\"\u003e\u003ccode\u003e054cc5b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/5c0f3024d2524f6e029a4c333392fd9be9fb27f6\"\u003e\u003ccode\u003e5c0f302\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3652\"\u003e#3652\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/a5d91142676630f8130020b35e166e0c0e92b8f4\"\u003e\u003ccode\u003ea5d9114\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/129a1f5ca1eaee0c952a5e7a07faae305c5e15bc\"\u003e\u003ccode\u003e129a1f5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3641\"\u003e#3641\u003c/a\u003e from pre-commit/mxr-patch-1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pre-commit/pre-commit/compare/v4.5.1...v4.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e","html_url":"https://github.com/nuncaeslupus/research-buddy/pull/63","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/nuncaeslupus%2Fresearch-buddy/issues/63","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/63/packages"}},{"old_version":"1.4.2","new_version":"1.5.0","update_type":"minor","path":null,"pr_created_at":"2026-05-05T03:10:34.000Z","version_change":"1.4.2 → 1.5.0","issue":{"uuid":"4381233936","node_id":"PR_kwDONA2LH87YP2pG","number":176,"state":"open","title":"chore(deps): bump the minor-and-patch group across 1 directory with 7 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-05T03:10:34.000Z","updated_at":"2026-05-05T03:14:50.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"minor-and-patch","update_count":7,"packages":[{"name":"cpg-utils","old_version":"5.6.0","new_version":"5.6.1","repository_url":"https://github.com/populationgenomics/cpg-utils"},{"name":"grpcio","old_version":"1.78.0","new_version":"1.80.0","repository_url":"https://github.com/grpc/grpc"},{"name":"grpcio-status","old_version":"1.78.0","new_version":"1.80.0"},{"name":"build","old_version":"1.4.2","new_version":"1.5.0","repository_url":"https://github.com/pypa/build"},{"name":"ruff","old_version":"0.15.7","new_version":"0.15.12","repository_url":"https://github.com/astral-sh/ruff"},{"name":"mike","old_version":"2.1.4","new_version":"2.2.0","repository_url":"https://github.com/jimporter/mike"},{"name":"pyright","old_version":"1.1.408","new_version":"1.1.409","repository_url":"https://github.com/RobertCraigie/pyright-python"}],"path":null,"ecosystem":"pip"},"body":"Bumps the minor-and-patch group with 7 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [cpg-utils](https://github.com/populationgenomics/cpg-utils) | `5.6.0` | `5.6.1` |\n| [grpcio](https://github.com/grpc/grpc) | `1.78.0` | `1.80.0` |\n| [grpcio-status](https://grpc.io) | `1.78.0` | `1.80.0` |\n| [build](https://github.com/pypa/build) | `1.4.2` | `1.5.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.7` | `0.15.12` |\n| [mike](https://github.com/jimporter/mike) | `2.1.4` | `2.2.0` |\n| [pyright](https://github.com/RobertCraigie/pyright-python) | `1.1.408` | `1.1.409` |\n\n\nUpdates `cpg-utils` from 5.6.0 to 5.6.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/populationgenomics/cpg-utils/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `grpcio` from 1.78.0 to 1.80.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003egrpcio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.80.0\u003c/h2\u003e\n\u003cp\u003eThis is release 1.80.0 (\u003ca href=\"https://github.com/grpc/grpc/blob/master/doc/g_stands_for.md\"\u003eglimmering\u003c/a\u003e) of gRPC Core.\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes, with highlights listed below.\u003c/p\u003e\n\u003ch2\u003eCore\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ssl] Implement TLS private key signer in Python. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41701\"\u003e#41701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[TLS Credentials]: Private Key Offload Implementation. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41606\"\u003e#41606\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix max sockaddr struct size on OpenBSD. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40454\"\u003e#40454\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[core] Enable EventEngine for Python by default, and EventEngine fork support in Python and Ruby. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41432\"\u003e#41432\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[TLS Credentials]: Create InMemoryCertificateProvider to update certificates independently. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41484\"\u003e#41484\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[Ruby] Build/test ruby 4.0 and build native gems with Ruby 4.0 support. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41324\"\u003e#41324\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[EventEngine] Remove an incorrect std::move in DNSServiceResolver constructor. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41502\"\u003e#41502\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[RR and WRR] enable change to connect from a random index. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41472\"\u003e#41472\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[xds] Implement gRFC A101. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41051\"\u003e#41051\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eC++\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[C++] Add SNI override option to C++ channel credentials options API. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41460\"\u003e#41460\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eC#\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[C# tools] Option to append Async to server side method names \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/39010\"\u003e#39010\u003c/a\u003e. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/39797\"\u003e#39797\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eObjective-C\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Fix][Compiler] Plugins fall back to the edition 2023 for older protobuf. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41357\"\u003e#41357\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePHP\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[PHP] Disable php infinite recursion check for callback from Core to PHP. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41835\"\u003e#41835\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[PHP] Fix runtime error with PHp8.5 alpha because zend_exception_get_defaul…. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40337\"\u003e#40337\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePython\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Python] Fix \u003ccode\u003eGRPC_TRACE\u003c/code\u003e not working when absl log initialized in cython. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41814\"\u003e#41814\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRevert \u0026quot;[Python] Align GRPC_ENABLE_FORK_SUPPORT env defaults in core and python (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41455\"\u003e#41455\u003c/a\u003e)\u0026quot;. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41769\"\u003e#41769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[Python] Fix AsyncIO Server maximum_concurrent_rpcs enforcement preventing negative active_rpcs count. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41532\"\u003e#41532\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[Python] Docs: correct \u003ccode\u003egrpc.Compression\u003c/code\u003e references. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/41705\"\u003e#41705\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[Python] [Typeguard] Part 4 - Add Typeguard to AIO stack in tests . (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40226\"\u003e#40226\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/grpc/grpc/commit/f5e2d6e856176c2f6b7691032adfefe21e5f64c1\"\u003e\u003ccode\u003ef5e2d6e\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.80.0 (on v1.80.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41857\"\u003e#41857\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/938cfecaebfc28b5e6bcdb95d55aba3962d9b55b\"\u003e\u003ccode\u003e938cfec\u003c/code\u003e\u003c/a\u003e [subchannel connection scaling] fix when we reset backoff (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41935\"\u003e#41935\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/91778bec667d7310864420f2b32aeb2e41e1b51c\"\u003e\u003ccode\u003e91778be\u003c/code\u003e\u003c/a\u003e [Backport][v1.80.x][Python] New \u003ccode\u003e_create\u003c/code\u003e method for aio.Metadata (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41888\"\u003e#41888\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f10b9f26933703c5fe3e080f50ef19c858d773e0\"\u003e\u003ccode\u003ef10b9f2\u003c/code\u003e\u003c/a\u003e [bzlmod] upgrade rules_swift to avoid BCR CI breakage on Windows with bazel 7...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/be4c1c55b69493868241bfffd4bc318d3d592656\"\u003e\u003ccode\u003ebe4c1c5\u003c/code\u003e\u003c/a\u003e [subchannel] fix crash in connection scaling code (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41853\"\u003e#41853\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/a71df73eafb18fa0210a13dd6a2ce2cb6594d427\"\u003e\u003ccode\u003ea71df73\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.80.0-pre1 (on v1.80.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41844\"\u003e#41844\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/3ca09e4818f4362e75c9c224f1d4c2065db75a0a\"\u003e\u003ccode\u003e3ca09e4\u003c/code\u003e\u003c/a\u003e [Python] Fix GRPC_TRACE and add test to check the GRPC_TRACE logs print (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41814\"\u003e#41814\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/260c6fd37c502e984836a446c5d90e4a1298036d\"\u003e\u003ccode\u003e260c6fd\u003c/code\u003e\u003c/a\u003e [PHP] Disable php infinite recursion check for callback from Core to PHP (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41\"\u003e#41\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/50957c5c47de1c85637fc9dafe6d4eb4c1224f6b\"\u003e\u003ccode\u003e50957c5\u003c/code\u003e\u003c/a\u003e [Flakiness] Delete flaky iomgr fd_conservation_posix_test and create an Event...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/e1e1d0a8150b5178d4b75e15f4856a4d825a8999\"\u003e\u003ccode\u003ee1e1d0a\u003c/code\u003e\u003c/a\u003e [Bzlmod] Turn off bzlmod for PSM python tests. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/41810\"\u003e#41810\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc/compare/v1.78.0...v1.80.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `grpcio-status` from 1.78.0 to 1.80.0\n\nUpdates `build` from 1.4.2 to 1.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/releases\"\u003ebuild's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.5.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: try to improve release docs by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1051\"\u003epypa/build#1051\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: drop 3.9, require 3.10+ by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1036\"\u003epypa/build#1036\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: tox toml by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1033\"\u003epypa/build#1033\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: api should not ignore installed, only CLI by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1056\"\u003epypa/build#1056\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.4...1.5.0\"\u003ehttps://github.com/pypa/build/compare/1.4.4...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.4.4\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(release): generate consistent CHANGELOG heading levels by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1032\"\u003epypa/build#1032\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: move source links by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1034\"\u003epypa/build#1034\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erevert: drop PEP 660 change by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1039\"\u003epypa/build#1039\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: ignore installed when running pip by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1040\"\u003epypa/build#1040\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: revert part of \u003ca href=\"https://redirect.github.com/pypa/build/issues/973\"\u003e#973\u003c/a\u003e by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1044\"\u003epypa/build#1044\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: report coverage failure lines by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1046\"\u003epypa/build#1046\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: fix issue with uv run by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1048\"\u003epypa/build#1048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: reorganize testing docs for copy/paste by \u003ca href=\"https://github.com/abitrolly\"\u003e\u003ccode\u003e@​abitrolly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1043\"\u003epypa/build#1043\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: keep environment from leaking in Python 3.15 by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1049\"\u003epypa/build#1049\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix issue with changelog generation by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1050\"\u003epypa/build#1050\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pypa/build/compare/1.4.3...1.4.4\"\u003ehttps://github.com/pypa/build/compare/1.4.3...1.4.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.4.3\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(api): resolve thread-safety races in build API by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1015\"\u003epypa/build#1015\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(builder): validate backend-path entries exist on disk by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1016\"\u003epypa/build#1016\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest: cover config settings build paths by \u003ca href=\"https://github.com/terminalchai\"\u003e\u003ccode\u003e@​terminalchai\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/992\"\u003epypa/build#992\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd kind=(step, ) for root messages with * by \u003ca href=\"https://github.com/abitrolly\"\u003e\u003ccode\u003e@​abitrolly\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/973\"\u003epypa/build#973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: correct changelog category ordering by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1017\"\u003epypa/build#1017\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(cli): show full dependency chain in missing deps error by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1019\"\u003epypa/build#1019\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: fully annotate by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1020\"\u003epypa/build#1020\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: lazy imports by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1021\"\u003epypa/build#1021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: adding more ruff codes by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1022\"\u003epypa/build#1022\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: improve annotations by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1023\"\u003epypa/build#1023\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🧪 test(coverage): achieve 100% test coverage by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1018\"\u003epypa/build#1018\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: add ruff PT by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1025\"\u003epypa/build#1025\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: add ruff PYI by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1026\"\u003epypa/build#1026\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: add ruff SIM/RET by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1028\"\u003epypa/build#1028\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(env): strip PYTHONPATH from isolated builds by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1024\"\u003epypa/build#1024\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: use ruff ALL by \u003ca href=\"https://github.com/henryiii\"\u003e\u003ccode\u003e@​henryiii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pypa/build/pull/1029\"\u003epypa/build#1029\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/build/blob/main/CHANGELOG.rst\"\u003ebuild's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e####################\n1.5.0 (2026-04-30)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.9 support - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1036\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003e--ignore-installed\u003c/code\u003e opt-in from the API via \u003ccode\u003efresh=True\u003c/code\u003e - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1056\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1033\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.4 (2026-04-22)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eBugfixes\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003eFix release pipeline generating \u003ccode\u003eCHANGELOG.rst\u003c/code\u003e entries with inconsistent heading levels, which broke \u003ccode\u003esphinx -W\u003c/code\u003e\nand pinned Read the Docs \u003ccode\u003estable\u003c/code\u003e at 1.4.0 - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e1031\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRevert :pr:\u003ccode\u003e1039\u003c/code\u003e from build 1.4.3, no longer check direct_url (for now) - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1039\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--ignore-installed\u003c/code\u003e to pip install command to prevent issues with packages already present in the isolated\nbuild environment - by :user:\u003ccode\u003ehenryiii\u003c/code\u003e (:issue:\u003ccode\u003e1037\u003c/code\u003e) (:issue:\u003ccode\u003e1040\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003ePartial revert of :pr:\u003ccode\u003e973\u003c/code\u003e, keeping log messages in one entry, multiple lines. (:issue:\u003ccode\u003e1044\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003eMiscellaneous\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e:issue:\u003ccode\u003e1048\u003c/code\u003e, :issue:\u003ccode\u003e1049\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e####################\n1.4.3 (2026-04-10)\n####################\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003chr /\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/615d04cfc52ac3c1592a463f0afe484fee1cc368\"\u003e\u003ccode\u003e615d04c\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/776f702f84787525df62a5473dd13d4e2f45b977\"\u003e\u003ccode\u003e776f702\u003c/code\u003e\u003c/a\u003e fix: api should not ignore installed, only CLI (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/42da4c4b483563819fabdb8ecf2f6df53ed82123\"\u003e\u003ccode\u003e42da4c4\u003c/code\u003e\u003c/a\u003e pre-commit: bump repositories (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1055\"\u003e#1055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/b445cd2e736db5f80cde7d952d620a73cc26bf9d\"\u003e\u003ccode\u003eb445cd2\u003c/code\u003e\u003c/a\u003e chore: tox toml (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/c44c143876042ac6e1212a31684a3adca19beda4\"\u003e\u003ccode\u003ec44c143\u003c/code\u003e\u003c/a\u003e feat: drop 3.9, require 3.10+ (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/a9bb4560d213069b11c8068159f1de060abec5b7\"\u003e\u003ccode\u003ea9bb456\u003c/code\u003e\u003c/a\u003e build(deps): bump astral-sh/setup-uv from 8.0.0 to 8.1.0 in the actions group...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/cb3351155ce99902580022acb81dc0adb8124d53\"\u003e\u003ccode\u003ecb33511\u003c/code\u003e\u003c/a\u003e ci: try to improve release docs (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1051\"\u003e#1051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/70666a296c2e5bb7451f5a04eef259f6f943d0de\"\u003e\u003ccode\u003e70666a2\u003c/code\u003e\u003c/a\u003e chore: prepare for 1.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/653d86586dea8b4e020086a276a15a27ac7bd25d\"\u003e\u003ccode\u003e653d865\u003c/code\u003e\u003c/a\u003e docs: fix issue with changelog generation (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1050\"\u003e#1050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/build/commit/373b9ee171e2f16353365b1a9a02bc408b96ca73\"\u003e\u003ccode\u003e373b9ee\u003c/code\u003e\u003c/a\u003e tests: keep environment from leaking in Python 3.15 (\u003ca href=\"https://redirect.github.com/pypa/build/issues/1049\"\u003e#1049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/build/compare/1.4.2...1.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.7 to 0.15.12\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.12\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-24.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:file-ignore\u003c/code\u003e file-level suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23599\"\u003e#23599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:ignore\u003c/code\u003e logical-line suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23404\"\u003e#23404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRevert preview changes to displayed diagnostic severity in LSP (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24789\"\u003e#24789\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003etask-branch-as-short-circuit\u003c/code\u003e (\u003ccode\u003eAIR004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23579\"\u003e#23579\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Fix \u003ccode\u003ebreak\u003c/code\u003e/\u003ccode\u003econtinue\u003c/code\u003e handling in \u003ccode\u003eloop-iterator-mutation\u003c/code\u003e (\u003ccode\u003eB909\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24440\"\u003e#24440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLC2701\u003c/code\u003e for type parameter scopes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24576\"\u003e#24576\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epandas-vet\u003c/code\u003e] Suggest \u003ccode\u003e.array\u003c/code\u003e as well in \u003ccode\u003ePD011\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24805\"\u003e#24805\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRespect default Unix permissions for cache files (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24794\"\u003e#24794\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLR0124\u003c/code\u003e description not to claim self-comparison always returns the same value (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24749\"\u003e#24749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Expand docs on reusable \u003ccode\u003eTypeVar\u003c/code\u003es and scoping (\u003ccode\u003eUP046\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24153\"\u003e#24153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove rules table accessibility (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24711\"\u003e#24711\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/woodruffw\"\u003e\u003ccode\u003e@​woodruffw\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/avasis-ai\"\u003e\u003ccode\u003e@​avasis-ai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dev-iL\"\u003e\u003ccode\u003e@​Dev-iL\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/denyszhak\"\u003e\u003ccode\u003e@​denyszhak\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ShipItAndPray\"\u003e\u003ccode\u003e@​ShipItAndPray\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/augustelalande\"\u003e\u003ccode\u003e@​augustelalande\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/majiayu000\"\u003e\u003ccode\u003e@​majiayu000\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.15.12\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.15.12/ruff-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.12\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-24.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:file-ignore\u003c/code\u003e file-level suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23599\"\u003e#23599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImplement \u003ccode\u003e#ruff:ignore\u003c/code\u003e logical-line suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23404\"\u003e#23404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRevert preview changes to displayed diagnostic severity in LSP (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24789\"\u003e#24789\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003etask-branch-as-short-circuit\u003c/code\u003e (\u003ccode\u003eAIR004\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23579\"\u003e#23579\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Fix \u003ccode\u003ebreak\u003c/code\u003e/\u003ccode\u003econtinue\u003c/code\u003e handling in \u003ccode\u003eloop-iterator-mutation\u003c/code\u003e (\u003ccode\u003eB909\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24440\"\u003e#24440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLC2701\u003c/code\u003e for type parameter scopes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24576\"\u003e#24576\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epandas-vet\u003c/code\u003e] Suggest \u003ccode\u003e.array\u003c/code\u003e as well in \u003ccode\u003ePD011\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24805\"\u003e#24805\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRespect default Unix permissions for cache files (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24794\"\u003e#24794\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Fix \u003ccode\u003ePLR0124\u003c/code\u003e description not to claim self-comparison always returns the same value (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24749\"\u003e#24749\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Expand docs on reusable \u003ccode\u003eTypeVar\u003c/code\u003es and scoping (\u003ccode\u003eUP046\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24153\"\u003e#24153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove rules table accessibility (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24711\"\u003e#24711\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/woodruffw\"\u003e\u003ccode\u003e@​woodruffw\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/avasis-ai\"\u003e\u003ccode\u003e@​avasis-ai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dev-iL\"\u003e\u003ccode\u003e@​Dev-iL\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/denyszhak\"\u003e\u003ccode\u003e@​denyszhak\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ShipItAndPray\"\u003e\u003ccode\u003e@​ShipItAndPray\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anishgirianish\"\u003e\u003ccode\u003e@​anishgirianish\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/augustelalande\"\u003e\u003ccode\u003e@​augustelalande\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/majiayu000\"\u003e\u003ccode\u003e@​majiayu000\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.15.11\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-16.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Ignore \u003ccode\u003eRUF029\u003c/code\u003e when function is decorated with \u003ccode\u003easynccontextmanager\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24642\"\u003e#24642\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Implement \u003ccode\u003eairflow-xcom-pull-in-template-string\u003c/code\u003e (\u003ccode\u003eAIR201\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23583\"\u003e#23583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Fix \u003ccode\u003eS103\u003c/code\u003e false positives and negatives in mask analysis (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24424\"\u003e#24424\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/66f93cf7ed4d36325f35a452e4afa28268fbcd28\"\u003e\u003ccode\u003e66f93cf\u003c/code\u003e\u003c/a\u003e Bump 0.15.12 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24815\"\u003e#24815\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/476a4d02e8e3b6c157ac39979d8b698a1b6baa91\"\u003e\u003ccode\u003e476a4d0\u003c/code\u003e\u003c/a\u003e [ty] Complete support for more detailed diagnostics on possibly unbound error...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ed669eab30095d6c51fe6cdef6050fb01276bcb3\"\u003e\u003ccode\u003eed669ea\u003c/code\u003e\u003c/a\u003e Implement \u003ccode\u003e#ruff:file-ignore\u003c/code\u003e file-level suppressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23599\"\u003e#23599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e73d952e43feb51356ee740c5a973fce81396ff6\"\u003e\u003ccode\u003ee73d952\u003c/code\u003e\u003c/a\u003e [ty] Include inferred type in \u003ccode\u003einvalid-key\u003c/code\u003e concise diagnostic for union/inte...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/80feb29b31cd98c093316df2e0407b0c70c01b55\"\u003e\u003ccode\u003e80feb29\u003c/code\u003e\u003c/a\u003e [ty] report only dead annotation-only locals as unused (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24811\"\u003e#24811\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/0fbf2bc27336a3d17d39af52cf89b78dcda8c7c8\"\u003e\u003ccode\u003e0fbf2bc\u003c/code\u003e\u003c/a\u003e Drop deprecated license classifier (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24808\"\u003e#24808\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/43b174cc7f2fcb0080bb1d4843cd4bf6b72bbe27\"\u003e\u003ccode\u003e43b174c\u003c/code\u003e\u003c/a\u003e [ty] Infer lambda parameter types with \u003ccode\u003eCallable\u003c/code\u003e type context (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24317\"\u003e#24317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/4f449ae4a2377569330a5ab94799d389357b5a3f\"\u003e\u003ccode\u003e4f449ae\u003c/code\u003e\u003c/a\u003e [ty] Add error context for intersection types (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24772\"\u003e#24772\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5b4e753acb46e96ad408e4904c15308e33efe307\"\u003e\u003ccode\u003e5b4e753\u003c/code\u003e\u003c/a\u003e [ty] Add support for goto in literal enum member inlay hint (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24792\"\u003e#24792\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e7cc76275a758ce1c636ea1c2d091fd576aac794\"\u003e\u003ccode\u003ee7cc762\u003c/code\u003e\u003c/a\u003e [ty] Add error context for TypedDict assignments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24790\"\u003e#24790\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.7...0.15.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mike` from 2.1.4 to 2.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jimporter/mike/releases\"\u003emike's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.2.0\u003c/h2\u003e\n\u003ch3\u003eNew features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ca href=\"https://properdocs.org/\"\u003eProperDocs\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse DST timestamps for new commits when DST is in effect\u003c/li\u003e\n\u003cli\u003eSupport ISO8601 and RFC 2822 values for \u003ccode\u003eGIT_COMMITTER_DATE\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jimporter/mike/blob/master/CHANGES.md\"\u003emike's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.2.0 (2026-04-13)\u003c/h2\u003e\n\u003ch3\u003eNew features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ca href=\"https://properdocs.org/\"\u003eProperDocs\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse DST timestamps for new commits when DST is in effect\u003c/li\u003e\n\u003cli\u003eSupport ISO8601 and RFC 2822 values for \u003ccode\u003eGIT_COMMITTER_DATE\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/b01e03075315ebd2d39a93c390cf14b6a83f3d5e\"\u003e\u003ccode\u003eb01e030\u003c/code\u003e\u003c/a\u003e Update version to 2.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/ca60b84ddb200d9d2636dce456e35b8ec5be6a0c\"\u003e\u003ccode\u003eca60b84\u003c/code\u003e\u003c/a\u003e Fix deprecation warning about \u003ccode\u003esplit\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/5b5ed3187337693fabcb3c6f8b524f8bc0348150\"\u003e\u003ccode\u003e5b5ed31\u003c/code\u003e\u003c/a\u003e Add ProperDocs support; resolves \u003ca href=\"https://redirect.github.com/jimporter/mike/issues/259\"\u003e#259\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/2adb1f1104e230ce4c6260ae17c960e21886a7a1\"\u003e\u003ccode\u003e2adb1f1\u003c/code\u003e\u003c/a\u003e Improve \u003ccode\u003emake_when\u003c/code\u003e implementation; resolves \u003ca href=\"https://redirect.github.com/jimporter/mike/issues/260\"\u003e#260\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/7363ce50a2a27ce88198383e43168d08c76f4633\"\u003e\u003ccode\u003e7363ce5\u003c/code\u003e\u003c/a\u003e Update version to 2.2.0.dev0\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/jimporter/mike/compare/v2.1.4...v2.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyright` from 1.1.408 to 1.1.409\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/RobertCraigie/pyright-python/commit/d7508e5425d3d02761d70dab1f9a2086573af429\"\u003e\u003ccode\u003ed7508e5\u003c/code\u003e\u003c/a\u003e [pyright updated to 1.1.409] Update Version (\u003ca href=\"https://redirect.github.com/RobertCraigie/pyright-python/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/RobertCraigie/pyright-python/compare/v1.1.408...v1.1.409\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/populationgenomics/cpg-flow/pull/176","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/populationgenomics%2Fcpg-flow/issues/176","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/176/packages"}}]}