{"id":11412,"name":"bandit","ecosystem":"pip","repository_url":"https://github.com/PyCQA/bandit","issues_count":1166,"created_at":"2025-06-06T23:02:31.476Z","updated_at":"2025-06-06T23:02:31.476Z","purl":"pkg:pypi/bandit","metadata":{"id":2651744,"name":"bandit","ecosystem":"pypi","description":"Security oriented static analyser for python code.","homepage":"https://bandit.readthedocs.io/","licenses":"Apache-2.0 license","normalized_licenses":["Apache-1.1"],"repository_url":"https://github.com/PyCQA/bandit","keywords_array":[],"namespace":null,"versions_count":44,"first_release_published_at":"2015-03-23T21:00:16.000Z","latest_release_published_at":"2025-02-17T05:24:54.000Z","latest_release_number":"1.8.3","last_synced_at":"2025-06-07T05:30:39.382Z","created_at":"2022-04-10T10:09:27.570Z","updated_at":"2025-06-07T05:30:39.382Z","registry_url":"https://pypi.org/project/bandit/","install_command":"pip install bandit --index-url https://pypi.org/simple","documentation_url":"https://bandit.readthedocs.io/","metadata":{"funding":null,"documentation":"https://bandit.readthedocs.io/","classifiers":["Development Status :: 5 - Production/Stable","Environment :: Console","Intended Audience :: Developers","Intended Audience :: Information Technology","Intended Audience :: System Administrators","License :: OSI Approved :: Apache Software License","Operating System :: MacOS :: MacOS X","Operating System :: POSIX :: Linux","Programming Language :: Python","Programming Language :: Python :: 3","Programming Language :: Python :: 3 :: Only","Programming Language :: Python :: 3.10","Programming Language :: Python :: 3.11","Programming Language :: Python :: 3.12","Programming Language :: Python :: 3.13","Programming Language :: Python :: 3.9","Topic :: Security"],"normalized_name":"bandit"},"repo_metadata":{"id":37458366,"uuid":"131129792","full_name":"PyCQA/bandit","owner":"PyCQA","description":"Bandit is a tool designed to find common security issues in Python code.","archived":false,"fork":false,"pushed_at":"2024-08-26T22:30:15.000Z","size":5717,"stargazers_count":6316,"open_issues_count":186,"forks_count":595,"subscribers_count":64,"default_branch":"main","last_synced_at":"2024-09-07T01:57:11.774Z","etag":null,"topics":["bandit","linter","python","security","security-scanner","security-tools","static-code-analysis"],"latest_commit_sha":null,"homepage":"https://bandit.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PyCQA.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"custom":["https://psfmember.org/civicrm/contribute/transact/?reset=1\u0026id=42"],"github":["ericwb"],"tidelift":"pypi/bandit"}},"created_at":"2018-04-26T09:08:12.000Z","updated_at":"2024-09-06T19:25:38.000Z","dependencies_parsed_at":"2023-12-21T19:44:40.837Z","dependency_job_id":"4481be3e-de4c-4cfe-9fbe-cc1f872f2eec","html_url":"https://github.com/PyCQA/bandit","commit_stats":{"total_commits":1026,"total_committers":183,"mean_commits":5.60655737704918,"dds":0.8469785575048733,"last_synced_commit":"67ba25122350e8db1e44ed33b3ecd1b05ca97be4"},"previous_names":[],"tags_count":43,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PyCQA","download_url":"https://codeload.github.com/PyCQA/bandit/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":217915031,"owners_count":16250360,"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":"PyCQA","name":"Python Code Quality Authority","uuid":"8749848","kind":"organization","description":"Organization for code quality tools (and plugins) for the Python programming language","email":"code-quality@python.org","website":"http://meta.pycqa.org","location":"Everywhere","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/8749848?v=4","repositories_count":28,"last_synced_at":"2024-04-16T03:15:02.481Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/PyCQA","funding_links":[],"total_stars":28819,"followers":713,"following":0,"created_at":"2022-11-02T16:22:05.191Z","updated_at":"2024-04-16T03:15:02.495Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PyCQA","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PyCQA/repositories"},"tags":[{"name":"1.7.9","sha":"691f465b4bac758ea1d6dfa9b57d3881a12954fd","kind":"commit","published_at":"2024-06-12T22:17:21.000Z","download_url":"https://codeload.github.com/PyCQA/bandit/tar.gz/1.7.9","html_url":"https://github.com/PyCQA/bandit/releases/tag/1.7.9","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/1.7.9","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/1.7.9/manifests"},{"name":"1.7.8","sha":"22b4226078b041a16bf05163347a66ab4dbcf3a5","kind":"commit","published_at":"2024-03-08T15:19:40.000Z","download_url":"https://codeload.github.com/PyCQA/bandit/tar.gz/1.7.8","html_url":"https://github.com/PyCQA/bandit/releases/tag/1.7.8","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/1.7.8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/1.7.8/manifests"},{"name":"1.7.7","sha":"4c5b3c81e4356001b472849b05af902064d68515","kind":"commit","published_at":"2024-01-23T21:09:19.000Z","download_url":"https://codeload.github.com/PyCQA/bandit/tar.gz/1.7.7","html_url":"https://github.com/PyCQA/bandit/releases/tag/1.7.7","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/1.7.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/1.7.7/manifests"},{"name":"1.7.6","sha":"f3a18ab30bc444e62d02505419ab7059cead0853","kind":"commit","published_at":"2023-12-09T01:18:38.000Z","download_url":"https://codeload.github.com/PyCQA/bandit/tar.gz/1.7.6","html_url":"https://github.com/PyCQA/bandit/releases/tag/1.7.6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/1.7.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/1.7.6/manifests"},{"name":"1.7.5","sha":"ca4faf2f82a7c68a088100f8ba2b8e56f9bdcfe3","kind":"commit","published_at":"2023-03-07T04:06:40.000Z","download_url":"https://codeload.github.com/PyCQA/bandit/tar.gz/1.7.5","html_url":"https://github.com/PyCQA/bandit/releases/tag/1.7.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/1.7.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/1.7.5/manifests"},{"name":"1.7.4","sha":"1ed79063e3672a1c6d91ee27cb648e07a7465344","kind":"commit","published_at":"2022-03-04T07:23:19.000Z","download_url":"https://codeload.github.com/PyCQA/bandit/tar.gz/1.7.4","html_url":"https://github.com/PyCQA/bandit/releases/tag/1.7.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/1.7.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/1.7.4/manifests"},{"name":"1.7.3","sha":"20a0510f032aee3d6b3df01a5417e91a1f992bc0","kind":"commit","published_at":"2022-02-27T23:38:55.000Z","download_url":"https://codeload.github.com/PyCQA/bandit/tar.gz/1.7.3","html_url":"https://github.com/PyCQA/bandit/releases/tag/1.7.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/1.7.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/1.7.3/manifests"},{"name":"1.7.2","sha":"25fde24f0eb2cde335f91d53086cb8afee6333eb","kind":"commit","published_at":"2022-01-25T21:07:13.000Z","download_url":"https://codeload.github.com/PyCQA/bandit/tar.gz/1.7.2","html_url":"https://github.com/PyCQA/bandit/releases/tag/1.7.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/1.7.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/1.7.2/manifests"},{"name":"1.7.1","sha":"a83c53fa7bbdd66f17591b46aae094fb589c29d5","kind":"tag","published_at":"2021-11-12T01:28:06.000Z","download_url":"https://codeload.github.com/PyCQA/bandit/tar.gz/1.7.1","html_url":"https://github.com/PyCQA/bandit/releases/tag/1.7.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/1.7.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/1.7.1/manifests"},{"name":"1.7.0","sha":"9b62635bd078b7f51e98b5300c6a6352f698d78a","kind":"commit","published_at":"2020-12-09T15:53:18.000Z","download_url":"https://codeload.github.com/PyCQA/bandit/tar.gz/1.7.0","html_url":"https://github.com/PyCQA/bandit/releases/tag/1.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/1.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/1.7.0/manifests"},{"name":"1.6.3","sha":"044063e2da6f4bde07681cb985c339f67cb7807f","kind":"commit","published_at":"2020-12-06T10:08:28.000Z","download_url":"https://codeload.github.com/PyCQA/bandit/tar.gz/1.6.3","html_url":"https://github.com/PyCQA/bandit/releases/tag/1.6.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/1.6.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/1.6.3/manifests"},{"name":"1.6.2","sha":"d25f3fc5f0f2bd8a251f252e9d81118c4947ae0e","kind":"commit","published_at":"2019-06-22T17:31:30.000Z","download_url":"https://codeload.github.com/PyCQA/bandit/tar.gz/1.6.2","html_url":"https://github.com/PyCQA/bandit/releases/tag/1.6.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/1.6.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/1.6.2/manifests"},{"name":"1.6.1","sha":"047e6bfc90cf27e736aaeb9ca7a0bac4fad4f8b8","kind":"commit","published_at":"2019-05-26T23:33:57.000Z","download_url":"https://codeload.github.com/PyCQA/bandit/tar.gz/1.6.1","html_url":"https://github.com/PyCQA/bandit/releases/tag/1.6.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/1.6.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/1.6.1/manifests"},{"name":"1.6.0","sha":"823138f418905a99fb7bbff8bb35b97f6dc9e5ab","kind":"commit","published_at":"2019-04-13T05:38:12.000Z","download_url":"https://codeload.github.com/PyCQA/bandit/tar.gz/1.6.0","html_url":"https://github.com/PyCQA/bandit/releases/tag/1.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/1.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/1.6.0/manifests"},{"name":"1.5.1","sha":"2421df6e019ed670f5952e83e9cf1a857bd6f2a0","kind":"commit","published_at":"2018-09-01T20:05:13.000Z","download_url":"https://codeload.github.com/PyCQA/bandit/tar.gz/1.5.1","html_url":"https://github.com/PyCQA/bandit/releases/tag/1.5.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/1.5.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/1.5.1/manifests"},{"name":"1.5.0","sha":"679e883cc10a8768314f4d12115849c0d6b50788","kind":"commit","published_at":"2018-08-16T16:54:34.000Z","download_url":"https://codeload.github.com/PyCQA/bandit/tar.gz/1.5.0","html_url":"https://github.com/PyCQA/bandit/releases/tag/1.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/1.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/1.5.0/manifests"},{"name":"0.17.0-eol","sha":"71df005d14235e57f8deda538177361182f36f63","kind":"tag","published_at":"2017-10-25T02:23:13.000Z","download_url":"https://codeload.github.com/PyCQA/bandit/tar.gz/0.17.0-eol","html_url":"https://github.com/PyCQA/bandit/releases/tag/0.17.0-eol","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/0.17.0-eol","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/0.17.0-eol/manifests"},{"name":"1.4.0","sha":"17c737a391f5f8b1f41d77a40da4429d739e09f5","kind":"tag","published_at":"2017-01-12T16:18:16.000Z","download_url":"https://codeload.github.com/PyCQA/bandit/tar.gz/1.4.0","html_url":"https://github.com/PyCQA/bandit/releases/tag/1.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/1.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/1.4.0/manifests"},{"name":"1.3.0","sha":"dd76a783394432d01273ac24f522606a4728ca02","kind":"tag","published_at":"2016-12-02T10:16:20.000Z","download_url":"https://codeload.github.com/PyCQA/bandit/tar.gz/1.3.0","html_url":"https://github.com/PyCQA/bandit/releases/tag/1.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/1.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/1.3.0/manifests"},{"name":"1.2.0","sha":"5136b91cdbdaabb47a5df7cd0b866e3b158e148c","kind":"tag","published_at":"2016-11-16T11:40:59.000Z","download_url":"https://codeload.github.com/PyCQA/bandit/tar.gz/1.2.0","html_url":"https://github.com/PyCQA/bandit/releases/tag/1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/1.2.0/manifests"},{"name":"1.1.0","sha":"df86344e75811759885a9bc39ac5afe9bf8dc7dd","kind":"tag","published_at":"2016-08-15T11:33:18.000Z","download_url":"https://codeload.github.com/PyCQA/bandit/tar.gz/1.1.0","html_url":"https://github.com/PyCQA/bandit/releases/tag/1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/1.1.0/manifests"},{"name":"1.0.1","sha":"d653e969aedba3f44674de26afaa57309de3b389","kind":"tag","published_at":"2016-04-05T07:42:32.000Z","download_url":"https://codeload.github.com/PyCQA/bandit/tar.gz/1.0.1","html_url":"https://github.com/PyCQA/bandit/releases/tag/1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/1.0.1/manifests"},{"name":"1.0","sha":"d653e969aedba3f44674de26afaa57309de3b389","kind":"tag","published_at":"2016-04-04T17:24:13.000Z","download_url":"https://codeload.github.com/PyCQA/bandit/tar.gz/1.0","html_url":"https://github.com/PyCQA/bandit/releases/tag/1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/1.0/manifests"},{"name":"0.17.3","sha":"71df005d14235e57f8deda538177361182f36f63","kind":"tag","published_at":"2016-01-27T23:15:45.000Z","download_url":"https://codeload.github.com/PyCQA/bandit/tar.gz/0.17.3","html_url":"https://github.com/PyCQA/bandit/releases/tag/0.17.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/0.17.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/0.17.3/manifests"},{"name":"0.17.2","sha":"36f316ab82489ae978a878a3de3b3dc67c7af314","kind":"tag","published_at":"2016-01-27T00:17:33.000Z","download_url":"https://codeload.github.com/PyCQA/bandit/tar.gz/0.17.2","html_url":"https://github.com/PyCQA/bandit/releases/tag/0.17.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/0.17.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/0.17.2/manifests"},{"name":"0.17.1","sha":"c364408faa25ccdc378b72c0a9e2150d20a94cba","kind":"tag","published_at":"2016-01-26T18:53:23.000Z","download_url":"https://codeload.github.com/PyCQA/bandit/tar.gz/0.17.1","html_url":"https://github.com/PyCQA/bandit/releases/tag/0.17.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/0.17.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/0.17.1/manifests"},{"name":"0.17.0","sha":"353634ff7a9bb2b4b064764d6bead254ffcae7ee","kind":"tag","published_at":"2015-12-16T18:28:05.000Z","download_url":"https://codeload.github.com/PyCQA/bandit/tar.gz/0.17.0","html_url":"https://github.com/PyCQA/bandit/releases/tag/0.17.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/0.17.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/0.17.0/manifests"},{"name":"0.16.2","sha":"72b5e2c1be4fa149327178d385a9f841e8d9781f","kind":"tag","published_at":"2015-11-19T16:37:47.000Z","download_url":"https://codeload.github.com/PyCQA/bandit/tar.gz/0.16.2","html_url":"https://github.com/PyCQA/bandit/releases/tag/0.16.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/0.16.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/0.16.2/manifests"},{"name":"0.16.1","sha":"2d96febcfdecc866bccda3781e2fb0b53e504d91","kind":"tag","published_at":"2015-11-13T18:56:24.000Z","download_url":"https://codeload.github.com/PyCQA/bandit/tar.gz/0.16.1","html_url":"https://github.com/PyCQA/bandit/releases/tag/0.16.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/0.16.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/0.16.1/manifests"},{"name":"0.16.0","sha":"83d5d843c18b45c7c54d082b58c5bd179baa23ea","kind":"tag","published_at":"2015-11-13T16:39:01.000Z","download_url":"https://codeload.github.com/PyCQA/bandit/tar.gz/0.16.0","html_url":"https://github.com/PyCQA/bandit/releases/tag/0.16.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/0.16.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/0.16.0/manifests"},{"name":"0.15.2","sha":"2a328eb78682d052d22f997e3e722cf7c3230bd1","kind":"tag","published_at":"2015-11-04T17:24:36.000Z","download_url":"https://codeload.github.com/PyCQA/bandit/tar.gz/0.15.2","html_url":"https://github.com/PyCQA/bandit/releases/tag/0.15.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/0.15.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/0.15.2/manifests"},{"name":"0.15.1","sha":"3157f0d67f866bb99a4b76ce6a0bd283c7429878","kind":"tag","published_at":"2015-11-04T16:30:00.000Z","download_url":"https://codeload.github.com/PyCQA/bandit/tar.gz/0.15.1","html_url":"https://github.com/PyCQA/bandit/releases/tag/0.15.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/0.15.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/0.15.1/manifests"},{"name":"0.15.0","sha":"f571ff0392fd8d36a6a0ef4fe81ec3c3ba82abe8","kind":"tag","published_at":"2015-10-29T15:11:23.000Z","download_url":"https://codeload.github.com/PyCQA/bandit/tar.gz/0.15.0","html_url":"https://github.com/PyCQA/bandit/releases/tag/0.15.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/0.15.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/0.15.0/manifests"},{"name":"0.14.1","sha":"aa66e18d950b1232b1e7e422196c36951ee73970","kind":"tag","published_at":"2015-10-14T12:55:23.000Z","download_url":"https://codeload.github.com/PyCQA/bandit/tar.gz/0.14.1","html_url":"https://github.com/PyCQA/bandit/releases/tag/0.14.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/0.14.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/0.14.1/manifests"},{"name":"0.14.0","sha":"a0f39927ffdb87674e4d6547d7aeae5c89a7fed2","kind":"tag","published_at":"2015-10-12T10:48:08.000Z","download_url":"https://codeload.github.com/PyCQA/bandit/tar.gz/0.14.0","html_url":"https://github.com/PyCQA/bandit/releases/tag/0.14.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/0.14.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/0.14.0/manifests"},{"name":"0.13.2","sha":"8cecf885648c7360790a68ce187313f212fe421e","kind":"tag","published_at":"2015-08-14T18:22:52.000Z","download_url":"https://codeload.github.com/PyCQA/bandit/tar.gz/0.13.2","html_url":"https://github.com/PyCQA/bandit/releases/tag/0.13.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/0.13.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/0.13.2/manifests"},{"name":"0.13.1","sha":"3b6acb73027ea28b8b4fa21c30f841d52e197e67","kind":"tag","published_at":"2015-08-12T16:00:35.000Z","download_url":"https://codeload.github.com/PyCQA/bandit/tar.gz/0.13.1","html_url":"https://github.com/PyCQA/bandit/releases/tag/0.13.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/0.13.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/0.13.1/manifests"},{"name":"0.13.0","sha":"80c7798e5140203ae8d48d11a3de660db1de8f80","kind":"tag","published_at":"2015-08-05T18:42:23.000Z","download_url":"https://codeload.github.com/PyCQA/bandit/tar.gz/0.13.0","html_url":"https://github.com/PyCQA/bandit/releases/tag/0.13.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/0.13.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/0.13.0/manifests"},{"name":"0.12.0","sha":"36e28b331ade2a815c232cc8b6c0d4cc69b2f66d","kind":"tag","published_at":"2015-06-29T22:16:09.000Z","download_url":"https://codeload.github.com/PyCQA/bandit/tar.gz/0.12.0","html_url":"https://github.com/PyCQA/bandit/releases/tag/0.12.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/0.12.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/0.12.0/manifests"},{"name":"0.11.0","sha":"f11e9b8ace63a11cdc1c9e89857b9c77056fa558","kind":"tag","published_at":"2015-05-07T16:14:01.000Z","download_url":"https://codeload.github.com/PyCQA/bandit/tar.gz/0.11.0","html_url":"https://github.com/PyCQA/bandit/releases/tag/0.11.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/0.11.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/0.11.0/manifests"},{"name":"0.10.1","sha":"26002c401781590e954ac0dfa7ea6a7fe32942f1","kind":"tag","published_at":"2015-03-25T15:30:09.000Z","download_url":"https://codeload.github.com/PyCQA/bandit/tar.gz/0.10.1","html_url":"https://github.com/PyCQA/bandit/releases/tag/0.10.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/0.10.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/0.10.1/manifests"},{"name":"0.10.0","sha":"bf0a33c5a2ebcaeb682201aefcdc718ddf64de8d","kind":"tag","published_at":"2015-03-23T20:58:01.000Z","download_url":"https://codeload.github.com/PyCQA/bandit/tar.gz/0.10.0","html_url":"https://github.com/PyCQA/bandit/releases/tag/0.10.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/0.10.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/0.10.0/manifests"},{"name":"0.9.0","sha":"09f0fa9ce70f2aa9c65d34f3e8e5b752567cc792","kind":"tag","published_at":"2015-02-17T20:21:52.000Z","download_url":"https://codeload.github.com/PyCQA/bandit/tar.gz/0.9.0","html_url":"https://github.com/PyCQA/bandit/releases/tag/0.9.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/0.9.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fbandit/tags/0.9.0/manifests"}]},"repo_metadata_updated_at":"2024-09-08T03:28:10.458Z","dependent_packages_count":566,"downloads":6827956,"downloads_period":"last-month","dependent_repos_count":14189,"rankings":{"downloads":0.17342716946734776,"dependent_repos_count":0.07303116851843444,"dependent_packages_count":0.04520037186681484,"stargazers_count":0.3983159407302722,"forks_count":2.2485704642216358,"docker_downloads_count":0.08862430990480288,"average":0.5045282374515513},"purl":"pkg:pypi/bandit","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/bandit","docker_dependents_count":287,"docker_downloads_count":778984482,"usage_url":"https://repos.ecosyste.ms/usage/pypi/bandit","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/bandit/dependencies","status":null,"funding_links":["https://psfmember.org/civicrm/contribute/transact/?reset=1\u0026id=42","https://github.com/sponsors/ericwb","https://tidelift.com/funding/github/pypi/bandit"],"critical":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/bandit/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/bandit/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/bandit/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/bandit/related_packages","maintainers":[{"uuid":"chair6","login":"chair6","name":null,"email":null,"url":null,"packages_count":1,"html_url":"https://pypi.org/user/chair6/","role":null,"created_at":"2022-12-14T07:07:25.937Z","updated_at":"2022-12-14T07:07:25.937Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/chair6/packages"},{"uuid":"ericwb","login":"ericwb","name":null,"email":null,"url":null,"packages_count":4,"html_url":"https://pypi.org/user/ericwb/","role":null,"created_at":"2022-12-14T07:07:25.942Z","updated_at":"2022-12-14T07:07:25.942Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/ericwb/packages"},{"uuid":"tkelsey","login":"tkelsey","name":null,"email":null,"url":null,"packages_count":2,"html_url":"https://pypi.org/user/tkelsey/","role":null,"created_at":"2022-12-14T07:07:25.950Z","updated_at":"2022-12-14T07:07:25.950Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/tkelsey/packages"},{"uuid":"Python Code Quality \"Authority\"","login":"Python Code Quality \"Authority\"","name":null,"email":null,"url":null,"packages_count":1,"html_url":"https://pypi.org/user/Python Code Quality \"Authority\"/","role":null,"created_at":"2024-09-07T01:06:19.365Z","updated_at":"2024-09-07T01:06:19.365Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/Python%20Code%20Quality%20%22Authority%22/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":690499,"maintainers_count":292846,"namespaces_count":0,"keywords_count":228675,"github":"pypi","metadata":{"funded_packages_count":48967},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2025-06-07T05:28:50.775Z","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":652,"unique_repositories_count_past_30_days":18,"recent_issues":[{"uuid":"5622573368","node_id":"PR_kwDOGLIeyc8AAAABFmE1Bw","number":1611,"state":"open","title":"Bump the python-packages group across 1 directory with 38 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-28T23:18:47.000Z","updated_at":"2026-09-29T07:45:58.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python-packages","update_count":38,"packages":[{"name":"sqlalchemy","old_version":"2.0.51","new_version":"2.1.1","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"coverage","old_version":"7.6.1","new_version":"7.16.2","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"flake8-rst-docstrings","old_version":"0.3.0","new_version":"0.3.1","repository_url":"https://github.com/peterjc/flake8-rst-docstrings"},{"name":"pygments","old_version":"2.19.2","new_version":"2.21.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pyupgrade","old_version":"3.8.0","new_version":"3.21.2","repository_url":"https://github.com/asottile/pyupgrade"},{"name":"reorder-python-imports","old_version":"3.14.0","new_version":"3.17.0","repository_url":"https://github.com/asottile/reorder-python-imports"},{"name":"alembic","old_version":"1.11.1","new_version":"1.20.0","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"bandit","old_version":"1.7.10","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"},{"name":"binaryornot","old_version":"0.4.4","new_version":"0.6.0","repository_url":"https://github.com/binaryornot/binaryornot"},{"name":"cfgv","old_version":"3.4.0","new_version":"3.5.0","repository_url":"https://github.com/asottile/cfgv"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.5.1","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"classify-imports","old_version":"4.2.0","new_version":"4.5.0","repository_url":"https://github.com/asottile/classify-imports"},{"name":"commonmark","old_version":"0.9.1","new_version":"0.9.2","repository_url":"https://github.com/rtfd/commonmark.py"},{"name":"cookiecutter","old_version":"2.6.0","new_version":"2.7.1","repository_url":"https://github.com/cookiecutter/cookiecutter"},{"name":"distlib","old_version":"0.3.9","new_version":"0.4.3","repository_url":"https://github.com/pypa/distlib"},{"name":"gitpython","old_version":"3.1.50","new_version":"3.1.62","repository_url":"https://github.com/gitpython-developers/GitPython"},{"name":"identify","old_version":"2.6.1","new_version":"2.6.20","repository_url":"https://github.com/pre-commit/identify"},{"name":"idna","old_version":"3.15","new_version":"3.20","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":"mako","old_version":"1.3.8","new_version":"1.4.3","repository_url":"https://github.com/sqlalchemy/mako"},{"name":"mypy-extensions","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/python/mypy_extensions"},{"name":"nodeenv","old_version":"1.9.1","new_version":"1.11.0","repository_url":"https://github.com/ekalinin/nodeenv"},{"name":"platformdirs","old_version":"4.3.6","new_version":"4.12.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pluggy","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pluggy"},{"name":"pyparsing","old_version":"3.0.9","new_version":"3.3.3","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"python-discovery","old_version":"1.6.0","new_version":"1.6.1","repository_url":"https://github.com/tox-dev/python-discovery"},{"name":"requests","old_version":"2.32.3","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"ruamel-yaml","old_version":"0.18.16","new_version":"0.19.1"},{"name":"snowballstemmer","old_version":"3.0.1","new_version":"3.1.1","repository_url":"https://github.com/snowballstem/snowball"},{"name":"soupsieve","old_version":"2.6","new_version":"2.10","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"sphinxcontrib-htmlhelp","old_version":"2.0.1","new_version":"2.1.0","repository_url":"https://github.com/sphinx-doc/sphinxcontrib-htmlhelp"},{"name":"stevedore","old_version":"5.3.0","new_version":"5.9.1"},{"name":"tokenize-rt","old_version":"6.0.0","new_version":"6.2.0","repository_url":"https://github.com/asottile/tokenize-rt"},{"name":"tornado","old_version":"6.4.2","new_version":"6.5.10","repository_url":"https://github.com/tornadoweb/tornado"},{"name":"typer","old_version":"0.20.1","new_version":"0.24.2","repository_url":"https://github.com/fastapi/typer"},{"name":"tzdata","old_version":"2026.2","new_version":"2026.4","repository_url":"https://github.com/python/tzdata"},{"name":"urllib3","old_version":"2.2.3","new_version":"2.8.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"virtualenv","old_version":"21.4.2","new_version":"21.13.0","repository_url":"https://github.com/pypa/virtualenv"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-packages group with 38 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.51` | `2.1.1` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.6.1` | `7.16.2` |\n| [flake8-rst-docstrings](https://github.com/peterjc/flake8-rst-docstrings) | `0.3.0` | `0.3.1` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.2` | `2.21.0` |\n| [pyupgrade](https://github.com/asottile/pyupgrade) | `3.8.0` | `3.21.2` |\n| [reorder-python-imports](https://github.com/asottile/reorder-python-imports) | `3.14.0` | `3.17.0` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.11.1` | `1.20.0` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.7.10` | `1.9.4` |\n| [binaryornot](https://github.com/binaryornot/binaryornot) | `0.4.4` | `0.6.0` |\n| [cfgv](https://github.com/asottile/cfgv) | `3.4.0` | `3.5.0` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.5.1` |\n| [classify-imports](https://github.com/asottile/classify-imports) | `4.2.0` | `4.5.0` |\n| [commonmark](https://github.com/rtfd/commonmark.py) | `0.9.1` | `0.9.2` |\n| [cookiecutter](https://github.com/cookiecutter/cookiecutter) | `2.6.0` | `2.7.1` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.9` | `0.4.3` |\n| [gitpython](https://github.com/gitpython-developers/GitPython) | `3.1.50` | `3.1.62` |\n| [identify](https://github.com/pre-commit/identify) | `2.6.1` | `2.6.20` |\n| [idna](https://github.com/kjd/idna) | `3.15` | `3.20` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.0` |\n| [mako](https://github.com/sqlalchemy/mako) | `1.3.8` | `1.4.3` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [nodeenv](https://github.com/ekalinin/nodeenv) | `1.9.1` | `1.11.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.3.6` | `4.12.1` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.0.9` | `3.3.3` |\n| [python-discovery](https://github.com/tox-dev/python-discovery) | `1.6.0` | `1.6.1` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.34.2` |\n| ruamel-yaml | `0.18.16` | `0.19.1` |\n| [snowballstemmer](https://github.com/snowballstem/snowball) | `3.0.1` | `3.1.1` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.6` | `2.10` |\n| [sphinxcontrib-htmlhelp](https://github.com/sphinx-doc/sphinxcontrib-htmlhelp) | `2.0.1` | `2.1.0` |\n| [stevedore](https://docs.openstack.org/stevedore) | `5.3.0` | `5.9.1` |\n| [tokenize-rt](https://github.com/asottile/tokenize-rt) | `6.0.0` | `6.2.0` |\n| [tornado](https://github.com/tornadoweb/tornado) | `6.4.2` | `6.5.10` |\n| [typer](https://github.com/fastapi/typer) | `0.20.1` | `0.24.2` |\n| [tzdata](https://github.com/python/tzdata) | `2026.2` | `2026.4` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.2.3` | `2.8.0` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `21.4.2` | `21.13.0` |\n\n\nUpdates `sqlalchemy` from 2.0.51 to 2.1.1\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.1.1\u003c/h1\u003e\n\u003cp\u003eReleased: September 25, 2026\u003c/p\u003e\n\u003ch2\u003eplatform\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[platform] [bug]\u003c/strong\u003e Removed the legacy underscore-separated extra names such as\n\u003ccode\u003emssql_pymssql\u003c/code\u003e and \u003ccode\u003epostgresql_psycopg\u003c/code\u003e from \u003ccode\u003epyproject.toml\u003c/code\u003e.\nThey normalize to the same names as the existing dash-separated extras,\nwhich is disallowed by \u003ca href=\"https://peps.python.org/pep-0685\"\u003ePEP 685\u003c/a\u003e, and caused the 2.1.0 source\ndistribution to fail to build with installers that enforce this rule,\nsuch as uv. The underscore spellings continue to work when installing,\nas installers normalize extra names before matching them.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13604\"\u003e#13604\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.1.0\u003c/h1\u003e\n\u003cp\u003eReleased: September 24, 2026\u003c/p\u003e\n\u003ch2\u003eorm\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [feature]\u003c/strong\u003e Added \u003ccode\u003e_orm.composite.column_template\u003c/code\u003e parameter to\n\u003ccode\u003e_orm.composite()\u003c/code\u003e.  When the composite class is a dataclass, this\nparameter accepts a string template such as \u003ccode\u003e\u0026quot;person_%s\u0026quot;\u003c/code\u003e, containing\nexactly one \u003ccode\u003e%s\u003c/code\u003e placeholder, that's used to generate column names for\ndataclass fields that don't otherwise have an explicit name, rather than\nusing the bare field name.  This removes the need to hand-write a\n\u003ccode\u003e_orm.mapped_column()\u003c/code\u003e for each field when the same composite dataclass\nis mapped multiple times on the same class with different column-name\nprefixes.  Pull request courtesy Leonardo Rosa.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12575\"\u003e#12575\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 pickling an ORM object that had an instance level lazy\nloader established, such as when the \u003ccode\u003e_orm.raiseload()\u003c/code\u003e option is used,\nwould emit a spurious warning regarding the loader containing additional\ncriteria, if the object had itself been unpickled from a previous\nserialization.  This would occur for objects that cross more than one\nserialization boundary, such as when using multiprocessing.\u003c/p\u003e\n\u003cp\u003eThis change is also \u003cstrong\u003ebackported\u003c/strong\u003e to: 2.0.53\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13574\"\u003e#13574\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 calling \u003ccode\u003e_orm.aliased()\u003c/code\u003e against an existing\n\u003ccode\u003e_orm.aliased()\u003c/code\u003e construct, without passing an explicit selectable,\nwould disregard the selectable of the existing construct and produce an\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.6.1 to 7.16.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/releases\"\u003ecoverage's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.16.2\u003c/h2\u003e\n\u003ch2\u003eVersion 7.16.2 — 2026-09-27\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: on Python 3.14 and later, a \u003ccode\u003efor\u003c/code\u003e loop completing immediately before a function return could mistakenly report an uncovered branch. This is now fixed, closing \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2168\"\u003eissue 2168\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFix: on Python 3.14 and later, the \u003ccode\u003eelse\u003c/code\u003e clause of a \u003ccode\u003etry\u003c/code\u003e whose body is a \u003ccode\u003ewith\u003c/code\u003e statement could incorrectly be reported as covered when the \u003ccode\u003ewith\u003c/code\u003e raised. This is now fixed, closing \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2289\"\u003eissue 2289\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFix: with \u003ccode\u003edynamic_context = test_function\u003c/code\u003e, test methods written as \u003ccode\u003e@staticmethod\u003c/code\u003e or \u003ccode\u003e@classmethod\u003c/code\u003e were not given a context of their own. Now they are, on Python 3.11 and later. Closes \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1923\"\u003eissue 1923\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e:arrow_right:  PyPI page: \u003ca href=\"https://pypi.org/project/coverage/7.16.2\"\u003ecoverage 7.16.2\u003c/a\u003e.\n:arrow_right:  To install: \u003ccode\u003epython3 -m pip install coverage==7.16.2\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003e7.16.1\u003c/h2\u003e\n\u003ch2\u003eVersion 7.16.1 — 2026-09-13\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: when the body of an irrefutable \u003ccode\u003ecase\u003c/code\u003e (like \u003ccode\u003ecase _:\u003c/code\u003e) is entirely excluded, the \u003ccode\u003ecase\u003c/code\u003e line is now excluded too, just as an excluded \u003ccode\u003eelse:\u003c/code\u003e body removes the \u003ccode\u003eelse:\u003c/code\u003e line. Previously the \u003ccode\u003ecase\u003c/code\u003e line was left behind and reported as missing. Closes \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1563\"\u003eissue 1563\u003c/a\u003e with \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2269\"\u003epull 2269\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFix: using \u003ca href=\"https://coverage.readthedocs.io/en/latest/api_coveragedata.html#coverage.CoverageData.update\"\u003eCoverageData.update()\u003c/a\u003e twice on an in-memory database would fail, as described in \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2279\"\u003eissue 2279\u003c/a\u003e. This is now fixed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e:arrow_right:  PyPI page: \u003ca href=\"https://pypi.org/project/coverage/7.16.1\"\u003ecoverage 7.16.1\u003c/a\u003e.\n:arrow_right:  To install: \u003ccode\u003epython3 -m pip install coverage==7.16.1\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003e7.16.0\u003c/h2\u003e\n\u003ch2\u003eVersion 7.16.0 — 2026-08-28\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen combining files, now path separator slashes will automatically be converted to the local file system style. This makes it less necessary to define \u003ccode\u003e[paths]\u003c/code\u003e configuration to combine data across operating systems. Fixes \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2266\"\u003eissue 2266\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eThe \u003ca href=\"https://coverage.readthedocs.io/en/latest/api_coverage.html#coverage.Coverage.switch_context\"\u003eCoverage.switch_context()\u003c/a\u003e method now returns the previous context.\u003c/li\u003e\n\u003cli\u003eFix: previously, a \u003ccode\u003e[paths]\u003c/code\u003e pattern would be replaced everywhere in a file path when it was only meant to be replaced once, in the leading portion of the path. This is now fixed, in \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2268\"\u003epull 2268\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixes to validation of options and configuration settings:\n\u003cul\u003e\n\u003cli\u003eNegative precision settings now always cause useful error messages (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2261\"\u003epull 2261\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAn invalid regex in the \u003ccode\u003e--contexts\u003c/code\u003e option (or the \u003ccode\u003e[report] contexts\u003c/code\u003e setting) reported a confusing “Couldn’t use data file …: user-defined function raised exception” error. Now it raises a proper configuration error naming the bad regex, like other regex settings do (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2262\"\u003epull 2262\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eNon-string values in TOML configuration settings now produce a helpful error message instead of a traceback. This affects list settings whose elements aren’t strings (like \u003ccode\u003eomit\u003c/code\u003e, \u003ccode\u003eexclude_lines\u003c/code\u003e, or a \u003ccode\u003e[paths]\u003c/code\u003e entry), file settings like \u003ccode\u003edata_file\u003c/code\u003e, and any wrong-typed value in the \u003ccode\u003e[paths]\u003c/code\u003e section (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2263\"\u003epull 2263\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ecoverage run\u003c/code\u003e refuses run-affecting command-line options like \u003ccode\u003e--branch\u003c/code\u003e alongside \u003ccode\u003e--concurrency=multiprocessing\u003c/code\u003e, since they can’t reach the subprocesses. The check only recognized \u003ccode\u003emultiprocessing\u003c/code\u003e as the entire option value, so \u003ccode\u003e--concurrency=multiprocessing,thread\u003c/code\u003e slipped through and failed later with “Can’t combine statement coverage data with branch data”. Each named concurrency library is now properly considered (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2270\"\u003epull 2270\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix: \u003ccode\u003ecoverage annotate -d DIR\u003c/code\u003e raised an \u003ccode\u003eAssertionError\u003c/code\u003e if any measured file had an extension other than \u003ccode\u003e.py\u003c/code\u003e, such as a \u003ccode\u003e.pyw\u003c/code\u003e file on Windows. The original extension is now restored on the annotated copy (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2265\"\u003epull 2265\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e:arrow_right:  PyPI page: \u003ca href=\"https://pypi.org/project/coverage/7.16.0\"\u003ecoverage 7.16.0\u003c/a\u003e.\n:arrow_right:  To install: \u003ccode\u003epython3 -m pip install coverage==7.16.0\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003e7.15.4\u003c/h2\u003e\n\u003ch2\u003eVersion 7.15.4 — 2026-08-06\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: in the HTML report, a source file name containing a double quote (legal on POSIX) wasn’t escaped where it’s dropped into the \u003ccode\u003ehref\u003c/code\u003e of the index and prev/next links, so it could close the attribute early and inject markup. Page URLs are now escaped. Thanks, \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2227\"\u003eRajath Mohare\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFix: the LCOV report wrote file names and other fields into its line-oriented records without neutralizing control characters. A measured file whose name contained a newline (legal on POSIX) could forge extra records, inflating the coverage seen by tools that read the report. Control characters in a field are now replaced. Thanks, \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2226\"\u003eRajath Mohare\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eWheels are now provided for Python 3.15.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e:arrow_right:  PyPI page: \u003ca href=\"https://pypi.org/project/coverage/7.15.4\"\u003ecoverage 7.15.4\u003c/a\u003e.\n:arrow_right:  To install: \u003ccode\u003epython3 -m pip install coverage==7.15.4\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003e7.15.3\u003c/h2\u003e\n\u003ch2\u003eVersion 7.15.3 — 2026-08-02\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: the sysmon core is incompatible with dynamic contexts. Previously, the combination would be prevented when read from the coverage.py configuration. But using the context API as pytest-cov does, contexts would be silently dropped. Now a warning is issued, thanks to \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2234\"\u003eJisang Han\u003c/a\u003e. Closes \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2200\"\u003eissue 2200\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eA performance improvement in the low-level line number bookkeeping when combining data files, thanks to \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2239\"\u003eKevin Turcios\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/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.16.2 — 2026-09-27\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: on Python 3.14 and later, a \u003ccode\u003efor\u003c/code\u003e loop completing immediately before a\nfunction return could mistakenly report an uncovered branch. This is now\nfixed, closing \u003ccode\u003eissue 2168\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: on Python 3.14 and later, the \u003ccode\u003eelse\u003c/code\u003e clause of a \u003ccode\u003etry\u003c/code\u003e whose body is\na \u003ccode\u003ewith\u003c/code\u003e statement could incorrectly be reported as covered when the\n\u003ccode\u003ewith\u003c/code\u003e raised.  This is now fixed, closing \u003ccode\u003eissue 2289\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: with \u003ccode\u003edynamic_context = test_function\u003c/code\u003e, test methods written as\n\u003ccode\u003e@staticmethod\u003c/code\u003e or \u003ccode\u003e@classmethod\u003c/code\u003e were not given a context of their own.\nNow they are, on Python 3.11 and later.  Closes \u003ccode\u003eissue 1923\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1923: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1923\"\u003ecoveragepy/coveragepy#1923\u003c/a\u003e\n.. _issue 2168: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2168\"\u003ecoveragepy/coveragepy#2168\u003c/a\u003e\n.. _issue 2289: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2289\"\u003ecoveragepy/coveragepy#2289\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-16-1:\u003c/p\u003e\n\u003ch2\u003eVersion 7.16.1 — 2026-09-13\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: when the body of an irrefutable \u003ccode\u003ecase\u003c/code\u003e (like \u003ccode\u003ecase _:\u003c/code\u003e) is entirely\nexcluded, the \u003ccode\u003ecase\u003c/code\u003e line is now excluded too, just as an excluded\n\u003ccode\u003eelse:\u003c/code\u003e body removes the \u003ccode\u003eelse:\u003c/code\u003e line.  Previously the \u003ccode\u003ecase\u003c/code\u003e line was\nleft behind and reported as missing.  Closes \u003ccode\u003eissue 1563\u003c/code\u003e_ with \u003ccode\u003epull 2269\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: using :meth:\u003ccode\u003e.CoverageData.update\u003c/code\u003e twice on an in-memory database would\nfail, as described in \u003ccode\u003eissue 2279\u003c/code\u003e_. This is now fixed.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1563: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1563\"\u003ecoveragepy/coveragepy#1563\u003c/a\u003e\n.. _pull 2269: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2269\"\u003ecoveragepy/coveragepy#2269\u003c/a\u003e\n.. _issue 2279: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2279\"\u003ecoveragepy/coveragepy#2279\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-16-0:\u003c/p\u003e\n\u003ch2\u003eVersion 7.16.0 — 2026-08-28\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eWhen combining files, now path separator slashes will automatically be\nconverted to the local file system style. This makes it less necessary to\ndefine \u003ccode\u003e[paths]\u003c/code\u003e configuration to combine data across operating systems.\nFixes \u003ccode\u003eissue 2266\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe :meth:\u003ccode\u003e.Coverage.switch_context\u003c/code\u003e method now returns the previous context.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: previously, a \u003ccode\u003e[paths]\u003c/code\u003e pattern would be replaced everywhere in a file\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/5643ae7c682bbd56ee1ac2b11556145ab8c2cab0\"\u003e\u003ccode\u003e5643ae7\u003c/code\u003e\u003c/a\u003e docs: prep for 7.16.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a3e969fc6ce8273538702a2336d8c2674f8017d8\"\u003e\u003ccode\u003ea3e969f\u003c/code\u003e\u003c/a\u003e fix: dynamic_context for \u003ca href=\"https://github.com/staticmethod\"\u003e\u003ccode\u003e@​staticmethod\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/classmethod\"\u003e\u003ccode\u003e@​classmethod\u003c/code\u003e\u003c/a\u003e tests (issue 1923) (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/8ad72362f03e59643865d15ffadd002529a777a9\"\u003e\u003ccode\u003e8ad7236\u003c/code\u003e\u003c/a\u003e fix: stop counting the try/else line when a with statement raises (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2301\"\u003e#2301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c6dab1fc387d161fe5938ce9421a7a38ca81ae7f\"\u003e\u003ccode\u003ec6dab1f\u003c/code\u003e\u003c/a\u003e fix(debug): debug output doesn't mis-handle odd line separators \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2296\"\u003e#2296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/08fbc3229adc8e7681a0d9134d3d5beb1684ae54\"\u003e\u003ccode\u003e08fbc32\u003c/code\u003e\u003c/a\u003e style: Protocols should use \u003ccode\u003e...\u003c/code\u003e for method bodies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/bc7b0e386388148687241cadcab56ac3e17aea9c\"\u003e\u003ccode\u003ebc7b0e3\u003c/code\u003e\u003c/a\u003e refactor: positional-only args are better than pragmas\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/52afd6be360c3b949d69ff83aca873c119a7959a\"\u003e\u003ccode\u003e52afd6b\u003c/code\u003e\u003c/a\u003e Document parallel tox coverage data files (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2284\"\u003e#2284\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/f653aaec4c58f89375716389e4ca17dd056d2069\"\u003e\u003ccode\u003ef653aae\u003c/code\u003e\u003c/a\u003e fix: loop completion arcs on Python 3.14 (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2281\"\u003e#2281\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/cc1ced4d4c8ef7674a824002aa5157d1f37acd78\"\u003e\u003ccode\u003ecc1ced4\u003c/code\u003e\u003c/a\u003e test: PyPy still compiles comprehensions as functions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/85a9088395e89840cb11c1c86735ba1f7a62d50d\"\u003e\u003ccode\u003e85a9088\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.6.1...7.16.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flake8-rst-docstrings` from 0.3.0 to 0.3.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/peterjc/flake8-rst-docstrings/commit/357d42d8873d5e6c23066061045d367c184b2165\"\u003e\u003ccode\u003e357d42d\u003c/code\u003e\u003c/a\u003e Call this v0.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/peterjc/flake8-rst-docstrings/commit/a0f0415efb138a8a5ddb62cc0730f35c9f4c28ba\"\u003e\u003ccode\u003ea0f0415\u003c/code\u003e\u003c/a\u003e Allow for line-break in flake8 version output\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/peterjc/flake8-rst-docstrings/commit/12c425fcb2a51e8bddb0932a4d45a6150291f196\"\u003e\u003ccode\u003e12c425f\u003c/code\u003e\u003c/a\u003e Add RST220 for redefining an anonymous link\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/peterjc/flake8-rst-docstrings/commit/da9eeb146b33bc0ff07580e73d893669632c1b71\"\u003e\u003ccode\u003eda9eeb1\u003c/code\u003e\u003c/a\u003e Document testing in README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/peterjc/flake8-rst-docstrings/commit/84855652ea18c9a495f183acf6fff70aeba4fc1e\"\u003e\u003ccode\u003e8485565\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/peterjc/flake8-rst-docstrings/commit/a66b0bbc4aeab38d75e434184ffcc90ca5df0170\"\u003e\u003ccode\u003ea66b0bb\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/peterjc/flake8-rst-docstrings/commit/aa2e5685cd7a275d91b26395e3c0fef0a1efa9fb\"\u003e\u003ccode\u003eaa2e568\u003c/code\u003e\u003c/a\u003e Python 3.8 in installation text\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/peterjc/flake8-rst-docstrings/commit/74edef65a13f6edd4e36cfefdd500622c25603aa\"\u003e\u003ccode\u003e74edef6\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/peterjc/flake8-rst-docstrings/commit/863bb2a0104c5ed68613daf6c9ef1c7588676a2f\"\u003e\u003ccode\u003e863bb2a\u003c/code\u003e\u003c/a\u003e Actually, no point pushing this to PyPI yet\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/peterjc/flake8-rst-docstrings/commit/5a04fe58f9506f1b3889e8746dbbdf9934b1e492\"\u003e\u003ccode\u003e5a04fe5\u003c/code\u003e\u003c/a\u003e black\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/peterjc/flake8-rst-docstrings/compare/v0.3.0...v0.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pygments` from 2.19.2 to 2.21.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygments/pygments/releases\"\u003epygments's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.21.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eNew lexers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBitBake (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3103\"\u003e#3103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCaddyfile (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3225\"\u003e#3225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCEL (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3048\"\u003e#3048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePureScript (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/1077\"\u003e#1077\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3054\"\u003e#3054\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdated lexers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBash: Fix coloured keyword at the beginning of a name (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2926\"\u003e#2926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBoogie: Add missing Boogie and Civl Verifier keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3156\"\u003e#3156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eC#:\n\u003cul\u003e\n\u003cli\u003eRecognize interpolated verbatim strings with either \u003ccode\u003e$@\u003c/code\u003e or \u003ccode\u003e@$\u003c/code\u003e\nprefixes (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2685\"\u003e#2685\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport dollar-prefixed and multi-quote raw strings (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3129\"\u003e#3129\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2897\"\u003e#2897\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRecognize \u003ccode\u003eunion\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3182\"\u003e#3182\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eC/C++:\n\u003cul\u003e\n\u003cli\u003eAdd C23/C++26 attributes (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3084\"\u003e#3084\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd more C2Y keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3092\"\u003e#3092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHighlight a function following a namespace body (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2928\"\u003e#2928\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix C/C++ lexer support for multiline pre-processor comments (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3051\"\u003e#3051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e.ipp\u003c/code\u003e as a file extension (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3141\"\u003e#3141\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/1008\"\u003e#1008\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eClojure: Recognize named, octal and unicode character literals such as\n\u003ccode\u003e\\space\u003c/code\u003e and \u003ccode\u003e\\o377\u003c/code\u003e as a single token (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/979\"\u003e#979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCsound: Add missing opcode parameter type letter (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3161\"\u003e#3161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCUDA: Derive from the C++ lexer instead of C to highlight C++\nconstructs such as \u003ccode\u003etemplate\u003c/code\u003e, \u003ccode\u003eclass\u003c/code\u003e and \u003ccode\u003enamespace\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3127\"\u003e#3127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eD: Allow non-ASCII (Unicode) identifiers (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/1088\"\u003e#1088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFish: Fix single quote backslash escape (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3138\"\u003e#3138\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2821\"\u003e#2821\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eGo: Various lexer improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3199\"\u003e#3199\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eGoogleSQL: Require a word break after \u003ccode\u003eSET\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3167\"\u003e#3167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHexdump: Only match valid digits (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3200\"\u003e#3200\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2847\"\u003e#2847\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJavaScript: Highlight the \u003ccode\u003earguments\u003c/code\u003e object (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJsonnet: Recognize colons in array slice expressions (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2828\"\u003e#2828\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJSX: Allow apostrophes in element text (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2816\"\u003e#2816\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJulia: Fix rstrings backslash (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3140\"\u003e#3140\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2537\"\u003e#2537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eKotlin: Support companion objects without an explicit name (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2525\"\u003e#2525\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eKotlin: Don't let a nullable type marker (\u003ccode\u003e?\u003c/code\u003e) consume the following\ncharacter, so \u003ccode\u003eFoo?,\u003c/code\u003e and \u003ccode\u003ea?:b\u003c/code\u003e tokenize correctly (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2964\"\u003e#2964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eKusto: Recognize member-access dots in dynamic objects (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2779\"\u003e#2779\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLua: Various improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3143\"\u003e#3143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMacaulay2: Update symbols to 1.26.05 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3120\"\u003e#3120\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMarkdown:\n\u003cul\u003e\n\u003cli\u003eHighlight bold-italics (\u003ccode\u003e***...***\u003c/code\u003e and \u003ccode\u003e___...___\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3067\"\u003e#3067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix mention regex to support hyphens in usernames (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3139\"\u003e#3139\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3135\"\u003e#3135\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eMarkdown, reStructuredText, TiddlyWiki5: Fix wrong token offsets for\nembedded code blocks (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3133\"\u003e#3133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMathematica: Recognize \u003ccode\u003e\\[Name]\u003c/code\u003e named-character escapes such as\n\u003ccode\u003e\\[Nu]\u003c/code\u003e instead of emitting an \u003ccode\u003eError\u003c/code\u003e token (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3097\"\u003e#3097\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygments/pygments/blob/master/CHANGES\"\u003epygments's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.21.0\u003c/h2\u003e\n\u003cp\u003e(released August 17th, 2026)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eNew lexers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBitBake (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3103\"\u003e#3103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCaddyfile (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3225\"\u003e#3225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCEL (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3048\"\u003e#3048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePureScript (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/1077\"\u003e#1077\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3054\"\u003e#3054\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdated lexers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBash: Fix coloured keyword at the beginning of a name (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2926\"\u003e#2926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBoogie: Add missing Boogie and Civl Verifier keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3156\"\u003e#3156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eC#:\n\u003cul\u003e\n\u003cli\u003eRecognize interpolated verbatim strings with either \u003ccode\u003e$@\u003c/code\u003e or \u003ccode\u003e@$\u003c/code\u003e\nprefixes (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2685\"\u003e#2685\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport dollar-prefixed and multi-quote raw strings (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3129\"\u003e#3129\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2897\"\u003e#2897\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRecognize \u003ccode\u003eunion\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3182\"\u003e#3182\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eC/C++:\n\u003cul\u003e\n\u003cli\u003eAdd C23/C++26 attributes (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3084\"\u003e#3084\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd more C2Y keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3092\"\u003e#3092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHighlight a function following a namespace body (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2928\"\u003e#2928\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix C/C++ lexer support for multiline pre-processor comments (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3051\"\u003e#3051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e.ipp\u003c/code\u003e as a file extension (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3141\"\u003e#3141\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/1008\"\u003e#1008\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eClojure: Recognize named, octal and unicode character literals such as\n\u003ccode\u003e\\space\u003c/code\u003e and \u003ccode\u003e\\o377\u003c/code\u003e as a single token (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/979\"\u003e#979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCsound: Add missing opcode parameter type letter (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3161\"\u003e#3161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCUDA: Derive from the C++ lexer instead of C to highlight C++\nconstructs such as \u003ccode\u003etemplate\u003c/code\u003e, \u003ccode\u003eclass\u003c/code\u003e and \u003ccode\u003enamespace\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3127\"\u003e#3127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eD: Allow non-ASCII (Unicode) identifiers (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/1088\"\u003e#1088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFish: Fix single quote backslash escape (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3138\"\u003e#3138\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2821\"\u003e#2821\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eGo: Various lexer improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3199\"\u003e#3199\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eGoogleSQL: Require a word break after \u003ccode\u003eSET\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3167\"\u003e#3167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHexdump: Only match valid digits (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3200\"\u003e#3200\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2847\"\u003e#2847\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJavaScript: Highlight the \u003ccode\u003earguments\u003c/code\u003e object (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJsonnet: Recognize colons in array slice expressions (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2828\"\u003e#2828\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJSX: Allow apostrophes in element text (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2816\"\u003e#2816\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJulia: Fix rstrings backslash (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3140\"\u003e#3140\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2537\"\u003e#2537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eKotlin: Support companion objects without an explicit name (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2525\"\u003e#2525\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eKotlin: Don't let a nullable type marker (\u003ccode\u003e?\u003c/code\u003e) consume the following\ncharacter, so \u003ccode\u003eFoo?,\u003c/code\u003e and \u003ccode\u003ea?:b\u003c/code\u003e tokenize correctly (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2964\"\u003e#2964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eKusto: Recognize member-access dots in dynamic objects (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2779\"\u003e#2779\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLua: Various improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3143\"\u003e#3143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMacaulay2: Update symbols to 1.26.05 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3120\"\u003e#3120\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMarkdown:\n\u003cul\u003e\n\u003cli\u003eHighlight bold-italics (\u003ccode\u003e***...***\u003c/code\u003e and \u003ccode\u003e___...___\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3067\"\u003e#3067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix mention regex to support hyphens in usernames (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3139\"\u003e#3139\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3135\"\u003e#3135\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eMarkdown, reStructuredText, TiddlyWiki5: Fix wrong token offsets for\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/pygments/pygments/commit/a43b45dcf081b6010c6ab4428f149f7f6d2499c4\"\u003e\u003ccode\u003ea43b45d\u003c/code\u003e\u003c/a\u003e Get ready for the 2.21.0 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/d8f14cb395026abb288db38839f57499cba695e0\"\u003e\u003ccode\u003ed8f14cb\u003c/code\u003e\u003c/a\u003e Fix version_added for Purescript.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/19c581704c466cde59fd1a49e04c3424449110f3\"\u003e\u003ccode\u003e19c5817\u003c/code\u003e\u003c/a\u003e Remove superfluous parentheses from PostgresExplainLexer (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3232\"\u003e#3232\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/9992e0992ad273565f19ffb1b4c9cae96cd8dd00\"\u003e\u003ccode\u003e9992e09\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3191\"\u003e#3191\u003c/a\u003e from jvoisin/dupes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/bd225771e856b79e8cb5b81533e1eba0cf9fbf85\"\u003e\u003ccode\u003ebd22577\u003c/code\u003e\u003c/a\u003e Fix regexlint warnings after latest update.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/6a62df1d1fc77af7e9fc61325ef376297cadffbb\"\u003e\u003ccode\u003e6a62df1\u003c/code\u003e\u003c/a\u003e Release preparation: Update the changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/aabba32860b5ba15acabdcba9b436a32e92ce75e\"\u003e\u003ccode\u003eaabba32\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3221\"\u003e#3221\u003c/a\u003e from jvoisin/alter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/d3441d00a33467255b8b3ae9862f454e3aa58e3d\"\u003e\u003ccode\u003ed3441d0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3225\"\u003e#3225\u003c/a\u003e from jvoisin/caddy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/c593f3f2f69e09670e58a121437a3c830a643071\"\u003e\u003ccode\u003ec593f3f\u003c/code\u003e\u003c/a\u003e Add a lexer for Caddy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/0644b532c8df1dd67b26471871d432d100252a11\"\u003e\u003ccode\u003e0644b53\u003c/code\u003e\u003c/a\u003e Simplify single-character regex alternations to character classes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pygments/pygments/compare/2.19.2...2.21.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyupgrade` from 3.8.0 to 3.21.2\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/pyupgrade/commit/75992aaa40730136014f34227e0135f63fc951b4\"\u003e\u003ccode\u003e75992aa\u003c/code\u003e\u003c/a\u003e v3.21.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/pyupgrade/commit/3a1254b1d9ee85380bafa043d0a781be7b5f3c93\"\u003e\u003ccode\u003e3a1254b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/asottile/pyupgrade/issues/1043\"\u003e#1043\u003c/a\u003e from asottile/unstring-annotation-multiline\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/pyupgrade/commit/98a37188adf22444e2c66062152e11fba5647a52\"\u003e\u003ccode\u003e98a3718\u003c/code\u003e\u003c/a\u003e fix unstringing multiline string annotations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/pyupgrade/commit/46c3d526905780be88d227f46e19f24f2593fbbe\"\u003e\u003ccode\u003e46c3d52\u003c/code\u003e\u003c/a\u003e v3.21.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/pyupgrade/commit/372cb618ce0368a25c97b6598e8f8778f21740d3\"\u003e\u003ccode\u003e372cb61\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/asottile/pyupgrade/issues/1040\"\u003e#1040\u003c/a\u003e from asottile/315-hax\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/pyupgrade/commit/fb9f5039e33bd9caa3a13c5fa1a2b20639aa16bf\"\u003e\u003ccode\u003efb9f503\u003c/code\u003e\u003c/a\u003e vendor cookie_re from cpython\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/pyupgrade/commit/afcce08e069d150a318f0a22f754cc87b797f34a\"\u003e\u003ccode\u003eafcce08\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/asottile/pyupgrade/issues/1036\"\u003e#1036\u003c/a\u003e from asottile/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/pyupgrade/commit/2deeeb00a1f4983750f17f063f55c5ba1df72cd4\"\u003e\u003ccode\u003e2deeeb0\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/pyupgrade/commit/cde85eac77266e20ba3ae9bf5f7d3d5c0cfa9f76\"\u003e\u003ccode\u003ecde85ea\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/asottile/pyupgrade/issues/1035\"\u003e#1035\u003c/a\u003e from asottile/all-repos_autofix_all-repos-manual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/pyupgrade/commit/c612b1b77c8d7b10794621efa077f01d132007a3\"\u003e\u003ccode\u003ec612b1b\u003c/code\u003e\u003c/a\u003e py310+\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/asottile/pyupgrade/compare/v3.8.0...v3.21.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `reorder-python-imports` from 3.14.0 to 3.17.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/reorder-python-imports/commit/5e38415c12154247a099c7023c210e3d458275b5\"\u003e\u003ccode\u003e5e38415\u003c/code\u003e\u003c/a\u003e v3.17.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/reorder-python-imports/commit/cd1247451e8cc03412540ccef8611b36e8f916a9\"\u003e\u003ccode\u003ecd12474\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/asottile/reorder-python-imports/issues/443\"\u003e#443\u003c/a\u003e from asottile/lazy-imports\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/reorder-python-imports/commit/f70daa1eb2f3dc700bdd0e548511cda7e8baf5d9\"\u003e\u003ccode\u003ef70daa1\u003c/code\u003e\u003c/a\u003e add support for lazy imports\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/reorder-python-imports/commit/72f91ea73273f0e152917bc57ab47cd581cdbff2\"\u003e\u003ccode\u003e72f91ea\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/asottile/reorder-python-imports/issues/440\"\u003e#440\u003c/a\u003e from asottile/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/reorder-python-imports/commit/aa8c9bf52cfb8c1c51de8a6ca25aee55da13c4b0\"\u003e\u003ccode\u003eaa8c9bf\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/reorder-python-imports/commit/2d9adf0c18fc88f14c83994b3d0a229f628adb2a\"\u003e\u003ccode\u003e2d9adf0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/asottile/reorder-python-imports/issues/439\"\u003e#439\u003c/a\u003e from asottile/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/reorder-python-imports/commit/27d317d239a68dc1053613aaf254b1fa36d85aa5\"\u003e\u003ccode\u003e27d317d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/reorder-python-imports/commit/9d992d54ec024eb005b6712e162d8d0f3ce0568a\"\u003e\u003ccode\u003e9d992d5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/asottile/reorder-python-imports/issues/438\"\u003e#438\u003c/a\u003e from asottile/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/reorder-python-imports/commit/9263e241dfa753e1cdc85194462855e47d6ef48d\"\u003e\u003ccode\u003e9263e24\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/reorder-python-imports/commit/16729cd0537dab53998690ea3985354560a5e1aa\"\u003e\u003ccode\u003e16729cd\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/asottile/reorder-python-imports/issues/437\"\u003e#437\u003c/a\u003e from asottile/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/asottile/reorder-python-imports/compare/v3.14.0...v3.17.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `alembic` from 1.11.1 to 1.20.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/alembic/releases\"\u003ealembic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.20.0\u003c/h1\u003e\n\u003cp\u003eReleased: September 11, 2026\u003c/p\u003e\n\u003ch2\u003eusecase\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[usecase] [batch]\u003c/strong\u003e Added a warning for the case where an unnamed CHECK constraint on a\nreflected table is omitted from a batch \u0026quot;recreate\u0026quot; operation.  An unnamed\nCHECK constraint can't be reliably carried over in a batch recreate\nas it may refer to columns that are being dropped or changed.  This\nomission was previously a silent operation.   The presence of any\n\u003ccode\u003e~sqlalchemy.schema.CheckConstraint\u003c/code\u003e in\n\u003ccode\u003eOperations.batch_alter_table.table_args\u003c/code\u003e is taken to indicate\nthat the case has been accommodated, and no warning is emitted.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1846\"\u003e#1846\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[usecase] [autogenerate]\u003c/strong\u003e Autogenerate now renders a warning comment above any rendered\n\u003ccode\u003eOperations.drop_constraint()\u003c/code\u003e directive for which the constraint name\nis \u003ccode\u003eNone\u003c/code\u003e, as is the case when a constraint that has no name in the model\nis dropped, most typically within the \u003ccode\u003edowngrade()\u003c/code\u003e function of a\nmigration that adds an unnamed constraint.  A warning is also emitted on\nthe console when the migration script is generated.   The directive\nrequires a non-None name in order to be able to emit a \u0026quot;DROP CONSTRAINT\u0026quot;\ncommand.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/916\"\u003e#916\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [batch]\u003c/strong\u003e Fixed bug in batch mode where adding a column with a type that generates\nits own CHECK constraint, such as \u003ccode\u003e~sqlalchemy.types.Boolean\u003c/code\u003e or\n\u003ccode\u003e~sqlalchemy.types.Enum\u003c/code\u003e with\n\u003ccode\u003e~sqlalchemy.types.Boolean.create_constraint\u003c/code\u003e set to \u003ccode\u003eTrue\u003c/code\u003e,\nwould emit the constraint twice when the table was recreated, once under\nthe name generated by the naming convention in use and once under the\nname given to the type.  The constraint is now emitted once, using the\nsame name that would be used outside of batch mode.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1768\"\u003e#1768\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [batch]\u003c/strong\u003e Fixed bug in batch mode where a CHECK constraint generated by a type such\nas \u003ccode\u003e~sqlalchemy.types.Boolean\u003c/code\u003e or \u003ccode\u003e~sqlalchemy.types.Enum\u003c/code\u003e\nwould lose the name established for it by the naming convention in use\nwhen the table was recreated, as the constraint was regenerated against\nthe temporary table used for the recreate operation.  The naming\nconvention is now resolved against the name of the table being replaced.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/alembic/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bandit` from 1.7.10 to 1.9.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/bandit/releases\"\u003ebandit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: fixed some typos in comments by \u003ca href=\"https://github.com/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/login-action from 3.6.0 to 3.7.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/PyCQA/bandit/pull/1353\"\u003ePyCQA/bandit#1353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.18.0 to 6.19.2 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/PyCQA/bandit/pull/1357\"\u003ePyCQA/bandit#1357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B613 crash when reading from stdin by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude filename in nosec 'no failed test' warning by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1363\"\u003ePyCQA/bandit#1363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B615 false positive when revision is set via variable by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1358\"\u003ePyCQA/bandit#1358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLower version guard in check_ast_node to Python 3.12 by \u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B106 reporting wrong line number on multiline function calls by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1360\"\u003ePyCQA/bandit#1360\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/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1334\"\u003ePyCQA/bandit#1334\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/PyCQA/bandit/pull/1335\"\u003ePyCQA/bandit#1335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B608 to detect \u003ccode\u003eVALUES(\u003c/code\u003e without space by \u003ca href=\"https://github.com/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd check for hardcoded passwords in dicts. by \u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\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/PyCQA/bandit/pull/1341\"\u003ePyCQA/bandit#1341\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate tox tests for Python 3.10 by \u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/setup-buildx-action from 3.11.1 to 3.12.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/PyCQA/bandit/pull/1347\"\u003ePyCQA/bandit#1347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimit B614 to torch.load deserializers by \u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\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/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eArgparse Python 3.14 enhancements by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1331\"\u003ePyCQA/bandit#1331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCheck whether Constant value is str by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1333\"\u003ePyCQA/bandit#1333\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.1...1.9.2\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.1...1.9.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMore Python version related fixes by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1327\"\u003ePyCQA/bandit#1327\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/PyCQA/bandit/commit/92ae8b82fb422a639f0ed8d99e96cea769594e08\"\u003e\u003ccode\u003e92ae8b8\u003c/code\u003e\u003c/a\u003e Fix B106 reporting wrong line number on multiline function calls (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1360\"\u003e#1360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c8c8a55c3307333b8eb46cb2ef46d49b1fad6546\"\u003e\u003ccode\u003ec8c8a55\u003c/code\u003e\u003c/a\u003e Lower version guard in check_ast_node to Python 3.12 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1355\"\u003e#1355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/8f2f9284fca830ca017b2e2cc3ddc2a7b74b7040\"\u003e\u003ccode\u003e8f2f928\u003c/code\u003e\u003c/a\u003e Fix B615 false positive when revision is set via variable (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1358\"\u003e#1358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e27493f71c114e0e5dfc0a475d225d7f9f4a7e2b\"\u003e\u003ccode\u003ee27493f\u003c/code\u003e\u003c/a\u003e Include filename in nosec 'no failed test' warning (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1363\"\u003e#1363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/b69b336450301d424e5ba04c9a58e8d41b7169b6\"\u003e\u003ccode\u003eb69b336\u003c/code\u003e\u003c/a\u003e Fix B613 crash when reading from stdin (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1361\"\u003e#1361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e418b798abcc3f2b00c07fd6315da8fe9aeead00\"\u003e\u003ccode\u003ee418b79\u003c/code\u003e\u003c/a\u003e Bump docker/build-push-action from 6.18.0 to 6.19.2 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1357\"\u003e#1357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/ff646fd7e0e34fb350196fc58448fad17178c27a\"\u003e\u003ccode\u003eff646fd\u003c/code\u003e\u003c/a\u003e Bump docker/login-action from 3.6.0 to 3.7.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1353\"\u003e#1353\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c0def6c7ebab60f98c28ba759d488f4fbe6dae89\"\u003e\u003ccode\u003ec0def6c\u003c/code\u003e\u003c/a\u003e chore: fixed some typos in comments (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1351\"\u003e#1351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/765f00d3f202f83f61d03f882f80a2d5142d81f8\"\u003e\u003ccode\u003e765f00d\u003c/code\u003e\u003c/a\u003e Limit B614 to torch.load deserializers (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1348\"\u003e#1348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/06fbbab0df3374ffa8ef24c6f601b2d5e1d4d429\"\u003e\u003ccode\u003e06fbbab\u003c/code\u003e\u003c/a\u003e Bump docker/setup-buildx-action from 3.11.1 to 3.12.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1347\"\u003e#1347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.7.10...1.9.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `binaryornot` from 0.4.4 to 0.6.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/binaryornot/binaryornot/releases\"\u003ebinaryornot's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eBinaryOrNot 0.6.0: Three Layers of Detection\u003c/h2\u003e\n\u003cp\u003eBinaryOrNot identifies binary files three ways: by extension, by file signature, and by content analysis. Pass it any file path and it tells you binary or text, accurately, across PNGs, PDFs, executables, archives, fonts, CJK-encoded text, and hundreds of other formats.\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003euv pip install --upgrade binaryornot\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eWhat's new\u003c/h3\u003e\n\u003cp\u003e\u003cstrong\u003e131 file types recognized by name.\u003c/strong\u003e \u003ccode\u003eis_binary()\u003c/code\u003e checks the filename extension against a curated list of binary types (images, audio, video, archives, executables, fonts, documents, databases, 3D models, CAD files, scientific data formats, game ROMs) before reading any bytes. A \u003ccode\u003e.png\u003c/code\u003e or \u003ccode\u003e.mp4\u003c/code\u003e is classified instantly with zero file I/O. The extension list ships as \u003ccode\u003ebinary_extensions.csv\u003c/code\u003e and is easy to inspect or extend. (\u003ca href=\"https://redirect.github.com/binaryornot/binaryornot/pull/648\"\u003e#648\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eIf you need pure content-based classification, pass \u003ccode\u003echeck_extensions=False\u003c/code\u003e:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003efrom binaryornot.check import is_binary\n\u003ch1\u003eExtension says binary, but let's check the actual bytes\u003c/h1\u003e\n\u003cp\u003eis_binary(\u0026quot;mystery_file.pyc\u0026quot;, check_extensions=False)\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e55 binary format signatures.\u003c/strong\u003e The detector checks file headers against known magic bytes for PNG, JPEG, PDF, ZIP, ELF, Mach-O, WebAssembly, SQLite, Parquet, Arrow IPC, and 45 more formats. Files that match a known signature are classified as binary immediately, before the statistical model runs. The signature table ships as \u003ccode\u003ebinary_formats.csv\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/binaryornot/binaryornot/pull/647\"\u003e#647\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eType annotations on the public API.\u003c/strong\u003e \u003ccode\u003eis_binary()\u003c/code\u003e, \u003ccode\u003eis_binary_string()\u003c/code\u003e, and \u003ccode\u003eget_starting_chunk()\u003c/code\u003e all have inline type annotations. Editors and type checkers know that \u003ccode\u003eis_binary()\u003c/code\u003e accepts \u003ccode\u003estr\u003c/code\u003e, \u003ccode\u003ebytes\u003c/code\u003e, or \u003ccode\u003epathlib.Path\u003c/code\u003e and returns \u003ccode\u003ebool\u003c/code\u003e. Credit to \u003ca href=\"https://github.com/smheidrich\"\u003e\u003ccode\u003e@​smheidrich\u003c/code\u003e\u003c/a\u003e for the initial type stubs proposal (\u003ca href=\"https://redirect.github.com/binaryornot/binaryornot/issues/627\"\u003e#627\u003c/a\u003e) and \u003ca href=\"https://github.com/AlJohri\"\u003e\u003ccode\u003e@​AlJohri\u003c/code\u003e\u003c/a\u003e for requesting \u003ccode\u003epathlib.Path\u003c/code\u003e support (\u003ca href=\"https://redirect.github.com/binaryornot/binaryornot/issues/628\"\u003e#628\u003c/a\u003e). (\u003ca href=\"https://redirect.github.com/binaryornot/binaryornot/pull/643\"\u003e#643\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eWhat's better\u003c/h3\u003e\n\u003cp\u003e\u003cstrong\u003eCompletely retrained decision tree on 4x more data.\u003c/strong\u003e The detector reads 512 bytes per file instead of 128, and the decision tree was rebuilt from scratch on those larger samples. A new feature, \u003ccode\u003ehas_magic_signature\u003c/code\u003e, gives the tree a second path to the right answer when statistical features are ambiguous. Byte ratios and entropy calculations reflect actual file content rather than header artifacts. (\u003ca href=\"https://redirect.github.com/binaryornot/binaryornot/pull/647\"\u003e#647\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003ePython 3.10+ compatibility.\u003c/strong\u003e BinaryOrNot installs on Python 3.10 through 3.14, supporting Cookiecutter, cookieplone, and other tools that run on older interpreters. Thanks \u003ca href=\"https://github.com/wesleybl\"\u003e\u003ccode\u003e@​wesleybl\u003c/code\u003e\u003c/a\u003e for raising this. (\u003ca href=\"https://redirect.github.com/binaryornot/binaryornot/pull/645\"\u003e#645\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eTest fixtures ship in the sdist.\u003c/strong\u003e \u003ccode\u003e.pyc\u003c/code\u003e and \u003ccode\u003e.DS_Store\u003c/code\u003e test fixtures are force-included in the source distribution so tests pass when run from the sdist. (\u003ca href=\"https://redirect.github.com/binaryornot/binaryornot/pull/646\"\u003e#646\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eWhat's fixed\u003c/h3\u003e\n\u003cp\u003e\u003cstrong\u003ePNGs with ambiguous headers are correctly classified.\u003c/strong\u003e A 512x512 grayscale+alpha PNG has an IHDR chunk with enough null bytes that the first 128 bytes accidentally decode as UTF-16. Extension checking, signature matching, and the retrained tree each independently prevent this misclassification. Closes \u003ca href=\"https://redirect.github.com/binaryornot/binaryornot/issues/642\"\u003e#642\u003c/a\u003e. (\u003ca href=\"https://redirect.github.com/binaryornot/binaryornot/pull/647\"\u003e#647\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eWhat's changed\u003c/h3\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ccode\u003eis_binary()\u003c/code\u003e has a new keyword argument.\u003c/strong\u003e \u003ccode\u003echeck_extensions\u003c/code\u003e (default \u003ccode\u003eTrue\u003c/code\u003e) controls whether the extension check runs. Existing code that calls \u003ccode\u003eis_binary(path)\u003c/code\u003e gets the extension check automatically. Code that passes \u003ccode\u003echeck_extensions=False\u003c/code\u003e gets the previous content-only behavior.\u003c/p\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/audreyfeldroy\"\u003e\u003ccode\u003e@​audreyfeldroy\u003c/code\u003e\u003c/a\u003e (Audrey M. Roy Greenfeld) designed and built this release: the extension detection system, file signature matching, decision tree retraining, type annotations, Python 3.10 compatibility, and sdist fixes.\u003c/p\u003e\n\u003cp\u003eThanks to \u003ca href=\"https://github.com/smheidrich\"\u003e\u003ccode\u003e@​smheidrich\u003c/code\u003e\u003c/a\u003e for the type stubs proposal, \u003ca href=\"https://github.com/AlJohri\"\u003e\u003ccode\u003e@​AlJohri\u003c/code\u003e\u003c/a\u003e for requesting pathlib.Path support, and \u003ca href=\"https://github.com/wesleybl\"\u003e\u003ccode\u003e@​wesleybl\u003c/code\u003e\u003c/a\u003e for raising Python 3.10 compatibility.\u003c/p\u003e\n\u003ch2\u003eBinaryOrNot 0.5.0: Zero Dependencies, 128 Bytes, One Trained Classifier\u003c/h2\u003e\n\u003cp\u003eThis is the biggest release in BinaryOrNot's history. I rebuilt the detection engine from the ground up. The original used byte ratio heuristics with chardet as a second opinion for ambiguous files. I replaced all of that with a trained decision tree operating on 23 features, covering 49 binary formats and 37 text encodings, with zero external dependencies. It's backed by 211 tests and a training pipeline you can re-run yourself. If you've ever had BinaryOrNot misidentify a UTF-16 file, choke on a CJK-encoded document, or crash because chardet changed its API, this release is for you.\u003c/p\u003e\n\u003cp\u003eBinaryOrNot now has zero dependencies. The chardet library (2.1 MB installed) is gone, replaced by a decision tree that reads 128 bytes of a file and classifies it as binary or text using 23 features computed from those bytes alone. The API is unchanged: \u003ccode\u003eis_binary(\u0026quot;file.png\u0026quot;)\u003c/code\u003e still returns \u003ccode\u003eTrue\u003c/code\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/binaryornot/binaryornot/commit/9c979cd0dce0627ed01a52d2c160357d79b9af36\"\u003e\u003ccode\u003e9c979cd\u003c/code\u003e\u003c/a\u003e Release 0.6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/binaryornot/binaryornot/commit/fba3730a0aa870f9cfa1984bff001a0451484a6e\"\u003e\u003ccode\u003efba3730\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/binaryornot/binaryornot/issues/648\"\u003e#648\u003c/a\u003e from binaryornot/check-file-extensions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/binaryornot/binaryornot/commit/c375996242da98dd2d3fa28f44d348a0dca00891\"\u003e\u003ccode\u003ec375996\u003c/code\u003e\u003c/a\u003e Document why bytes filenames matter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/binaryornot/binaryornot/commit/17540bceefb04e68ac27f0699ba2d9cdc7e00337\"\u003e\u003ccode\u003e17540bc\u003c/code\u003e\u003c/a\u003e Handle bytes filenames in extension check\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/binaryornot/binaryornot/commit/bc069ff99f5a0f0e7586b539d596d5563a0bbe40\"\u003e\u003ccode\u003ebc069ff\u003c/code\u003e\u003c/a\u003e Classify 131 file types by extension before reading them\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/binaryornot/binaryornot/commit/a1ff8d05609233cdee2a5f012edb3f1606067927\"\u003e\u003ccode\u003ea1ff8d0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/binaryornot/binaryornot/issues/647\"\u003e#647\u003c/a\u003e from binaryornot/fix-png-misclassification\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/binaryornot/binaryornot/commit/7c1864b397e4aab74ad032584ce37a2bce5a8401\"\u003e\u003ccode\u003e7c1864b\u003c/code\u003e\u003c/a\u003e Cover 55 binary formats from plists to network captures\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/binaryornot/binaryornot/commit/2a31e623aaa2a95a9df514546cf7da343d235dca\"\u003e\u003ccode\u003e2a31e62\u003c/code\u003e\u003c/a\u003e Apply ruff formatting to slice expression\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/binaryornot/binaryornot/commit/5f6351a02fcd23c887a3aee17e2a082ca3cdf2f8\"\u003e\u003ccode\u003e5f6351a\u003c/code\u003e\u003c/a\u003e Teach the decision tree to use file signatures as evidence\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/binaryornot/binaryornot/commit/feb38d84747cce3243ffcdfca5526f281cd9e805\"\u003e\u003ccode\u003efeb38d8\u003c/code\u003e\u003c/a\u003e Give the decision tree 4x more context per file\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/binaryornot/binaryornot/compare/0.4.4...v0.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cfgv` from 3.4.0 to 3.5.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/cfgv/commit/c7342120ec8513671fb8dd54d8a14399dc59cd47\"\u003e\u003ccode\u003ec734212\u003c/code\u003e\u003c/a\u003e v3.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/cfgv/commit/d64e0cc2ba77dff75a4c15fb6cf5e6ed315dc80b\"\u003e\u003ccode\u003ed64e0cc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/asottile/cfgv/issues/158\"\u003e#158\u003c/a\u003e from asottile/key-value-map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/cfgv/commit/641559f162edff0c37277cd7c5ebd2b65292fad1\"\u003e\u003ccode\u003e641559f\u003c/code\u003e\u003c/a\u003e add KeyValueMap\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/cfgv/commit/82e2f93a1554805a8938a6a3a588efe982e03019\"\u003e\u003ccode\u003e82e2f93\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/asottile/cfgv/issues/157\"\u003e#157\u003c/a\u003e from asottile/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/cfgv/commit/69cd02016f6a69de3a19a9741f16aa6d40120164\"\u003e\u003ccode\u003e69cd020\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/cfgv/commit/5ccc4d404d9a6a83bd3b12c1a24437db7ce8a081\"\u003e\u003ccode\u003e5ccc4d4\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/asottile/cfgv/issues/156\"\u003e#156\u003c/a\u003e from asottile/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/cfgv/commit/2e7ffe560a5de38906821304378fe26ceb7a536c\"\u003e\u003ccode\u003e2e7ffe5\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/cfgv/commit/ef7849933897d28727e453646a5a632202724d41\"\u003e\u003ccode\u003eef78499\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/asottile/cfgv/issues/155\"\u003e#155\u003c/a\u003e from asottile/all-repos_autofix_all-repos-manual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/cfgv/commit/b34b882bba1f683e9e3da7b3ab97e3ee1607977f\"\u003e\u003ccode\u003eb34b882\u003c/code\u003e\u003c/a\u003e py310+\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/cfgv/commit/724a279ea352c1883761e34e3f261c11be28f374\"\u003e\u003ccode\u003e724a279\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/asottile/cfgv/issues/154\"\u003e#154\u003c/a\u003e from asottile/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/asottile/cfgv/compare/v3.4.0...v3.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.1 to 3.5.1\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.5.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.5.0...3.5.1\"\u003e3.5.1\u003c/a\u003e (2026-08-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised upper bound of setuptools to v84 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache performance access optimization for our CharInfo struct (prebuilt only).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer decoding large content when the noise detector output give a high entropy.\nOnly impacted large content input \u0026gt;1M bytes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.5.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.9...3.5.0\"\u003e3.5.0\u003c/a\u003e (2026-08-12)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExplicit support for Python 3.15\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComparing a CharsetMatch to a non-alias encoding strings (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReturn 0.0 CharsetMatch.multi_byte_usage for empty payloads instead of crashing (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA file with both a charset declaration and BOM/SIG did not verify first the BOM/SIG charset.\u003c/li\u003e\n\u003cli\u003eiso2022* cases misdetected due to a flaw in our multibyte chunking logic.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReplaced the optional mypyc build with Cython extensions while retaining the\npure Python fallback. The previous engine (mypyc) started to hit rough limit around\nthe optimization of our noise/coherence detector while Cython allows us to\nsteer the engine toward the right generated optimized sources.\nThis change SHOULD not impact bundler (e.g. Pyinstaller) as the module are\nimmediately discoverable (i.e. not hidden import like mypyc did).\nMoreover, a long wished distribution is the abi3 wheels, this will allow us\nto no longer rush each year when a new Python interpreter is released.\nWe still distribute the interpreter specific wheels for faster performance.\u003c/li\u003e\n\u003cli\u003eApplied micro-optimization on several utils.\u003c/li\u003e\n\u003cli\u003eCharsetMatches no longer sort on each match insertion.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved an old performance optimization attempt in apy.py (success_fast_tracked+payload_result_cache).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.9\u003c/h2\u003e\n\u003ch2\u003e\u003c...\n\n_Description has been truncated_","html_url":"https://github.com/alexistli/tic-tac-toe-game/pull/1611","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexistli%2Ftic-tac-toe-game/issues/1611","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1611/packages"},{"uuid":"5531294237","node_id":"PR_kwDOSC3iXs8AAAABEeQmeQ","number":221,"state":"open","title":"deps: Update bandit requirement from ~=1.7.10 to ~=1.9.4 in /templates/service","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-21T19:07:30.000Z","updated_at":"2026-09-21T19:07:31.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps: Update","packages":[{"name":"bandit","old_version":"~=1.7.10","new_version":"~=1.9.4","repository_url":"https://github.com/PyCQA/bandit"}],"path":"/templates/service","ecosystem":"pip"},"body":"Updates the requirements on [bandit](https://github.com/PyCQA/bandit) 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/PyCQA/bandit/releases\"\u003ebandit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: fixed some typos in comments by \u003ca href=\"https://github.com/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/login-action from 3.6.0 to 3.7.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/PyCQA/bandit/pull/1353\"\u003ePyCQA/bandit#1353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.18.0 to 6.19.2 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/PyCQA/bandit/pull/1357\"\u003ePyCQA/bandit#1357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B613 crash when reading from stdin by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude filename in nosec 'no failed test' warning by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1363\"\u003ePyCQA/bandit#1363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B615 false positive when revision is set via variable by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1358\"\u003ePyCQA/bandit#1358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLower version guard in check_ast_node to Python 3.12 by \u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B106 reporting wrong line number on multiline function calls by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1360\"\u003ePyCQA/bandit#1360\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/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\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/PyCQA/bandit/commit/92ae8b82fb422a639f0ed8d99e96cea769594e08\"\u003e\u003ccode\u003e92ae8b8\u003c/code\u003e\u003c/a\u003e Fix B106 reporting wrong line number on multiline function calls (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1360\"\u003e#1360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c8c8a55c3307333b8eb46cb2ef46d49b1fad6546\"\u003e\u003ccode\u003ec8c8a55\u003c/code\u003e\u003c/a\u003e Lower version guard in check_ast_node to Python 3.12 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1355\"\u003e#1355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/8f2f9284fca830ca017b2e2cc3ddc2a7b74b7040\"\u003e\u003ccode\u003e8f2f928\u003c/code\u003e\u003c/a\u003e Fix B615 false positive when revision is set via variable (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1358\"\u003e#1358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e27493f71c114e0e5dfc0a475d225d7f9f4a7e2b\"\u003e\u003ccode\u003ee27493f\u003c/code\u003e\u003c/a\u003e Include filename in nosec 'no failed test' warning (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1363\"\u003e#1363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/b69b336450301d424e5ba04c9a58e8d41b7169b6\"\u003e\u003ccode\u003eb69b336\u003c/code\u003e\u003c/a\u003e Fix B613 crash when reading from stdin (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1361\"\u003e#1361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e418b798abcc3f2b00c07fd6315da8fe9aeead00\"\u003e\u003ccode\u003ee418b79\u003c/code\u003e\u003c/a\u003e Bump docker/build-push-action from 6.18.0 to 6.19.2 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1357\"\u003e#1357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/ff646fd7e0e34fb350196fc58448fad17178c27a\"\u003e\u003ccode\u003eff646fd\u003c/code\u003e\u003c/a\u003e Bump docker/login-action from 3.6.0 to 3.7.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1353\"\u003e#1353\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c0def6c7ebab60f98c28ba759d488f4fbe6dae89\"\u003e\u003ccode\u003ec0def6c\u003c/code\u003e\u003c/a\u003e chore: fixed some typos in comments (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1351\"\u003e#1351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/765f00d3f202f83f61d03f882f80a2d5142d81f8\"\u003e\u003ccode\u003e765f00d\u003c/code\u003e\u003c/a\u003e Limit B614 to torch.load deserializers (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1348\"\u003e#1348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/06fbbab0df3374ffa8ef24c6f601b2d5e1d4d429\"\u003e\u003ccode\u003e06fbbab\u003c/code\u003e\u003c/a\u003e Bump docker/setup-buildx-action from 3.11.1 to 3.12.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1347\"\u003e#1347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.7.10...1.9.4\"\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/DuqueOM/ml-service-template/pull/221","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/DuqueOM%2Fml-service-template/issues/221","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/221/packages"},{"uuid":"5433250827","node_id":"PR_kwDOT_qDQc8AAAABDQIp1A","number":2,"state":"open","title":"chore(deps-dev): bump bandit from 1.8.2 to 1.9.4","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":9,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-12T12:21:45.000Z","updated_at":"2026-09-12T14:04:35.509Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"bandit","old_version":"1.8.2","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"}],"path":null,"ecosystem":"pip"},"body":"Bumps [bandit](https://github.com/PyCQA/bandit) from 1.8.2 to 1.9.4.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/bandit/releases\"\u003ebandit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: fixed some typos in comments by \u003ca href=\"https://github.com/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/login-action from 3.6.0 to 3.7.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/PyCQA/bandit/pull/1353\"\u003ePyCQA/bandit#1353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.18.0 to 6.19.2 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/PyCQA/bandit/pull/1357\"\u003ePyCQA/bandit#1357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B613 crash when reading from stdin by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude filename in nosec 'no failed test' warning by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1363\"\u003ePyCQA/bandit#1363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B615 false positive when revision is set via variable by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1358\"\u003ePyCQA/bandit#1358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLower version guard in check_ast_node to Python 3.12 by \u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B106 reporting wrong line number on multiline function calls by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1360\"\u003ePyCQA/bandit#1360\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/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1334\"\u003ePyCQA/bandit#1334\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/PyCQA/bandit/pull/1335\"\u003ePyCQA/bandit#1335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B608 to detect \u003ccode\u003eVALUES(\u003c/code\u003e without space by \u003ca href=\"https://github.com/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd check for hardcoded passwords in dicts. by \u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\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/PyCQA/bandit/pull/1341\"\u003ePyCQA/bandit#1341\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate tox tests for Python 3.10 by \u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/setup-buildx-action from 3.11.1 to 3.12.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/PyCQA/bandit/pull/1347\"\u003ePyCQA/bandit#1347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimit B614 to torch.load deserializers by \u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\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/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eArgparse Python 3.14 enhancements by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1331\"\u003ePyCQA/bandit#1331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCheck whether Constant value is str by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1333\"\u003ePyCQA/bandit#1333\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.1...1.9.2\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.1...1.9.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMore Python version related fixes by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1327\"\u003ePyCQA/bandit#1327\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/PyCQA/bandit/commit/92ae8b82fb422a639f0ed8d99e96cea769594e08\"\u003e\u003ccode\u003e92ae8b8\u003c/code\u003e\u003c/a\u003e Fix B106 reporting wrong line number on multiline function calls (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1360\"\u003e#1360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c8c8a55c3307333b8eb46cb2ef46d49b1fad6546\"\u003e\u003ccode\u003ec8c8a55\u003c/code\u003e\u003c/a\u003e Lower version guard in check_ast_node to Python 3.12 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1355\"\u003e#1355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/8f2f9284fca830ca017b2e2cc3ddc2a7b74b7040\"\u003e\u003ccode\u003e8f2f928\u003c/code\u003e\u003c/a\u003e Fix B615 false positive when revision is set via variable (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1358\"\u003e#1358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e27493f71c114e0e5dfc0a475d225d7f9f4a7e2b\"\u003e\u003ccode\u003ee27493f\u003c/code\u003e\u003c/a\u003e Include filename in nosec 'no failed test' warning (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1363\"\u003e#1363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/b69b336450301d424e5ba04c9a58e8d41b7169b6\"\u003e\u003ccode\u003eb69b336\u003c/code\u003e\u003c/a\u003e Fix B613 crash when reading from stdin (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1361\"\u003e#1361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e418b798abcc3f2b00c07fd6315da8fe9aeead00\"\u003e\u003ccode\u003ee418b79\u003c/code\u003e\u003c/a\u003e Bump docker/build-push-action from 6.18.0 to 6.19.2 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1357\"\u003e#1357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/ff646fd7e0e34fb350196fc58448fad17178c27a\"\u003e\u003ccode\u003eff646fd\u003c/code\u003e\u003c/a\u003e Bump docker/login-action from 3.6.0 to 3.7.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1353\"\u003e#1353\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c0def6c7ebab60f98c28ba759d488f4fbe6dae89\"\u003e\u003ccode\u003ec0def6c\u003c/code\u003e\u003c/a\u003e chore: fixed some typos in comments (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1351\"\u003e#1351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/765f00d3f202f83f61d03f882f80a2d5142d81f8\"\u003e\u003ccode\u003e765f00d\u003c/code\u003e\u003c/a\u003e Limit B614 to torch.load deserializers (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1348\"\u003e#1348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/06fbbab0df3374ffa8ef24c6f601b2d5e1d4d429\"\u003e\u003ccode\u003e06fbbab\u003c/code\u003e\u003c/a\u003e Bump docker/setup-buildx-action from 3.11.1 to 3.12.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1347\"\u003e#1347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.8.2...1.9.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=bandit\u0026package-manager=pip\u0026previous-version=1.8.2\u0026new-version=1.9.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/luoshitianchen/SM-Workflow-Approval/pull/2","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/luoshitianchen%2FSM-Workflow-Approval/issues/2","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2/packages"},{"uuid":"5433236413","node_id":"PR_kwDOTiJ3CM8AAAABDQH-YQ","number":15,"state":"closed","title":"chore(deps-dev): bump bandit from 1.8.2 to 1.9.4","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":6,"pull_request":true,"closed_at":"2026-09-12T13:10:06.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-12T12:18:28.000Z","updated_at":"2026-09-12T13:10:07.000Z","time_to_close":3098,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"bandit","old_version":"1.8.2","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"}],"path":null,"ecosystem":"pip"},"body":"Bumps [bandit](https://github.com/PyCQA/bandit) from 1.8.2 to 1.9.4.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/bandit/releases\"\u003ebandit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: fixed some typos in comments by \u003ca href=\"https://github.com/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/login-action from 3.6.0 to 3.7.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/PyCQA/bandit/pull/1353\"\u003ePyCQA/bandit#1353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.18.0 to 6.19.2 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/PyCQA/bandit/pull/1357\"\u003ePyCQA/bandit#1357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B613 crash when reading from stdin by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude filename in nosec 'no failed test' warning by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1363\"\u003ePyCQA/bandit#1363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B615 false positive when revision is set via variable by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1358\"\u003ePyCQA/bandit#1358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLower version guard in check_ast_node to Python 3.12 by \u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B106 reporting wrong line number on multiline function calls by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1360\"\u003ePyCQA/bandit#1360\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/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1334\"\u003ePyCQA/bandit#1334\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/PyCQA/bandit/pull/1335\"\u003ePyCQA/bandit#1335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B608 to detect \u003ccode\u003eVALUES(\u003c/code\u003e without space by \u003ca href=\"https://github.com/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd check for hardcoded passwords in dicts. by \u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\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/PyCQA/bandit/pull/1341\"\u003ePyCQA/bandit#1341\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate tox tests for Python 3.10 by \u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/setup-buildx-action from 3.11.1 to 3.12.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/PyCQA/bandit/pull/1347\"\u003ePyCQA/bandit#1347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimit B614 to torch.load deserializers by \u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\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/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eArgparse Python 3.14 enhancements by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1331\"\u003ePyCQA/bandit#1331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCheck whether Constant value is str by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1333\"\u003ePyCQA/bandit#1333\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.1...1.9.2\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.1...1.9.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMore Python version related fixes by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1327\"\u003ePyCQA/bandit#1327\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/PyCQA/bandit/commit/92ae8b82fb422a639f0ed8d99e96cea769594e08\"\u003e\u003ccode\u003e92ae8b8\u003c/code\u003e\u003c/a\u003e Fix B106 reporting wrong line number on multiline function calls (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1360\"\u003e#1360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c8c8a55c3307333b8eb46cb2ef46d49b1fad6546\"\u003e\u003ccode\u003ec8c8a55\u003c/code\u003e\u003c/a\u003e Lower version guard in check_ast_node to Python 3.12 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1355\"\u003e#1355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/8f2f9284fca830ca017b2e2cc3ddc2a7b74b7040\"\u003e\u003ccode\u003e8f2f928\u003c/code\u003e\u003c/a\u003e Fix B615 false positive when revision is set via variable (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1358\"\u003e#1358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e27493f71c114e0e5dfc0a475d225d7f9f4a7e2b\"\u003e\u003ccode\u003ee27493f\u003c/code\u003e\u003c/a\u003e Include filename in nosec 'no failed test' warning (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1363\"\u003e#1363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/b69b336450301d424e5ba04c9a58e8d41b7169b6\"\u003e\u003ccode\u003eb69b336\u003c/code\u003e\u003c/a\u003e Fix B613 crash when reading from stdin (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1361\"\u003e#1361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e418b798abcc3f2b00c07fd6315da8fe9aeead00\"\u003e\u003ccode\u003ee418b79\u003c/code\u003e\u003c/a\u003e Bump docker/build-push-action from 6.18.0 to 6.19.2 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1357\"\u003e#1357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/ff646fd7e0e34fb350196fc58448fad17178c27a\"\u003e\u003ccode\u003eff646fd\u003c/code\u003e\u003c/a\u003e Bump docker/login-action from 3.6.0 to 3.7.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1353\"\u003e#1353\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c0def6c7ebab60f98c28ba759d488f4fbe6dae89\"\u003e\u003ccode\u003ec0def6c\u003c/code\u003e\u003c/a\u003e chore: fixed some typos in comments (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1351\"\u003e#1351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/765f00d3f202f83f61d03f882f80a2d5142d81f8\"\u003e\u003ccode\u003e765f00d\u003c/code\u003e\u003c/a\u003e Limit B614 to torch.load deserializers (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1348\"\u003e#1348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/06fbbab0df3374ffa8ef24c6f601b2d5e1d4d429\"\u003e\u003ccode\u003e06fbbab\u003c/code\u003e\u003c/a\u003e Bump docker/setup-buildx-action from 3.11.1 to 3.12.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1347\"\u003e#1347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.8.2...1.9.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e","html_url":"https://github.com/luoshitianchen/SM-knowledge-bot/pull/15","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/luoshitianchen%2FSM-knowledge-bot/issues/15","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/15/packages"},{"uuid":"5433235243","node_id":"PR_kwDOUApVyc8AAAABDQH6XA","number":7,"state":"open","title":"chore(deps-dev): bump bandit from 1.8.2 to 1.9.4","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":5,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-12T12:18:16.000Z","updated_at":"2026-09-12T12:18:24.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"bandit","old_version":"1.8.2","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"}],"path":null,"ecosystem":"pip"},"body":"Bumps [bandit](https://github.com/PyCQA/bandit) from 1.8.2 to 1.9.4.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/bandit/releases\"\u003ebandit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: fixed some typos in comments by \u003ca href=\"https://github.com/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/login-action from 3.6.0 to 3.7.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/PyCQA/bandit/pull/1353\"\u003ePyCQA/bandit#1353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.18.0 to 6.19.2 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/PyCQA/bandit/pull/1357\"\u003ePyCQA/bandit#1357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B613 crash when reading from stdin by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude filename in nosec 'no failed test' warning by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1363\"\u003ePyCQA/bandit#1363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B615 false positive when revision is set via variable by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1358\"\u003ePyCQA/bandit#1358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLower version guard in check_ast_node to Python 3.12 by \u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B106 reporting wrong line number on multiline function calls by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1360\"\u003ePyCQA/bandit#1360\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/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1334\"\u003ePyCQA/bandit#1334\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/PyCQA/bandit/pull/1335\"\u003ePyCQA/bandit#1335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B608 to detect \u003ccode\u003eVALUES(\u003c/code\u003e without space by \u003ca href=\"https://github.com/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd check for hardcoded passwords in dicts. by \u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\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/PyCQA/bandit/pull/1341\"\u003ePyCQA/bandit#1341\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate tox tests for Python 3.10 by \u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/setup-buildx-action from 3.11.1 to 3.12.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/PyCQA/bandit/pull/1347\"\u003ePyCQA/bandit#1347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimit B614 to torch.load deserializers by \u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\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/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eArgparse Python 3.14 enhancements by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1331\"\u003ePyCQA/bandit#1331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCheck whether Constant value is str by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1333\"\u003ePyCQA/bandit#1333\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.1...1.9.2\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.1...1.9.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMore Python version related fixes by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1327\"\u003ePyCQA/bandit#1327\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/PyCQA/bandit/commit/92ae8b82fb422a639f0ed8d99e96cea769594e08\"\u003e\u003ccode\u003e92ae8b8\u003c/code\u003e\u003c/a\u003e Fix B106 reporting wrong line number on multiline function calls (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1360\"\u003e#1360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c8c8a55c3307333b8eb46cb2ef46d49b1fad6546\"\u003e\u003ccode\u003ec8c8a55\u003c/code\u003e\u003c/a\u003e Lower version guard in check_ast_node to Python 3.12 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1355\"\u003e#1355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/8f2f9284fca830ca017b2e2cc3ddc2a7b74b7040\"\u003e\u003ccode\u003e8f2f928\u003c/code\u003e\u003c/a\u003e Fix B615 false positive when revision is set via variable (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1358\"\u003e#1358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e27493f71c114e0e5dfc0a475d225d7f9f4a7e2b\"\u003e\u003ccode\u003ee27493f\u003c/code\u003e\u003c/a\u003e Include filename in nosec 'no failed test' warning (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1363\"\u003e#1363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/b69b336450301d424e5ba04c9a58e8d41b7169b6\"\u003e\u003ccode\u003eb69b336\u003c/code\u003e\u003c/a\u003e Fix B613 crash when reading from stdin (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1361\"\u003e#1361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e418b798abcc3f2b00c07fd6315da8fe9aeead00\"\u003e\u003ccode\u003ee418b79\u003c/code\u003e\u003c/a\u003e Bump docker/build-push-action from 6.18.0 to 6.19.2 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1357\"\u003e#1357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/ff646fd7e0e34fb350196fc58448fad17178c27a\"\u003e\u003ccode\u003eff646fd\u003c/code\u003e\u003c/a\u003e Bump docker/login-action from 3.6.0 to 3.7.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1353\"\u003e#1353\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c0def6c7ebab60f98c28ba759d488f4fbe6dae89\"\u003e\u003ccode\u003ec0def6c\u003c/code\u003e\u003c/a\u003e chore: fixed some typos in comments (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1351\"\u003e#1351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/765f00d3f202f83f61d03f882f80a2d5142d81f8\"\u003e\u003ccode\u003e765f00d\u003c/code\u003e\u003c/a\u003e Limit B614 to torch.load deserializers (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1348\"\u003e#1348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/06fbbab0df3374ffa8ef24c6f601b2d5e1d4d429\"\u003e\u003ccode\u003e06fbbab\u003c/code\u003e\u003c/a\u003e Bump docker/setup-buildx-action from 3.11.1 to 3.12.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1347\"\u003e#1347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.8.2...1.9.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=bandit\u0026package-manager=pip\u0026previous-version=1.8.2\u0026new-version=1.9.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/luoshitianchen/SM-Legal-Contract/pull/7","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/luoshitianchen%2FSM-Legal-Contract/issues/7","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/7/packages"},{"uuid":"5433027707","node_id":"PR_kwDOR0SEms8AAAABDP-Gyg","number":3,"state":"open","title":"chore(deps-dev): bump bandit from 1.8.0 to 1.9.4","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-12T11:32:20.000Z","updated_at":"2026-09-12T11:32:21.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"bandit","old_version":"1.8.0","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"}],"path":null,"ecosystem":"pip"},"body":"Bumps [bandit](https://github.com/PyCQA/bandit) from 1.8.0 to 1.9.4.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/bandit/releases\"\u003ebandit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: fixed some typos in comments by \u003ca href=\"https://github.com/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/login-action from 3.6.0 to 3.7.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/PyCQA/bandit/pull/1353\"\u003ePyCQA/bandit#1353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.18.0 to 6.19.2 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/PyCQA/bandit/pull/1357\"\u003ePyCQA/bandit#1357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B613 crash when reading from stdin by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude filename in nosec 'no failed test' warning by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1363\"\u003ePyCQA/bandit#1363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B615 false positive when revision is set via variable by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1358\"\u003ePyCQA/bandit#1358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLower version guard in check_ast_node to Python 3.12 by \u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B106 reporting wrong line number on multiline function calls by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1360\"\u003ePyCQA/bandit#1360\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/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1334\"\u003ePyCQA/bandit#1334\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/PyCQA/bandit/pull/1335\"\u003ePyCQA/bandit#1335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B608 to detect \u003ccode\u003eVALUES(\u003c/code\u003e without space by \u003ca href=\"https://github.com/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd check for hardcoded passwords in dicts. by \u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\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/PyCQA/bandit/pull/1341\"\u003ePyCQA/bandit#1341\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate tox tests for Python 3.10 by \u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/setup-buildx-action from 3.11.1 to 3.12.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/PyCQA/bandit/pull/1347\"\u003ePyCQA/bandit#1347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimit B614 to torch.load deserializers by \u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\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/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eArgparse Python 3.14 enhancements by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1331\"\u003ePyCQA/bandit#1331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCheck whether Constant value is str by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1333\"\u003ePyCQA/bandit#1333\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.1...1.9.2\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.1...1.9.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMore Python version related fixes by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1327\"\u003ePyCQA/bandit#1327\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/PyCQA/bandit/commit/92ae8b82fb422a639f0ed8d99e96cea769594e08\"\u003e\u003ccode\u003e92ae8b8\u003c/code\u003e\u003c/a\u003e Fix B106 reporting wrong line number on multiline function calls (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1360\"\u003e#1360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c8c8a55c3307333b8eb46cb2ef46d49b1fad6546\"\u003e\u003ccode\u003ec8c8a55\u003c/code\u003e\u003c/a\u003e Lower version guard in check_ast_node to Python 3.12 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1355\"\u003e#1355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/8f2f9284fca830ca017b2e2cc3ddc2a7b74b7040\"\u003e\u003ccode\u003e8f2f928\u003c/code\u003e\u003c/a\u003e Fix B615 false positive when revision is set via variable (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1358\"\u003e#1358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e27493f71c114e0e5dfc0a475d225d7f9f4a7e2b\"\u003e\u003ccode\u003ee27493f\u003c/code\u003e\u003c/a\u003e Include filename in nosec 'no failed test' warning (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1363\"\u003e#1363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/b69b336450301d424e5ba04c9a58e8d41b7169b6\"\u003e\u003ccode\u003eb69b336\u003c/code\u003e\u003c/a\u003e Fix B613 crash when reading from stdin (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1361\"\u003e#1361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e418b798abcc3f2b00c07fd6315da8fe9aeead00\"\u003e\u003ccode\u003ee418b79\u003c/code\u003e\u003c/a\u003e Bump docker/build-push-action from 6.18.0 to 6.19.2 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1357\"\u003e#1357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/ff646fd7e0e34fb350196fc58448fad17178c27a\"\u003e\u003ccode\u003eff646fd\u003c/code\u003e\u003c/a\u003e Bump docker/login-action from 3.6.0 to 3.7.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1353\"\u003e#1353\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c0def6c7ebab60f98c28ba759d488f4fbe6dae89\"\u003e\u003ccode\u003ec0def6c\u003c/code\u003e\u003c/a\u003e chore: fixed some typos in comments (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1351\"\u003e#1351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/765f00d3f202f83f61d03f882f80a2d5142d81f8\"\u003e\u003ccode\u003e765f00d\u003c/code\u003e\u003c/a\u003e Limit B614 to torch.load deserializers (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1348\"\u003e#1348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/06fbbab0df3374ffa8ef24c6f601b2d5e1d4d429\"\u003e\u003ccode\u003e06fbbab\u003c/code\u003e\u003c/a\u003e Bump docker/setup-buildx-action from 3.11.1 to 3.12.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1347\"\u003e#1347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.8.0...1.9.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=bandit\u0026package-manager=pip\u0026previous-version=1.8.0\u0026new-version=1.9.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/opok-ops/MindForge/pull/3","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/opok-ops%2FMindForge/issues/3","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/3/packages"},{"uuid":"5429391155","node_id":"PR_kwDOUT8Z0s8AAAABDNKl5Q","number":8,"state":"open","title":"chore(deps): update bandit requirement from \u003e=1.7.0 to \u003e=1.9.4","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-11T22:11:42.000Z","updated_at":"2026-09-13T00:10:35.637Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): update","packages":[{"name":"bandit","old_version":"\u003e=1.7.0","new_version":"\u003e=1.9.4","repository_url":"https://github.com/PyCQA/bandit"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [bandit](https://github.com/PyCQA/bandit) 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/PyCQA/bandit/releases\"\u003ebandit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: fixed some typos in comments by \u003ca href=\"https://github.com/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/login-action from 3.6.0 to 3.7.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/PyCQA/bandit/pull/1353\"\u003ePyCQA/bandit#1353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.18.0 to 6.19.2 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/PyCQA/bandit/pull/1357\"\u003ePyCQA/bandit#1357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B613 crash when reading from stdin by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude filename in nosec 'no failed test' warning by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1363\"\u003ePyCQA/bandit#1363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B615 false positive when revision is set via variable by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1358\"\u003ePyCQA/bandit#1358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLower version guard in check_ast_node to Python 3.12 by \u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B106 reporting wrong line number on multiline function calls by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1360\"\u003ePyCQA/bandit#1360\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/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\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/PyCQA/bandit/commit/92ae8b82fb422a639f0ed8d99e96cea769594e08\"\u003e\u003ccode\u003e92ae8b8\u003c/code\u003e\u003c/a\u003e Fix B106 reporting wrong line number on multiline function calls (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1360\"\u003e#1360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c8c8a55c3307333b8eb46cb2ef46d49b1fad6546\"\u003e\u003ccode\u003ec8c8a55\u003c/code\u003e\u003c/a\u003e Lower version guard in check_ast_node to Python 3.12 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1355\"\u003e#1355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/8f2f9284fca830ca017b2e2cc3ddc2a7b74b7040\"\u003e\u003ccode\u003e8f2f928\u003c/code\u003e\u003c/a\u003e Fix B615 false positive when revision is set via variable (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1358\"\u003e#1358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e27493f71c114e0e5dfc0a475d225d7f9f4a7e2b\"\u003e\u003ccode\u003ee27493f\u003c/code\u003e\u003c/a\u003e Include filename in nosec 'no failed test' warning (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1363\"\u003e#1363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/b69b336450301d424e5ba04c9a58e8d41b7169b6\"\u003e\u003ccode\u003eb69b336\u003c/code\u003e\u003c/a\u003e Fix B613 crash when reading from stdin (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1361\"\u003e#1361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e418b798abcc3f2b00c07fd6315da8fe9aeead00\"\u003e\u003ccode\u003ee418b79\u003c/code\u003e\u003c/a\u003e Bump docker/build-push-action from 6.18.0 to 6.19.2 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1357\"\u003e#1357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/ff646fd7e0e34fb350196fc58448fad17178c27a\"\u003e\u003ccode\u003eff646fd\u003c/code\u003e\u003c/a\u003e Bump docker/login-action from 3.6.0 to 3.7.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1353\"\u003e#1353\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c0def6c7ebab60f98c28ba759d488f4fbe6dae89\"\u003e\u003ccode\u003ec0def6c\u003c/code\u003e\u003c/a\u003e chore: fixed some typos in comments (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1351\"\u003e#1351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/765f00d3f202f83f61d03f882f80a2d5142d81f8\"\u003e\u003ccode\u003e765f00d\u003c/code\u003e\u003c/a\u003e Limit B614 to torch.load deserializers (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1348\"\u003e#1348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/06fbbab0df3374ffa8ef24c6f601b2d5e1d4d429\"\u003e\u003ccode\u003e06fbbab\u003c/code\u003e\u003c/a\u003e Bump docker/setup-buildx-action from 3.11.1 to 3.12.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1347\"\u003e#1347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.7.0...1.9.4\"\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/vansh070605/AgentForge/pull/8","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/vansh070605%2FAgentForge/issues/8","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/8/packages"},{"uuid":"5428575296","node_id":"PR_kwDOPZX_4c8AAAABDMhM5Q","number":147,"state":"closed","title":"build(deps): bump the backend-python group across 1 directory with 13 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-15T21:24:55.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-11T20:14:27.000Z","updated_at":"2026-09-15T21:24:57.000Z","time_to_close":349828,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"backend-python","update_count":13,"packages":[{"name":"uvicorn","old_version":"0.30.6","new_version":"0.52.4","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"sqlalchemy","old_version":"2.0.35","new_version":"2.0.52","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"psycopg","old_version":"3.3.4","new_version":"3.3.5","repository_url":"https://github.com/psycopg/psycopg"},{"name":"bcrypt","old_version":"4.0.1","new_version":"5.0.0","repository_url":"https://github.com/pyca/bcrypt"},{"name":"email-validator","old_version":"2.2.0","new_version":"2.3.0","repository_url":"https://github.com/JoshData/python-email-validator"},{"name":"pydantic-settings","old_version":"2.5.2","new_version":"2.15.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"httpx","old_version":"0.27.2","new_version":"0.28.1","repository_url":"https://github.com/encode/httpx"},{"name":"alembic","old_version":"1.13.2","new_version":"1.19.2","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"apscheduler","old_version":"3.10.4","new_version":"3.11.3","repository_url":"https://github.com/agronholm/apscheduler"},{"name":"redis","old_version":"5.0.8","new_version":"8.1.0","repository_url":"https://github.com/redis/redis-py"},{"name":"bandit","old_version":"1.8.6","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"},{"name":"pip-audit","old_version":"2.9.0","new_version":"2.10.1","repository_url":"https://github.com/pypa/pip-audit"},{"name":"ruff","old_version":"0.12.12","new_version":"0.16.7","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the backend-python group with 13 updates in the /backend directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.30.6` | `0.52.4` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.35` | `2.0.52` |\n| [psycopg](https://github.com/psycopg/psycopg) | `3.3.4` | `3.3.5` |\n| [bcrypt](https://github.com/pyca/bcrypt) | `4.0.1` | `5.0.0` |\n| [email-validator](https://github.com/JoshData/python-email-validator) | `2.2.0` | `2.3.0` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.5.2` | `2.15.0` |\n| [httpx](https://github.com/encode/httpx) | `0.27.2` | `0.28.1` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.13.2` | `1.19.2` |\n| [apscheduler](https://github.com/agronholm/apscheduler) | `3.10.4` | `3.11.3` |\n| [redis](https://github.com/redis/redis-py) | `5.0.8` | `8.1.0` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.8.6` | `1.9.4` |\n| [pip-audit](https://github.com/pypa/pip-audit) | `2.9.0` | `2.10.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.12.12` | `0.16.7` |\n\n\nUpdates `uvicorn` from 0.30.6 to 0.52.4\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.52.4\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\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.52.3...0.52.4\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.3\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.24 and use its combined receive path, improving HTTP/1.1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3067\"\u003e#3067\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.52.2...0.52.3\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.2...0.52.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.2\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.22, fixing bodyless request receives and improving HTTP/1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3063\"\u003e#3063\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.52.1...0.52.2\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.1...0.52.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.1\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComplete the closing handshake on server-initiated WebSocket closes in the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e and \u003ccode\u003ewsproto\u003c/code\u003e implementations, waiting for the client's close reply with a 10 second timeout instead of resetting the connection (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing write flow control to the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, preventing data truncation on server-initiated closes with large in-flight payloads (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3048\"\u003e#3048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle connection loss while a WebSocket write is waiting on backpressure (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3050\"\u003e#3050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eContent-Type\u003c/code\u003e and \u003ccode\u003eContent-Length\u003c/code\u003e headers from WebSocket denial responses on the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, and deliver non-UTF-8 denial bodies intact (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3041\"\u003e#3041\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.52.0...0.52.1\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.0...0.52.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.0\u003c/h2\u003e\n\u003cp\u003eThis release adds an experimental HTTP/1.1 implementation backed by \u003ca href=\"https://zttp.marcelotryle.com/\"\u003ezttp\u003c/a\u003e, a sans-IO HTTP parser I've been developing on the side: a core written in Zig, with bindings to Python. It has been running under a fuzzer for some weeks now, and has been through multiple rounds of security auditing.\u003c/p\u003e\n\u003cp\u003eIt is still \u003cstrong\u003eexperimental\u003c/strong\u003e, so don't put it in front of production traffic yet. Try it with \u003ccode\u003e--http zttp\u003c/code\u003e, and please send any feedback to the \u003ca href=\"https://github.com/Kludex/uvicorn/issues\"\u003eissue tracker\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an experimental \u003ccode\u003ezttp\u003c/code\u003e HTTP/1.1 implementation, selectable with \u003ccode\u003e--http zttp\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2979\"\u003e#2979\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKeep non-ASCII WebSocket request headers intact with websockets 17.0, which encodes them with ISO-8859-1 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3036\"\u003e#3036\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.51.0...0.52.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.51.0...0.52.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.51.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRestart workers with overlap on SIGHUP for near-zero-downtime reloads 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/3025\"\u003eKludex/uvicorn#3025\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.52.4 (August 18, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.3 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.24 and use its combined receive path, improving HTTP/1.1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3067\"\u003e#3067\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.2 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.22, fixing bodyless request receives and improving HTTP/1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3063\"\u003e#3063\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.1 (August 1, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComplete the closing handshake on server-initiated WebSocket closes in the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e and \u003ccode\u003ewsproto\u003c/code\u003e implementations, waiting for the client's close reply with a 10 second timeout instead of resetting the connection (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing write flow control to the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, preventing data truncation on server-initiated closes with large in-flight payloads (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3048\"\u003e#3048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle connection loss while a WebSocket write is waiting on backpressure (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3050\"\u003e#3050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eContent-Type\u003c/code\u003e and \u003ccode\u003eContent-Length\u003c/code\u003e headers from WebSocket denial responses on the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, and deliver non-UTF-8 denial bodies intact (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3041\"\u003e#3041\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.0 (July 29, 2026)\u003c/h2\u003e\n\u003cp\u003eThis release adds an experimental HTTP/1.1 implementation backed by \u003ca href=\"https://zttp.marcelotryle.com/\"\u003ezttp\u003c/a\u003e, a sans-IO HTTP parser I've been developing on the side: a core written in Zig, with bindings to Python. It has been running under a fuzzer for some weeks now, and has been through multiple rounds of security auditing.\u003c/p\u003e\n\u003cp\u003eIt is still \u003cstrong\u003eexperimental\u003c/strong\u003e, so don't put it in front of production traffic yet. Try it with \u003ccode\u003e--http zttp\u003c/code\u003e, and please send any feedback to the \u003ca href=\"https://github.com/Kludex/uvicorn/issues\"\u003eissue tracker\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an experimental \u003ccode\u003ezttp\u003c/code\u003e HTTP/1.1 implementation, selectable with \u003ccode\u003e--http zttp\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2979\"\u003e#2979\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKeep non-ASCII WebSocket request headers intact with websockets 17.0, which encodes them with ISO-8859-1 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3036\"\u003e#3036\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.51.0 (July 8, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRestart workers one at a time on \u003ccode\u003eSIGHUP\u003c/code\u003e, bringing each replacement up before retiring the old worker, so reloads no longer drop requests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3025\"\u003e#3025\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u003ccode\u003ecolorama\u003c/code\u003e from the \u003ccode\u003estandard\u003c/code\u003e extra (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3027\"\u003e#3027\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/8988c23704fc373c9206cca53ec57dd8ad7f44a5\"\u003e\u003ccode\u003e8988c23\u003c/code\u003e\u003c/a\u003e Stabilize macOS Python 3.13 signal shutdown tests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3084\"\u003e#3084\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/898ddca9254b53c5bf7a6ee509756704caaa949f\"\u003e\u003ccode\u003e898ddca\u003c/code\u003e\u003c/a\u003e Update PyPI publish action to version 1.14.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3083\"\u003e#3083\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3869f8aac2bdd040fa3fbe564e1dad67e2637641\"\u003e\u003ccode\u003e3869f8a\u003c/code\u003e\u003c/a\u003e Restore Mermaid diagram rendering (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3080\"\u003e#3080\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/64148a9c574e1eb87d3d09b3ce4c256606f8d973\"\u003e\u003ccode\u003e64148a9\u003c/code\u003e\u003c/a\u003e Version 0.52.4 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3079\"\u003e#3079\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9e9e5691bd14d5c4cd66d9bd76c7730bc48461a2\"\u003e\u003ccode\u003e9e9e569\u003c/code\u003e\u003c/a\u003e docs: correct release example PR number (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3072\"\u003e#3072\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/b783dacab50b9d6767b0cf65826b2dc3aae21909\"\u003e\u003ccode\u003eb783dac\u003c/code\u003e\u003c/a\u003e Remove duplicate Date header from SansIO WebSocket handshakes (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/27019b2a4b1fa6d68a289fcf7d738fbdc6ee4e5d\"\u003e\u003ccode\u003e27019b2\u003c/code\u003e\u003c/a\u003e chore(deps): bump the python-packages group across 1 directory with 11 update...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/1b6427311bb84a15addee688f6d41d96e33f8b0a\"\u003e\u003ccode\u003e1b64273\u003c/code\u003e\u003c/a\u003e Fix a typo in index.md (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3006\"\u003e#3006\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/a68da608147c5f79d962352dce11de8f6e32d972\"\u003e\u003ccode\u003ea68da60\u003c/code\u003e\u003c/a\u003e Version 0.52.3 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3068\"\u003e#3068\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/6e3bb4c5c22531c16d341f2da49f2653307f412f\"\u003e\u003ccode\u003e6e3bb4c\u003c/code\u003e\u003c/a\u003e Use zttp 0.0.24 fast receive path (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3067\"\u003e#3067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.30.6...0.52.4\"\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.35 to 2.0.52\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.52\u003c/h1\u003e\n\u003cp\u003eReleased: August 11, 2026\u003c/p\u003e\n\u003ch2\u003eplatform\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[platform] [bug]\u003c/strong\u003e Python 3.15 support has been added and tested, including minimal changes\nfor full compatibility.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13477\"\u003e#13477\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eorm\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed a result-column misalignment bug in ORM-enabled UPDATE statements\nwhere \u003ccode\u003esynchronize_session=\u0026quot;fetch\u0026quot;\u003c/code\u003e is in use, either explicitly or\nbecause the statement uses constructs such as CTEs that implicitly select\nfor it.  Columns in rows returned by \u003ccode\u003e.returning()\u003c/code\u003e could be returned\nunder incorrect keys (e.g. \u003ccode\u003erow[SomeClass.a]\u003c/code\u003e returning the value of\na different column), a problem most likely to manifest under concurrent\nworkloads.  ORM DELETE statements were not affected.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13439\"\u003e#13439\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed bug where a failed \u003ccode\u003e_orm.Session.bulk_insert_mappings()\u003c/code\u003e,\n\u003ccode\u003e_orm.Session.bulk_update_mappings()\u003c/code\u003e or\n\u003ccode\u003e_orm.Session.bulk_save_objects()\u003c/code\u003e call could leave the\n\u003ccode\u003e_orm.Session\u003c/code\u003e permanently in a \u0026quot;flushing\u0026quot; state, such as when the\ntransaction could not be begun because a previous flush had left it\nneeding a rollback.  Unlike \u003ccode\u003e_orm.Session.flush()\u003c/code\u003e, the bulk methods\nset the internal flushing flag and began the transaction outside of the\n\u003ccode\u003etry\u003c/code\u003e/\u003ccode\u003efinally\u003c/code\u003e block that resets it, so that neither\n\u003ccode\u003e_orm.Session.rollback()\u003c/code\u003e nor \u003ccode\u003e_orm.Session.close()\u003c/code\u003e would clear\nit, and every subsequent flush would raise \u003ccode\u003eInvalidRequestError: Session is already flushing\u003c/code\u003e.  Pull request courtesy Hamody We.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13485\"\u003e#13485\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 unpickling an ORM object that were loaded using loader\noptions making use of wildcard tokens, such as \u003ccode\u003e_orm.load_only()\u003c/code\u003e or\n\u003ccode\u003e_orm.raiseload()\u003c/code\u003e with \u003ccode\u003e\u0026quot;*\u0026quot;\u003c/code\u003e, would fail with \u003ccode\u003eKeyError\u003c/code\u003e or\n\u003ccode\u003eIndexError\u003c/code\u003e if the process doing the unpickling had not yet constructed\na loader path making use of that same token.  This would typically be\nobserved when the object were unpickled in a separate process, such as\nwith the \u003ccode\u003espawn\u003c/code\u003e or \u003ccode\u003eforkserver\u003c/code\u003e multiprocessing start methods, the\nlatter of which became the default on POSIX platforms as of Python 3.14.\nThe internal collection of these tokens is now established up front, so\nthat it is identical in every process.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psycopg` from 3.3.4 to 3.3.5\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psycopg/psycopg/blob/master/docs/news.rst\"\u003epsycopg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e.. currentmodule:: psycopg\u003c/p\u003e\n\u003cp\u003e.. index::\nsingle: Release notes\nsingle: News\u003c/p\u003e\n\u003ch1\u003e\u003ccode\u003epsycopg\u003c/code\u003e release notes\u003c/h1\u003e\n\u003ch2\u003eCurrent release\u003c/h2\u003e\n\u003cp\u003ePsycopg 3.3.5\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDiscard prepared statements upon :sql:\u003ccode\u003eALTER *\u003c/code\u003e or \u003ccode\u003eDISCARD *\u003c/code\u003e\n(:ticket:\u003ccode\u003e[#1307](https://github.com/psycopg/psycopg/issues/1307)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e!ProgrammingError\u003c/code\u003e when dumping non-\u003ccode\u003e!None\u003c/code\u003e values with\nno \u003ccode\u003e!NoneType\u003c/code\u003e dumper registered in python implementation (:ticket:\u003ccode\u003e[#1325](https://github.com/psycopg/psycopg/issues/1325)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e!wait_selector\u003c/code\u003e wait function to not raise \u003ccode\u003e!KeyError\u003c/code\u003e\n(:ticket:\u003ccode\u003e[#1327](https://github.com/psycopg/psycopg/issues/1327)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e!DataError\u003c/code\u003e messages leaking the literal \u003ccode\u003e{...}\u003c/code\u003e placeholder instead\nof the offending value when loading a pre-year-1 :sql:\u003ccode\u003etimestamp\u003c/code\u003e or a\nmalformed binary :sql:\u003ccode\u003ejsonb\u003c/code\u003e value (:ticket:\u003ccode\u003e[#1372](https://github.com/psycopg/psycopg/issues/1372)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003e!DataError\u003c/code\u003e instead of \u003ccode\u003e!ValueError\u003c/code\u003e when \u003ccode\u003e~psycopg.rows.namedtuple_row\u003c/code\u003e\nreceives duplicate column names (:ticket:\u003ccode\u003e[#1348](https://github.com/psycopg/psycopg/issues/1348)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003e!DataError\u003c/code\u003e on inconsistent copy data (:tickets:\u003ccode\u003e[#1359](https://github.com/psycopg/psycopg/issues/1359), [#1360](https://github.com/psycopg/psycopg/issues/1360)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eHandle client encodings aliases (:ticket:\u003ccode\u003e[#1363](https://github.com/psycopg/psycopg/issues/1363)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix building C extension with Cython 3.3.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePsycopg 3.3.4\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix possible spurious connection timeout in systems with very long uptimes\nin C extension (:ticket:\u003ccode\u003e[#1280](https://github.com/psycopg/psycopg/issues/1280)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix client-side adaptation of enums whose name require quotes\n(:ticket:\u003ccode\u003e[#1298](https://github.com/psycopg/psycopg/issues/1298)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eConsistently populate \u003ccode\u003e~Cursor.statusmessage\u003c/code\u003e after \u003ccode\u003e~Cursor.executemany()\u003c/code\u003e\n(:ticket:\u003ccode\u003e[#1302](https://github.com/psycopg/psycopg/issues/1302)\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePsycopg 3.3.3\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRetain \u003ccode\u003eError.pgconn\u003c/code\u003e when raising a single exception for multiple connection\nattempt errors (:ticket:\u003ccode\u003e[#1246](https://github.com/psycopg/psycopg/issues/1246)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eReturn a proper error when server sends \u003ccode\u003eErrorResponse\u003c/code\u003e for a \u003ccode\u003eSync\u003c/code\u003e after\na \u003ccode\u003eParse\u003c/code\u003e (:ticket:\u003ccode\u003e[#1260](https://github.com/psycopg/psycopg/issues/1260)\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/psycopg/commit/ea542c9534cc9841d50450e0c156b549cc6c805a\"\u003e\u003ccode\u003eea542c9\u003c/code\u003e\u003c/a\u003e chore: bump psycopg package version to 3.3.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/8d31e4711c22b206d8863b9397b3b34f5b106e4d\"\u003e\u003ccode\u003e8d31e47\u003c/code\u003e\u003c/a\u003e chore(deps): bump the actions group across 1 directory with 4 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/268f863e0e8dbdbaf4f10616ebd14ff00edaeb51\"\u003e\u003ccode\u003e268f863\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg/issues/1370\"\u003e#1370\u003c/a\u003e from Sanjays2402/fix/truncated-binary-copy-error\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/a412fa4d682f035a9cf3c7886a5c95c15c64ba96\"\u003e\u003ccode\u003ea412fa4\u003c/code\u003e\u003c/a\u003e docs: put together different issues fixed around copy parsing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/f757307068aef06e439cf164915a3781acf483b5\"\u003e\u003ccode\u003ef757307\u003c/code\u003e\u003c/a\u003e fix: clearer error messages according to truncated copy message part\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/b1f17c44096b8fbc90836d9652d083f23c88e28d\"\u003e\u003ccode\u003eb1f17c4\u003c/code\u003e\u003c/a\u003e test: move existing COPY format parsing tests into a single module\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/21eba573f9356276b2a3e0b7c1d86fad03f2872f\"\u003e\u003ccode\u003e21eba57\u003c/code\u003e\u003c/a\u003e test: drop useless parametrization of copy binary parsigh test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/6780e17bcee0b838dedd0aa9c1b6dcc563a50cec\"\u003e\u003ccode\u003e6780e17\u003c/code\u003e\u003c/a\u003e fix(copy): handle truncated binary row headers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/2f2fcfbf35af4b80a4755fff75fe8b8f5e059193\"\u003e\u003ccode\u003e2f2fcfb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg/issues/1364\"\u003e#1364\u003c/a\u003e from DylanYoung/fix_client_encoding_aliases\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/ccc351ec3180969d105199012a017240492a43c0\"\u003e\u003ccode\u003eccc351e\u003c/code\u003e\u003c/a\u003e refactor: don't store the encodings raw table as a dict\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psycopg/psycopg/compare/3.3.4...3.3.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bcrypt` from 4.0.1 to 5.0.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyca/bcrypt/blob/main/CHANGELOG.rst\"\u003ebcrypt's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.0.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBumped MSRV to 1.74.\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.14 and free-threaded Python 3.14.\u003c/li\u003e\n\u003cli\u003eAdded support for Windows on ARM.\u003c/li\u003e\n\u003cli\u003ePassing \u003ccode\u003ehashpw\u003c/code\u003e a password longer than 72 bytes now raises a\n\u003ccode\u003eValueError\u003c/code\u003e. Previously the password was silently truncated, following the\nbehavior of the original OpenBSD \u003ccode\u003ebcrypt\u003c/code\u003e implementation.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.3.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.7.\u003c/li\u003e\n\u003cli\u003eWe now support free-threaded Python 3.13.\u003c/li\u003e\n\u003cli\u003eWe now support PyPy 3.11.\u003c/li\u003e\n\u003cli\u003eWe now publish wheels for free-threaded Python 3.13, for PyPy 3.11 on\n\u003ccode\u003emanylinux\u003c/code\u003e, and for ARMv7l on \u003ccode\u003emanylinux\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.2.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump Rust dependency versions - this should resolve crashes on Python 3.13\nfree-threaded builds.\u003c/li\u003e\n\u003cli\u003eWe no longer build \u003ccode\u003emanylinux\u003c/code\u003e wheels for PyPy 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.2.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump Rust dependency versions\u003c/li\u003e\n\u003cli\u003eRemoved the \u003ccode\u003eBCRYPT_ALLOW_RUST_163\u003c/code\u003e environment variable.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.1.3\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump Rust dependency versions\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.1.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePublish both \u003ccode\u003epy37\u003c/code\u003e and \u003ccode\u003epy39\u003c/code\u003e wheels. This should resolve some errors\nrelating to initializing a module multiple times per process.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.1.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed the type signature on the \u003ccode\u003ekdf\u003c/code\u003e method.\u003c/li\u003e\n\u003cli\u003eFixed packaging bug on Windows.\u003c/li\u003e\n\u003cli\u003eFixed incompatibility with passlib package detection assumptions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/5060bce7e6c27f55e89d5b0d22b7ae0437a362f7\"\u003e\u003ccode\u003e5060bce\u003c/code\u003e\u003c/a\u003e 5.0.0 release (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1078\"\u003e#1078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/e43f568265df7e1aabbaddccc336dbf3ea675df8\"\u003e\u003ccode\u003ee43f568\u003c/code\u003e\u003c/a\u003e Bump actions/cache from 4.2.4 to 4.3.0 (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1077\"\u003e#1077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/fc9f680a96a0d8e9df4c5a1a4d991fd961a90adb\"\u003e\u003ccode\u003efc9f680\u003c/code\u003e\u003c/a\u003e Bump libc from 0.2.175 to 0.2.176 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1075\"\u003e#1075\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/633f46fbb33d8abfe5b9cb0c12eed79878fbff06\"\u003e\u003ccode\u003e633f46f\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1073\"\u003e#1073\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/a2fefbbcff8d46cfd00efa8d2c13956b388d6bec\"\u003e\u003ccode\u003ea2fefbb\u003c/code\u003e\u003c/a\u003e Remove pypy310 builds (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1074\"\u003e#1074\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/f60707e18f3f9728f2c6f4ce97fb8fc90721c7d3\"\u003e\u003ccode\u003ef60707e\u003c/code\u003e\u003c/a\u003e Bump wasi from 0.14.5+wasi-0.2.4 to 0.14.7+wasi-0.2.4 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1071\"\u003e#1071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/c790eed8fa205403e1ea0587cf9178e866c940f3\"\u003e\u003ccode\u003ec790eed\u003c/code\u003e\u003c/a\u003e Bump unicode-ident from 1.0.18 to 1.0.19 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1070\"\u003e#1070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/122cbdc6895fd70c044a2f4ad7845c2a56b93096\"\u003e\u003ccode\u003e122cbdc\u003c/code\u003e\u003c/a\u003e Bump target-lexicon from 0.13.2 to 0.13.3 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1069\"\u003e#1069\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/2bd208d6c5cadba2f983280ec21cc8cf977904d0\"\u003e\u003ccode\u003e2bd208d\u003c/code\u003e\u003c/a\u003e Bump wasi from 0.14.4+wasi-0.2.4 to 0.14.5+wasi-0.2.4 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1068\"\u003e#1068\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/e1aa9e883090e0267bd7b38964fe852f70a99b88\"\u003e\u003ccode\u003ee1aa9e8\u003c/code\u003e\u003c/a\u003e remove poinless cargo cache paths from CI (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1067\"\u003e#1067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/bcrypt/compare/4.0.1...5.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `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 `pydantic-settings` from 2.5.2 to 2.15.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.15.0\u003c/h2\u003e\n\u003ch2\u003eHighlights\u003c/h2\u003e\n\u003ch3\u003eBehavior changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003ecase_sensitive\u003c/code\u003e now applies to init kwargs and config-file sources\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/900\"\u003e#900\u003c/a\u003e). \u003ccode\u003eInitSettingsSource\u003c/code\u003e and the JSON/TOML/YAML config sources previously ignored \u003ccode\u003ecase_sensitive\u003c/code\u003e. Since it defaults to \u003ccode\u003eFalse\u003c/code\u003e, \u003cstrong\u003ecase-insensitive matching is now the default\u003c/strong\u003e for these sources — e.g. \u003ccode\u003eSettings(TeSt=...)\u003c/code\u003e now populates a \u003ccode\u003etest\u003c/code\u003e field where it previously did not. Nested keys are still matched case-sensitively.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFields with unresolved forward references now emit a warning\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/901\"\u003e#901\u003c/a\u003e). Settings sources can silently fail to resolve such fields; they now raise \u003ccode\u003eIncompleteFieldDefinitionWarning\u003c/code\u003e telling you to call \u003ccode\u003emodel_rebuild()\u003c/code\u003e. If you have \u003ccode\u003efilterwarnings = error\u003c/code\u003e configured, this may surface as a new failure.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNon-JSON env values for strict fields now raise \u003ccode\u003eValidationError\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/926\"\u003e#926\u003c/a\u003e) instead of a less specific error.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eShow environment variable names in CLI help\u003c/strong\u003e via \u003ccode\u003ecli_show_env_vars=True\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/860\"\u003e#860\u003c/a\u003e), so generated \u003ccode\u003e--help\u003c/code\u003e output doubles as configuration documentation.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003ePYDANTIC_SETTINGS_DEBUG\u003c/code\u003e for debugging settings resolution\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/906\"\u003e#906\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/913\"\u003e#913\u003c/a\u003e). Set it to a truthy value with \u003ccode\u003eDEBUG\u003c/code\u003e logging enabled to see each source's contribution in priority order, which source won for each value, and which \u003ccode\u003eenv_file\u003c/code\u003e/secret files were probed, loaded, or skipped — the long-standing \u0026quot;why isn't my \u003ccode\u003e.env\u003c/code\u003e being picked up?\u0026quot; question.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003etoml_table_header\u003c/code\u003e for regular TOML files\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/882\"\u003e#882\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/886\"\u003e#886\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/887\"\u003e#887\u003c/a\u003e), letting you root settings at a nested table in any TOML file, not just \u003ccode\u003epyproject.toml\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eTraversable\u003c/code\u003e support for JSON/TOML/YAML file sources\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/902\"\u003e#902\u003c/a\u003e), so you can load config packaged inside a distribution — including files inside a zip or wheel — via \u003ccode\u003eimportlib.resources.files(...)\u003c/code\u003e without casting to \u003ccode\u003ePath\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eGCP: \u003ccode\u003eproject_id\u003c/code\u003e can come from an earlier settings source\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/878\"\u003e#878\u003c/a\u003e), rather than only from the constructor or \u003ccode\u003eGOOGLE_CLOUD_PROJECT\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix env vars not loading on Windows with \u003ccode\u003ecase_sensitive=True\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/894\"\u003e#894\u003c/a\u003e). Windows upper-cases \u003ccode\u003eos.environ\u003c/code\u003e keys, so fields raised \u003ccode\u003eField required\u003c/code\u003e instead of picking up their values.\u003c/li\u003e\n\u003cli\u003eRead secret files as UTF-8 instead of the platform locale encoding (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/917\"\u003e#917\u003c/a\u003e). On Windows code pages such as cp1252 this silently corrupted non-ASCII secrets.\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAliasPath\u003c/code\u003e on nested model fields not JSON-decoding env values (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/898\"\u003e#898\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix case-insensitive matching for \u003cstrong\u003eoptional\u003c/strong\u003e nested models (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/905\"\u003e#905\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix dotenv extras being wrongly claimed by a complex field sharing a name prefix (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/912\"\u003e#912\u003c/a\u003e) — e.g. \u003ccode\u003edbx_token\u003c/code\u003e being swallowed by a \u003ccode\u003edb: dict\u003c/code\u003e field.\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003enested_model_default_partial_update=True\u003c/code\u003e corrupting discriminated unions (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/876\"\u003e#876\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eSecret\u003c/code\u003e subclasses crashing when loaded from the environment (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/920\"\u003e#920\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix enum names not parsing through nested annotations such as \u003ccode\u003eOptional[Annotated[MyEnum, ...]]\u003c/code\u003e with \u003ccode\u003eenv_parse_enums=True\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/910\"\u003e#910\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAn empty \u003ccode\u003eyaml_config_section\u003c/code\u003e now falls back to defaults instead of raising \u003ccode\u003eAttributeError: 'NoneType' object has no attribute 'keys'\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/914\"\u003e#914\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eNestedSecretsSettingsSource\u003c/code\u003e no longer follows symlinks pointing outside \u003ccode\u003esecrets_dir\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/889\"\u003e#889\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eGCP: skip the \u003ccode\u003elist_secrets\u003c/code\u003e call when \u003ccode\u003ecase_sensitive=True\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/862\"\u003e#862\u003c/a\u003e), lowering the required IAM permissions to just \u003ccode\u003eroles/secretmanager.secretAccessor\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAWS: \u003ccode\u003etypes-boto3[secretsmanager]\u003c/code\u003e is no longer required at runtime (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/880\"\u003e#880\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument JSON parsing of complex env values, plus a comma-separated-values recipe (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/919\"\u003e#919\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eRecommend an async settings loading pattern (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/908\"\u003e#908\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eClarify behavior when an unprefixed value is present in a dotenv file (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/895\"\u003e#895\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eClarify environment variable helper descriptions (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/867\"\u003e#867\u003c/a\u003e) and fix assorted typos (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/904\"\u003e#904\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate documentation link for Pydantic settings 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/863\"\u003epydantic/pydantic-settings#863\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/865\"\u003epydantic/pydantic-settings#865\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: clarify environment variable helper descriptions by \u003ca href=\"https://github.com/vip892766gma\"\u003e\u003ccode\u003e@​vip892766gma\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/867\"\u003epydantic/pydantic-settings#867\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/870\"\u003epydantic/pydantic-settings#870\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/875\"\u003epydantic/pydantic-settings#875\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSkip list_secrets call when case_sensitive=True by \u003ca href=\"https://github.com/ecerulm\"\u003e\u003ccode\u003e@​ecerulm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/862\"\u003epydantic/pydantic-settings#862\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGoogleSecretManagerSettingsSource: read project_id from previous sources by \u003ca href=\"https://github.com/ecerulm\"\u003e\u003ccode\u003e@​ecerulm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/878\"\u003epydantic/pydantic-settings#878\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/f725ca187bee4212e9ef799eefa3cb25be788462\"\u003e\u003ccode\u003ef725ca1\u003c/code\u003e\u003c/a\u003e Prepare release 2.15.0 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/930\"\u003e#930\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/28f35c25fac5d61210d532c31a300d49c0b684a4\"\u003e\u003ccode\u003e28f35c2\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 4 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/929\"\u003e#929\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/9056db049560897229f2603493753bae27b6479f\"\u003e\u003ccode\u003e9056db0\u003c/code\u003e\u003c/a\u003e test: move function-local imports to the top of test modules (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/927\"\u003e#927\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/f077e3ab3d9492838c7ef9275a88c95134688095\"\u003e\u003ccode\u003ef077e3a\u003c/code\u003e\u003c/a\u003e fix: raise ValidationError for non-JSON env values on strict fields (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/926\"\u003e#926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/ae25d703c458b57f5a9a425f6ec9a28ad868f980\"\u003e\u003ccode\u003eae25d70\u003c/code\u003e\u003c/a\u003e fix: treat Secret subclasses as non-complex fields (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/716\"\u003e#716\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/920\"\u003e#920\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/798dcea2a23b08a3e9b37994014e036224f6dd18\"\u003e\u003ccode\u003e798dcea\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 4 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/924\"\u003e#924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/a190041d353bda2d432ea1908de4c499ae89ee0a\"\u003e\u003ccode\u003ea190041\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 4 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/925\"\u003e#925\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/5d9333282b5c85d65a457c45e4476369b9949726\"\u003e\u003ccode\u003e5d93332\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 4 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/921\"\u003e#921\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/d2fdeda91157140d2ff0c05404f32a9b1218115a\"\u003e\u003ccode\u003ed2fdeda\u003c/code\u003e\u003c/a\u003e fix: read secret files as UTF-8 instead of the locale encoding (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/917\"\u003e#917\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/2256a4e60f83f2da81e7654252562fc4841aa5d4\"\u003e\u003ccode\u003e2256a4e\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 3 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/915\"\u003e#915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.5.2...v2.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `httpx` from 0.27.2 to 0.28.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/httpx/releases\"\u003ehttpx's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.28.1\u003c/h2\u003e\n\u003ch2\u003e0.28.1 (6th December, 2024)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix SSL case where \u003ccode\u003everify=False\u003c/code\u003e together with client side certificates.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 0.28.0\u003c/h2\u003e\n\u003ch2\u003e0.28.0 (28th November, 2024)\u003c/h2\u003e\n\u003cp\u003eThe 0.28 release includes a limited set of deprecations.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e:\u003c/p\u003e\n\u003cp\u003eWe are working towards a simplified SSL configuration API.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eFor users of the standard \u003ccode\u003everify=True\u003c/code\u003e or \u003ccode\u003everify=False\u003c/code\u003e cases, or \u003ccode\u003everify=\u0026lt;ssl_context\u0026gt;\u003c/code\u003e case this should require no changes. The following cases have been deprecated...\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003everify\u003c/code\u003e argument as a string argument is now deprecated and will raise warnings.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ecert\u003c/code\u003e argument is now deprecated and will raise warnings.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOur revised \u003ca href=\"https://github.com/encode/httpx/blob/HEAD/docs/advanced/ssl.md\"\u003eSSL documentation\u003c/a\u003e covers how to implement the same behaviour with a more constrained API.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eThe following changes are also included\u003c/strong\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003eproxies\u003c/code\u003e argument has now been removed.\u003c/li\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003eapp\u003c/code\u003e argument has now been removed.\u003c/li\u003e\n\u003cli\u003eJSON request bodies use a compact representation. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3363\"\u003e#3363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReview URL percent escape sets, based on WHATWG spec. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3371\"\u003e#3371\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/encode/httpx/issues/3373\"\u003e#3373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure \u003ccode\u003ecertifi\u003c/code\u003e and \u003ccode\u003ehttpcore\u003c/code\u003e are only imported if required. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003esocks5h\u003c/code\u003e as a valid proxy scheme. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3178\"\u003e#3178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCleanup \u003ccode\u003eRequest()\u003c/code\u003e method signature in line with \u003ccode\u003eclient.request()\u003c/code\u003e and \u003ccode\u003ehttpx.request()\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3378\"\u003e#3378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBugfix: When passing \u003ccode\u003eparams={}\u003c/code\u003e, always strictly update rather than merge with an existing querystring. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3364\"\u003e#3364\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/httpx/blob/master/CHANGELOG.md\"\u003ehttpx's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.28.1 (6th December, 2024)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix SSL case where \u003ccode\u003everify=False\u003c/code\u003e together with client side certificates.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.28.0 (28th November, 2024)\u003c/h2\u003e\n\u003cp\u003eBe aware that the default \u003cem\u003eJSON request bodies now use a more compact representation\u003c/em\u003e. This is generally considered a prefered style, tho may require updates to test suites.\u003c/p\u003e\n\u003cp\u003eThe 0.28 release includes a limited set of deprecations...\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e:\u003c/p\u003e\n\u003cp\u003eWe are working towards a simplified SSL configuration API.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eFor users of the standard \u003ccode\u003everify=True\u003c/code\u003e or \u003ccode\u003everify=False\u003c/code\u003e cases, or \u003ccode\u003everify=\u0026lt;ssl_context\u0026gt;\u003c/code\u003e case this should require no changes. The following cases have been deprecated...\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003everify\u003c/code\u003e argument as a string argument is now deprecated and will raise warnings.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ecert\u003c/code\u003e argument is now deprecated and will raise warnings.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOur revised \u003ca href=\"https://github.com/encode/httpx/blob/master/docs/advanced/ssl.md\"\u003eSSL documentation\u003c/a\u003e covers how to implement the same behaviour with a more constrained API.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eThe following changes are also included\u003c/strong\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003eproxies\u003c/code\u003e argument has now been removed.\u003c/li\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003eapp\u003c/code\u003e argument has now been removed.\u003c/li\u003e\n\u003cli\u003eJSON request bodies use a compact representation. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3363\"\u003e#3363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReview URL percent escape sets, based on WHATWG spec. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3371\"\u003e#3371\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/encode/httpx/issues/3373\"\u003e#3373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure \u003ccode\u003ecertifi\u003c/code\u003e and \u003ccode\u003ehttpcore\u003c/code\u003e are only imported if required. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003esocks5h\u003c/code\u003e as a valid proxy scheme. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3178\"\u003e#3178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCleanup \u003ccode\u003eRequest()\u003c/code\u003e method signature in line with \u003ccode\u003eclient.request()\u003c/code\u003e and \u003ccode\u003ehttpx.request()\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3378\"\u003e#3378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBugfix: When passing \u003ccode\u003eparams={}\u003c/code\u003e, always strictly update rather than merge with an existing querystring. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3364\"\u003e#3364\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/26d48e0634e6ee9cdc0533996db289ce4b430177\"\u003e\u003ccode\u003e26d48e0\u003c/code\u003e\u003c/a\u003e Version 0.28.1 (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3445\"\u003e#3445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/89599a9541af14bcf906fc4ed58ccbdf403802ba\"\u003e\u003ccode\u003e89599a9\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003everify=False\u003c/code\u003e, \u003ccode\u003ecert=...\u003c/code\u003e case. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3442\"\u003e#3442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/8ecb86f0d74ffc52d4663214fae9526bee89358d\"\u003e\u003ccode\u003e8ecb86f\u003c/code\u003e\u003c/a\u003e Add test for request params behavior changes (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3364\"\u003e#3364\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3440\"\u003e#3440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/0cb7e5a2e736628e2f506d259fcf0d48cd2bde82\"\u003e\u003ccode\u003e0cb7e5a\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 11 updates (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3434\"\u003e#3434\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/15e21e9ea3cad4f06e22a7e704aabefdf43d2e29\"\u003e\u003ccode\u003e15e21e9\u003c/code\u003e\u003c/a\u003e Updating deprecated docstring Client() class (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3426\"\u003e#3426\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/80960fa31918d7663c3f4c3ad61661cf0e80628f\"\u003e\u003ccode\u003e80960fa\u003c/code\u003e\u003c/a\u003e Version 0.28.0. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3419\"\u003e#3419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/a33c87852b8a0dddc65e5f739af1e0a6fca4b91f\"\u003e\u003ccode\u003ea33c878\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eextensions\u003c/code\u003e type annotation. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3380\"\u003e#3380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/ce7e14da27abba6574be9b3ea7cd5990556a9343\"\u003e\u003ccode\u003ece7e14d\u003c/code\u003e\u003c/a\u003e Error on verify as str. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3418\"\u003e#3418\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/47f4a96ffaaaa07dca1614409549b5d7a6e7af49\"\u003e\u003ccode\u003e47f4a96\u003c/code\u003e\u003c/a\u003e Handle empty zstd responses (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3412\"\u003e#3412\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/189fc4bcbe5f314128775dec66a616ac9a31ad48\"\u003e\u003ccode\u003e189fc4b\u003c/code\u003e\u003c/a\u003e Update CHANGELOG.md, fix typo(s) (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3406\"\u003e#3406\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/httpx/compare/0.27.2...0.28.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.13.2 to 1.19.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/alembic/releases\"\u003ealembic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.19.2\u003c/h1\u003e\n\u003cp\u003eReleased: September 4, 2026\u003c/p\u003e\n\u003ch2\u003echanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[changed] [autogenerate]\u003c/strong\u003e The autogenerate plugin for CHECK constraint detection by name, added in\n1.19.0. for \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/508\"\u003e#508\u003c/a\u003e, is no longer enabled by default.  It has been\nrenamed from \u003ccode\u003ealembic.autogenerate.checkconstraint_byname\u003c/code\u003e to\n\u003ccode\u003ealembic.ext.checkconstraint_byname\u003c/code\u003e and no longer matches on the\n\u003ccode\u003e\u0026quot;alembic.autogenerate.*\u0026quot;\u003c/code\u003e wildcard, which remains the default plugin\nspecification.  The previous name will still function as well if placed in\nthe plugins list explicitly,  both to enable the plugin and within a\n\u003ccode\u003e\u0026quot;~\u0026quot;\u003c/code\u003e exclusion, so that an \u003ccode\u003eenv.py\u003c/code\u003e written against 1.19.0 or 1.19.1\nrequires no change.\u003c/p\u003e\n\u003cp\u003eThe plugin is now recommended only for schemas that ensure the naming of\nall constraints using a client side naming convention, otherwise there's a\npersistent risk of false positives. See\n\u003ccode\u003eautogenerate_check_constraints\u003c/code\u003e for background on things to be aware\nof when using this plugin.\u003c/p\u003e\n\u003cp\u003eAs part of this change \u0026quot;type bound\u0026quot; CHECK constraints, which include\nconstraints generated for the \u003ccode\u003eBoolean\u003c/code\u003e and \u003ccode\u003eEnum\u003c/code\u003e datatypes when the\n\u003ccode\u003ecreate_constraint\u003c/code\u003e parameter is set to True, are no longer ignored in\nthe metadata side, so that normal name-based matching can occur for\nthese constraints.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1859\"\u003e#1859\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eusecase\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[usecase] [autogenerate] [batch]\u003c/strong\u003e The target of a \u003ccode\u003e~sqlalchemy.schema.ForeignKey\u003c/code\u003e is now located\nusing the \u003ccode\u003eForeignKey.target_tokens\u003c/code\u003e and\n\u003ccode\u003eForeignKey.target_table_key\u003c/code\u003e accessors added in SQLAlchemy 2.1, rather\nthan by splitting the dotted string form of that target on \u003ccode\u003e\u0026quot;.\u0026quot;\u003c/code\u003e.  As a\ndot inside a schema, table or column name cannot be told apart from the\nseparator between those names, a foreign key whose target name contained\na dot was previously mis-parsed by autogenerate rendering as well as by\nbatch migrations.  The dotted string continues to be split when running\nagainst SQLAlchemy 2.0, where these accessors are not present.  Thanks to\nGyanu Mayank for the initial pull request.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1860\"\u003e#1860\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.19.1\u003c/h1\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\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 `apscheduler` from 3.10.4 to 3.11.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/apscheduler/releases\"\u003eapscheduler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.11.3\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed sub-minute interval jobs stalling for the duration of a DST spring-forward gap when the scheduler was configured with a \u003ccode\u003eZoneInfo\u003c/code\u003e time zone, caused by the wakeup delay being computed from the naive wall-clock difference instead of the actual UTC difference (\u003ca href=\"https://redirect.github.com/agronholm/apscheduler/issues/1103\"\u003e#1103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed imported jobs missing their scheduler and job store links (\u003ca href=\"https://redirect.github.com/agronholm/apscheduler/issues/1119\"\u003e#1119\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed an issue where a job using a \u003ccode\u003eCronTrigger\u003c/code\u003e scheduled in a repeated time interval during DST transitions could cause the scheduler to get stuck in an infinite loop (\u003ca href=\"https://redirect.github.com/agronholm/apscheduler/issues/1021\"\u003e#1021\u003c/a\u003e; PR by \u003ca href=\"https://github.com/soulofakuma\"\u003e\u003ccode\u003e@​soulofakuma\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ccode\u003escheduler.shutdown()\u003c/code\u003e not raising \u003ccode\u003eSchedulerNotRunning\u003c/code\u003e (or raising the wrong exception) for asynchronous schedulers when the scheduler is in fact not running\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCronTrigger\u003c/code\u003e sticking on a folded datetime during the fall-back DST transition (\u003ca href=\"https://redirect.github.com/agronholm/apscheduler/issues/1021\"\u003e#1021\u003c/a\u003e \u0026lt;\u003ca href=\"https://redirect.github.com/agronholm/apscheduler/issues/1021\"\u003eagronholm/apscheduler#1021\u003c/a\u003e\u0026gt;_; PR by \u003ca href=\"https://github.com/berianjames\"\u003e\u003ccode\u003e@​berianjames\u003c/code\u003e\u003c/a\u003e)`\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.6 and 3.7\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003eZoneInfo\u003c/code\u003e time zones and deprecated support for pytz time zones\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCalendarIntervalTrigger\u003c/code\u003e, backported from the 4.x series\u003c/li\u003e\n\u003cli\u003eAdded the ability to export and import jobs via \u003ccode\u003escheduler.export_jobs()\u003c/code\u003e and \u003ccode\u003escheduler.import_jobs()\u003c/code\u003e, respectively\u003c/li\u003e\n\u003cli\u003eRemoved the dependency on \u003ccode\u003esix\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eProcessPoolExecutor\u003c/code\u003e to spawn new subprocesses from scratch instead of forking on all platform\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eAsyncIOScheduler\u003c/code\u003e inadvertently creating a defunct event loop at start, leading to the scheduler not working at all\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eProcessPoolExecutor\u003c/code\u003e not respecting the passed keyword arguments when a broken pool was being replaced\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/4308ec95b94069f5dbdddb6c60fb792dfc8c40a4\"\u003e\u003ccode\u003e4308ec9\u003c/code\u003e\u003c/a\u003e Added the release version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/ff68780d7f66fe0f505c3a32764005cd004996b9\"\u003e\u003ccode\u003eff68780\u003c/code\u003e\u003c/a\u003e Added a note about weekday numbers in CronTrigger.from_crontab()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/36936e904052e6bfbd03f83e17b03701b7a589fe\"\u003e\u003ccode\u003e36936e9\u003c/code\u003e\u003c/a\u003e Updated actions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/c0ff7e4ccfcc703db44a905b70c1d6568a6f81fa\"\u003e\u003ccode\u003ec0ff7e4\u003c/code\u003e\u003c/a\u003e Fixed Pyside6 tests failing on Python 3.9 and 3.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/1b782c90edeac787deb3106fb3e5c775b3d6b0cd\"\u003e\u003ccode\u003e1b782c9\u003c/code\u003e\u003c/a\u003e Fixed fixture \u003ccode\u003ecoreapp\u003c/code\u003e not found\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/dc3dde4a34c021f215d120d88fe19ddc66bb8a66\"\u003e\u003ccode\u003edc3dde4\u003c/code\u003e\u003c/a\u003e Test against PySide6 on all Python versions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/18a6f6b637e372730f6325786f97936e6eaa9f77\"\u003e\u003ccode\u003e18a6f6b\u003c/code\u003e\u003c/a\u003e Fixed imported jobs missing their scheduler and job store links\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/1693db4d8861bf941d299d79a586797ad0ac6467\"\u003e\u003ccode\u003e1693db4\u003c/code\u003e\u003c/a\u003e Fix interval jobs stalling across DST spring-forward with ZoneInfo (\u003ca href=\"https://redirect.github.com/agronholm/apscheduler/issues/1114\"\u003e#1114\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/0636bf4931fddb706b948b6781ebbd76058f1443\"\u003e\u003ccode\u003e0636bf4\u003c/code\u003e\u003c/a\u003e Added Python 3.14 to the test matrix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/3eb3de8115f1631dc5e2ecce7b00175d34ffbdf9\"\u003e\u003ccode\u003e3eb3de8\u003c/code\u003e\u003c/a\u003e Fixed bad use of pytest.raises()\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/apscheduler/compare/3.10.4...3.11.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `redis` from 5.0.8 to 8.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/redis-py/releases\"\u003eredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.1.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003ch2\u003e✨ Highlights\u003c/h2\u003e\n\u003ch3\u003eAsync maintenance notifications\u003c/h3\u003e\n\u003cp\u003eredis-py now supports server-pushed \u003cstrong\u003emaintenance notifications\u003c/strong\u003e in the asyncio stack for both\nstandalone and cluster clients, bringing the async client to parity with the sync implementation.\nWhen a Redis deployment signals maintenance events (such as node migration or failover windows), the\nasync client reacts through the maintenance-notifications handler (\u003ccode\u003eredis/maint_notifications.py\u003c/code\u003e and\nits async integration under \u003ccode\u003eredis/asyncio/\u003c/code\u003e), allowing applications to adapt connection handling\nduring maintenance without downtime. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4177\"\u003e#4177\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eExpanded command coverage\u003c/h3\u003e\n\u003cp\u003eThis release adds a batch of new command surfaces across core data types and modules:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eLists\u003c/strong\u003e — \u003ccode\u003eLMOVEM\u003c/code\u003e / \u003ccode\u003eBLMOVEM\u003c/code\u003e for moving multiple elements between lists (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4174\"\u003e#4174\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSets\u003c/strong\u003e — \u003ccode\u003eSDIFFCARD\u003c/code\u003e and \u003ccode\u003eSUNIONCARD\u003c/code\u003e cardinality commands (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4171\"\u003e#4171\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eStreams\u003c/strong\u003e — \u003ccode\u003eMAXCOUNT\u003c/code\u003e / \u003ccode\u003eMAXSIZE\u003c/code\u003e options for \u003ccode\u003eXREAD\u003c/code\u003e and \u003ccode\u003eXREADGROUP\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4173\"\u003e#4173\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTime Series\u003c/strong\u003e — \u003ccode\u003eTS.READ\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4170\"\u003e#4170\u003c/a\u003e), \u003ccode\u003eTS.QUERYLABELS\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4197\"\u003e#4197\u003c/a\u003e), \u003ccode\u003eTS.NRANGE\u003c/code\u003e / \u003ccode\u003eTS.NREVRANGE\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4163\"\u003e#4163\u003c/a\u003e),\nand an \u003ccode\u003eexclude_empty\u003c/code\u003e (\u003ccode\u003eEXCLUDEEMPTY\u003c/code\u003e) option for \u003ccode\u003eTS.MRANGE\u003c/code\u003e / \u003ccode\u003eTS.MREVRANGE\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4188\"\u003e#4188\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSearch\u003c/strong\u003e — \u003ccode\u003eFT.ALIASLIST\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4198\"\u003e#4198\u003c/a\u003e) and a \u003ccode\u003eCOLLECT\u003c/code\u003e reducer for aggregations (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4179\"\u003e#4179\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSentinel\u003c/strong\u003e — replica sentinel aliases (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4127\"\u003e#4127\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🚀 New Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd replica sentinel aliases (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4127\"\u003e#4127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd TS.NRANGE and TS.NREVRANGE support to the timeseries command surface (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4163\"\u003e#4163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add TS.READ command support to the timeseries module (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4170\"\u003e#4170\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add SDIFFCARD and SUNIONCARD command support (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4171\"\u003e#4171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add MAXCOUNT/MAXSIZE support to XREAD and XREADGROUP (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4173\"\u003e#4173\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add LMOVEM and BLMOVEM commands for moving multiple list elements (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4174\"\u003e#4174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add async maintenance-notifications support for standalone and cluster clients (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4177\"\u003e#4177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add COLLECT reducer support to search aggregations (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4179\"\u003e#4179\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add exclude_empty (EXCLUDEEMPTY) option to TS.MRANGE and TS.MREVRANGE (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4188\"\u003e#4188\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add TS.QUERYLABELS support to the timeseries command surface (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4197\"\u003e#4197\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add FT.ALIASLIST support (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4198\"\u003e#4198\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e⚠️ Experimental\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: add client-side HIMPORT fieldset support for standalone and cluster clients (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4205\"\u003e#4205\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe feature considered unstable and \u003cstrong\u003epublic API might be changed in the future minor version\u003c/strong\u003e\u003c/p\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: detect closed pooled connection without consuming pending push data (RESP3 + hiredis) (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4156\"\u003e#4156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Sentinel pool capacity loss after failover (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4193\"\u003e#4193\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/e013126df18e476fbb8b8215f040f39bd3242683\"\u003e\u003ccode\u003ee013126\u003c/code\u003e\u003c/a\u003e Testing with 8.10 GA (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4227\"\u003e#4227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/059d1e97d88dd7ed516628e0a9765ab8e0e299f1\"\u003e\u003ccode\u003e059d1e9\u003c/code\u003e\u003c/a\u003e Fixed TS.NRANGE commands to correctly apply aggregators (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4225\"\u003e#4225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/d486a0a982dcdf316006474dc286ca65cbec5a9f\"\u003e\u003ccode\u003ed486a0a\u003c/code\u003e\u003c/a\u003e Fix FIELDNAME alias dropping first character of un-prefixed fields (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4224\"\u003e#4224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/fb931042420baaa5fbb9021955e444f7afa66dc2\"\u003e\u003ccode\u003efb93104\u003c/code\u003e\u003c/a\u003e feat: add client-side HIMPORT fieldset support for standalone and cluster cli...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/9197609f48eb9713411a50534ca48210486a4bf9\"\u003e\u003ccode\u003e9197609\u003c/code\u003e\u003c/a\u003e Fix lat/lon swap in search querystring geo() helper (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4223\"\u003e#4223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/14714a0812d3ff03ad34c89ce6f79e287a04e9fb\"\u003e\u003ccode\u003e14714a0\u003c/code\u003e\u003c/a\u003e fix: Fixed double decoding issue with unquote() (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4222\"\u003e#4222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/227280a939718d09ff9d7c41f9785ffdc21bdc2a\"\u003e\u003ccode\u003e227280a\u003c/code\u003e\u003c/a\u003e Update lib version to 8.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/88d16d0db10c852d1d292628b2c832f1ed117056\"\u003e\u003ccode\u003e88d16d0\u003c/code\u003e\u003c/a\u003e Decode ACL LOG string values on the default RESP3 legacy callback (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4201\"\u003e#4201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/599fd75ca7d0745928280ff3a64ccd224dbf2b76\"\u003e\u003ccode\u003e599fd75\u003c/code\u003e\u003c/a\u003e feat: add FT.ALIASLIST support (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4198\"\u003e#4198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/71e275e6eae94d202b49bccce10ef0d2a59050e7\"\u003e\u003ccode\u003e71e275e\u003c/code\u003e\u003c/a\u003e test: add VectorField RERANK serialization tests for sync and async search (#...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/redis/redis-py/compare/v5.0.8...v8.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bandit` from 1.8.6 to 1.9.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/bandit/releases\"\u003ebandit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: fixed some typos in comments by \u003ca href=\"https://github.com/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/login-action from 3.6.0 to 3.7.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/PyCQA/bandit/pull/1353\"\u003ePyCQA/bandit#1353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.18.0 to 6.19.2 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/PyCQA/bandit/pull/1357\"\u003ePyCQA/bandit#1357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B613 crash when reading from stdin by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude filename in nosec 'no failed test' warning by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e ...\n\n_Description has been truncated_","html_url":"https://github.com/wagnerks1990/LabGoblin/pull/147","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/wagnerks1990%2FLabGoblin/issues/147","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/147/packages"},{"uuid":"5417215307","node_id":"PR_kwDOTRlIRs8AAAABDDdQfA","number":8,"state":"closed","title":"Update bandit requirement from \u003e=1.7.5 to \u003e=1.9.4","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-11T07:46:11.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-10T20:53:28.000Z","updated_at":"2026-09-11T07:46:13.000Z","time_to_close":39163,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Update","packages":[{"name":"bandit","old_version":"\u003e=1.7.5","new_version":"\u003e=1.9.4","repository_url":"https://github.com/PyCQA/bandit"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [bandit](https://github.com/PyCQA/bandit) 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/PyCQA/bandit/releases\"\u003ebandit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: fixed some typos in comments by \u003ca href=\"https://github.com/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/login-action from 3.6.0 to 3.7.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/PyCQA/bandit/pull/1353\"\u003ePyCQA/bandit#1353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.18.0 to 6.19.2 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/PyCQA/bandit/pull/1357\"\u003ePyCQA/bandit#1357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B613 crash when reading from stdin by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude filename in nosec 'no failed test' warning by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1363\"\u003ePyCQA/bandit#1363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B615 false positive when revision is set via variable by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1358\"\u003ePyCQA/bandit#1358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLower version guard in check_ast_node to Python 3.12 by \u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B106 reporting wrong line number on multiline function calls by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1360\"\u003ePyCQA/bandit#1360\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/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\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/PyCQA/bandit/commit/92ae8b82fb422a639f0ed8d99e96cea769594e08\"\u003e\u003ccode\u003e92ae8b8\u003c/code\u003e\u003c/a\u003e Fix B106 reporting wrong line number on multiline function calls (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1360\"\u003e#1360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c8c8a55c3307333b8eb46cb2ef46d49b1fad6546\"\u003e\u003ccode\u003ec8c8a55\u003c/code\u003e\u003c/a\u003e Lower version guard in check_ast_node to Python 3.12 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1355\"\u003e#1355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/8f2f9284fca830ca017b2e2cc3ddc2a7b74b7040\"\u003e\u003ccode\u003e8f2f928\u003c/code\u003e\u003c/a\u003e Fix B615 false positive when revision is set via variable (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1358\"\u003e#1358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e27493f71c114e0e5dfc0a475d225d7f9f4a7e2b\"\u003e\u003ccode\u003ee27493f\u003c/code\u003e\u003c/a\u003e Include filename in nosec 'no failed test' warning (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1363\"\u003e#1363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/b69b336450301d424e5ba04c9a58e8d41b7169b6\"\u003e\u003ccode\u003eb69b336\u003c/code\u003e\u003c/a\u003e Fix B613 crash when reading from stdin (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1361\"\u003e#1361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e418b798abcc3f2b00c07fd6315da8fe9aeead00\"\u003e\u003ccode\u003ee418b79\u003c/code\u003e\u003c/a\u003e Bump docker/build-push-action from 6.18.0 to 6.19.2 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1357\"\u003e#1357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/ff646fd7e0e34fb350196fc58448fad17178c27a\"\u003e\u003ccode\u003eff646fd\u003c/code\u003e\u003c/a\u003e Bump docker/login-action from 3.6.0 to 3.7.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1353\"\u003e#1353\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c0def6c7ebab60f98c28ba759d488f4fbe6dae89\"\u003e\u003ccode\u003ec0def6c\u003c/code\u003e\u003c/a\u003e chore: fixed some typos in comments (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1351\"\u003e#1351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/765f00d3f202f83f61d03f882f80a2d5142d81f8\"\u003e\u003ccode\u003e765f00d\u003c/code\u003e\u003c/a\u003e Limit B614 to torch.load deserializers (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1348\"\u003e#1348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/06fbbab0df3374ffa8ef24c6f601b2d5e1d4d429\"\u003e\u003ccode\u003e06fbbab\u003c/code\u003e\u003c/a\u003e Bump docker/setup-buildx-action from 3.11.1 to 3.12.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1347\"\u003e#1347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.7.5...1.9.4\"\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/YATHARTHH/Job-Search-Decision-Assistant/pull/8","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/YATHARTHH%2FJob-Search-Decision-Assistant/issues/8","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/8/packages"},{"uuid":"5405876896","node_id":"PR_kwDOUE3Vns8AAAABC6U9Bw","number":84,"state":"closed","title":"chore(deps): bump the pip-minor-patch group across 1 directory with 12 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-16T23:40:27.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-09T23:39:18.000Z","updated_at":"2026-09-16T23:40:29.000Z","time_to_close":604869,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"pip-minor-patch","update_count":12,"packages":[{"name":"psycopg","old_version":"3.3.4","new_version":"3.3.5","repository_url":"https://github.com/psycopg/psycopg"},{"name":"langchain-anthropic","old_version":"1.6.1","new_version":"1.7.1","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"fastapi","old_version":"0.139.2","new_version":"0.141.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"pypdf","old_version":"6.16.2","new_version":"6.17.0","repository_url":"https://github.com/py-pdf/pypdf"},{"name":"ruff","old_version":"0.16.5","new_version":"0.16.6","repository_url":"https://github.com/astral-sh/ruff"},{"name":"anyio","old_version":"4.14.2","new_version":"4.15.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"langchain-core","old_version":"1.6.1","new_version":"1.6.2","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langsmith","old_version":"0.11.2","new_version":"0.12.2","repository_url":"https://github.com/langchain-ai/langsmith-sdk"},{"name":"psycopg-binary","old_version":"3.3.4","new_version":"3.3.5","repository_url":"https://github.com/psycopg/psycopg"},{"name":"pydantic-core","old_version":"2.46.5","new_version":"2.48.0","repository_url":"https://github.com/pydantic/pydantic"},{"name":"regex","old_version":"2026.8.31","new_version":"2026.9.3","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"bandit","old_version":"1.7.10","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-minor-patch group with 12 updates in the /caos/server directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [psycopg](https://github.com/psycopg/psycopg) | `3.3.4` | `3.3.5` |\n| [langchain-anthropic](https://github.com/langchain-ai/langchain) | `1.6.1` | `1.7.1` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.139.2` | `0.141.1` |\n| [pypdf](https://github.com/py-pdf/pypdf) | `6.16.2` | `6.17.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.16.5` | `0.16.6` |\n| [anyio](https://github.com/agronholm/anyio) | `4.14.2` | `4.15.1` |\n| [langchain-core](https://github.com/langchain-ai/langchain) | `1.6.1` | `1.6.2` |\n| [langsmith](https://github.com/langchain-ai/langsmith-sdk) | `0.11.2` | `0.12.2` |\n| [psycopg-binary](https://github.com/psycopg/psycopg) | `3.3.4` | `3.3.5` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.46.5` | `2.48.0` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2026.8.31` | `2026.9.3` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.7.10` | `1.9.4` |\n\n\nUpdates `psycopg` from 3.3.4 to 3.3.5\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psycopg/psycopg/blob/master/docs/news.rst\"\u003epsycopg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e.. currentmodule:: psycopg\u003c/p\u003e\n\u003cp\u003e.. index::\nsingle: Release notes\nsingle: News\u003c/p\u003e\n\u003ch1\u003e\u003ccode\u003epsycopg\u003c/code\u003e release notes\u003c/h1\u003e\n\u003ch2\u003eCurrent release\u003c/h2\u003e\n\u003cp\u003ePsycopg 3.3.5\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDiscard prepared statements upon :sql:\u003ccode\u003eALTER *\u003c/code\u003e or \u003ccode\u003eDISCARD *\u003c/code\u003e\n(:ticket:\u003ccode\u003e[#1307](https://github.com/psycopg/psycopg/issues/1307)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e!ProgrammingError\u003c/code\u003e when dumping non-\u003ccode\u003e!None\u003c/code\u003e values with\nno \u003ccode\u003e!NoneType\u003c/code\u003e dumper registered in python implementation (:ticket:\u003ccode\u003e[#1325](https://github.com/psycopg/psycopg/issues/1325)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e!wait_selector\u003c/code\u003e wait function to not raise \u003ccode\u003e!KeyError\u003c/code\u003e\n(:ticket:\u003ccode\u003e[#1327](https://github.com/psycopg/psycopg/issues/1327)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e!DataError\u003c/code\u003e messages leaking the literal \u003ccode\u003e{...}\u003c/code\u003e placeholder instead\nof the offending value when loading a pre-year-1 :sql:\u003ccode\u003etimestamp\u003c/code\u003e or a\nmalformed binary :sql:\u003ccode\u003ejsonb\u003c/code\u003e value (:ticket:\u003ccode\u003e[#1372](https://github.com/psycopg/psycopg/issues/1372)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003e!DataError\u003c/code\u003e instead of \u003ccode\u003e!ValueError\u003c/code\u003e when \u003ccode\u003e~psycopg.rows.namedtuple_row\u003c/code\u003e\nreceives duplicate column names (:ticket:\u003ccode\u003e[#1348](https://github.com/psycopg/psycopg/issues/1348)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003e!DataError\u003c/code\u003e on inconsistent copy data (:tickets:\u003ccode\u003e[#1359](https://github.com/psycopg/psycopg/issues/1359), [#1360](https://github.com/psycopg/psycopg/issues/1360)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eHandle client encodings aliases (:ticket:\u003ccode\u003e[#1363](https://github.com/psycopg/psycopg/issues/1363)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix building C extension with Cython 3.3.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePsycopg 3.3.4\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix possible spurious connection timeout in systems with very long uptimes\nin C extension (:ticket:\u003ccode\u003e[#1280](https://github.com/psycopg/psycopg/issues/1280)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix client-side adaptation of enums whose name require quotes\n(:ticket:\u003ccode\u003e[#1298](https://github.com/psycopg/psycopg/issues/1298)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eConsistently populate \u003ccode\u003e~Cursor.statusmessage\u003c/code\u003e after \u003ccode\u003e~Cursor.executemany()\u003c/code\u003e\n(:ticket:\u003ccode\u003e[#1302](https://github.com/psycopg/psycopg/issues/1302)\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePsycopg 3.3.3\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRetain \u003ccode\u003eError.pgconn\u003c/code\u003e when raising a single exception for multiple connection\nattempt errors (:ticket:\u003ccode\u003e[#1246](https://github.com/psycopg/psycopg/issues/1246)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eReturn a proper error when server sends \u003ccode\u003eErrorResponse\u003c/code\u003e for a \u003ccode\u003eSync\u003c/code\u003e after\na \u003ccode\u003eParse\u003c/code\u003e (:ticket:\u003ccode\u003e[#1260](https://github.com/psycopg/psycopg/issues/1260)\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/psycopg/commit/ea542c9534cc9841d50450e0c156b549cc6c805a\"\u003e\u003ccode\u003eea542c9\u003c/code\u003e\u003c/a\u003e chore: bump psycopg package version to 3.3.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/8d31e4711c22b206d8863b9397b3b34f5b106e4d\"\u003e\u003ccode\u003e8d31e47\u003c/code\u003e\u003c/a\u003e chore(deps): bump the actions group across 1 directory with 4 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/268f863e0e8dbdbaf4f10616ebd14ff00edaeb51\"\u003e\u003ccode\u003e268f863\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg/issues/1370\"\u003e#1370\u003c/a\u003e from Sanjays2402/fix/truncated-binary-copy-error\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/a412fa4d682f035a9cf3c7886a5c95c15c64ba96\"\u003e\u003ccode\u003ea412fa4\u003c/code\u003e\u003c/a\u003e docs: put together different issues fixed around copy parsing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/f757307068aef06e439cf164915a3781acf483b5\"\u003e\u003ccode\u003ef757307\u003c/code\u003e\u003c/a\u003e fix: clearer error messages according to truncated copy message part\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/b1f17c44096b8fbc90836d9652d083f23c88e28d\"\u003e\u003ccode\u003eb1f17c4\u003c/code\u003e\u003c/a\u003e test: move existing COPY format parsing tests into a single module\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/21eba573f9356276b2a3e0b7c1d86fad03f2872f\"\u003e\u003ccode\u003e21eba57\u003c/code\u003e\u003c/a\u003e test: drop useless parametrization of copy binary parsigh test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/6780e17bcee0b838dedd0aa9c1b6dcc563a50cec\"\u003e\u003ccode\u003e6780e17\u003c/code\u003e\u003c/a\u003e fix(copy): handle truncated binary row headers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/2f2fcfbf35af4b80a4755fff75fe8b8f5e059193\"\u003e\u003ccode\u003e2f2fcfb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg/issues/1364\"\u003e#1364\u003c/a\u003e from DylanYoung/fix_client_encoding_aliases\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/ccc351ec3180969d105199012a017240492a43c0\"\u003e\u003ccode\u003eccc351e\u003c/code\u003e\u003c/a\u003e refactor: don't store the encodings raw table as a dict\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psycopg/psycopg/compare/3.3.4...3.3.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `langchain-anthropic` from 1.6.1 to 1.7.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langchain/releases\"\u003elangchain-anthropic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elangchain-anthropic==1.7.1\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-anthropic==1.7.0\u003c/p\u003e\n\u003cp\u003erelease(anthropic): 1.7.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40181\"\u003e#40181\u003c/a\u003e)\nperf(anthropic,langchain): omit middleware trace inputs (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40098\"\u003e#40098\u003c/a\u003e)\nfeat(anthropic): add Claude Fable 5.1 support (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40106\"\u003e#40106\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-anthropic==1.7.0\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-anthropic==1.6.1\u003c/p\u003e\n\u003cp\u003erelease(anthropic): 1.7.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39963\"\u003e#39963\u003c/a\u003e)\nfeat(anthropic): support top-level param for skills via \u003ccode\u003econtainer\u003c/code\u003e; \u003ccode\u003eupdates\u003c/code\u003e thinking display mode (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39962\"\u003e#39962\u003c/a\u003e)\nfeat(anthropic): support 1.0 sdk (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39938\"\u003e#39938\u003c/a\u003e)\nfix(anthropic): auto-append \u003ccode\u003eadvisor-tool-2026-03-01\u003c/code\u003e beta header for \u003ccode\u003eadvisor_20260301\u003c/code\u003e tool (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39917\"\u003e#39917\u003c/a\u003e)\nfeat(anthropic): surface gateway response metadata (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39809\"\u003e#39809\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/langchain-ai/langchain/commit/79cab2dc7f58be720cac43db3677b4c1fd971f91\"\u003e\u003ccode\u003e79cab2d\u003c/code\u003e\u003c/a\u003e release(anthropic): 1.7.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40181\"\u003e#40181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/1e6a4f0b45b60475f566f3ad49fb32ea99d22233\"\u003e\u003ccode\u003e1e6a4f0\u003c/code\u003e\u003c/a\u003e chore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40171\"\u003e#40171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/8330dfe987988c1bcbbc5e8d9af9a67e5a1c2744\"\u003e\u003ccode\u003e8330dfe\u003c/code\u003e\u003c/a\u003e docs(langchain): runnable \u003ccode\u003elangchain.mcp\u003c/code\u003e examples (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39976\"\u003e#39976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/280442b54c80db2175ced4a20ab59eab86a32dc1\"\u003e\u003ccode\u003e280442b\u003c/code\u003e\u003c/a\u003e feat(langchain): \u003ccode\u003elangchain.mcp\u003c/code\u003e namespace, \u003ccode\u003eMCPAdapter\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39939\"\u003e#39939\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/f5ee2b65f4cf2f1a9fe688bcae6ad2af966582bd\"\u003e\u003ccode\u003ef5ee2b6\u003c/code\u003e\u003c/a\u003e chore(chroma): bump Pygments security constraint (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40162\"\u003e#40162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/234255c1c7427b5ed6dc505abad41ddfa6c9ff8f\"\u003e\u003ccode\u003e234255c\u003c/code\u003e\u003c/a\u003e chore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40009\"\u003e#40009\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/79e0e4adbafc1fda1ca9956e184be8b8819aa7ab\"\u003e\u003ccode\u003e79e0e4a\u003c/code\u003e\u003c/a\u003e chore(deps): bump mistune from 3.3.0 to 3.3.3 in /libs/langchain (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40149\"\u003e#40149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/e90201b7af5cd32762744c974ca9ce3f27efc9d8\"\u003e\u003ccode\u003ee90201b\u003c/code\u003e\u003c/a\u003e chore(deps): bump mistune from 3.3.0 to 3.3.3 in /libs/core (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40150\"\u003e#40150\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/4240248e7b08ed72e85ce0744350c33beddb0ac8\"\u003e\u003ccode\u003e4240248\u003c/code\u003e\u003c/a\u003e chore(deps): bump mistune from 3.3.0 to 3.3.3 in /libs/text-splitters (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40148\"\u003e#40148\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/530290a9d445069d80a68cdcd4d0da768f2aa2b0\"\u003e\u003ccode\u003e530290a\u003c/code\u003e\u003c/a\u003e chore(deps): bump uv to 0.12.8 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40092\"\u003e#40092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langchain/compare/langchain-anthropic==1.6.1...langchain-anthropic==1.7.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.139.2 to 0.141.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.141.1\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix support for background tasks and headers from dependencies in \u003ccode\u003eapp.frontend()\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16105\"\u003e#16105\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Document \u003ccode\u003eFASTAPI_ENV\u003c/code\u003e in FastAPI CLI guide. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16104\"\u003e#16104\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.141.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003eapp.frontend(check_dir=\u0026quot;auto\u0026quot;)\u003c/code\u003e, to make local development more convenient with \u003ccode\u003efastapi dev\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16102\"\u003e#16102\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.140.13\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003estatus_code\u003c/code\u003e being ignored for SSE and JSONL streaming endpoints. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15937\"\u003e#15937\u003c/a\u003e by \u003ca href=\"https://github.com/SAURABHSALVE\"\u003e\u003ccode\u003e@​SAURABHSALVE\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Fix \u003ccode\u003eformat_sse_event\u003c/code\u003e docstring rendering of \u003ccode\u003e\\n\\n\u003c/code\u003e terminator. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15613\"\u003e#15613\u003c/a\u003e by \u003ca href=\"https://github.com/AshNicolus\"\u003e\u003ccode\u003e@​AshNicolus\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Add API reference page for fastapi.sse. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15930\"\u003e#15930\u003c/a\u003e by \u003ca href=\"https://github.com/SAURABHSALVE\"\u003e\u003ccode\u003e@​SAURABHSALVE\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.140.12\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix line splitting in \u003ccode\u003eformat_sse_event\u003c/code\u003e to comply with SSE spec. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15515\"\u003e#15515\u003c/a\u003e by \u003ca href=\"https://github.com/Zawwarsami16\"\u003e\u003ccode\u003e@​Zawwarsami16\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.140.11\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eresponse_model_*\u003c/code\u003e params ignored for non-generator endpoints with \u003ccode\u003eIterable[..]\u003c/code\u003e return type. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15093\"\u003e#15093\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.140.10\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix handling sequences with nested Annotated types. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14874\"\u003e#14874\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\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Accept any base test failure as regression. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16092\"\u003e#16092\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🐛 Preserve pytest exit code in regression check. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16091\"\u003e#16091\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✅ Test PR regressions against base code. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16090\"\u003e#16090\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.140.9\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eexclude_defaults\u003c/code\u003e not propagated to dict keys and values in \u003ccode\u003ejsonable_encoder\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16043\"\u003e#16043\u003c/a\u003e by \u003ca href=\"https://github.com/MBGrao\"\u003e\u003ccode\u003e@​MBGrao\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/95f8322ee1dcda7ceace7b1c4f6c9915b36d748f\"\u003e\u003ccode\u003e95f8322\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.141.1 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16106\"\u003e#16106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f137944c435cff4e4b30ea7d12855ea88ddb868c\"\u003e\u003ccode\u003ef137944\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d62354434b2e508fe89024213b220ca8e67dea5e\"\u003e\u003ccode\u003ed623544\u003c/code\u003e\u003c/a\u003e 🐛 Fix support for background tasks and headers from dependencies in `app.fron...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/1d211b9c1009d577f39fa2b19b10d9a93a72a0ed\"\u003e\u003ccode\u003e1d211b9\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/8a1f8768411e62093e70ce142ea10863a485643c\"\u003e\u003ccode\u003e8a1f876\u003c/code\u003e\u003c/a\u003e 📝 Document \u003ccode\u003eFASTAPI_ENV\u003c/code\u003e in FastAPI CLI guide (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16104\"\u003e#16104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c7e7b651d6946c07cc9f675f39c9501d08319e57\"\u003e\u003ccode\u003ec7e7b65\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.141.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16103\"\u003e#16103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6bceb84053eb2405e9c000aad30ea13367b5ee32\"\u003e\u003ccode\u003e6bceb84\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/5429fed84e84e32672c25a953eca3429b841ce90\"\u003e\u003ccode\u003e5429fed\u003c/code\u003e\u003c/a\u003e ✨ Add \u003ccode\u003eapp.frontend(check_dir=\u0026quot;auto\u0026quot;)\u003c/code\u003e, to make local development more conven...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/628663f4f899c465da423bce681c7adf9a218948\"\u003e\u003ccode\u003e628663f\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.140.13 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16096\"\u003e#16096\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0b54fd00273019034dd30b120ac842e65d80690e\"\u003e\u003ccode\u003e0b54fd0\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.139.2...0.141.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pypdf` from 6.16.2 to 6.17.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/py-pdf/pypdf/releases\"\u003epypdf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.17.0, 2026-09-04\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLimit value for Roman numerals (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4047\"\u003e#4047\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features (ENH)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e_cmap.py: Also parse encoding for embedded CFF Type1 fonts (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4032\"\u003e#4032\u003c/a\u003e) by \u003ca href=\"https://github.com/PJBrs\"\u003e\u003ccode\u003e@​PJBrs\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance Improvements (PI)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCache repeated text extraction character lookups (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4036\"\u003e#4036\u003c/a\u003e) by \u003ca href=\"https://github.com/petermik68-sudo\"\u003e\u003ccode\u003e@​petermik68-sudo\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTreat an empty /Filter array as no filter when extracting images (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4026\"\u003e#4026\u003c/a\u003e) by \u003ca href=\"https://github.com/Anai-Guo\"\u003e\u003ccode\u003e@​Anai-Guo\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDetect a duplicate dictionary key whose first value is falsy (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4024\"\u003e#4024\u003c/a\u003e) by \u003ca href=\"https://github.com/devYRPauli\"\u003e\u003ccode\u003e@​devYRPauli\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake is_open=False collapse outline items (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3998\"\u003e#3998\u003c/a\u003e) by \u003ca href=\"https://github.com/SomSamantray\"\u003e\u003ccode\u003e@​SomSamantray\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRobustness (ROB)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMultiple changes for wrong inputs by \u003ca href=\"https://github.com/RavSinghChandan\"\u003e\u003ccode\u003e@​RavSinghChandan\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSkip trailing duplicate %%EOF markers when locating startxref (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4015\"\u003e#4015\u003c/a\u003e) by \u003ca href=\"https://github.com/Anai-Guo\"\u003e\u003ccode\u003e@​Anai-Guo\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDo not crash on a non-array destination (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3976\"\u003e#3976\u003c/a\u003e) by \u003ca href=\"https://github.com/eeshsaxena\"\u003e\u003ccode\u003e@​eeshsaxena\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle annotations without subtype during merge (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3999\"\u003e#3999\u003c/a\u003e) by \u003ca href=\"https://github.com/Nexlu1\"\u003e\u003ccode\u003e@​Nexlu1\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation (DOC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse AnnotationFlag enum instead of plain integers (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3997\"\u003e#3997\u003c/a\u003e) by \u003ca href=\"https://github.com/RavSinghChandan\"\u003e\u003ccode\u003e@​RavSinghChandan\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCode Style (STY)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMultiple small changes detected from test runs by \u003ca href=\"https://github.com/RavSinghChandan\"\u003e\u003ccode\u003e@​RavSinghChandan\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.16.2...6.17.0\"\u003eFull Changelog\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/py-pdf/pypdf/blob/main/CHANGELOG.md\"\u003epypdf's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.17.0, 2026-09-04\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLimit value for Roman numerals (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4047\"\u003e#4047\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features (ENH)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e_cmap.py: Also parse encoding for embedded CFF Type1 fonts (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4032\"\u003e#4032\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance Improvements (PI)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCache repeated text extraction character lookups (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4036\"\u003e#4036\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTreat an empty /Filter array as no filter when extracting images (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4026\"\u003e#4026\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDetect a duplicate dictionary key whose first value is falsy (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4024\"\u003e#4024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake is_open=False collapse outline items (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3998\"\u003e#3998\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRobustness (ROB)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMultiple changes for wrong inputs\u003c/li\u003e\n\u003cli\u003eSkip trailing duplicate %%EOF markers when locating startxref (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4015\"\u003e#4015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDo not crash on a non-array destination (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3976\"\u003e#3976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle annotations without subtype during merge (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3999\"\u003e#3999\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation (DOC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse AnnotationFlag enum instead of plain integers (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3997\"\u003e#3997\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCode Style (STY)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMultiple small changes detected from test runs\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.16.2...6.17.0\"\u003eFull Changelog\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/py-pdf/pypdf/commit/c76eed7bdd6c6a6f05dbcfea147bd41d6d21e598\"\u003e\u003ccode\u003ec76eed7\u003c/code\u003e\u003c/a\u003e REL: 6.17.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/89db7c4fe9315ecc964bfdf05a4e8c4b94175163\"\u003e\u003ccode\u003e89db7c4\u003c/code\u003e\u003c/a\u003e SEC: Limit value for Roman numerals (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4047\"\u003e#4047\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/a667e9db92b4fba4de03f6b782ba1f3afec4da62\"\u003e\u003ccode\u003ea667e9d\u003c/code\u003e\u003c/a\u003e ROB: Do not crash on a malformed embedded files name tree (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4037\"\u003e#4037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/816b1201e49414799052a948d002c5a3f713f199\"\u003e\u003ccode\u003e816b120\u003c/code\u003e\u003c/a\u003e ROB: Do not crash when a destination tree node entry is not an array (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4039\"\u003e#4039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/3818d66f98e73287bf36664de44dced6612e5f11\"\u003e\u003ccode\u003e3818d66\u003c/code\u003e\u003c/a\u003e ROB: Reject a page box that is not an array (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4041\"\u003e#4041\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/939ae0c0eb2bfae4e7806286f3d5ba70c2baba15\"\u003e\u003ccode\u003e939ae0c\u003c/code\u003e\u003c/a\u003e STY: Type read_object as the PdfObject it always returns (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4038\"\u003e#4038\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/9c308b419930b6e200c62fa59cd1bca5e6826af2\"\u003e\u003ccode\u003e9c308b4\u003c/code\u003e\u003c/a\u003e PI: Cache repeated text extraction character lookups (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4036\"\u003e#4036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/17d57a57cf96ea33c8c5bb23ba19b68aec3ff253\"\u003e\u003ccode\u003e17d57a5\u003c/code\u003e\u003c/a\u003e ROB: Do not crash when the XObject resources are not a dictionary (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4030\"\u003e#4030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/2f3ed6b8952e2fbafd57ca51ec250f3d98e68b79\"\u003e\u003ccode\u003e2f3ed6b\u003c/code\u003e\u003c/a\u003e ROB: Do not crash when the AcroForm entry is not a dictionary (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4029\"\u003e#4029\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/ea6ff22a6fee8504350617579a0754493f1ab334\"\u003e\u003ccode\u003eea6ff22\u003c/code\u003e\u003c/a\u003e ENH: _cmap.py: Also parse encoding for embedded CFF Type1 fonts (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4032\"\u003e#4032\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.16.2...6.17.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.16.5 to 0.16.6\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.16.6\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-09-03.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMove \u003ccode\u003epytest-fixture-autouse\u003c/code\u003e to the \u003ccode\u003erestriction\u003c/code\u003e category (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28219\"\u003e#28219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Add an autofix for \u003ccode\u003ePT020\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27993\"\u003e#27993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-tidy-imports\u003c/code\u003e] Prevent fix loop between \u003ccode\u003eTID254\u003c/code\u003e and \u003ccode\u003eTID255\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28262\"\u003e#28262\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Exclude pragma comments from line length calculation (\u003ccode\u003eI001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27313\"\u003e#27313\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eValidate unary expressions when parsing (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28233\"\u003e#28233\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e, \u003ccode\u003epylint\u003c/code\u003e] Recognize \u003ccode\u003ebuiltins.open\u003c/code\u003e (\u003ccode\u003eASYNC230\u003c/code\u003e, \u003ccode\u003ePLW1514\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28021\"\u003e#28021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Fix panic on \u003ccode\u003ematch\u003c/code\u003e subjects (\u003ccode\u003eB031\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27781\"\u003e#27781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-datetimez\u003c/code\u003e] Reject \u003ccode\u003etzinfo=None\u003c/code\u003e for \u003ccode\u003edatetime\u003c/code\u003e bounds (\u003ccode\u003eDTZ901\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28022\"\u003e#28022\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Avoid duplicate \u003ccode\u003ePT017\u003c/code\u003e diagnostics (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27918\"\u003e#27918\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Remove \u003ccode\u003elint.external\u003c/code\u003e hint for Ruff-specific suppressions (\u003ccode\u003eRUF102\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27923\"\u003e#27923\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-use-pathlib\u003c/code\u003e] Add display-only fix for \u003ccode\u003eos.listdir\u003c/code\u003e (\u003ccode\u003ePTH208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28027\"\u003e#28027\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd another example and glob reference for \u003ccode\u003elint.per-file-ignores\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28106\"\u003e#28106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd duplicate work guidance (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28229\"\u003e#28229\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Document thread offloading (\u003ccode\u003eASYNC240\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28008\"\u003e#28008\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Clarify default \u003ccode\u003eencoding\u003c/code\u003e argument handling (\u003ccode\u003eUP012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27315\"\u003e#27315\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow unary plus in match patterns on Python 3.15 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28231\"\u003e#28231\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/flying-sheep\"\u003e\u003ccode\u003e@​flying-sheep\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pikammmmm\"\u003e\u003ccode\u003e@​pikammmmm\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fly1d\"\u003e\u003ccode\u003e@​fly1d\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/waterWang\"\u003e\u003ccode\u003e@​waterWang\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Pierre-Sassoulas\"\u003e\u003ccode\u003e@​Pierre-Sassoulas\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelle-openai\"\u003e\u003ccode\u003e@​jelle-openai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ericbuehl\"\u003e\u003ccode\u003e@​ericbuehl\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tjkuson\"\u003e\u003ccode\u003e@​tjkuson\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AbhinavMir\"\u003e\u003ccode\u003e@​AbhinavMir\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Whning0513\"\u003e\u003ccode\u003e@​Whning0513\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chirizxc\"\u003e\u003ccode\u003e@​chirizxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- 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.16.6\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-09-03.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMove \u003ccode\u003epytest-fixture-autouse\u003c/code\u003e to the \u003ccode\u003erestriction\u003c/code\u003e category (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28219\"\u003e#28219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Add an autofix for \u003ccode\u003ePT020\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27993\"\u003e#27993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-tidy-imports\u003c/code\u003e] Prevent fix loop between \u003ccode\u003eTID254\u003c/code\u003e and \u003ccode\u003eTID255\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28262\"\u003e#28262\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Exclude pragma comments from line length calculation (\u003ccode\u003eI001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27313\"\u003e#27313\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eValidate unary expressions when parsing (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28233\"\u003e#28233\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e, \u003ccode\u003epylint\u003c/code\u003e] Recognize \u003ccode\u003ebuiltins.open\u003c/code\u003e (\u003ccode\u003eASYNC230\u003c/code\u003e, \u003ccode\u003ePLW1514\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28021\"\u003e#28021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Fix panic on \u003ccode\u003ematch\u003c/code\u003e subjects (\u003ccode\u003eB031\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27781\"\u003e#27781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-datetimez\u003c/code\u003e] Reject \u003ccode\u003etzinfo=None\u003c/code\u003e for \u003ccode\u003edatetime\u003c/code\u003e bounds (\u003ccode\u003eDTZ901\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28022\"\u003e#28022\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Avoid duplicate \u003ccode\u003ePT017\u003c/code\u003e diagnostics (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27918\"\u003e#27918\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Remove \u003ccode\u003elint.external\u003c/code\u003e hint for Ruff-specific suppressions (\u003ccode\u003eRUF102\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27923\"\u003e#27923\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-use-pathlib\u003c/code\u003e] Add display-only fix for \u003ccode\u003eos.listdir\u003c/code\u003e (\u003ccode\u003ePTH208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28027\"\u003e#28027\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd another example and glob reference for \u003ccode\u003elint.per-file-ignores\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28106\"\u003e#28106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd duplicate work guidance (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28229\"\u003e#28229\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Document thread offloading (\u003ccode\u003eASYNC240\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28008\"\u003e#28008\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Clarify default \u003ccode\u003eencoding\u003c/code\u003e argument handling (\u003ccode\u003eUP012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27315\"\u003e#27315\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow unary plus in match patterns on Python 3.15 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28231\"\u003e#28231\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/flying-sheep\"\u003e\u003ccode\u003e@​flying-sheep\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pikammmmm\"\u003e\u003ccode\u003e@​pikammmmm\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fly1d\"\u003e\u003ccode\u003e@​fly1d\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/waterWang\"\u003e\u003ccode\u003e@​waterWang\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Pierre-Sassoulas\"\u003e\u003ccode\u003e@​Pierre-Sassoulas\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelle-openai\"\u003e\u003ccode\u003e@​jelle-openai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ericbuehl\"\u003e\u003ccode\u003e@​ericbuehl\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tjkuson\"\u003e\u003ccode\u003e@​tjkuson\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AbhinavMir\"\u003e\u003ccode\u003e@​AbhinavMir\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Whning0513\"\u003e\u003ccode\u003e@​Whning0513\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chirizxc\"\u003e\u003ccode\u003e@​chirizxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\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/22f65a2ab5052990503985c7c794de37598d531e\"\u003e\u003ccode\u003e22f65a2\u003c/code\u003e\u003c/a\u003e Bump 0.16.6 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28280\"\u003e#28280\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7cc9f1ed53e5ce175f17fde3a75fe792ac41e8cd\"\u003e\u003ccode\u003e7cc9f1e\u003c/code\u003e\u003c/a\u003e [ty] Document \u003ccode\u003eCallableTypeKind\u003c/code\u003e variants (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28277\"\u003e#28277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/056ce07a895c217dab7929a616540c246cf8a078\"\u003e\u003ccode\u003e056ce07\u003c/code\u003e\u003c/a\u003e Add UV_LOCKED to all workflows (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28261\"\u003e#28261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/6d6e35d03a72d23d3b0f23fb348692b03c9b81b6\"\u003e\u003ccode\u003e6d6e35d\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Avoid duplicate \u003ccode\u003ePT017\u003c/code\u003e diagnostics (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27918\"\u003e#27918\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/80b4891b64cb916dce080e8fa15af5c2179d776a\"\u003e\u003ccode\u003e80b4891\u003c/code\u003e\u003c/a\u003e [ty] Temporarily disable tuple types in property tests (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28275\"\u003e#28275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/3f7a54d1d7b9480a18d86a8211bf676354a2f8a0\"\u003e\u003ccode\u003e3f7a54d\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-tidy-imports\u003c/code\u003e] Prevent fix loop between \u003ccode\u003eTID254\u003c/code\u003e and \u003ccode\u003eTID255\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28262\"\u003e#28262\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/35656cf37d34f30116d4f4a9cb13853a6ad9fd0d\"\u003e\u003ccode\u003e35656cf\u003c/code\u003e\u003c/a\u003e [ty] Preserve deprecations on decorated callables (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28256\"\u003e#28256\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d2626c866ee08495cfa0da5236e130030d37e0cf\"\u003e\u003ccode\u003ed2626c8\u003c/code\u003e\u003c/a\u003e [ty] Reject missing attributes on \u003ccode\u003etype[]\u003c/code\u003e aliases (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28267\"\u003e#28267\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ee6a6d19aa0707df942febe9768488d39f383c8c\"\u003e\u003ccode\u003eee6a6d1\u003c/code\u003e\u003c/a\u003e [ty] Support ParamSpecs in \u003ccode\u003eConstraintSet\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28028\"\u003e#28028\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7f6a170080dab08f754ef086369a2623c70f753d\"\u003e\u003ccode\u003e7f6a170\u003c/code\u003e\u003c/a\u003e [ty] Move bound APIs to constraint owners (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28094\"\u003e#28094\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.16.5...0.16.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `anyio` from 4.14.2 to 4.15.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.15.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImplemented a compatibility fix for supporting direct access of \u003ccode\u003eanyio.*\u003c/code\u003e submodules from the main package even when those submodules were not directly imported first (\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1311\"\u003e#1311\u003c/a\u003e \u0026lt;\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1311%5C%3E\"\u003eagronholm/anyio#1311\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.15.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support for the newer keyword-only arguments on \u003ccode\u003eanyio.Path\u003c/code\u003e methods to match the standard library \u003ccode\u003epathlib.Path\u003c/code\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eexists()\u003c/code\u003e (Python 3.12+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eis_dir()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eis_file()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eowner()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003egroup()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003enewline\u003c/code\u003e on \u003ccode\u003eread_text()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e(\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1286\"\u003e#1286\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1293\"\u003e#1293\u003c/a\u003e; PR by \u003ca href=\"https://github.com/jaideeppyne\"\u003e\u003ccode\u003e@​jaideeppyne\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003eamap\u003c/code\u003e, \u003ccode\u003egather\u003c/code\u003e, and \u003ccode\u003eas_completed\u003c/code\u003e utility functions to simplify common patterns (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1173\"\u003e#1173\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003e--anyio-mode\u003c/code\u003e command-line option as an alternative to the \u003ccode\u003eanyio_mode\u003c/code\u003e ini setting, and fix the pytest plugin's auto mode detection to recognize the mode when set via either mechanism(e.g: \u003ccode\u003epytest_asyncio\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1242\"\u003e#1242\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003eanyio.Future\u003c/code\u003e synchronization primitive which behaves similar to \u003ccode\u003easyncio.Future\u003c/code\u003e, allowing tasks to wait for a value (or exception) from another task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1146\"\u003e#1146\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded guidance for managing multiple memory object stream producers and consumers with cloned streams (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/330\"\u003e#330\u003c/a\u003e; PR by \u003ca href=\"https://github.com/nightcityblade\"\u003e\u003ccode\u003e@​nightcityblade\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003eStapledObjectStream.send_nowait()\u003c/code\u003e that delegates to the underlying \u003ccode\u003eObjectSendStream\u003c/code\u003e, if it implements it (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1241\"\u003e#1241\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003emove_on_at()\u003c/code\u003e and \u003ccode\u003efail_at()\u003c/code\u003e functions to complement \u003ccode\u003emove_on_after()\u003c/code\u003e and \u003ccode\u003efail_after()\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged the default name for a task spawned with \u003ccode\u003eTaskGroup.create_task(func())\u003c/code\u003e to match the default task name for the analogous task spawned with \u003ccode\u003eTaskGroup.start_soon(func)\u003c/code\u003e or \u003ccode\u003eTaskGroup.start(func)\u003c/code\u003e in more situations. Previously, the default name of a \u003ccode\u003eTaskGroup.create_task\u003c/code\u003e task never included the module name. (The default name for a task spawned with \u003ccode\u003eTaskGroup.start_soon\u003c/code\u003e or \u003ccode\u003eTaskGroup.start\u003c/code\u003e typically includes the module name.) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1234\"\u003e#1234\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged the \u003ccode\u003eanyio\u003c/code\u003e and \u003ccode\u003eanyio.abc\u003c/code\u003e modules to lazily (much like \u003ccode\u003e810\u003c/code\u003e) import the necessary submodules. This is done by parsing the AST of the module and building a lookup table from the \u003ccode\u003eif TYPE_CHECKING:\u003c/code\u003e block. A fallback mode has been provided for installations where the source code is unavailable (e.g. PyInstaller). (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1169\"\u003e#1169\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed free-threading compatibility issues arising from the fact that on Python 3.14 free-threading builds, newly created threads inherit the current context by default, causing AnyIO to behave erroneously in relation to \u003ccode\u003estart_blocking_portal()\u003c/code\u003e and \u003ccode\u003eanyio.to_thread.run_sync()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1224\"\u003e#1224\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eSpooledTemporaryFile.readinto()\u003c/code\u003e and \u003ccode\u003ereadinto1()\u003c/code\u003e reading twice before rollover, so the destination buffer was overwritten by the second read and the file position advanced twice, silently losing data (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1215\"\u003e#1215\u003c/a\u003e; PR by \u003ca href=\"https://github.com/c-tonneslan\"\u003e\u003ccode\u003e@​c-tonneslan\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a \u003ccode\u003ereason\u003c/code\u003e parameter to \u003ccode\u003efail_after\u003c/code\u003e (and the new \u003ccode\u003efail_at\u003c/code\u003e) allowing for added exception context when raising \u003ccode\u003eTimeoutError\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1227\"\u003e#1227\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed the default \u003ccode\u003eTaskHandle.name\u003c/code\u003e missing part of the task name for tasks started with \u003ccode\u003eTaskGroup.start\u003c/code\u003e on Trio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1231\"\u003e#1231\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eanyio.run\u003c/code\u003e leaking, or at least, delaying collection of loop and root_task due to the root task being cached in a \u003ccode\u003eRunVar\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1203\"\u003e#1203\u003c/a\u003e; PR by \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eanyio.Path.with_stem()\u003c/code\u003e silently producing a wrong path (e.g. \u003ccode\u003ePath(\u0026quot;.txt\u0026quot;)\u003c/code\u003e) instead of raising \u003ccode\u003eValueError\u003c/code\u003e when given an empty stem on a path with a non-empty suffix, unlike \u003ccode\u003epathlib.PurePath.with_stem\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1200\"\u003e#1200\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Sanjays2402\"\u003e\u003ccode\u003e@​Sanjays2402\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eUNIXSocketStream.aclose()\u003c/code\u003e raising \u003ccode\u003easyncio.InvalidStateError\u003c/code\u003e when a concurrent receive or send operation had just been cancelled on the asyncio backend (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1267\"\u003e#1267\u003c/a\u003e; PR by \u003ca href=\"https://github.com/alloutflo\"\u003e\u003ccode\u003e@​alloutflo\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed the pytest plugin importing the deprecated \u003ccode\u003e_pytest.python.CallSpec2\u003c/code\u003e alias, which triggers \u003ccode\u003ePytestRemovedIn10Warning\u003c/code\u003e on \u003ccode\u003epytest\u0026gt;=9.2\u003c/code\u003e and crashes pytest at startup when \u003ccode\u003efilterwarnings = error\u003c/code\u003e is configured (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1271\"\u003e#1271\u003c/a\u003e; PR by \u003ca href=\"https://github.com/matthewfeickert\"\u003e\u003ccode\u003e@​matthewfeickert\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed an asyncio worker thread race that could raise \u003ccode\u003eRuntimeError\u003c/code\u003e when the event loop closed between checking its state and scheduling the worker result (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1265\"\u003e#1265\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hansu650\"\u003e\u003ccode\u003e@​hansu650\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eCapacityLimiter\u003c/code\u003e on the asyncio backend over-granting tokens when \u003ccode\u003etotal_tokens\u003c/code\u003e was raised while the limiter was over-subscribed (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1223\"\u003e#1223\u003c/a\u003e; PR by \u003ca href=\"https://github.com/zelinewang\"\u003e\u003ccode\u003e@​zelinewang\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/ffcd1542cd6d127980205f90a0100078849dd703\"\u003e\u003ccode\u003effcd154\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0ecf5ed98d294242509b043ebd1a0843e52d892f\"\u003e\u003ccode\u003e0ecf5ed\u003c/code\u003e\u003c/a\u003e Added a workaround for third party code accessing unimported submodules (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1309\"\u003e#1309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/928366259543412a2deb1e2ba09ea45ffa92ef4f\"\u003e\u003ccode\u003e9283662\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d137692a90f76e4f71605e32ea5ca94cab3a539d\"\u003e\u003ccode\u003ed137692\u003c/code\u003e\u003c/a\u003e Improved the instructions for AI agents\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/033fc52b8fa8e90c5d0ef24b10b3860e974a6265\"\u003e\u003ccode\u003e033fc52\u003c/code\u003e\u003c/a\u003e Shield TemporaryDirectory cleanup from cancellation (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1304\"\u003e#1304\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/942e9a6552cc10b5aaa779d84bfc8e2c3d5fcffc\"\u003e\u003ccode\u003e942e9a6\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1305\"\u003e#1305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b825c3be7cb4ca1a8000b8065d4e147843deb704\"\u003e\u003ccode\u003eb825c3b\u003c/code\u003e\u003c/a\u003e Fixed pyproject.toml changes not triggering the test suite\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9727dc504681e2986b5bc285de9571fb467539af\"\u003e\u003ccode\u003e9727dc5\u003c/code\u003e\u003c/a\u003e Fixed start inconsistencies between trio and asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1198\"\u003e#1198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b05fe6d160a640355c201363cab286a7d2581da8\"\u003e\u003ccode\u003eb05fe6d\u003c/code\u003e\u003c/a\u003e Fixed wrong type in move_on_after (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1297\"\u003e#1297\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/44d0c93cc20079acbf38ba4dbed5ab9df323f153\"\u003e\u003ccode\u003e44d0c93\u003c/code\u003e\u003c/a\u003e Fixed asyncio task group coroutine cleanup (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1275\"\u003e#1275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.14.2...4.15.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `langchain-core` from 1.6.1 to 1.6.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langchain/releases\"\u003elangchain-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elangchain-core==1.6.2\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.6.1\u003c/p\u003e\n\u003cp\u003erelease(core): 1.6.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40209\"\u003e#40209\u003c/a\u003e)\nfeat(openai): support async tools (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40208\"\u003e#40208\u003c/a\u003e)\nchore(deps): bump mistune from 3.3.0 to 3.3.3 in /libs/core (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40150\"\u003e#40150\u003c/a\u003e)\nchore(deps): bump tornado from 6.5.7 to 6.5.8 in /libs/core (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40113\"\u003e#40113\u003c/a\u003e)\nfix(core): avoid mutation in google-genai standard content (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40023\"\u003e#40023\u003c/a\u003e)\nfix(core): avoid mutation in bedrock converse standard content (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40022\"\u003e#40022\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/langchain-ai/langchain/commit/8215039dea978372bd3fd95b88663a11b0159043\"\u003e\u003ccode\u003e8215039\u003c/code\u003e\u003c/a\u003e release(core): 1.6.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40209\"\u003e#40209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/3f212e7a88d2acd0d26ac4b5755f5c76c6a88e37\"\u003e\u003ccode\u003e3f212e7\u003c/code\u003e\u003c/a\u003e feat(openai): support async tools (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40208\"\u003e#40208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/1a3d81756fa249e4054f036ca61e6fd56b3f78df\"\u003e\u003ccode\u003e1a3d817\u003c/code\u003e\u003c/a\u003e feat(openai): support \u003ccode\u003econfiguration_update\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40201\"\u003e#40201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/aac7904ff4baea90a24c6615842f0a6c48dd6c93\"\u003e\u003ccode\u003eaac7904\u003c/code\u003e\u003c/a\u003e chore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40198\"\u003e#40198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/0d50cbddd9963ceb28fc48dcacd26f7258f2a05d\"\u003e\u003ccode\u003e0d50cbd\u003c/code\u003e\u003c/a\u003e docs: add openwiki (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40183\"\u003e#40183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/79cab2dc7f58be720cac43db3677b4c1fd971f91\"\u003e\u003ccode\u003e79cab2d\u003c/code\u003e\u003c/a\u003e release(anthropic): 1.7.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40181\"\u003e#40181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/1e6a4f0b45b60475f566f3ad49fb32ea99d22233\"\u003e\u003ccode\u003e1e6a4f0\u003c/code\u003e\u003c/a\u003e chore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40171\"\u003e#40171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/8330dfe987988c1bcbbc5e8d9af9a67e5a1c2744\"\u003e\u003ccode\u003e8330dfe\u003c/code\u003e\u003c/a\u003e docs(langchain): runnable \u003ccode\u003elangchain.mcp\u003c/code\u003e examples (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39976\"\u003e#39976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/280442b54c80db2175ced4a20ab59eab86a32dc1\"\u003e\u003ccode\u003e280442b\u003c/code\u003e\u003c/a\u003e feat(langchain): \u003ccode\u003elangchain.mcp\u003c/code\u003e namespace, \u003ccode\u003eMCPAdapter\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39939\"\u003e#39939\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/f5ee2b65f4cf2f1a9fe688bcae6ad2af966582bd\"\u003e\u003ccode\u003ef5ee2b6\u003c/code\u003e\u003c/a\u003e chore(chroma): bump Pygments security constraint (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40162\"\u003e#40162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langchain/compare/langchain-core==1.6.1...langchain-core==1.6.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `langsmith` from 0.11.2 to 0.12.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langsmith-sdk/releases\"\u003elangsmith's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.12.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003erelease(js): 0.10.1 by \u003ca href=\"https://github.com/QuentinBrosse\"\u003e\u003ccode\u003e@​QuentinBrosse\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3477\"\u003elangchain-ai/langsmith-sdk#3477\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump the actions-minor-and-patch 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/langchain-ai/langsmith-sdk/pull/3465\"\u003elangchain-ai/langsmith-sdk#3465\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps-dev): bump types-psutil from 7.2.2.20260518 to 7.2.2.20260827 in /python 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/langchain-ai/langsmith-sdk/pull/3471\"\u003elangchain-ai/langsmith-sdk#3471\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump the py-major group in /python 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/langchain-ai/langsmith-sdk/pull/3468\"\u003elangchain-ai/langsmith-sdk#3468\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps-dev): bump types-tqdm from 4.70.0.20260731 to 4.70.0.20260827 in /python 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/langchain-ai/langsmith-sdk/pull/3469\"\u003elangchain-ai/langsmith-sdk#3469\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps-dev): bump types-pyyaml from 6.0.12.20260724 to 6.0.12.20260815 in /python 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/langchain-ai/langsmith-sdk/pull/3470\"\u003elangchain-ai/langsmith-sdk#3470\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump the py-minor-and-patch group across 1 directory with 21 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/langchain-ai/langsmith-sdk/pull/3473\"\u003elangchain-ai/langsmith-sdk#3473\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump astral-sh/setup-uv from 9.0.0 to 10.0.1 in the actions-major 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/langchain-ai/langsmith-sdk/pull/3466\"\u003elangchain-ai/langsmith-sdk#3466\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump nltk from 3.10.0 to 3.10.3 in /python 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/langchain-ai/langsmith-sdk/pull/3481\"\u003elangchain-ai/langsmith-sdk#3481\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(py): add 429 and 500 to status_forcelist in retry configuration by \u003ca href=\"https://github.com/thibautlehmann\"\u003e\u003ccode\u003e@​thibautlehmann\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3480\"\u003elangchain-ai/langsmith-sdk#3480\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(js): patch faker and browserslist advisories by \u003ca href=\"https://github.com/jkennedyvz\"\u003e\u003ccode\u003e@​jkennedyvz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3487\"\u003elangchain-ai/langsmith-sdk#3487\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(js): patch fast-uri advisories by \u003ca href=\"https://github.com/jkennedyvz\"\u003e\u003ccode\u003e@​jkennedyvz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3489\"\u003elangchain-ai/langsmith-sdk#3489\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(sandbox): support snapshot tags in the Python client by \u003ca href=\"https://github.com/ramon-langchain\"\u003e\u003ccode\u003e@​ramon-langchain\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3447\"\u003elangchain-ai/langsmith-sdk#3447\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(py,js): retry rate-limited sandbox websocket connections by \u003ca href=\"https://github.com/langchain-infra\"\u003e\u003ccode\u003e@​langchain-infra\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3493\"\u003elangchain-ai/langsmith-sdk#3493\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erelease(py): 0.12.2 by \u003ca href=\"https://github.com/langchain-infra\"\u003e\u003ccode\u003e@​langchain-infra\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3494\"\u003elangchain-ai/langsmith-sdk#3494\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/thibautlehmann\"\u003e\u003ccode\u003e@​thibautlehmann\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3480\"\u003elangchain-ai/langsmith-sdk#3480\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/langchain-ai/langsmith-sdk/compare/v0.12.1...v0.12.2\"\u003ehttps://github.com/langchain-ai/langsmith-sdk/compare/v0.12.1...v0.12.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.12.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003erelease(js): 0.10.0 by \u003ca href=\"https://github.com/emil-lc\"\u003e\u003ccode\u003e@​emil-lc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3474\"\u003elangchain-ai/langsmith-sdk#3474\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(py,js): drain the anonymizer walk queue in O(1) [LSDK-412] by \u003ca href=\"https://github.com/QuentinBrosse\"\u003e\u003ccode\u003e@​QuentinBrosse\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3475\"\u003elangchain-ai/langsmith-sdk#3475\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erelease(py): 0.12.1 by \u003ca href=\"https://github.com/QuentinBrosse\"\u003e\u003ccode\u003e@​QuentinBrosse\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3478\"\u003elangchain-ai/langsmith-sdk#3478\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/langchain-ai/langsmith-sdk/compare/v0.12.0...v0.12.1\"\u003ehttps://github.com/langchain-ai/langsmith-sdk/compare/v0.12.0...v0.12.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.12.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: enable CodSpeed flame graphs and pin the benchmarks to one CPU by \u003ca href=\"https://github.com/emil-lc\"\u003e\u003ccode\u003e@​emil-lc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3449\"\u003elangchain-ai/langsmith-sdk#3449\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(py,js)!: make trace sampling deterministic by \u003ca href=\"https://github.com/emil-lc\"\u003e\u003ccode\u003e@​emil-lc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3183\"\u003elangchain-ai/langsmith-sdk#3183\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(py): suppress import-untyped on the optional langsmith_pyo3 import by \u003ca href=\"https://github.com/QuentinBrosse\"\u003e\u003ccode\u003e@​QuentinBrosse\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3462\"\u003elangchain-ai/langsmith-sdk#3462\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(py)!: swtich to httpx2 dependency while keeping httpx as a fallback by \u003ca href=\"https://github.com/emil-lc\"\u003e\u003ccode\u003e@​emil-lc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3406\"\u003elangchain-ai/langsmith-sdk#3406\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix!: fail-closed when per-function anonymization callables fail by \u003ca href=\"https://github.com/emil-lc\"\u003e\u003ccode\u003e@​emil-lc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3328\"\u003elangchain-ai/langsmith-sdk#3328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(py): compress replica writes that carry their own credentials by \u003ca href=\"https://github.com/emil-lc\"\u003e\u003ccode\u003e@​emil-lc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3448\"\u003elangchain-ai/langsmith-sdk#3448\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eperf(py): serialize identical replicas once, into one frame by \u003ca href=\"https://github.com/emil-lc\"\u003e\u003ccode\u003e@​emil-lc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3450\"\u003elangchain-ai/langsmith-sdk#3450\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erelease(py): 0.12.0 by \u003ca href=\"https://github.com/emil-lc\"\u003e\u003ccode\u003e@​emil-lc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3472\"\u003elangchain-ai/langsmith-sdk#3472\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/langchain-ai/langsmith-sdk/compare/v0.11.2...v0.12.0\"\u003ehttps://github.com/langchain-ai/langsmith-sdk/compare/v0.11.2...v0.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/langchain-ai/langsmith-sdk/commit/aadfe00ed2cf31808d14a32646e73030a9eeb0b5\"\u003e\u003ccode\u003eaadfe00\u003c/code\u003e\u003c/a\u003e release(py): 0.12.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/issues/3494\"\u003e#3494\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langsmith-sdk/commit/457bda3d1ade7200b136f3e81db96901042bae54\"\u003e\u003ccode\u003e457bda3\u003c/code\u003e\u003c/a\u003e fix(py,js): retry rate-limited sandbox websocket connections (\u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/issues/3493\"\u003e#3493\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langsmith-sdk/commit/9d1dff7ed3c1c34d314f14016473aebe772a17ea\"\u003e\u003ccode\u003e9d1dff7\u003c/code\u003e\u003c/a\u003e feat(sandbox): support snapshot tags in the Python client (\u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/issues/3447\"\u003e#3447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langsmith-sdk/commit/6c387811c4bc82691281a3e5d354214203b32bdb\"\u003e\u003ccode\u003e6c38781\u003c/code\u003e\u003c/a\u003e fix(js): patch fast-uri advisories (\u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/issues/3489\"\u003e#3489\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langsmith-sdk/commit/abf10e88ee851a268d2cc801999272bbe2fb803f\"\u003e\u003ccode\u003eabf10e8\u003c/code\u003e\u003c/a\u003e fix(js): patch faker and browserslist advisories (\u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/issues/3487\"\u003e#3487\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langsmith-sdk/commit/ac1b337a7f63d5c9d8a8686f7234da9d986ddbcb\"\u003e\u003ccode\u003eac1b337\u003c/code\u003e\u003c/a\u003e fix(py): add 429 and 500 to status_forcelist in retry configuration (\u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/issues/3480\"\u003e#3480\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langsmith-sdk/commit/0ef5047728e3ca7ba6f684b27b59df7ef91188d0\"\u003e\u003ccode\u003e0ef5047\u003c/code\u003e\u003c/a\u003e chore(deps): bump nltk from 3.10.0 to 3.10.3 in /python (\u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/issues/3481\"\u003e#3481\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langsmith-sdk/commit/4a6e78e5c6d697c338636b1efae1e19537a0dfd1\"\u003e\u003ccode\u003e4a6e78e\u003c/code\u003e\u003c/a\u003e chore(deps): bump astral-sh/setup-uv from 9.0.0 to 10.0.1 in the actions-majo...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langsmith-sdk/commit/f60630496d48d42645f0b0b57ac6cebcc665990b\"\u003e\u003ccode\u003ef606304\u003c/code\u003e\u003c/a\u003e chore(deps): bump the py-minor-and-patch group across 1 directory with 21 upd...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langsmith-sdk/commit/7d969c5ed53291d6f892531e8b1edb68627e377d\"\u003e\u003ccode\u003e7d969c5\u003c/code\u003e\u003c/a\u003e chore(deps-dev): bump types-pyyaml from 6.0.12.20260724 to 6.0.12.20260815 in...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langsmith-sdk/compare/v0.11.2...v0.12.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psycopg-binary` from 3.3.4 to 3.3.5\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psycopg/psycopg/blob/master/docs/news.rst\"\u003epsycopg-binary's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e.. currentmodule:: psycopg\u003c/p\u003e\n\u003cp\u003e.. index::\nsingle: Release notes\nsingle: News\u003c/p\u003e\n\u003ch1\u003e\u003ccode\u003epsycopg\u003c/code\u003e release notes\u003c/h1\u003e\n\u003ch2\u003eCurrent release\u003c/h2\u003e\n\u003cp\u003ePsycopg 3.3.5\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDiscard prepared statements upon :sql:\u003ccode\u003eALTER *\u003c/code\u003e or \u003ccode\u003eDISCARD *\u003c/code\u003e\n(:ticket:\u003ccode\u003e[#1307](https://github.com/psycopg/psycopg/issues/1307)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e!ProgrammingError\u003c/code\u003e when dumping non-\u003ccode\u003e!None\u003c/code\u003e values with\nno \u003ccode\u003e!NoneType\u003c/code\u003e dumper registered in python implementation (:ticket:\u003ccode\u003e[#1325](https://github.com/psycopg/psycopg/issues/1325)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e!wait_selector\u003c/code\u003e wait function to not raise \u003ccode\u003e!KeyError\u003c/code\u003e\n(:ticket:\u003ccode\u003e[#1327](https://github.com/psycopg/psycopg/issues/1327)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e!DataError\u003c/code\u003e messages leaking the literal \u003ccode\u003e{...}\u003c/code\u003e placeholder instead\nof the offending value when loading a pre-year-1 :sql:\u003ccode\u003etimestamp\u003c/code\u003e or a\nmalformed binary :sql:\u003ccode\u003ejsonb\u003c/code\u003e value (:ticket:\u003ccode\u003e[#1372](https://github.com/psycopg/psycopg/issues/1372)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003e!DataError\u003c/code\u003e instead of \u003ccode\u003e!ValueError\u003c/code\u003e when \u003ccode\u003e~psycopg.rows.namedtuple_row\u003c/code\u003e\nreceives duplicate column names (:ticket:\u003ccode\u003e[#1348](https://github.com/psycopg/psycopg/issues/1348)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003e!DataError\u003c/code\u003e on inconsistent copy data (:tickets:\u003ccode\u003e[#1359](https://github.com/psycopg/psycopg/issues/1359), [#1360](https://github.com/psycopg/psycopg/issues/1360)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eHandle client encodings aliases (:ticket:\u003ccode\u003e[#1363](https://github.com/psycopg/psycopg/issues/1363)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix building C extension with Cython 3.3.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePsycopg 3.3.4\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix possible spurious connection timeout in systems with very long uptimes\nin C extension (:ticket:\u003ccode\u003e[#1280](https://github.com/psycopg/psycopg/issues/1280)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix client-side adaptation of enums whose name require quotes\n(:ticket:\u003ccode\u003e[#1298](https://github.com/psycopg/psycopg/issues/1298)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eConsistently populate \u003ccode\u003e~Cursor.statusmessage\u003c/code\u003e after \u003ccode\u003e~Cursor.executemany()\u003c/code\u003e\n(:ticket:\u003ccode\u003e[#1302](https://github.com/psycopg/psycopg/issues/1302)\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePsycopg 3.3.3\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRetain \u003ccode\u003eError.pgconn\u003c/code\u003e when raising a single exception for multiple connection\nattempt errors (:ticket:\u003ccode\u003e[#1246](https://github.com/psycopg/psycopg/issues/1246)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eReturn a proper error when server sends \u003ccode\u003eErrorResponse\u003c/code\u003e for a \u003ccode\u003eSync\u003c/code\u003e after\na \u003ccode\u003eParse\u003c/code\u003e (:ticket:\u003ccode\u003e[#1260](https://github.com/psycopg/psycopg/issues/1260)\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/psycopg/commit/ea542c9534cc9841d50450e0c156b549cc6c805a\"\u003e\u003ccode\u003eea542c9\u003c/code\u003e\u003c/a\u003e chore: bump psycopg package version to 3.3.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/8d31e4711c22b206d8863b9397b3b34f5b106e4d\"\u003e\u003ccode\u003e8d31e47\u003c/code\u003e\u003c/a\u003e chore(deps): bump the actions group across 1 directory with 4 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/268f863e0e8dbdbaf4f10616ebd14ff00edaeb51\"\u003e\u003ccode\u003e268f863\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg/issues/1370\"\u003e#1370\u003c/a\u003e from Sanjays2402/fix/truncated-binary-copy-error\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/a412fa4d682f035a9cf3c7886a5c95c15c64ba96\"\u003e\u003ccode\u003ea412fa4\u003c/code\u003e\u003c/a\u003e docs: put together different issues fixed around copy parsing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/f757307068aef06e439cf164915a3781acf483b5\"\u003e\u003ccode\u003ef757307\u003c/code\u003e\u003c/a\u003e fix: clearer error messages according to truncated copy message part\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/b1f17c44096b8fbc90836d9652d083f23c88e28d\"\u003e\u003ccode\u003eb1f17c4\u003c/code\u003e\u003c/a\u003e test: move existing COPY format parsing tests into a single module\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/21eba573f9356276b2a3e0b7c1d86fad03f2872f\"\u003e\u003ccode\u003e21eba57\u003c/code\u003e\u003c/a\u003e test: drop usel...\n\n_Description has been truncated_","html_url":"https://github.com/EricMG13/CAOS-LangMVP/pull/84","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/EricMG13%2FCAOS-LangMVP/issues/84","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/84/packages"},{"uuid":"5374759189","node_id":"PR_kwDOHfpFZM8AAAABChaFPg","number":268,"state":"closed","title":"Bump the python-updates group with 15 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-07T14:08:58.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-07T12:35:59.000Z","updated_at":"2026-09-07T14:09:01.000Z","time_to_close":5579,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python-updates","update_count":15,"packages":[{"name":"hvac","old_version":"1.2.1","new_version":"2.4.0","repository_url":"https://github.com/hvac/hvac"},{"name":"prometheus-client","old_version":"0.15.0","new_version":"0.21.1","repository_url":"https://github.com/prometheus/client_python"},{"name":"requests","old_version":"2.31.0","new_version":"2.32.4","repository_url":"https://github.com/psf/requests"},{"name":"pyyaml","old_version":"6.0.1","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"cerberus","old_version":"1.3.5","new_version":"1.3.8","repository_url":"https://github.com/pyeve/cerberus"},{"name":"black","old_version":"23.10.0","new_version":"24.8.0","repository_url":"https://github.com/psf/black"},{"name":"pylint","old_version":"2.17.7","new_version":"3.2.7","repository_url":"https://github.com/pylint-dev/pylint"},{"name":"pytest","old_version":"7.4.2","new_version":"8.3.5","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"4.1.0","new_version":"5.0.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"types-requests","old_version":"2.31.0.10","new_version":"2.32.0.20241016","repository_url":"https://github.com/python/typeshed"},{"name":"types-pyyaml","old_version":"6.0.12.12","new_version":"6.0.12.20241230","repository_url":"https://github.com/python/typeshed"},{"name":"bandit","old_version":"1.7.5","new_version":"1.7.10","repository_url":"https://github.com/PyCQA/bandit"},{"name":"pytest-mock","old_version":"3.12.0","new_version":"3.14.1","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"mock","old_version":"4.0.3","new_version":"5.2.0","repository_url":"https://github.com/testing-cabal/mock"},{"name":"mypy","old_version":"1.6.1","new_version":"1.14.1","repository_url":"https://github.com/python/mypy"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-updates group with 15 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [hvac](https://github.com/hvac/hvac) | `1.2.1` | `2.4.0` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.15.0` | `0.21.1` |\n| [requests](https://github.com/psf/requests) | `2.31.0` | `2.32.4` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.1` | `6.0.3` |\n| [cerberus](https://github.com/pyeve/cerberus) | `1.3.5` | `1.3.8` |\n| [black](https://github.com/psf/black) | `23.10.0` | `24.8.0` |\n| [pylint](https://github.com/pylint-dev/pylint) | `2.17.7` | `3.2.7` |\n| [pytest](https://github.com/pytest-dev/pytest) | `7.4.2` | `8.3.5` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `4.1.0` | `5.0.0` |\n| [types-requests](https://github.com/python/typeshed) | `2.31.0.10` | `2.32.0.20241016` |\n| [types-pyyaml](https://github.com/python/typeshed) | `6.0.12.12` | `6.0.12.20241230` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.7.5` | `1.7.10` |\n| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.12.0` | `3.14.1` |\n| [mock](https://github.com/testing-cabal/mock) | `4.0.3` | `5.2.0` |\n| [mypy](https://github.com/python/mypy) | `1.6.1` | `1.14.1` |\n\nUpdates `hvac` from 1.2.1 to 2.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/hvac/hvac/releases\"\u003ehvac's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.4.0\u003c/h2\u003e\n\u003ch2\u003e🚀 Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eadd audience param to kubernetes role creation (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1224\"\u003eGH-1224\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e📚 Documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003edocs: fix AppRole.login docstring (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1182\"\u003eGH-1182\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧰 Miscellaneous\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix a typo in read_secret_version warning message (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1219\"\u003eGH-1219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePin consul version in CI (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1210\"\u003eGH-1210\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to \u003ca href=\"https://github.com/EmFl\"\u003e\u003ccode\u003e@​EmFl\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/briantist\"\u003e\u003ccode\u003e@​briantist\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/deamen\"\u003e\u003ccode\u003e@​deamen\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot], \u003ca href=\"https://github.com/evan-cohen\"\u003e\u003ccode\u003e@​evan-cohen\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/roshan-baladhanvi\"\u003e\u003ccode\u003e@​roshan-baladhanvi\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e for their lovely contributions.\u003c/p\u003e\n\u003ch2\u003ev2.3.0\u003c/h2\u003e\n\u003ch2\u003e🚀 Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImplement the /sys/wrapping/wrap endpoint (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1172\"\u003eGH-1172\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd support for Vault Raft auto-snapshot endpoints. (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1169\"\u003eGH-1169\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧰 Miscellaneous\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDependencies/security updates (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1174\"\u003eGH-1174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate artifact actions to v4 (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1173\"\u003eGH-1173\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to \u003ca href=\"https://github.com/briantist\"\u003e\u003ccode\u003e@​briantist\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/clealb\"\u003e\u003ccode\u003e@​clealb\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] and \u003ca href=\"https://github.com/tot19\"\u003e\u003ccode\u003e@​tot19\u003c/code\u003e\u003c/a\u003e for their lovely contributions.\u003c/p\u003e\n\u003ch2\u003ev2.2.0\u003c/h2\u003e\n\u003ch2\u003e📢 Deprecations / Announcements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd new exception types for HTTP status 405 and 412 (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1148\"\u003eGH-1148\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🚀 Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eLDAP secrets engine enhancements (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1163\"\u003eGH-1163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLDAP secret engine support (\u003ca href=\"https://redirect.github.com/hvac/hvac/issues/1032\"\u003e#1032\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1033\"\u003eGH-1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd new exception types for HTTP status 405 and 412 (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1148\"\u003eGH-1148\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd sts_region parameter to auth.aws.configure (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1136\"\u003eGH-1136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdding namespace_in_state to jwt (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1144\"\u003eGH-1144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd associated_data to encrypt/decrypt transit endpoints (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1108\"\u003eGH-1108\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eaws auth - add support for \u003ccode\u003eiam_metadata\u003c/code\u003e and \u003ccode\u003eec2_metadata\u003c/code\u003e params (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1125\"\u003eGH-1125\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧰 Miscellaneous\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump idna from 3.6 to 3.7 (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1160\"\u003eGH-1160\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump jwcrypto from 1.5.1 to 1.5.6 (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1158\"\u003eGH-1158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump cryptography from 41.0.7 to 42.0.4 (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1157\"\u003eGH-1157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd Vault 1.16.x to CI matrix (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1155\"\u003eGH-1155\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/hvac/hvac/blob/main/CHANGELOG.md\"\u003ehvac's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.0\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd audience param to kubernetes role creation (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1224\"\u003eGH-1224\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📚 Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edocs: fix AppRole.login docstring (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1182\"\u003eGH-1182\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧰 Miscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a typo in read_secret_version warning message (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1219\"\u003eGH-1219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePin consul version in CI (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1210\"\u003eGH-1210\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.3.0\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement the /sys/wrapping/wrap endpoint (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1172\"\u003eGH-1172\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd support for Vault Raft auto-snapshot endpoints. (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1169\"\u003eGH-1169\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧰 Miscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDependencies/security updates (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1174\"\u003eGH-1174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate artifact actions to v4 (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1173\"\u003eGH-1173\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.2.0\u003c/h2\u003e\n\u003ch3\u003e📢 Deprecations / Announcements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd new exception types for HTTP status 405 and 412 (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1148\"\u003eGH-1148\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLDAP secrets engine enhancements (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1163\"\u003eGH-1163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLDAP secret engine support (\u003ca href=\"https://redirect.github.com/hvac/hvac/issues/1032\"\u003e#1032\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1033\"\u003eGH-1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd new exception types for HTTP status 405 and 412 (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1148\"\u003eGH-1148\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd sts_region parameter to auth.aws.configure (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1136\"\u003eGH-1136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdding namespace_in_state to jwt (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1144\"\u003eGH-1144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd associated_data to encrypt/decrypt transit endpoints (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1108\"\u003eGH-1108\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eaws auth - add support for \u003ccode\u003eiam_metadata\u003c/code\u003e and \u003ccode\u003eec2_metadata\u003c/code\u003e params (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1125\"\u003eGH-1125\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧰 Miscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump idna from 3.6 to 3.7 (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1160\"\u003eGH-1160\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump jwcrypto from 1.5.1 to 1.5.6 (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1158\"\u003eGH-1158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump cryptography from 41.0.7 to 42.0.4 (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1157\"\u003eGH-1157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd Vault 1.16.x to CI matrix (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1155\"\u003eGH-1155\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake integration tests more reliable (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1153\"\u003eGH-1153\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/hvac/hvac/commit/2f1a58f754526b6baeee43d8763917d308ca2997\"\u003e\u003ccode\u003e2f1a58f\u003c/code\u003e\u003c/a\u003e fix pypi release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hvac/hvac/commit/fd769362047d4c05f3260b5b508e2b92db043d27\"\u003e\u003ccode\u003efd76936\u003c/code\u003e\u003c/a\u003e use ls instead (\u003ca href=\"https://redirect.github.com/hvac/hvac/issues/1233\"\u003e#1233\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hvac/hvac/commit/7ae23dfe283f43ca6b355080494e6110cc46da8d\"\u003e\u003ccode\u003e7ae23df\u003c/code\u003e\u003c/a\u003e remove tree command from release workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hvac/hvac/commit/bba486c05642ed04fb89abb3543c7641333346f1\"\u003e\u003ccode\u003ebba486c\u003c/code\u003e\u003c/a\u003e Release/v2.4.0 (\u003ca href=\"https://redirect.github.com/hvac/hvac/issues/1232\"\u003e#1232\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hvac/hvac/commit/531b9df740819d8961d1eab3623ab642c6188524\"\u003e\u003ccode\u003e531b9df\u003c/code\u003e\u003c/a\u003e coverage: skip on schedule, try slim runner (\u003ca href=\"https://redirect.github.com/hvac/hvac/issues/1231\"\u003e#1231\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hvac/hvac/commit/b8167a7545bbf541200f6acef949b28d888faca2\"\u003e\u003ccode\u003eb8167a7\u003c/code\u003e\u003c/a\u003e add audience param to kubernetes role creation (\u003ca href=\"https://redirect.github.com/hvac/hvac/issues/1224\"\u003e#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hvac/hvac/commit/590537d15b389946eb0d34081f2bb3275f33ece6\"\u003e\u003ccode\u003e590537d\u003c/code\u003e\u003c/a\u003e Fix tests and CI - certs, schedule, etc. (\u003ca href=\"https://redirect.github.com/hvac/hvac/issues/1230\"\u003e#1230\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hvac/hvac/commit/4c0b650c2adbf4f8af72372e0b33ea60259c7397\"\u003e\u003ccode\u003e4c0b650\u003c/code\u003e\u003c/a\u003e fix: Fixing a typo in read_secret_version (\u003ca href=\"https://redirect.github.com/hvac/hvac/issues/1219\"\u003e#1219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hvac/hvac/commit/ea3a6520cc08f69470494cce0ac26a2ab025f91d\"\u003e\u003ccode\u003eea3a652\u003c/code\u003e\u003c/a\u003e Pin consul version in CI (\u003ca href=\"https://redirect.github.com/hvac/hvac/issues/1210\"\u003e#1210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hvac/hvac/commit/2d2c80e296f2983c00486ee2a2ea000a3cc15604\"\u003e\u003ccode\u003e2d2c80e\u003c/code\u003e\u003c/a\u003e docs: fix AppRole.login docstring (\u003ca href=\"https://redirect.github.com/hvac/hvac/issues/1182\"\u003e#1182\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/hvac/hvac/compare/v1.2.1...v2.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `prometheus-client` from 0.15.0 to 0.21.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/prometheus/client_python/releases\"\u003eprometheus-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.21.1 / 2024-12-03\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003e[BUGFIX] Revert incorrect use of reentrant locks. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1076\"\u003e#1076\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e0.21.0 / 2024-09-20\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003e[CHANGE] Reject invalid (not GET or OPTION) HTTP methods. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1019\"\u003e#1019\u003c/a\u003e\n[ENHANCEMENT] Allow writing metrics when holding a lock for the metric in the same thread. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1014\"\u003e#1014\u003c/a\u003e\n[BUGFIX] Check for and error on None label values. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1012\"\u003e#1012\u003c/a\u003e\n[BUGFIX] Fix timestamp comparison. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1038\"\u003e#1038\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e0.20.0 / 2024-02-14\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[CHANGE/BUGFIX] Update OpenMetrics Content Type to 1.0.0. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/997\"\u003e#997\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[FEATURE] Enable graceful shutdown for start_{http,wsgi}_server by returning the server and thread. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/999\"\u003e#999\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[FEATURE] Allow resetting counter metrics. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1005\"\u003e#1005\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUGFIX] wsgi server: address family discovery is not quite right. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1006\"\u003e#1006\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.19.0 / 2023-11-20\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003e[FEATURE] support HTTPS/TLS in start_http_server. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/946\"\u003e#946\u003c/a\u003e\n[BUGFIX] fix: error in determining timestamp less than. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/979\"\u003e#979\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e0.18.0 / 2023-10-30\u003c/h2\u003e\n\u003cp\u003e[CHANGE] Remove support for Python versions \u0026lt; 3.8. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/936\"\u003e#936\u003c/a\u003e\n[FEATURE] Add \u003ccode\u003emostrecent\u003c/code\u003e aggregation to Gauge. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/967\"\u003e#967\u003c/a\u003e\n[ENHANCEMENT] Typing improvements. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/935\"\u003e#935\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/970\"\u003e#970\u003c/a\u003e\n[ENHANCEMENT] Allow enabling or disabling \u003ccode\u003e_created\u003c/code\u003e metrics from code. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/973\"\u003e#973\u003c/a\u003e\n[BUGFIX] Change #!/usr/bin/python to #!/usr/bin/env python in remaining places. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/945\"\u003e#945\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e0.17.1 / 2023-07-19\u003c/h2\u003e\n\u003cp\u003e[BUGFIX] Use #!/usr/bin/env python instead of #!usr/bin/python in bridge/graphite.py. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/928\"\u003e#928\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e0.17.0 / 2023-05-24\u003c/h2\u003e\n\u003cp\u003e[ENHANCEMENT] Add additional typing. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/887\"\u003e#887\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/903\"\u003e#903\u003c/a\u003e\n[BUGFIX] Fix typo in python_gc_objects_collected metadata. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/894\"\u003e#894\u003c/a\u003e\n[BUGFIX] Do not include .pyc files in the build wheel. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/906\"\u003e#906\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e0.16.0 / 2023-01-23\u003c/h2\u003e\n\u003cp\u003e[FEATURE] Support HELP text in multiprocess mode. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/804\"\u003e#804\u003c/a\u003e\n[ENHANCEMENT] Reduce the mmap minimum size. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/853\"\u003e#853\u003c/a\u003e\n[BUGFIX] Use the correct OpenMetrics encoder when \u003ccode\u003eapplication/openmetrics-text\u003c/code\u003e is requested in ASGI apps. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/864\"\u003e#864\u003c/a\u003e\n[BUGFIX] Allow Prometheus format parser to handle a missing space after labels. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/872\"\u003e#872\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/prometheus/client_python/commit/b3f61b3ccf237424f03cc5aa3ac6ecc81c82455f\"\u003e\u003ccode\u003eb3f61b3\u003c/code\u003e\u003c/a\u003e Release 0.21.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/591e91f4752d1cab70027ac7ab07166ab05adec2\"\u003e\u003ccode\u003e591e91f\u003c/code\u003e\u003c/a\u003e Drop incorrect use of reentrant locks (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1076\"\u003e#1076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/3b183b44994454be226c208037e1fe4b9a89dfc5\"\u003e\u003ccode\u003e3b183b4\u003c/code\u003e\u003c/a\u003e Release 0.21.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/0014e9776350a252930671ed170edee464f9b428\"\u003e\u003ccode\u003e0014e97\u003c/code\u003e\u003c/a\u003e Use re-entrant lock. (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1014\"\u003e#1014\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/7c45f84e5e3d2e0a75b3946408fec1a4d5c72841\"\u003e\u003ccode\u003e7c45f84\u003c/code\u003e\u003c/a\u003e Reject invalid HTTP methods and resources (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1019\"\u003e#1019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/09a5ae30602a7a81f6174dae4ba08b93ee7feed2\"\u003e\u003ccode\u003e09a5ae3\u003c/code\u003e\u003c/a\u003e Fix timestamp comparison (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1038\"\u003e#1038\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/e364a96f506bbb70ae744e0b3307e4b693e28258\"\u003e\u003ccode\u003ee364a96\u003c/code\u003e\u003c/a\u003e Fix a typo in ASGI docs (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/eeec421b2f489d2c465bb8ca419b772829b7b16c\"\u003e\u003ccode\u003eeeec421\u003c/code\u003e\u003c/a\u003e Pin python 3.8 and 3.9 at patch level (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1024\"\u003e#1024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/7bc8cddfbbc9b72c98725a879d9b94a675a6c7da\"\u003e\u003ccode\u003e7bc8cdd\u003c/code\u003e\u003c/a\u003e docs: correct link to multiprocessing docs (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1023\"\u003e#1023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/4535ce0f43097aa48e44a65747d82064f2aadaf5\"\u003e\u003ccode\u003e4535ce0\u003c/code\u003e\u003c/a\u003e Add sanity check for label value (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1012\"\u003e#1012\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/prometheus/client_python/compare/v0.15.0...v0.21.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.31.0 to 2.32.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.32.4\u003c/h2\u003e\n\u003ch2\u003e2.32.4 (2025-06-10)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2024-47081 Fixed an issue where a maliciously crafted URL and trusted\nenvironment will retrieve credentials for the wrong hostname/machine from a\nnetrc file. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6965\"\u003e#6965\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNumerous documentation improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for pypy 3.11 for Linux and macOS. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6926\"\u003e#6926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDropped support for pypy 3.9 following its end of support. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6926\"\u003e#6926\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.32.3\u003c/h2\u003e\n\u003ch2\u003e2.32.3 (2024-05-29)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed bug breaking the ability to specify custom SSLContexts in sub-classes of\nHTTPAdapter. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6716\"\u003e#6716\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed issue where Requests started failing to run on Python versions compiled\nwithout the \u003ccode\u003essl\u003c/code\u003e module. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6724\"\u003e#6724\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.32.2\u003c/h2\u003e\n\u003ch2\u003e2.32.2 (2024-05-21)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eTo provide a more stable migration for custom HTTPAdapters impacted\nby the CVE changes in 2.32.0, we've renamed \u003ccode\u003e_get_connection\u003c/code\u003e to\na new public API, \u003ccode\u003eget_connection_with_tls_context\u003c/code\u003e. Existing custom\nHTTPAdapters will need to migrate their code to use this new API.\n\u003ccode\u003eget_connection\u003c/code\u003e is considered deprecated in all versions of Requests\u0026gt;=2.32.0.\u003c/p\u003e\n\u003cp\u003eA minimal (2-line) example has been provided in the linked PR to ease\nmigration, but we strongly urge users to evaluate if their custom adapter\nis subject to the same issue described in CVE-2024-35195. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6710\"\u003e#6710\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.32.1\u003c/h2\u003e\n\u003ch2\u003e2.32.1 (2024-05-20)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd missing test certs to the sdist distributed on PyPI.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.32.0\u003c/h2\u003e\n\u003cp\u003e2.32.0 (2024-05-20)\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.32.4 (2025-06-10)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2024-47081 Fixed an issue where a maliciously crafted URL and trusted\nenvironment will retrieve credentials for the wrong hostname/machine from a\nnetrc file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNumerous documentation improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for pypy 3.11 for Linux and macOS.\u003c/li\u003e\n\u003cli\u003eDropped support for pypy 3.9 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.32.3 (2024-05-29)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed bug breaking the ability to specify custom SSLContexts in sub-classes of\nHTTPAdapter. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6716\"\u003e#6716\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed issue where Requests started failing to run on Python versions compiled\nwithout the \u003ccode\u003essl\u003c/code\u003e module. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6724\"\u003e#6724\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.32.2 (2024-05-21)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eTo provide a more stable migration for custom HTTPAdapters impacted\nby the CVE changes in 2.32.0, we've renamed \u003ccode\u003e_get_connection\u003c/code\u003e to\na new public API, \u003ccode\u003eget_connection_with_tls_context\u003c/code\u003e. Existing custom\nHTTPAdapters will need to migrate their code to use this new API.\n\u003ccode\u003eget_connection\u003c/code\u003e is considered deprecated in all versions of Requests\u0026gt;=2.32.0.\u003c/p\u003e\n\u003cp\u003eA minimal (2-line) example has been provided in the linked PR to ease\nmigration, but we strongly urge users to evaluate if their custom adapter\nis subject to the same issue described in CVE-2024-35195. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6710\"\u003e#6710\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.32.1 (2024-05-20)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd missing test certs to the sdist distributed on PyPI.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.32.0 (2024-05-20)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/021dc729f0b71a3030cefdbec7fb57a0e80a6cfd\"\u003e\u003ccode\u003e021dc72\u003c/code\u003e\u003c/a\u003e Polish up release tooling for last manual release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/821770e822a20a21b207b3907ea83878bda1d396\"\u003e\u003ccode\u003e821770e\u003c/code\u003e\u003c/a\u003e Bump version and add release notes for v2.32.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/59f8aa2adf1d3d06bcbf7ce6b13743a1639a5401\"\u003e\u003ccode\u003e59f8aa2\u003c/code\u003e\u003c/a\u003e Add netrc file search information to authentication documentation (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6876\"\u003e#6876\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/5b4b64c3467fd7a3c03f91ee641aaa348b6bed3b\"\u003e\u003ccode\u003e5b4b64c\u003c/code\u003e\u003c/a\u003e Add more tests to prevent regression of CVE 2024 47081\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/7bc45877a86192af77645e156eb3744f95b47dae\"\u003e\u003ccode\u003e7bc4587\u003c/code\u003e\u003c/a\u003e Add new test to check netrc auth leak (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6962\"\u003e#6962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/96ba401c1296ab1dda74a2365ef36d88f7d144ef\"\u003e\u003ccode\u003e96ba401\u003c/code\u003e\u003c/a\u003e Only use hostname to do netrc lookup instead of netloc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/7341690e842a23cf18ded0abd9229765fa88c4e2\"\u003e\u003ccode\u003e7341690\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/6951\"\u003e#6951\u003c/a\u003e from tswast/patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6716d7c9f29df636643fa2489f98890216525cb0\"\u003e\u003ccode\u003e6716d7c\u003c/code\u003e\u003c/a\u003e remove links\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/a7e1c745dc23c18e836febd672416ed0c5d8d8ae\"\u003e\u003ccode\u003ea7e1c74\u003c/code\u003e\u003c/a\u003e Update docs/conf.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/c799b8167a13416833ad3b4f3298261a477e826f\"\u003e\u003ccode\u003ec799b81\u003c/code\u003e\u003c/a\u003e docs: fix dead links to kenreitz.org\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.31.0...v2.32.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyyaml` from 6.0.1 to 6.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/yaml/pyyaml/releases\"\u003epyyaml's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.0.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14 and free-threading (experimental).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\"\u003ehttps://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Cython 3.x and Python 3.13.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.1...6.0.2\"\u003ehttps://github.com/yaml/pyyaml/compare/6.0.1...6.0.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.2rc1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for extension build with Cython 3.x\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.13\u003c/li\u003e\n\u003cli\u003eAdded PyPI wheels for musllinux on aarch64\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/yaml/pyyaml/blob/6.0.3/CHANGES\"\u003epyyaml's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e6.0.3 (2025-09-25)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/yaml/pyyaml/pull/864\"\u003eyaml/pyyaml#864\u003c/a\u003e -- Support for Python 3.14 and free-threading (experimental)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e6.0.2 (2024-08-06)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/yaml/pyyaml/pull/808\"\u003eyaml/pyyaml#808\u003c/a\u003e -- Support for Cython 3.x and Python 3.13\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/49790e73684bebad1df05ef8d828fa12f685bffb\"\u003e\u003ccode\u003e49790e7\u003c/code\u003e\u003c/a\u003e Release 6.0.3 (\u003ca href=\"https://redirect.github.com/yaml/pyyaml/issues/889\"\u003e#889\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/41309b0bcb4559edb1d691d47199035ef539d785\"\u003e\u003ccode\u003e41309b0\u003c/code\u003e\u003c/a\u003e Release 6.0.2 (\u003ca href=\"https://redirect.github.com/yaml/pyyaml/issues/819\"\u003e#819\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/dd9f0e1236775dcce682c91823e009556ce2a271\"\u003e\u003ccode\u003edd9f0e1\u003c/code\u003e\u003c/a\u003e 6.0.2rc1 (\u003ca href=\"https://redirect.github.com/yaml/pyyaml/issues/809\"\u003e#809\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/f5527a26d518b3e9c66f9211e0af00c83f09a97e\"\u003e\u003ccode\u003ef5527a2\u003c/code\u003e\u003c/a\u003e disable CI trigger on PR edits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/b4d80a742142004490d2da7691d534923820b81c\"\u003e\u003ccode\u003eb4d80a7\u003c/code\u003e\u003c/a\u003e Python 3.12 + musllinux_1_1_x86_64 wheel support\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.1...6.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cerberus` from 1.3.5 to 1.3.8\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyeve/cerberus/blob/1.3.x/CHANGES.rst\"\u003ecerberus's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.3.8\u003c/h2\u003e\n\u003cp\u003eReleased on November 6, 2025.\u003c/p\u003e\n\u003cp\u003eNew\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n- Support for Python 3.14\n\u003ch2\u003eVersion 1.3.7\u003c/h2\u003e\n\u003cp\u003eReleased on December 31, 2024.\u003c/p\u003e\n\u003cp\u003eFixed\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAmends missing changelog\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.3.6\u003c/h2\u003e\n\u003cp\u003eReleased on December 23, 2024.\u003c/p\u003e\n\u003cp\u003eNew\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n- Support for Python 3.12 \u0026amp; 3.13\n\u003cp\u003eFixed\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEscaping in docstrings (\u003ccode\u003e[#608](https://github.com/pyeve/cerberus/issues/608)\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _\u003ccode\u003e[#608](https://github.com/pyeve/cerberus/issues/608)\u003c/code\u003e: \u003ca href=\"https://redirect.github.com/pyeve/cerberus/issues/608\"\u003epyeve/cerberus#608\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/pyeve/cerberus/commit/f2221c5a901bbf8618efb694ef9364bd0882ac9a\"\u003e\u003ccode\u003ef2221c5\u003c/code\u003e\u003c/a\u003e Bumps version to 1.3.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyeve/cerberus/commit/e7c995709e9fcdb2036ade9f5bf8f608e8ddf2c3\"\u003e\u003ccode\u003ee7c9957\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action from 2 to 4 (\u003ca href=\"https://redirect.github.com/pyeve/cerberus/issues/626\"\u003e#626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyeve/cerberus/commit/665562663c367ef4115725087096e9dd059d42cd\"\u003e\u003ccode\u003e6655626\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 3 to 5 (\u003ca href=\"https://redirect.github.com/pyeve/cerberus/issues/625\"\u003e#625\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyeve/cerberus/commit/4db1211eb2a6fdfc899e9231731c54f60745db92\"\u003e\u003ccode\u003e4db1211\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 4 to 6 (\u003ca href=\"https://redirect.github.com/pyeve/cerberus/issues/627\"\u003e#627\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyeve/cerberus/commit/3f86cf410618dc646e0bbd8e7eb89161f0f171b2\"\u003e\u003ccode\u003e3f86cf4\u003c/code\u003e\u003c/a\u003e Adds a dependabot configuration to keep GH Actions up-to-date\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyeve/cerberus/commit/b46f8816b3ba339eb0016d5632cde711ad8c6f5c\"\u003e\u003ccode\u003eb46f881\u003c/code\u003e\u003c/a\u003e Adds support for Python 3.14 (\u003ca href=\"https://redirect.github.com/pyeve/cerberus/issues/624\"\u003e#624\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyeve/cerberus/commit/7878e60204a4b05d566e5b9a9db0c6bcc9062fe9\"\u003e\u003ccode\u003e7878e60\u003c/code\u003e\u003c/a\u003e GH Actions: Removes Python 3.7 from the test matrix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyeve/cerberus/commit/7c9c454bf10fe2a7008220c052c88a425a723ca6\"\u003e\u003ccode\u003e7c9c454\u003c/code\u003e\u003c/a\u003e Updates black config and applies its style\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyeve/cerberus/commit/1295e100dbaff3d989e7f5c6052419ae68980271\"\u003e\u003ccode\u003e1295e10\u003c/code\u003e\u003c/a\u003e doclinks: Ignores URLs with the stackoverflow.com authority\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyeve/cerberus/commit/c07c2f942873bd90d333347cb679850a85680aa6\"\u003e\u003ccode\u003ec07c2f9\u003c/code\u003e\u003c/a\u003e Amends CHANGES.rst and bumos to version to 1.3.7\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyeve/cerberus/compare/1.3.5...1.3.8\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `black` from 23.10.0 to 24.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/black/releases\"\u003eblack's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e24.8.0\u003c/h2\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix crash when \u003ccode\u003e# fmt: off\u003c/code\u003e is used before a closing parenthesis or bracket. (\u003ca href=\"https://redirect.github.com/psf/black/issues/4363\"\u003e#4363\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePackaging metadata updated: docs are explictly linked, the issue tracker is now also\nlinked. This improves the PyPI listing for Black. (\u003ca href=\"https://redirect.github.com/psf/black/issues/4345\"\u003e#4345\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eParser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression where Black failed to parse a multiline f-string containing another\nmultiline string (\u003ca href=\"https://redirect.github.com/psf/black/issues/4339\"\u003e#4339\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix regression where Black failed to parse an escaped single quote inside an f-string\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4401\"\u003e#4401\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix bug with Black incorrectly parsing empty lines with a backslash (\u003ca href=\"https://redirect.github.com/psf/black/issues/4343\"\u003e#4343\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix bugs with Black's tokenizer not handling \u003ccode\u003e\\{\u003c/code\u003e inside f-strings very well (\u003ca href=\"https://redirect.github.com/psf/black/issues/4422\"\u003e#4422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix incorrect line numbers in the tokenizer for certain tokens within f-strings\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4423\"\u003e#4423\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove performance when a large directory is listed in \u003ccode\u003e.gitignore\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/psf/black/issues/4415\"\u003e#4415\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003cem\u003eBlackd\u003c/em\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix blackd (and all extras installs) for docker container (\u003ca href=\"https://redirect.github.com/psf/black/issues/4357\"\u003e#4357\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e24.4.2\u003c/h2\u003e\n\u003cp\u003eThis is a bugfix release to fix two regressions in the new f-string parser introduced in\n24.4.1.\u003c/p\u003e\n\u003ch3\u003eParser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression where certain complex f-strings failed to parse (\u003ca href=\"https://redirect.github.com/psf/black/issues/4332\"\u003e#4332\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix bad performance on certain complex string literals (\u003ca href=\"https://redirect.github.com/psf/black/issues/4331\"\u003e#4331\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e24.4.1\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for the new Python 3.12 f-string syntax introduced by PEP 701 (\u003ca href=\"https://redirect.github.com/psf/black/issues/3822\"\u003e#3822\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix crash involving indented dummy functions containing newlines (\u003ca href=\"https://redirect.github.com/psf/black/issues/4318\"\u003e#4318\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/black/blob/main/CHANGES.md\"\u003eblack's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 24.8.0\u003c/h2\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix crash when \u003ccode\u003e# fmt: off\u003c/code\u003e is used before a closing parenthesis or bracket. (\u003ca href=\"https://redirect.github.com/psf/black/issues/4363\"\u003e#4363\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePackaging metadata updated: docs are explicitly linked, the issue tracker is now also\nlinked. This improves the PyPI listing for Black. (\u003ca href=\"https://redirect.github.com/psf/black/issues/4345\"\u003e#4345\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eParser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression where Black failed to parse a multiline f-string containing another\nmultiline string (\u003ca href=\"https://redirect.github.com/psf/black/issues/4339\"\u003e#4339\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix regression where Black failed to parse an escaped single quote inside an f-string\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4401\"\u003e#4401\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix bug with Black incorrectly parsing empty lines with a backslash (\u003ca href=\"https://redirect.github.com/psf/black/issues/4343\"\u003e#4343\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix bugs with Black's tokenizer not handling \u003ccode\u003e\\{\u003c/code\u003e inside f-strings very well (\u003ca href=\"https://redirect.github.com/psf/black/issues/4422\"\u003e#4422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix incorrect line numbers in the tokenizer for certain tokens within f-strings\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4423\"\u003e#4423\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove performance when a large directory is listed in \u003ccode\u003e.gitignore\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/psf/black/issues/4415\"\u003e#4415\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003cem\u003eBlackd\u003c/em\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix blackd (and all extras installs) for docker container (\u003ca href=\"https://redirect.github.com/psf/black/issues/4357\"\u003e#4357\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 24.4.2\u003c/h2\u003e\n\u003cp\u003eThis is a bugfix release to fix two regressions in the new f-string parser introduced in\n24.4.1.\u003c/p\u003e\n\u003ch3\u003eParser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression where certain complex f-strings failed to parse (\u003ca href=\"https://redirect.github.com/psf/black/issues/4332\"\u003e#4332\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix bad performance on certain complex string literals (\u003ca href=\"https://redirect.github.com/psf/black/issues/4331\"\u003e#4331\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 24.4.1\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for the new Python 3.12 f-string syntax introduced by PEP 701 (\u003ca href=\"https://redirect.github.com/psf/black/issues/3822\"\u003e#3822\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eStable style\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/psf/black/commit/b965c2a5026f8ba399283ba3e01898b012853c79\"\u003e\u003ccode\u003eb965c2a\u003c/code\u003e\u003c/a\u003e Prepare release 24.8.0 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4426\"\u003e#4426\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/9ccf279a17ff19cc51f62c60fc88ba46e615d202\"\u003e\u003ccode\u003e9ccf279\u003c/code\u003e\u003c/a\u003e Document \u003ccode\u003efind_project_root\u003c/code\u003e ignoring \u003ccode\u003epyproject.toml\u003c/code\u003e without \u003ccode\u003e[tool.black]\u003c/code\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/14b6e619704e6d81749f0a23060750ee0a5fcc40\"\u003e\u003ccode\u003e14b6e61\u003c/code\u003e\u003c/a\u003e fix: Enhace black efficiently to  skip directories listed in .gitignore (\u003ca href=\"https://redirect.github.com/psf/black/issues/4415\"\u003e#4415\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/b1c4dd96d769cb3ac3c8fc057e8dc60907b84c17\"\u003e\u003ccode\u003eb1c4dd9\u003c/code\u003e\u003c/a\u003e fix: respect braces better in f-string parsing (\u003ca href=\"https://redirect.github.com/psf/black/issues/4422\"\u003e#4422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/4b4ae43e8b66a2eab2d41a73364745c2a4570287\"\u003e\u003ccode\u003e4b4ae43\u003c/code\u003e\u003c/a\u003e Fix incorrect linenos on fstring tokens with escaped newlines (\u003ca href=\"https://redirect.github.com/psf/black/issues/4423\"\u003e#4423\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/7fa1faf83af513e09c44e029da573c6b0b2bd570\"\u003e\u003ccode\u003e7fa1faf\u003c/code\u003e\u003c/a\u003e docs: fix the installation command of extra for blackd (\u003ca href=\"https://redirect.github.com/psf/black/issues/4413\"\u003e#4413\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/8827accf560c7be418000962565f1fd6fa7b01cb\"\u003e\u003ccode\u003e8827acc\u003c/code\u003e\u003c/a\u003e Bump sphinx from 7.3.7 to 7.4.0 in /docs (\u003ca href=\"https://redirect.github.com/psf/black/issues/4404\"\u003e#4404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/b0da11d370adb5730fd45594cc89b1dc816786ea\"\u003e\u003ccode\u003eb0da11d\u003c/code\u003e\u003c/a\u003e Bump furo from 2024.5.6 to 2024.7.18 in /docs (\u003ca href=\"https://redirect.github.com/psf/black/issues/4409\"\u003e#4409\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/721dff549362f54930ecc038218dcc40e599a875\"\u003e\u003ccode\u003e721dff5\u003c/code\u003e\u003c/a\u003e fix: avoid formatting backslash strings inside f-strings (\u003ca href=\"https://redirect.github.com/psf/black/issues/4401\"\u003e#4401\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/7e2afc9bfdc4ec4bc3297aaa16a62d575249a5e0\"\u003e\u003ccode\u003e7e2afc9\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003eactions/checkout\u003c/code\u003e to v4 to stop node deprecation warnings (\u003ca href=\"https://redirect.github.com/psf/black/issues/4379\"\u003e#4379\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/black/compare/23.10.0...24.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pylint` from 2.17.7 to 3.2.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pylint-dev/pylint/releases\"\u003epylint's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.2.7\u003c/h2\u003e\n\u003ch2\u003eWhat's new in Pylint 3.2.7?\u003c/h2\u003e\n\u003cp\u003eRelease date: 2024-08-31\u003c/p\u003e\n\u003ch2\u003eFalse Positives Fixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed a false positive \u003ccode\u003eunreachable\u003c/code\u003e for \u003ccode\u003eNoReturn\u003c/code\u003e coroutine functions.\u003c/p\u003e\n\u003cp\u003eCloses \u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/9840\"\u003e#9840\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eOther Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix crash in refactoring checker when calling a lambda bound as a method.\u003c/p\u003e\n\u003cp\u003eCloses \u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/9865\"\u003e#9865\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix a crash in \u003ccode\u003eundefined-loop-variable\u003c/code\u003e when providing the \u003ccode\u003eiterable\u003c/code\u003e argument to \u003ccode\u003eenumerate()\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eCloses \u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/9875\"\u003e#9875\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix to address indeterminacy of error message in case a module name is same as another in a separate namespace.\u003c/p\u003e\n\u003cp\u003eRefs \u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/9883\"\u003e#9883\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.2.6\u003c/h2\u003e\n\u003ch2\u003eWhat's new in Pylint 3.2.6?\u003c/h2\u003e\n\u003cp\u003eRelease date: 2024-07-21\u003c/p\u003e\n\u003ch2\u003eFalse Positives Fixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eQuiet false positives for \u003ccode\u003eunexpected-keyword-arg\u003c/code\u003e when pylint cannot\ndetermine which of two or more dynamically defined classes is being instantiated.\u003c/p\u003e\n\u003cp\u003eCloses \u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/9672\"\u003e#9672\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix a false positive for \u003ccode\u003emissing-param-doc\u003c/code\u003e where a method which is decorated with \u003ccode\u003etyping.overload\u003c/code\u003e was expected to have a docstring specifying its parameters.\u003c/p\u003e\n\u003cp\u003eCloses \u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/9739\"\u003e#9739\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix a regression that raised \u003ccode\u003einvalid-name\u003c/code\u003e on class attributes merely\noverriding invalid names from an ancestor.\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/pylint-dev/pylint/commit/a98215b8c6a6203dd56366bcfe1cd946fb41282a\"\u003e\u003ccode\u003ea98215b\u003c/code\u003e\u003c/a\u003e Bump pylint to 3.2.7, update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/1deaffababe77e8a025e3b2e5d564d4feb8d987f\"\u003e\u003ccode\u003e1deaffa\u003c/code\u003e\u003c/a\u003e Fix to maintain order of package paths (\u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/9887\"\u003e#9887\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/9897\"\u003e#9897\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/b4c2951e62c6ba8e061d4c001192efdedcb6f498\"\u003e\u003ccode\u003eb4c2951\u003c/code\u003e\u003c/a\u003e [Backport maintenance/3.2.x] Fix a crash in \u003ccode\u003eundefined-loop-variable\u003c/code\u003e with `e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/f1925f46ff4c93e7d191d24746b601cfeb0b4e3c\"\u003e\u003ccode\u003ef1925f4\u003c/code\u003e\u003c/a\u003e Fix crash in refactoring checker when calling bound lambda (\u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/9867\"\u003e#9867\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/7d1626cf869dab1365150265bad45da7e4221bc1\"\u003e\u003ccode\u003e7d1626c\u003c/code\u003e\u003c/a\u003e Fix a false positive \u003ccode\u003eunreachable\u003c/code\u003e for \u003ccode\u003eNoReturn\u003c/code\u003e coroutine functions (\u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/9844\"\u003e#9844\u003c/a\u003e)...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/da1956664d6be3d008a90ad3f72bdd9d8a7ecfaa\"\u003e\u003ccode\u003eda19566\u003c/code\u003e\u003c/a\u003e Bump pylint to 3.2.6, update changelog (\u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/9825\"\u003e#9825\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/810c59ce17a46fb83d5938b591420b906c7c84b5\"\u003e\u003ccode\u003e810c59c\u003c/code\u003e\u003c/a\u003e Update setuptools to \u0026gt;=71.0.4 (\u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/9812\"\u003e#9812\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/9824\"\u003e#9824\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/5f19cd5a12c25c6f0e02566ccfcde19c6fee3674\"\u003e\u003ccode\u003e5f19cd5\u003c/code\u003e\u003c/a\u003e Fix a crash when a subclass extends \u003ccode\u003e__slots__\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/9817\"\u003e#9817\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/9822\"\u003e#9822\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/c0b1d2228b47e90f80cfb258ade9e23a5f36d153\"\u003e\u003ccode\u003ec0b1d22\u003c/code\u003e\u003c/a\u003e Bump astroid to 3.2.4 (\u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/9816\"\u003e#9816\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/9821\"\u003e#9821\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/1d877de1f0f9889841d7e2a780ff2aad2f823213\"\u003e\u003ccode\u003e1d877de\u003c/code\u003e\u003c/a\u003e Fix consider-using-min-max-builtin (\u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/9802\"\u003e#9802\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/9803\"\u003e#9803\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pylint-dev/pylint/compare/v2.17.7...v3.2.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest` from 7.4.2 to 8.3.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest/releases\"\u003epytest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.3.5\u003c/h2\u003e\n\u003ch1\u003epytest 8.3.5 (2025-03-02)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/11777\"\u003e#11777\u003c/a\u003e: Fixed issue where sequences were still being shortened even with \u003ccode\u003e-vv\u003c/code\u003e verbosity.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12888\"\u003e#12888\u003c/a\u003e: Fixed broken input when using Python 3.13+ and a \u003ccode\u003elibedit\u003c/code\u003e build of Python, such as on macOS or with uv-managed Python binaries from the \u003ccode\u003epython-build-standalone\u003c/code\u003e project. This could manifest e.g. by a broken prompt when using \u003ccode\u003ePdb\u003c/code\u003e, or seeing empty inputs with manual usage of \u003ccode\u003einput()\u003c/code\u003e and suspended capturing.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13026\"\u003e#13026\u003c/a\u003e: Fixed \u003ccode\u003eAttributeError\u003c/code\u003e{.interpreted-text role=\u0026quot;class\u0026quot;} crash when using \u003ccode\u003e--import-mode=importlib\u003c/code\u003e when top-level directory same name as another module of the standard library.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13053\"\u003e#13053\u003c/a\u003e: Fixed a regression in pytest 8.3.4 where, when using \u003ccode\u003e--import-mode=importlib\u003c/code\u003e, a directory containing py file with the same name would cause an \u003ccode\u003eImportError\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13083\"\u003e#13083\u003c/a\u003e: Fixed issue where pytest could crash if one of the collected directories got removed during collection.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImproved documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12842\"\u003e#12842\u003c/a\u003e: Added dedicated page about using types with pytest.\u003c/p\u003e\n\u003cp\u003eSee \u003ccode\u003etypes\u003c/code\u003e{.interpreted-text role=\u0026quot;ref\u0026quot;} for detailed usage.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributor-facing changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13112\"\u003e#13112\u003c/a\u003e: Fixed selftest failures in \u003ccode\u003etest_terminal.py\u003c/code\u003e with Pygments \u0026gt;= 2.19.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13256\"\u003e#13256\u003c/a\u003e: Support for Towncrier versions released in 2024 has been re-enabled\nwhen building Sphinx docs -- by \u003ccode\u003ewebknjaz\u003c/code\u003e{.interpreted-text role=\u0026quot;user\u0026quot;}.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.3.4\u003c/h2\u003e\n\u003ch1\u003epytest 8.3.4 (2024-12-01)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12592\"\u003e#12592\u003c/a\u003e: Fixed \u003ccode\u003eKeyError\u003c/code\u003e{.interpreted-text role=\u0026quot;class\u0026quot;} crash when using \u003ccode\u003e--import-mode=importlib\u003c/code\u003e in a directory layout where a directory contains a child directory with the same name.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12818\"\u003e#12818\u003c/a\u003e: Assertion rewriting now preserves the source ranges of the original instructions, making it play well with tools that deal with the \u003ccode\u003eAST\u003c/code\u003e, like \u003ca href=\"https://github.com/alexmojaki/executing\"\u003eexecuting\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12849\"\u003e#12849\u003c/a\u003e: ANSI escape codes for colored output now handled correctly in \u003ccode\u003epytest.fail\u003c/code\u003e{.interpreted-text role=\u0026quot;func\u0026quot;} with [pytrace=False]{.title-ref}.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/9353\"\u003e#9353\u003c/a\u003e: \u003ccode\u003epytest.approx\u003c/code\u003e{.interpreted-text role=\u0026quot;func\u0026quot;} now uses strict equality when given booleans.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImproved documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/10558\"\u003e#10558\u003c/a\u003e: Fix ambiguous docstring of \u003ccode\u003epytest.Config.getoption\u003c/code\u003e{.interpreted-text role=\u0026quot;func\u0026quot;}.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/10829\"\u003e#10829\u003c/a\u003e: Improve documentation on the current handling of the \u003ccode\u003e--basetemp\u003c/code\u003e option and its lack of retention functionality (\u003ccode\u003etemporary directory location and retention\u003c/code\u003e{.interpreted-text role=\u0026quot;ref\u0026quot;}).\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/pytest-dev/pytest/commit/b55ab2aabb68c0ce94c3903139b062d0c2790152\"\u003e\u003ccode\u003eb55ab2a\u003c/code\u003e\u003c/a\u003e Prepare release version 8.3.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/e217726d2a0edfaf58eae95bf835b85834b96da3\"\u003e\u003ccode\u003ee217726\u003c/code\u003e\u003c/a\u003e Added dedicated page about using types with pytest \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12842\"\u003e#12842\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12963\"\u003e#12963\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13260\"\u003e#13260\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/2fa3f8306c3da4aad7f7349a4947ac37ba6c652f\"\u003e\u003ccode\u003e2fa3f83\u003c/code\u003e\u003c/a\u003e Add more resources and studies to flaky tests page in docs (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13250\"\u003e#13250\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13259\"\u003e#13259\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/e5c2efe3c36199731b41fd68bbf4df5e21404a8b\"\u003e\u003ccode\u003ee5c2efe\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13256\"\u003e#13256\u003c/a\u003e from webknjaz/maintenance/towncrier-bump (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13258\"\u003e#13258\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/3419674225a3a7b7d6f93650d75f6de52fe637d5\"\u003e\u003ccode\u003e3419674\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13187\"\u003e#13187\u003c/a\u003e from pytest-dev/patchback/backports/8.3.x/b4009b319...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/b75cfb162dbb927739698effa3fbcf279655da49\"\u003e\u003ccode\u003eb75cfb1\u003c/code\u003e\u003c/a\u003e Add readline workaround for libedit (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13176\"\u003e#13176\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/edbfff72a4051ed9c5f3d9b5d6f316b407cb6961\"\u003e\u003ccode\u003eedbfff7\u003c/code\u003e\u003c/a\u003e doc: Clarify capturing .readouterr() return value (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13222\"\u003e#13222\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13225\"\u003e#13225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/2ebba0063c66b77a7bd171221de059f3b3e47b86\"\u003e\u003ccode\u003e2ebba00\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13199\"\u003e#13199\u003c/a\u003e from jakkdl/tox_docs_no_fetch (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13200\"\u003e#13200\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/eb6496b79759f9acde581ed9d7a0777a49b5f820\"\u003e\u003ccode\u003eeb6496b\u003c/code\u003e\u003c/a\u003e doc: Change training to remote only (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13196\"\u003e#13196\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13197\"\u003e#13197\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/78cf1f67f707fc07372a89775fd10d2065b5f17a\"\u003e\u003ccode\u003e78cf1f6\u003c/code\u003e\u003c/a\u003e ci: Bump build-and-inspect-python-package (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13188\"\u003e#13188\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest/compare/7.4.2...8.3.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-cov` from 4.1.0 to 5.0.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst\"\u003epytest-cov's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.0.0 (2024-03-24)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved support for xdist rsync (now deprecated).\nContributed by Matthias Reichenbach in \u003ccode\u003e[#623](https://github.com/pytest-dev/pytest-cov/issues/623) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/623\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eSwitched docs theme to Furo.\u003c/li\u003e\n\u003cli\u003eVarious legacy Python cleanup and CI improvements.\nContributed by Christian Clauss and Hugo van Kemenade in\n\u003ccode\u003e[#630](https://github.com/pytest-dev/pytest-cov/issues/630) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/630\u0026gt;\u003c/code\u003e\u003cem\u003e,\n\u003ccode\u003e[#631](https://github.com/pytest-dev/pytest-cov/issues/631) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/631\u0026gt;\u003c/code\u003e\u003c/em\u003e,\n\u003ccode\u003e[#632](https://github.com/pytest-dev/pytest-cov/issues/632) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/632\u0026gt;\u003c/code\u003e_ and\n\u003ccode\u003e[#633](https://github.com/pytest-dev/pytest-cov/issues/633) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/633\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003epyproject.toml\u003c/code\u003e example in the docs.\nContributed by Dawn James in \u003ccode\u003e[#626](https://github.com/pytest-dev/pytest-cov/issues/626) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/626\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eModernized project's pre-commit hooks to use ruff. Initial POC contributed by\nChristian Clauss in \u003ccode\u003e[#584](https://github.com/pytest-dev/pytest-cov/issues/584) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/584\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.7.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/5295ce01c84262cec88f31255e9ac538718f3047\"\u003e\u003ccode\u003e5295ce0\u003c/code\u003e\u003c/a\u003e Bump version: 4.1.0 → 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/1181b067972bf94569f8011f3b18f271690f9ab1\"\u003e\u003ccode\u003e1181b06\u003c/code\u003e\u003c/a\u003e Update changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/9757222e2e044361e70125ebdd96e5eb87395983\"\u003e\u003ccode\u003e9757222\u003c/code\u003e\u003c/a\u003e Fix a minor grammar error (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-cov/issues/636\"\u003e#636\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/9f5cd81a0dbe3fe41681efdbef516c08988fe8ff\"\u003e\u003ccode\u003e9f5cd81\u003c/code\u003e\u003c/a\u003e Cleanup releasing instructions. Closes \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-cov/issues/616\"\u003e#616\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/93b5047ec5050d63c10a6fe16a09b671a7a03df8\"\u003e\u003ccode\u003e93b5047\u003c/code\u003e\u003c/a\u003e Add test for pyproject.toml loading without explicit --cov-config. Ref \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-cov/issues/508\"\u003e#508\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/ff50860d7c67b920503745d92a3f0944cf41f982\"\u003e\u003ccode\u003eff50860\u003c/code\u003e\u003c/a\u003e docs: add config instructions for pyproject.toml.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/4a5a4b5fa4b1c63ddcab5cbc1813798c9b6f1d36\"\u003e\u003ccode\u003e4a5a4b5\u003c/code\u003e\u003c/a\u003e Keep GitHub Actions up to date with GitHub's Dependabot\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/1d7f55963d5138f41c452a946f7cca7e0b6ee8b2\"\u003e\u003ccode\u003e1d7f559\u003c/code\u003e\u003c/a\u003e Fix or remove URLs that are causing docs tests to fail\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/6a5af8e85b8242ac815f33e26adf9068f5f0ebc3\"\u003e\u003ccode\u003e6a5af8e\u003c/code\u003e\u003c/a\u003e Update changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/d9fe8dfed15023d3410dd299c5092e755b8981c2\"\u003e\u003ccode\u003ed9fe8df\u003c/code\u003e\u003c/a\u003e Switch to furo. Closes \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-cov/issues/618\"\u003e#618\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-cov/compare/v4.1.0...v5.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-requests` from 2.31.0.10 to 2.32.0.20241016\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pyyaml` from 6.0.12.12 to 6.0.12.20241230\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bandit` from 1.7.5 to 1.7.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/bandit/releases\"\u003ebandit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.7.10\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump docker/build-push-action from 5.4.0 to 6.0.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1147\"\u003ePyCQA/bandit#1147\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSuggested small refactors in assignments by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1150\"\u003ePyCQA/bandit#1150\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePerformance improvement in blacklist function by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1148\"\u003ePyCQA/bandit#1148\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd test for usage of FTP_TLS by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1149\"\u003ePyCQA/bandit#1149\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eNew check: B113: TrojanSource - Bidirectional control characters by \u003ca href=\"https://github.com/Lucas-C\"\u003e\u003ccode\u003e@​Lucas-C\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/757\"\u003ePyCQA/bandit#757\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.0.0 to 6.1.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1152\"\u003ePyCQA/bandit#1152\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(plugins): add support for \u003ccode\u003ehttpx\u003c/code\u003e in \u003ccode\u003eB113\u003c/code\u003e by \u003ca href=\"https://github.com/mkniewallner\"\u003e\u003ccode\u003e@​mkniewallner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1060\"\u003ePyCQA/bandit#1060\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eNit: remove unused variable by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1153\"\u003ePyCQA/bandit#1153\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd recent releases to version choice in bug report by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1151\"\u003ePyCQA/bandit#1151\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.1.0 to 6.2.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1155\"\u003ePyCQA/bandit#1155\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.2.0 to 6.3.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1157\"\u003ePyCQA/bandit#1157\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/setup-buildx-action from 3.3.0 to 3.4.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1156\"\u003ePyCQA/bandit#1156\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/setup-buildx-action from 3.4.0 to 3.5.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1158\"\u003ePyCQA/bandit#1158\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/login-action from 3.2.0 to 3.3.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1159\"\u003ePyCQA/bandit#1159\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.3.0 to 6.5.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1160\"\u003ePyCQA/bandit#1160\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/setup-buildx-action from 3.5.0 to 3.6.1 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1163\"\u003ePyCQA/bandit#1163\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.5.0 to 6.6.1 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1166\"\u003ePyCQA/bandit#1166\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump sigstore/cosign-installer from 3.5.0 to 3.6.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1165\"\u003ePyCQA/bandit#1165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.6.1 to 6.7.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1168\"\u003ePyCQA/bandit#1168\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse consistent file naming of docs by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1170\"\u003ePyCQA/bandit#1170\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePytorch Load / Save Plugin by \u003ca href=\"https://github.com/lukehinds\"\u003e\u003ccode\u003e@​lukehinds\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1114\"\u003ePyCQA/bandit#1114\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/Lucas-C\"\u003e\u003ccode\u003e@​Lucas-C\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/757\"\u003ePyCQA/bandit#757\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.7.9...1.7.10\"\u003ehttps://github.com/PyCQA/bandit/compare/1.7.9...1.7.10\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.7.9\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump docker/build-push-action from 5.1.0 to 5.2.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1117\"\u003ePyCQA/bandit#1117\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 in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1119\"\u003ePyCQA/bandit#1119\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eNew logo for Bandit based on raccoon by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1121\"\u003ePyCQA/bandit#1121\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStart testing on Python 3.13 by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1122\"\u003ePyCQA/bandit#1122\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 5.2.0 to 5.3.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1123\"\u003ePyCQA/bandit#1123\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/setup-buildx-action from 3.1.0 to 3.2.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1124\"\u003ePyCQA/bandit#1124\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/login-action from 3.0.0 to 3.1.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1125\"\u003ePyCQA/bandit#1125\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 in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1126\"\u003ePyCQA/bandit#1126\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 in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1127\"\u003ePyCQA/bandit#1127\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/setup-buildx-action from 3.2.0 to 3.3.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1130\"\u003ePyCQA/bandit#1130\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 in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1131\"\u003ePyCQA/bandit#1131\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump sigstore/cosign-installer from 3.4.0 to 3.5.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1132\"\u003ePyCQA/bandit#1132\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 in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1133\"\u003ePyCQA/bandit#1133\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdates banner logo so it renders well in dark mode by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1134\"\u003ePyCQA/bandit#1134\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 in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1135\"\u003ePyCQA/bandit#1135\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a sponsor section to README by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1137\"\u003ePyCQA/bandit#1137\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnsure sarif extra is included as part of doc build by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1139\"\u003ePyCQA/bandit#1139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/login-action from 3.1.0 to 3.2.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1142\"\u003ePyCQA/bandit#1142\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 in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1143\"\u003ePyCQA/bandit#1143\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/PyCQA/bandit/commit/36fd65054fc8864b4037d0918904f9331512feb5\"\u003e\u003ccode\u003e36fd650\u003c/code\u003e\u003c/a\u003e Pytorch Load / Save Plugin (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1114\"\u003e#1114\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/4ac55dfaaacf2083497831294b2dcd7e679f8428\"\u003e\u003ccode\u003e4ac55df\u003c/code\u003e\u003c/a\u003e Use consistent file naming of docs (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1170\"\u003e#1170\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/68022aa1d626a7702e3154987f4be278484033fb\"\u003e\u003ccode\u003e68022aa\u003c/code\u003e\u003c/a\u003e Bump docker/build-push-action from 6.6.1 to 6.7.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1168\"\u003e#1168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/77566a00b6c2486049247acdf6dab327dc03845b\"\u003e\u003ccode\u003e77566a0\u003c/code\u003e\u003c/a\u003e Bump sigstore/cosign-installer from 3.5.0 to 3.6.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1165\"\u003e#1165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com...\n\n_Description has been truncated_","html_url":"https://github.com/eugene-davis/vault-assessment-prometheus-exporter/pull/268","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/eugene-davis%2Fvault-assessment-prometheus-exporter/issues/268","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/268/packages"},{"uuid":"5368878562","node_id":"PR_kwDOT_qCsc8AAAABCcqM2Q","number":4,"state":"open","title":"chore(deps-dev): bump bandit from 1.8.6 to 1.9.4","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-07T01:13:52.000Z","updated_at":"2026-09-07T01:13:53.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"bandit","old_version":"1.8.6","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"}],"path":null,"ecosystem":"pip"},"body":"Bumps [bandit](https://github.com/PyCQA/bandit) from 1.8.6 to 1.9.4.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/bandit/releases\"\u003ebandit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: fixed some typos in comments by \u003ca href=\"https://github.com/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/login-action from 3.6.0 to 3.7.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/PyCQA/bandit/pull/1353\"\u003ePyCQA/bandit#1353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.18.0 to 6.19.2 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/PyCQA/bandit/pull/1357\"\u003ePyCQA/bandit#1357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B613 crash when reading from stdin by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude filename in nosec 'no failed test' warning by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1363\"\u003ePyCQA/bandit#1363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B615 false positive when revision is set via variable by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1358\"\u003ePyCQA/bandit#1358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLower version guard in check_ast_node to Python 3.12 by \u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B106 reporting wrong line number on multiline function calls by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1360\"\u003ePyCQA/bandit#1360\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/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1334\"\u003ePyCQA/bandit#1334\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/PyCQA/bandit/pull/1335\"\u003ePyCQA/bandit#1335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B608 to detect \u003ccode\u003eVALUES(\u003c/code\u003e without space by \u003ca href=\"https://github.com/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd check for hardcoded passwords in dicts. by \u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\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/PyCQA/bandit/pull/1341\"\u003ePyCQA/bandit#1341\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate tox tests for Python 3.10 by \u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/setup-buildx-action from 3.11.1 to 3.12.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/PyCQA/bandit/pull/1347\"\u003ePyCQA/bandit#1347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimit B614 to torch.load deserializers by \u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\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/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eArgparse Python 3.14 enhancements by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1331\"\u003ePyCQA/bandit#1331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCheck whether Constant value is str by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1333\"\u003ePyCQA/bandit#1333\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.1...1.9.2\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.1...1.9.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMore Python version related fixes by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1327\"\u003ePyCQA/bandit#1327\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/PyCQA/bandit/commit/92ae8b82fb422a639f0ed8d99e96cea769594e08\"\u003e\u003ccode\u003e92ae8b8\u003c/code\u003e\u003c/a\u003e Fix B106 reporting wrong line number on multiline function calls (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1360\"\u003e#1360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c8c8a55c3307333b8eb46cb2ef46d49b1fad6546\"\u003e\u003ccode\u003ec8c8a55\u003c/code\u003e\u003c/a\u003e Lower version guard in check_ast_node to Python 3.12 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1355\"\u003e#1355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/8f2f9284fca830ca017b2e2cc3ddc2a7b74b7040\"\u003e\u003ccode\u003e8f2f928\u003c/code\u003e\u003c/a\u003e Fix B615 false positive when revision is set via variable (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1358\"\u003e#1358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e27493f71c114e0e5dfc0a475d225d7f9f4a7e2b\"\u003e\u003ccode\u003ee27493f\u003c/code\u003e\u003c/a\u003e Include filename in nosec 'no failed test' warning (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1363\"\u003e#1363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/b69b336450301d424e5ba04c9a58e8d41b7169b6\"\u003e\u003ccode\u003eb69b336\u003c/code\u003e\u003c/a\u003e Fix B613 crash when reading from stdin (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1361\"\u003e#1361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e418b798abcc3f2b00c07fd6315da8fe9aeead00\"\u003e\u003ccode\u003ee418b79\u003c/code\u003e\u003c/a\u003e Bump docker/build-push-action from 6.18.0 to 6.19.2 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1357\"\u003e#1357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/ff646fd7e0e34fb350196fc58448fad17178c27a\"\u003e\u003ccode\u003eff646fd\u003c/code\u003e\u003c/a\u003e Bump docker/login-action from 3.6.0 to 3.7.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1353\"\u003e#1353\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c0def6c7ebab60f98c28ba759d488f4fbe6dae89\"\u003e\u003ccode\u003ec0def6c\u003c/code\u003e\u003c/a\u003e chore: fixed some typos in comments (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1351\"\u003e#1351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/765f00d3f202f83f61d03f882f80a2d5142d81f8\"\u003e\u003ccode\u003e765f00d\u003c/code\u003e\u003c/a\u003e Limit B614 to torch.load deserializers (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1348\"\u003e#1348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/06fbbab0df3374ffa8ef24c6f601b2d5e1d4d429\"\u003e\u003ccode\u003e06fbbab\u003c/code\u003e\u003c/a\u003e Bump docker/setup-buildx-action from 3.11.1 to 3.12.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1347\"\u003e#1347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.8.6...1.9.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=bandit\u0026package-manager=pip\u0026previous-version=1.8.6\u0026new-version=1.9.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/luoshitianchen/SM-API-Gateway/pull/4","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/luoshitianchen%2FSM-API-Gateway/issues/4","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/4/packages"},{"uuid":"5368870595","node_id":"PR_kwDOUApU-s8AAAABCcpylA","number":5,"state":"open","title":"chore(deps-dev): bump bandit from 1.8.6 to 1.9.4","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-07T01:12:33.000Z","updated_at":"2026-09-07T01:12:33.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"bandit","old_version":"1.8.6","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"}],"path":null,"ecosystem":"pip"},"body":"Bumps [bandit](https://github.com/PyCQA/bandit) from 1.8.6 to 1.9.4.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/bandit/releases\"\u003ebandit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: fixed some typos in comments by \u003ca href=\"https://github.com/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/login-action from 3.6.0 to 3.7.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/PyCQA/bandit/pull/1353\"\u003ePyCQA/bandit#1353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.18.0 to 6.19.2 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/PyCQA/bandit/pull/1357\"\u003ePyCQA/bandit#1357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B613 crash when reading from stdin by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude filename in nosec 'no failed test' warning by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1363\"\u003ePyCQA/bandit#1363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B615 false positive when revision is set via variable by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1358\"\u003ePyCQA/bandit#1358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLower version guard in check_ast_node to Python 3.12 by \u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B106 reporting wrong line number on multiline function calls by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1360\"\u003ePyCQA/bandit#1360\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/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1334\"\u003ePyCQA/bandit#1334\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/PyCQA/bandit/pull/1335\"\u003ePyCQA/bandit#1335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B608 to detect \u003ccode\u003eVALUES(\u003c/code\u003e without space by \u003ca href=\"https://github.com/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd check for hardcoded passwords in dicts. by \u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\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/PyCQA/bandit/pull/1341\"\u003ePyCQA/bandit#1341\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate tox tests for Python 3.10 by \u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/setup-buildx-action from 3.11.1 to 3.12.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/PyCQA/bandit/pull/1347\"\u003ePyCQA/bandit#1347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimit B614 to torch.load deserializers by \u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\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/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eArgparse Python 3.14 enhancements by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1331\"\u003ePyCQA/bandit#1331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCheck whether Constant value is str by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1333\"\u003ePyCQA/bandit#1333\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.1...1.9.2\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.1...1.9.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMore Python version related fixes by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1327\"\u003ePyCQA/bandit#1327\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/PyCQA/bandit/commit/92ae8b82fb422a639f0ed8d99e96cea769594e08\"\u003e\u003ccode\u003e92ae8b8\u003c/code\u003e\u003c/a\u003e Fix B106 reporting wrong line number on multiline function calls (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1360\"\u003e#1360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c8c8a55c3307333b8eb46cb2ef46d49b1fad6546\"\u003e\u003ccode\u003ec8c8a55\u003c/code\u003e\u003c/a\u003e Lower version guard in check_ast_node to Python 3.12 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1355\"\u003e#1355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/8f2f9284fca830ca017b2e2cc3ddc2a7b74b7040\"\u003e\u003ccode\u003e8f2f928\u003c/code\u003e\u003c/a\u003e Fix B615 false positive when revision is set via variable (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1358\"\u003e#1358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e27493f71c114e0e5dfc0a475d225d7f9f4a7e2b\"\u003e\u003ccode\u003ee27493f\u003c/code\u003e\u003c/a\u003e Include filename in nosec 'no failed test' warning (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1363\"\u003e#1363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/b69b336450301d424e5ba04c9a58e8d41b7169b6\"\u003e\u003ccode\u003eb69b336\u003c/code\u003e\u003c/a\u003e Fix B613 crash when reading from stdin (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1361\"\u003e#1361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e418b798abcc3f2b00c07fd6315da8fe9aeead00\"\u003e\u003ccode\u003ee418b79\u003c/code\u003e\u003c/a\u003e Bump docker/build-push-action from 6.18.0 to 6.19.2 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1357\"\u003e#1357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/ff646fd7e0e34fb350196fc58448fad17178c27a\"\u003e\u003ccode\u003eff646fd\u003c/code\u003e\u003c/a\u003e Bump docker/login-action from 3.6.0 to 3.7.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1353\"\u003e#1353\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c0def6c7ebab60f98c28ba759d488f4fbe6dae89\"\u003e\u003ccode\u003ec0def6c\u003c/code\u003e\u003c/a\u003e chore: fixed some typos in comments (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1351\"\u003e#1351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/765f00d3f202f83f61d03f882f80a2d5142d81f8\"\u003e\u003ccode\u003e765f00d\u003c/code\u003e\u003c/a\u003e Limit B614 to torch.load deserializers (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1348\"\u003e#1348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/06fbbab0df3374ffa8ef24c6f601b2d5e1d4d429\"\u003e\u003ccode\u003e06fbbab\u003c/code\u003e\u003c/a\u003e Bump docker/setup-buildx-action from 3.11.1 to 3.12.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1347\"\u003e#1347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.8.6...1.9.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=bandit\u0026package-manager=pip\u0026previous-version=1.8.6\u0026new-version=1.9.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/luoshitianchen/SM-CRM/pull/5","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/luoshitianchen%2FSM-CRM/issues/5","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/5/packages"},{"uuid":"5364774833","node_id":"PR_kwDOQd8Gdc8AAAABCZkGIA","number":523,"state":"open","title":"chore(deps): Bump the minor-and-patch group across 1 directory with 51 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-06T11:52:35.000Z","updated_at":"2026-09-06T11:52:48.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":51,"packages":[{"name":"aenum","old_version":"3.1.16","new_version":"3.1.17","repository_url":"https://github.com/ethanfurman/aenum"},{"name":"aiohappyeyeballs","old_version":"2.6.1","new_version":"2.7.1","repository_url":"https://github.com/aio-libs/aiohappyeyeballs"},{"name":"altair","old_version":"6.0.0","new_version":"6.2.2","repository_url":"https://github.com/vega/altair"},{"name":"annotated-doc","old_version":"0.0.4","new_version":"0.0.5","repository_url":"https://github.com/fastapi/annotated-doc"},{"name":"annotated-types","old_version":"0.7.0","new_version":"0.8.0","repository_url":"https://github.com/annotated-types/annotated-types"},{"name":"anyio","old_version":"4.12.0","new_version":"4.15.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"beautifulsoup4","old_version":"4.14.3","new_version":"4.15.0"},{"name":"cffi","old_version":"2.0.0","new_version":"2.1.1","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.4.4","new_version":"3.5.1","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.3.3","new_version":"8.5.0","repository_url":"https://github.com/pallets/click"},{"name":"cryptography","old_version":"50.0.0","new_version":"50.0.1","repository_url":"https://github.com/pyca/cryptography"},{"name":"fonttools","old_version":"4.61.0","new_version":"4.64.0","repository_url":"https://github.com/fonttools/fonttools"},{"name":"google-api-python-client","old_version":"2.187.0","new_version":"2.200.0","repository_url":"https://github.com/googleapis/google-api-python-client"},{"name":"google-auth","old_version":"2.41.1","new_version":"2.57.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"google-auth-httplib2","old_version":"0.2.1","new_version":"0.4.2","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"google-auth-oauthlib","old_version":"1.2.3","new_version":"1.4.1","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"idna","old_version":"3.18","new_version":"3.19","repository_url":"https://github.com/kjd/idna"},{"name":"jsonschema","old_version":"4.25.1","new_version":"4.26.0","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"kiwisolver","old_version":"1.4.9","new_version":"1.5.1","repository_url":"https://github.com/nucleic/kiwi"},{"name":"line-bot-sdk","old_version":"3.21.0","new_version":"3.25.0","repository_url":"https://github.com/line/line-bot-sdk-python"},{"name":"lxml","old_version":"6.1.0","new_version":"6.1.3","repository_url":"https://github.com/lxml/lxml"},{"name":"multidict","old_version":"6.7.0","new_version":"6.7.1","repository_url":"https://github.com/aio-libs/multidict"},{"name":"narwhals","old_version":"2.13.0","new_version":"2.25.0","repository_url":"https://github.com/narwhals-dev/narwhals"},{"name":"numpy","old_version":"2.2.6","new_version":"2.4.6","repository_url":"https://github.com/numpy/numpy"},{"name":"platformdirs","old_version":"4.5.0","new_version":"4.11.7","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"propcache","old_version":"0.4.1","new_version":"0.5.2","repository_url":"https://github.com/aio-libs/propcache"},{"name":"pydantic","old_version":"2.12.5","new_version":"2.13.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-core","old_version":"2.41.5","new_version":"2.48.0","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydeck","old_version":"0.9.1","new_version":"0.9.3","repository_url":"https://github.com/visgl/deck.gl"},{"name":"pygments","old_version":"2.20.0","new_version":"2.21.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pyparsing","old_version":"3.2.5","new_version":"3.3.2","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"pypdfium2","old_version":"5.1.0","new_version":"5.13.0","repository_url":"https://github.com/pypdfium2-team/pypdfium2"},{"name":"python-dotenv","old_version":"1.2.2","new_version":"1.2.3","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"requests","old_version":"2.33.0","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"soupsieve","old_version":"2.8.4","new_version":"2.9.2","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"streamlit","old_version":"1.54.0","new_version":"1.63.0","repository_url":"https://github.com/streamlit/streamlit"},{"name":"tenacity","old_version":"9.1.2","new_version":"9.1.4","repository_url":"https://github.com/jd/tenacity"},{"name":"tqdm","old_version":"4.67.1","new_version":"4.70.0","repository_url":"https://github.com/tqdm/tqdm"},{"name":"typing-inspection","old_version":"0.4.2","new_version":"0.4.4","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"typing-extensions","old_version":"4.15.0","new_version":"4.16.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"uvicorn","old_version":"0.38.0","new_version":"0.52.4","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"wrapt","old_version":"2.0.1","new_version":"2.4.0","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"yarl","old_version":"1.22.0","new_version":"1.24.5","repository_url":"https://github.com/aio-libs/yarl"},{"name":"pytest","old_version":"9.0.3","new_version":"9.1.1","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-asyncio","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/pytest-dev/pytest-asyncio"},{"name":"httpx2","old_version":"2.10.0","new_version":"2.12.0","repository_url":"https://github.com/pydantic/httpx2"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"hypothesis","old_version":"6.145.1","new_version":"6.167.1","repository_url":"https://github.com/HypothesisWorks/hypothesis"},{"name":"ruff","old_version":"0.14.4","new_version":"0.16.5","repository_url":"https://github.com/astral-sh/ruff"},{"name":"bandit","old_version":"1.9.2","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"},{"name":"pip-audit","old_version":"2.9.0","new_version":"2.10.1","repository_url":"https://github.com/pypa/pip-audit"}],"path":null,"ecosystem":"pip"},"body":"Bumps the minor-and-patch group with 51 updates in the /MY_HOME_SYSTEM directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [aenum](https://github.com/ethanfurman/aenum) | `3.1.16` | `3.1.17` |\n| [aiohappyeyeballs](https://github.com/aio-libs/aiohappyeyeballs) | `2.6.1` | `2.7.1` |\n| [altair](https://github.com/vega/altair) | `6.0.0` | `6.2.2` |\n| [annotated-doc](https://github.com/fastapi/annotated-doc) | `0.0.4` | `0.0.5` |\n| [annotated-types](https://github.com/annotated-types/annotated-types) | `0.7.0` | `0.8.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.12.0` | `4.15.0` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.14.3` | `4.15.0` |\n| [cffi](https://github.com/python-cffi/cffi) | `2.0.0` | `2.1.1` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.4` | `3.5.1` |\n| [click](https://github.com/pallets/click) | `8.3.3` | `8.5.0` |\n| [cryptography](https://github.com/pyca/cryptography) | `50.0.0` | `50.0.1` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.61.0` | `4.64.0` |\n| [google-api-python-client](https://github.com/googleapis/google-api-python-client) | `2.187.0` | `2.200.0` |\n| [google-auth](https://github.com/googleapis/google-cloud-python) | `2.41.1` | `2.57.0` |\n| [google-auth-httplib2](https://github.com/googleapis/google-cloud-python) | `0.2.1` | `0.4.2` |\n| [google-auth-oauthlib](https://github.com/googleapis/google-cloud-python) | `1.2.3` | `1.4.1` |\n| [idna](https://github.com/kjd/idna) | `3.18` | `3.19` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.25.1` | `4.26.0` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.4.9` | `1.5.1` |\n| [line-bot-sdk](https://github.com/line/line-bot-sdk-python) | `3.21.0` | `3.25.0` |\n| [lxml](https://github.com/lxml/lxml) | `6.1.0` | `6.1.3` |\n| [multidict](https://github.com/aio-libs/multidict) | `6.7.0` | `6.7.1` |\n| [narwhals](https://github.com/narwhals-dev/narwhals) | `2.13.0` | `2.25.0` |\n| [numpy](https://github.com/numpy/numpy) | `2.2.6` | `2.4.6` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.5.0` | `4.11.7` |\n| [propcache](https://github.com/aio-libs/propcache) | `0.4.1` | `0.5.2` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.12.5` | `2.13.5` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.41.5` | `2.48.0` |\n| [pydeck](https://github.com/visgl/deck.gl) | `0.9.1` | `0.9.3` |\n| [pygments](https://github.com/pygments/pygments) | `2.20.0` | `2.21.0` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.5` | `3.3.2` |\n| [pypdfium2](https://github.com/pypdfium2-team/pypdfium2) | `5.1.0` | `5.13.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.2` | `1.2.3` |\n| [requests](https://github.com/psf/requests) | `2.33.0` | `2.34.2` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.8.4` | `2.9.2` |\n| [streamlit](https://github.com/streamlit/streamlit) | `1.54.0` | `1.63.0` |\n| [tenacity](https://github.com/jd/tenacity) | `9.1.2` | `9.1.4` |\n| [tqdm](https://github.com/tqdm/tqdm) | `4.67.1` | `4.70.0` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.2` | `0.4.4` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.15.0` | `4.16.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.38.0` | `0.52.4` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `2.0.1` | `2.4.0` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.22.0` | `1.24.5` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.3` | `9.1.1` |\n| [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) | `1.3.0` | `1.4.0` |\n| [httpx2](https://github.com/pydantic/httpx2) | `2.10.0` | `2.12.0` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` |\n| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.145.1` | `6.167.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.4` | `0.16.5` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [pip-audit](https://github.com/pypa/pip-audit) | `2.9.0` | `2.10.1` |\n\n\nUpdates `aenum` from 3.1.16 to 3.1.17\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ethanfurman/aenum/commit/f0f6fd8e2ac0bb379eb11f6029023d2bad88732a\"\u003e\u003ccode\u003ef0f6fd8\u003c/code\u003e\u003c/a\u003e version 3.1.17\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ethanfurman/aenum/commit/60c5641a7c0525ae812c9674330c3634bd852e69\"\u003e\u003ccode\u003e60c5641\u003c/code\u003e\u003c/a\u003e remove duplicate function\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ethanfurman/aenum/commit/e463496bd4a485f92f34eec37b7b73aedef10405\"\u003e\u003ccode\u003ee463496\u003c/code\u003e\u003c/a\u003e fix global_flag_repr\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ethanfurman/aenum/commit/f6510625e7cf7e7291d3b1b12e0bb341467e6f27\"\u003e\u003ccode\u003ef651062\u003c/code\u003e\u003c/a\u003e bump version\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/ethanfurman/aenum/compare/3.1.16...3.1.17\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `aiohappyeyeballs` from 2.6.1 to 2.7.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/releases\"\u003eaiohappyeyeballs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.7.1 (2026-07-01)\u003c/h2\u003e\n\u003ch3\u003ePerformance Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse defaultdict to help with performance (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/239\"\u003e#239\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/e10f335ad9630122832e967428ac138992a50bca\"\u003e\u003ccode\u003ee10f335\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eCollapse collect-then-remove pattern in utils helpers (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/227\"\u003e#227\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/0dd3fd16fe394eb8493000dc9b9894fad3ca3190\"\u003e\u003ccode\u003e0dd3fd1\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMerge identical except blocks in _connect_sock cleanup (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/229\"\u003e#229\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/b7c186e3242eb4d6eaf0918857a99c263b3186fb\"\u003e\u003ccode\u003eb7c186e\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSimplify _interleave_addrinfos family grouping (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/226\"\u003e#226\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/fdf6548a5f8b38e45ad7cee8add3c3a7e34e2805\"\u003e\u003ccode\u003efdf6548\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eDetailed Changes\u003c/strong\u003e: \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.7.0...v2.7.1\"\u003ev2.7.0...v2.7.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.7.0 (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/224\"\u003e#224\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/10e7d4341666605de295dd00da716e30002e78c2\"\u003e\u003ccode\u003e10e7d43\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eDetailed Changes\u003c/strong\u003e: \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.6.2...v2.7.0\"\u003ev2.6.2...v2.7.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.6.2 (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClear error on empty addr_infos in start_connection (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/222\"\u003e#222\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/55dd76aee978ca47a38899b9caf69d058bf41fb3\"\u003e\u003ccode\u003e55dd76a\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptimize obtaining event-loop down to 1 line (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/185\"\u003e#185\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/02a70296210125b45952c3221db0dfb76d8ea911\"\u003e\u003ccode\u003e02a7029\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTesting\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStop verify_no_lingering_tasks from leaking an event loop (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/221\"\u003e#221\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/ce43beb0242007dc57be6e2f4e3bf0b9f4f239d1\"\u003e\u003ccode\u003ece43beb\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eDetailed Changes\u003c/strong\u003e: \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.6.1...v2.6.2\"\u003ev2.6.1...v2.6.2\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/aio-libs/aiohappyeyeballs/blob/main/CHANGELOG.md\"\u003eaiohappyeyeballs's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.7.1 (2026-07-01)\u003c/h2\u003e\n\u003ch3\u003ePerformance improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse defaultdict to help with performance (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/e10f335ad9630122832e967428ac138992a50bca\"\u003e\u003ccode\u003ee10f335\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSimplify _interleave_addrinfos family grouping (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/fdf6548a5f8b38e45ad7cee8add3c3a7e34e2805\"\u003e\u003ccode\u003efdf6548\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCollapse collect-then-remove pattern in utils helpers (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/0dd3fd16fe394eb8493000dc9b9894fad3ca3190\"\u003e\u003ccode\u003e0dd3fd1\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMerge identical except blocks in _connect_sock cleanup (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/b7c186e3242eb4d6eaf0918857a99c263b3186fb\"\u003e\u003ccode\u003eb7c186e\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.7.0 (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd python 3.14 support (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/10e7d4341666605de295dd00da716e30002e78c2\"\u003e\u003ccode\u003e10e7d43\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.6.2 (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClear error on empty addr_infos in start_connection (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/55dd76aee978ca47a38899b9caf69d058bf41fb3\"\u003e\u003ccode\u003e55dd76a\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTesting\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStop verify_no_lingering_tasks from leaking an event loop (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/ce43beb0242007dc57be6e2f4e3bf0b9f4f239d1\"\u003e\u003ccode\u003ece43beb\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptimize obtaining event-loop down to 1 line (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/02a70296210125b45952c3221db0dfb76d8ea911\"\u003e\u003ccode\u003e02a7029\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/4dfc926e30eea8d24c1a71602d73c0e9a895c191\"\u003e\u003ccode\u003e4dfc926\u003c/code\u003e\u003c/a\u003e 2.7.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/e10f335ad9630122832e967428ac138992a50bca\"\u003e\u003ccode\u003ee10f335\u003c/code\u003e\u003c/a\u003e perf: use defaultdict to help with performance (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/239\"\u003e#239\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/338277badfb25fc38759ce38ab9ea2c20ec1bfff\"\u003e\u003ccode\u003e338277b\u003c/code\u003e\u003c/a\u003e chore: stop tracking .DS_Store files (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/251\"\u003e#251\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/16978694944ed7fb5e7b49a173160144ccac45bc\"\u003e\u003ccode\u003e1697869\u003c/code\u003e\u003c/a\u003e ci: add codspeed benchmark suite for addrinfo reordering hot paths (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/250\"\u003e#250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/d40a848cd2262b435242646fa8e220300bcd6952\"\u003e\u003ccode\u003ed40a848\u003c/code\u003e\u003c/a\u003e chore(deps-dev): bump starlette from 1.0.1 to 1.3.1 (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/242\"\u003e#242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/51d42669b2b94a78c6d4bd059e449b8ef51c6646\"\u003e\u003ccode\u003e51d4266\u003c/code\u003e\u003c/a\u003e chore(deps-dev): bump cryptography from 46.0.7 to 48.0.1 (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/243\"\u003e#243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/2df44b3987d3c887a8493ba19259c63588226d6c\"\u003e\u003ccode\u003e2df44b3\u003c/code\u003e\u003c/a\u003e chore(pre-commit.ci): pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/241\"\u003e#241\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/3e3cb615f00bfb4d29c30e0c86c897f4de8fb02d\"\u003e\u003ccode\u003e3e3cb61\u003c/code\u003e\u003c/a\u003e chore(deps-dev): bump pytest from 9.0.3 to 9.1.1 (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/922dcd79a66d67fdd98a5f9b7587c4f8cda44653\"\u003e\u003ccode\u003e922dcd7\u003c/code\u003e\u003c/a\u003e chore(deps-ci): bump the github-actions group with 4 updates (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/245\"\u003e#245\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/70461c583a8cf3c6fa85b8c48b8e4b576cee8083\"\u003e\u003ccode\u003e70461c5\u003c/code\u003e\u003c/a\u003e ci: drop .github/FUNDING.yml to inherit org-wide config (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/247\"\u003e#247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.6.1...v2.7.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `altair` from 6.0.0 to 6.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/vega/altair/releases\"\u003ealtair's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.2.2\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: Avoid layered concat view name collisions by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4066\"\u003evega/altair#4066\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: Include layered concat views in selection params by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4069\"\u003evega/altair#4069\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edocs: Add an Andrews curves example to the gallery by \u003ca href=\"https://github.com/kyo5uke\"\u003e\u003ccode\u003e@​kyo5uke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4049\"\u003evega/altair#4049\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Add an interactive bin-size example to the gallery by \u003ca href=\"https://github.com/kyo5uke\"\u003e\u003ccode\u003e@​kyo5uke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4050\"\u003evega/altair#4050\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Validate docs publish clone by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4064\"\u003evega/altair#4064\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Fix broken example and sync with VL by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4010\"\u003evega/altair#4010\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eci: Make warning for doc preview page more prominent by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4048\"\u003evega/altair#4048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Check uv lockfile by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4052\"\u003evega/altair#4052\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Run docs build only for docs-related changes and don't duplicate builds on PRs by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4053\"\u003evega/altair#4053\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebuild: Update dependencies from dependabot alerts by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4055\"\u003evega/altair#4055\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Upload docs build artifact for PR preview by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4056\"\u003evega/altair#4056\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebuild: Reduce dependabot PRs by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4028\"\u003evega/altair#4028\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Correctly resolve docbuild worflow number from PR number by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4060\"\u003evega/altair#4060\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Group major GitHub Actions updates by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4061\"\u003evega/altair#4061\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Rename docbuild job from 'build' to 'docbuild' by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4062\"\u003evega/altair#4062\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Schedule release drafts twice monthly by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4057\"\u003evega/altair#4057\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Publish official docs after release is published by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4054\"\u003evega/altair#4054\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Document how local versioning works and add base tag by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4051\"\u003evega/altair#4051\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Disambiguate workflow naming by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4063\"\u003evega/altair#4063\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: enable partial Python 3.14t coverage by \u003ca href=\"https://github.com/axelray-dev\"\u003e\u003ccode\u003e@​axelray-dev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4038\"\u003evega/altair#4038\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/kyo5uke\"\u003e\u003ccode\u003e@​kyo5uke\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4049\"\u003evega/altair#4049\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/vega/altair/compare/v6.2.1...v6.2.2\"\u003ehttps://github.com/vega/altair/compare/v6.2.1...v6.2.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.2.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: Write dataset cache files atomically by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4034\"\u003evega/altair#4034\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eci: Prevent uv from dirtying worktree during publish by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4045\"\u003evega/altair#4045\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Clarify release review instructions by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4046\"\u003evega/altair#4046\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/vega/altair/compare/v6.2.0...v6.2.1\"\u003ehttps://github.com/vega/altair/compare/v6.2.0...v6.2.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.2.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003eThis is the first release in an effort to have smaller, more frequent releases going forward. By making the release process more convenient, we aim to more quickly push out fixes and features that already landed on the main branch to a released version of Altair.\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/vega/altair/commit/a9765713566095349cb1cfbbe85d6ad258c84245\"\u003e\u003ccode\u003ea976571\u003c/code\u003e\u003c/a\u003e fix: Include layered concat views in selection params (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4069\"\u003e#4069\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/432157b2304e0e30d89167ab26d1f7987f615a31\"\u003e\u003ccode\u003e432157b\u003c/code\u003e\u003c/a\u003e fix: Avoid layered concat view name collisions (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4066\"\u003e#4066\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/b875b95a24ee20f8e5665a730ee6d80cb6d55348\"\u003e\u003ccode\u003eb875b95\u003c/code\u003e\u003c/a\u003e docs: Fix a broken example and sync another one with VL (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4010\"\u003e#4010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/7b289f9adf07d960f94620ef02c33b8f400f4948\"\u003e\u003ccode\u003e7b289f9\u003c/code\u003e\u003c/a\u003e ci: Enable partial Python 3.14t coverage (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4038\"\u003e#4038\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/105ff2b4957651bf4cf55e4e2586705fa02ddfe7\"\u003e\u003ccode\u003e105ff2b\u003c/code\u003e\u003c/a\u003e docs: Validate docs publish clone (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4064\"\u003e#4064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/c82dd2e4af3bcd06ee4909cc38135d1b7f92c3dd\"\u003e\u003ccode\u003ec82dd2e\u003c/code\u003e\u003c/a\u003e ci: Disambiguate workflow naming (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4063\"\u003e#4063\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/624bee9705b345961c9b225d39562a10068461af\"\u003e\u003ccode\u003e624bee9\u003c/code\u003e\u003c/a\u003e docs: Add an interactive bin-size example to the gallery (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4050\"\u003e#4050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/3b1acf676a1a61d9df8d1ded2393dfde49587cae\"\u003e\u003ccode\u003e3b1acf6\u003c/code\u003e\u003c/a\u003e docs: Add an Andrews curves example to the gallery (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4049\"\u003e#4049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/edea5f64e7e893315e2050672058f86657b28201\"\u003e\u003ccode\u003eedea5f6\u003c/code\u003e\u003c/a\u003e ci: Document how local versioning works and add base tag (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4051\"\u003e#4051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/f8b4337e1355ca229d1e2e9645e89b6ec1a7a41c\"\u003e\u003ccode\u003ef8b4337\u003c/code\u003e\u003c/a\u003e ci: Publish official docs after release is published (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4054\"\u003e#4054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/vega/altair/compare/v6.0.0...v6.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `annotated-doc` from 0.0.4 to 0.0.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/annotated-doc/releases\"\u003eannotated-doc's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.5\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e➖ Drop support for Python 3.8. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/36\"\u003e#36\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\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ Bump ruff from 0.14.3 to 0.14.10. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/31\"\u003e#31\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\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Update security policy. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/63\"\u003e#63\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Upgrade latest-changes to 0.7.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/92\"\u003e#92\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⬆ Bump the github-actions group across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/91\"\u003e#91\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 the python-packages group across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/90\"\u003e#90\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 pre-commit hooks. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/89\"\u003e#89\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 GH workflow to bump pre-commit hook versions. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/81\"\u003e#81\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🔧 Set Dependabot schedule interval to \u0026quot;monthly\u0026quot;. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/82\"\u003e#82\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👷 Fix latest-changes checkout target. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/85\"\u003e#85\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 issue-manager to 0.8.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/84\"\u003e#84\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 latest-changes to 0.6.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/83\"\u003e#83\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⬆ Bump the python-packages group across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/72\"\u003e#72\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 the github-actions group across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/80\"\u003e#80\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 \u003ca href=\"https://github.com/crate-ci/typos\"\u003ehttps://github.com/crate-ci/typos\u003c/a\u003e from v1.46.0 to 1.47.2 in the pre-commit group across 1 directory. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/76\"\u003e#76\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👷 Simplify pull request workflow triggers. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/79\"\u003e#79\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 issue-manager to 0.7.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/78\"\u003e#78\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 issue-manager to 0.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/77\"\u003e#77\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 zizmor workflow security checks. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/75\"\u003e#75\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Fix alls-green test dependency. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/74\"\u003e#74\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 pre-commit hook to catch typos. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/68\"\u003e#68\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 the python-packages group with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/70\"\u003e#70\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 the github-actions group with 2 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/71\"\u003e#71\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👷 Automate release preparation. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/69\"\u003e#69\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👷 Configure Dependabot to group updates and update weekly. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/62\"\u003e#62\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔥 Remove config files now in central GitHub repo. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/65\"\u003e#65\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Fix branch name in \u003ccode\u003eguard-dependencies.yml\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/61\"\u003e#61\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Only allow team members to modify dependencies. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/60\"\u003e#60\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump ty from 0.0.33 to 0.0.34. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/58\"\u003e#58\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 prek from 0.3.11 to 0.3.13. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/59\"\u003e#59\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 zizmor and fix audit findings. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/50\"\u003e#50\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 the lower bound of \u003ccode\u003ety\u003c/code\u003e to 0.0.25. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/57\"\u003e#57\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Configure \u003ccode\u003ety\u003c/code\u003e to exit with error code on warnings. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/56\"\u003e#56\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/add-to-project from 1.0.2 to 2.0.0. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/54\"\u003e#54\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/labeler from 6.0.1 to 6.1.0. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/55\"\u003e#55\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 ruff from 0.15.8 to 0.15.12. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/51\"\u003e#51\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 prek from 0.3.8 to 0.3.11. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/53\"\u003e#53\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 ty from 0.0.27 to 0.0.33. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/52\"\u003e#52\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\u003c/ul\u003e\n\u003c!-- 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/fastapi/annotated-doc/blob/main/release-notes.md\"\u003eannotated-doc's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.5 (2026-07-28)\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e➖ Drop support for Python 3.8. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/36\"\u003e#36\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\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ Bump ruff from 0.14.3 to 0.14.10. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/31\"\u003e#31\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\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Update security policy. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/63\"\u003e#63\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Upgrade latest-changes to 0.7.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/92\"\u003e#92\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⬆ Bump the github-actions group across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/91\"\u003e#91\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 the python-packages group across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/90\"\u003e#90\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 pre-commit hooks. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/89\"\u003e#89\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 GH workflow to bump pre-commit hook versions. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/81\"\u003e#81\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🔧 Set Dependabot schedule interval to \u0026quot;monthly\u0026quot;. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/82\"\u003e#82\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👷 Fix latest-changes checkout target. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/85\"\u003e#85\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 issue-manager to 0.8.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/84\"\u003e#84\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 latest-changes to 0.6.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/83\"\u003e#83\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⬆ Bump the python-packages group across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/72\"\u003e#72\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 the github-actions group across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/80\"\u003e#80\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 \u003ca href=\"https://github.com/crate-ci/typos\"\u003ehttps://github.com/crate-ci/typos\u003c/a\u003e from v1.46.0 to 1.47.2 in the pre-commit group across 1 directory. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/76\"\u003e#76\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👷 Simplify pull request workflow triggers. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/79\"\u003e#79\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 issue-manager to 0.7.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/78\"\u003e#78\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 issue-manager to 0.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/77\"\u003e#77\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 zizmor workflow security checks. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/75\"\u003e#75\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Fix alls-green test dependency. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/74\"\u003e#74\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 pre-commit hook to catch typos. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/68\"\u003e#68\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 the python-packages group with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/70\"\u003e#70\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 the github-actions group with 2 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/71\"\u003e#71\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👷 Automate release preparation. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/69\"\u003e#69\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👷 Configure Dependabot to group updates and update weekly. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/62\"\u003e#62\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔥 Remove config files now in central GitHub repo. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/65\"\u003e#65\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Fix branch name in \u003ccode\u003eguard-dependencies.yml\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/61\"\u003e#61\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Only allow team members to modify dependencies. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/60\"\u003e#60\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump ty from 0.0.33 to 0.0.34. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/58\"\u003e#58\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 prek from 0.3.11 to 0.3.13. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/59\"\u003e#59\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 zizmor and fix audit findings. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/50\"\u003e#50\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 the lower bound of \u003ccode\u003ety\u003c/code\u003e to 0.0.25. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/57\"\u003e#57\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Configure \u003ccode\u003ety\u003c/code\u003e to exit with error code on warnings. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/56\"\u003e#56\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/add-to-project from 1.0.2 to 2.0.0. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/54\"\u003e#54\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/labeler from 6.0.1 to 6.1.0. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/55\"\u003e#55\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 ruff from 0.15.8 to 0.15.12. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/51\"\u003e#51\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 prek from 0.3.8 to 0.3.11. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/53\"\u003e#53\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\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/annotated-doc/commit/ef48d6ad51d226f772fd9c5284f55199afe4007c\"\u003e\u003ccode\u003eef48d6a\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.0.5 (\u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/issues/93\"\u003e#93\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/c628000835a26f6bc8c776f90bcbcf95211f233b\"\u003e\u003ccode\u003ec628000\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/e0b4579d2ad8d62a304c9f30a1c2c084f0d372e5\"\u003e\u003ccode\u003ee0b4579\u003c/code\u003e\u003c/a\u003e ➖ Drop support for Python 3.8 (\u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/issues/36\"\u003e#36\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/ef956b4e9f2c0e2bead1cba7a6888e1ed8c2c237\"\u003e\u003ccode\u003eef956b4\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/84bf1e5402c5e0cfd1462c5d3c8bae22fb717bd8\"\u003e\u003ccode\u003e84bf1e5\u003c/code\u003e\u003c/a\u003e ⬆️ Upgrade latest-changes to 0.7.1 (\u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/issues/92\"\u003e#92\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/cf773e138b1dc5608ce0f0d11e1939c410ef6228\"\u003e\u003ccode\u003ecf773e1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/1375d6eb8147cb2352d080ef09f356dfc18e0d29\"\u003e\u003ccode\u003e1375d6e\u003c/code\u003e\u003c/a\u003e ⬆ Bump the github-actions group across 1 directory with 3 updates (\u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/issues/91\"\u003e#91\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/cd373656cbf40e5fd4cc28680ca5e05bf12709cb\"\u003e\u003ccode\u003ecd37365\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/f9f3b695cbacc4ffc37d9cebff6e05bd1751f68a\"\u003e\u003ccode\u003ef9f3b69\u003c/code\u003e\u003c/a\u003e ⬆ Bump the python-packages group across 1 directory with 3 updates (\u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/issues/90\"\u003e#90\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/842084457f0a7739fb91d2a4ea602b2bc4e15767\"\u003e\u003ccode\u003e8420844\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/annotated-doc/compare/0.0.4...0.0.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `annotated-types` from 0.7.0 to 0.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/annotated-types/annotated-types/releases\"\u003eannotated-types's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.8.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRename DocInfo to Doc by \u003ca href=\"https://github.com/zen-xu\"\u003e\u003ccode\u003e@​zen-xu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/80\"\u003eannotated-types/annotated-types#80\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/83\"\u003eannotated-types/annotated-types#83\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix docstring of \u003ccode\u003eTimezone\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/annotated-types/annotated-types/pull/84\"\u003eannotated-types/annotated-types#84\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate license-files to be PEP-639 compliant (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/85\"\u003e#85\u003c/a\u003e) by \u003ca href=\"https://github.com/shoeffner\"\u003e\u003ccode\u003e@​shoeffner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/86\"\u003eannotated-types/annotated-types#86\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: typo in README.md by \u003ca href=\"https://github.com/camiloaz\"\u003e\u003ccode\u003e@​camiloaz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/87\"\u003eannotated-types/annotated-types#87\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd CI for PyPy3.11 and fix test (issue 71) by \u003ca href=\"https://github.com/mattip\"\u003e\u003ccode\u003e@​mattip\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/88\"\u003eannotated-types/annotated-types#88\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix string predicate names in doc by \u003ca href=\"https://github.com/leogermond\"\u003e\u003ccode\u003e@​leogermond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/90\"\u003eannotated-types/annotated-types#90\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SPDX license expression by \u003ca href=\"https://github.com/wichert\"\u003e\u003ccode\u003e@​wichert\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/92\"\u003eannotated-types/annotated-types#92\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded Python 3.14 to the test matrix by \u003ca href=\"https://github.com/imtoopunkforyou\"\u003e\u003ccode\u003e@​imtoopunkforyou\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/96\"\u003eannotated-types/annotated-types#96\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 and drop EOL 3.8-3.9 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/97\"\u003eannotated-types/annotated-types#97\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typo in \u003ccode\u003eLen\u003c/code\u003e docstring by \u003ca href=\"https://github.com/Dutcho\"\u003e\u003ccode\u003e@​Dutcho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/100\"\u003eannotated-types/annotated-types#100\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for 0.8.0 release by \u003ca href=\"https://github.com/adriangb\"\u003e\u003ccode\u003e@​adriangb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/103\"\u003eannotated-types/annotated-types#103\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/zen-xu\"\u003e\u003ccode\u003e@​zen-xu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/80\"\u003eannotated-types/annotated-types#80\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/83\"\u003eannotated-types/annotated-types#83\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shoeffner\"\u003e\u003ccode\u003e@​shoeffner\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/86\"\u003eannotated-types/annotated-types#86\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/camiloaz\"\u003e\u003ccode\u003e@​camiloaz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/87\"\u003eannotated-types/annotated-types#87\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mattip\"\u003e\u003ccode\u003e@​mattip\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/88\"\u003eannotated-types/annotated-types#88\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/leogermond\"\u003e\u003ccode\u003e@​leogermond\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/90\"\u003eannotated-types/annotated-types#90\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/wichert\"\u003e\u003ccode\u003e@​wichert\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/92\"\u003eannotated-types/annotated-types#92\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/imtoopunkforyou\"\u003e\u003ccode\u003e@​imtoopunkforyou\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/96\"\u003eannotated-types/annotated-types#96\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dutcho\"\u003e\u003ccode\u003e@​Dutcho\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/100\"\u003eannotated-types/annotated-types#100\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/annotated-types/annotated-types/compare/v0.7.0...v0.8.0\"\u003ehttps://github.com/annotated-types/annotated-types/compare/v0.7.0...v0.8.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/annotated-types/annotated-types/commit/9eb96680138269811a39d838d720abc3dce33954\"\u003e\u003ccode\u003e9eb9668\u003c/code\u003e\u003c/a\u003e Prepare for 0.8.0 release (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/103\"\u003e#103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/10b77644f88b385357653730a1ab23748ca3ae2e\"\u003e\u003ccode\u003e10b7764\u003c/code\u003e\u003c/a\u003e Fix typo in \u003ccode\u003eLen\u003c/code\u003e docstring (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/100\"\u003e#100\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/955f7576d616feb6e9407c74498517787c38afd4\"\u003e\u003ccode\u003e955f757\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 and drop EOL 3.8-3.9 (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/97\"\u003e#97\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/bd280fea7983550d266f993d868b8dd7ff822bf1\"\u003e\u003ccode\u003ebd280fe\u003c/code\u003e\u003c/a\u003e Added Python 3.14 to the test matrix (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/96\"\u003e#96\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/a471bb757663452459893e6f593118ec21eb1b9e\"\u003e\u003ccode\u003ea471bb7\u003c/code\u003e\u003c/a\u003e Add SPDX license expression (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/92\"\u003e#92\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/eab91d9a8c0d3f73661fc4b0794a1fe76c94fa84\"\u003e\u003ccode\u003eeab91d9\u003c/code\u003e\u003c/a\u003e Fix string predicate names in doc (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/90\"\u003e#90\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/03ad9c3c7b4d4dfe9e33c09075a3a2766c0820e1\"\u003e\u003ccode\u003e03ad9c3\u003c/code\u003e\u003c/a\u003e add CI for PyPy3.11 and fix test (issue 71) (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/88\"\u003e#88\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/5ae60437f0ab493cedd27311bc6ce6d2188e8d8b\"\u003e\u003ccode\u003e5ae6043\u003c/code\u003e\u003c/a\u003e fix: typo in README.md (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/87\"\u003e#87\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/b60ad7bff90019c7de3547df1c8e3586eb328423\"\u003e\u003ccode\u003eb60ad7b\u003c/code\u003e\u003c/a\u003e Update license-files to be PEP-639 compliant (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/85\"\u003e#85\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/86\"\u003e#86\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/3fbeb6d129760ae48d7a0372fb9301764acc95ae\"\u003e\u003ccode\u003e3fbeb6d\u003c/code\u003e\u003c/a\u003e Fix docstring of \u003ccode\u003eTimezone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/84\"\u003e#84\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/annotated-types/annotated-types/compare/v0.7.0...v0.8.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.0 to 4.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.15.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support for the newer keyword-only arguments on \u003ccode\u003eanyio.Path\u003c/code\u003e methods to match the standard library \u003ccode\u003epathlib.Path\u003c/code\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eexists()\u003c/code\u003e (Python 3.12+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eis_dir()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eis_file()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eowner()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003egroup()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003enewline\u003c/code\u003e on \u003ccode\u003eread_text()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e(\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1286\"\u003e#1286\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1293\"\u003e#1293\u003c/a\u003e; PR by \u003ca href=\"https://github.com/jaideeppyne\"\u003e\u003ccode\u003e@​jaideeppyne\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003eamap\u003c/code\u003e, \u003ccode\u003egather\u003c/code\u003e, and \u003ccode\u003eas_completed\u003c/code\u003e utility functions to simplify common patterns (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1173\"\u003e#1173\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003e--anyio-mode\u003c/code\u003e command-line option as an alternative to the \u003ccode\u003eanyio_mode\u003c/code\u003e ini setting, and fix the pytest plugin's auto mode detection to recognize the mode when set via either mechanism(e.g: \u003ccode\u003epytest_asyncio\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1242\"\u003e#1242\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003eanyio.Future\u003c/code\u003e synchronization primitive which behaves similar to \u003ccode\u003easyncio.Future\u003c/code\u003e, allowing tasks to wait for a value (or exception) from another task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1146\"\u003e#1146\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded guidance for managing multiple memory object stream producers and consumers with cloned streams (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/330\"\u003e#330\u003c/a\u003e; PR by \u003ca href=\"https://github.com/nightcityblade\"\u003e\u003ccode\u003e@​nightcityblade\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003eStapledObjectStream.send_nowait()\u003c/code\u003e that delegates to the underlying \u003ccode\u003eObjectSendStream\u003c/code\u003e, if it implements it (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1241\"\u003e#1241\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003emove_on_at()\u003c/code\u003e and \u003ccode\u003efail_at()\u003c/code\u003e functions to complement \u003ccode\u003emove_on_after()\u003c/code\u003e and \u003ccode\u003efail_after()\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged the default name for a task spawned with \u003ccode\u003eTaskGroup.create_task(func())\u003c/code\u003e to match the default task name for the analogous task spawned with \u003ccode\u003eTaskGroup.start_soon(func)\u003c/code\u003e or \u003ccode\u003eTaskGroup.start(func)\u003c/code\u003e in more situations. Previously, the default name of a \u003ccode\u003eTaskGroup.create_task\u003c/code\u003e task never included the module name. (The default name for a task spawned with \u003ccode\u003eTaskGroup.start_soon\u003c/code\u003e or \u003ccode\u003eTaskGroup.start\u003c/code\u003e typically includes the module name.) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1234\"\u003e#1234\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged the \u003ccode\u003eanyio\u003c/code\u003e and \u003ccode\u003eanyio.abc\u003c/code\u003e modules to lazily (much like \u003ccode\u003e810\u003c/code\u003e) import the necessary submodules. This is done by parsing the AST of the module and building a lookup table from the \u003ccode\u003eif TYPE_CHECKING:\u003c/code\u003e block. A fallback mode has been provided for installations where the source code is unavailable (e.g. PyInstaller). (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1169\"\u003e#1169\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed free-threading compatibility issues arising from the fact that on Python 3.14 free-threading builds, newly created threads inherit the current context by default, causing AnyIO to behave erroneously in relation to \u003ccode\u003estart_blocking_portal()\u003c/code\u003e and \u003ccode\u003eanyio.to_thread.run_sync()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1224\"\u003e#1224\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eSpooledTemporaryFile.readinto()\u003c/code\u003e and \u003ccode\u003ereadinto1()\u003c/code\u003e reading twice before rollover, so the destination buffer was overwritten by the second read and the file position advanced twice, silently losing data (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1215\"\u003e#1215\u003c/a\u003e; PR by \u003ca href=\"https://github.com/c-tonneslan\"\u003e\u003ccode\u003e@​c-tonneslan\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a \u003ccode\u003ereason\u003c/code\u003e parameter to \u003ccode\u003efail_after\u003c/code\u003e (and the new \u003ccode\u003efail_at\u003c/code\u003e) allowing for added exception context when raising \u003ccode\u003eTimeoutError\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1227\"\u003e#1227\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed the default \u003ccode\u003eTaskHandle.name\u003c/code\u003e missing part of the task name for tasks started with \u003ccode\u003eTaskGroup.start\u003c/code\u003e on Trio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1231\"\u003e#1231\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eanyio.run\u003c/code\u003e leaking, or at least, delaying collection of loop and root_task due to the root task being cached in a \u003ccode\u003eRunVar\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1203\"\u003e#1203\u003c/a\u003e; PR by \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eanyio.Path.with_stem()\u003c/code\u003e silently producing a wrong path (e.g. \u003ccode\u003ePath(\u0026quot;.txt\u0026quot;)\u003c/code\u003e) instead of raising \u003ccode\u003eValueError\u003c/code\u003e when given an empty stem on a path with a non-empty suffix, unlike \u003ccode\u003epathlib.PurePath.with_stem\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1200\"\u003e#1200\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Sanjays2402\"\u003e\u003ccode\u003e@​Sanjays2402\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eUNIXSocketStream.aclose()\u003c/code\u003e raising \u003ccode\u003easyncio.InvalidStateError\u003c/code\u003e when a concurrent receive or send operation had just been cancelled on the asyncio backend (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1267\"\u003e#1267\u003c/a\u003e; PR by \u003ca href=\"https://github.com/alloutflo\"\u003e\u003ccode\u003e@​alloutflo\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed the pytest plugin importing the deprecated \u003ccode\u003e_pytest.python.CallSpec2\u003c/code\u003e alias, which triggers \u003ccode\u003ePytestRemovedIn10Warning\u003c/code\u003e on \u003ccode\u003epytest\u0026gt;=9.2\u003c/code\u003e and crashes pytest at startup when \u003ccode\u003efilterwarnings = error\u003c/code\u003e is configured (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1271\"\u003e#1271\u003c/a\u003e; PR by \u003ca href=\"https://github.com/matthewfeickert\"\u003e\u003ccode\u003e@​matthewfeickert\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed an asyncio worker thread race that could raise \u003ccode\u003eRuntimeError\u003c/code\u003e when the event loop closed between checking its state and scheduling the worker result (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1265\"\u003e#1265\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hansu650\"\u003e\u003ccode\u003e@​hansu650\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eCapacityLimiter\u003c/code\u003e on the asyncio backend over-granting tokens when \u003ccode\u003etotal_tokens\u003c/code\u003e was raised while the limiter was over-subscribed (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1223\"\u003e#1223\u003c/a\u003e; PR by \u003ca href=\"https://github.com/zelinewang\"\u003e\u003ccode\u003e@​zelinewang\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed asyncio task groups leaking unawaited coroutines when a custom task constructor fails; default task creation is unaffected (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1274\"\u003e#1274\u003c/a\u003e; PR by \u003ca href=\"https://github.com/dsfaccini\"\u003e\u003ccode\u003e@​dsfaccini\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/928366259543412a2deb1e2ba09ea45ffa92ef4f\"\u003e\u003ccode\u003e9283662\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d137692a90f76e4f71605e32ea5ca94cab3a539d\"\u003e\u003ccode\u003ed137692\u003c/code\u003e\u003c/a\u003e Improved the instructions for AI agents\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/033fc52b8fa8e90c5d0ef24b10b3860e974a6265\"\u003e\u003ccode\u003e033fc52\u003c/code\u003e\u003c/a\u003e Shield TemporaryDirectory cleanup from cancellation (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1304\"\u003e#1304\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/942e9a6552cc10b5aaa779d84bfc8e2c3d5fcffc\"\u003e\u003ccode\u003e942e9a6\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1305\"\u003e#1305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b825c3be7cb4ca1a8000b8065d4e147843deb704\"\u003e\u003ccode\u003eb825c3b\u003c/code\u003e\u003c/a\u003e Fixed pyproject.toml changes not triggering the test suite\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9727dc504681e2986b5bc285de9571fb467539af\"\u003e\u003ccode\u003e9727dc5\u003c/code\u003e\u003c/a\u003e Fixed start inconsistencies between trio and asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1198\"\u003e#1198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b05fe6d160a640355c201363cab286a7d2581da8\"\u003e\u003ccode\u003eb05fe6d\u003c/code\u003e\u003c/a\u003e Fixed wrong type in move_on_after (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1297\"\u003e#1297\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/44d0c93cc20079acbf38ba4dbed5ab9df323f153\"\u003e\u003ccode\u003e44d0c93\u003c/code\u003e\u003c/a\u003e Fixed asyncio task group coroutine cleanup (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1275\"\u003e#1275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/ae250440c90020b030ba4e83cccc37e9a84512c5\"\u003e\u003ccode\u003eae25044\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1290\"\u003e#1290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6d3a30d264637374b1b642d2e97217c816151cfe\"\u003e\u003ccode\u003e6d3a30d\u003c/code\u003e\u003c/a\u003e Add follow_symlinks argument to anyio.Path.owner() and group() (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1293\"\u003e#1293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.12.0...4.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `beautifulsoup4` from 4.14.3 to 4.15.0\n\nUpdates `cffi` from 2.0.0 to 2.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMinimize internal Python API usage for interpreter and thread state sampling where possible. Avoids breaking ABI change in Python \u0026gt;= 3.15.0b4 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/pull/269\"\u003epython-cffi/cffi#269\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v2.1.0...v2.1.1\"\u003ehttps://github.com/python-cffi/cffi/compare/v2.1.0...v2.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.1.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.15 and support for C extensions generated by CFFI\nto target the new \u003ccode\u003eabi3t\u003c/code\u003e free-threaded ABI.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.9.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ecffi-gen-src\u003c/code\u003e CLI to generate CFFI C extension source for alternate build backend support.\u003c/li\u003e\n\u003cli\u003eFixed crashes inside \u003ccode\u003e__delitem__\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eFixed \u0026quot;string too big\u0026quot; error under MSVC.\u003c/li\u003e\n\u003cli\u003eFixed mingw builds.\u003c/li\u003e\n\u003cli\u003eAdded support for arm64 iOS wheels.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/fd33e7700f0ebafe6f30bd5053f13327221b77a2\"\u003e\u003ccode\u003efd33e77\u003c/code\u003e\u003c/a\u003e New release 2.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/56a7876b8cd3b2d8148233a90e0121d74cd83852\"\u003e\u003ccode\u003e56a7876\u003c/code\u003e\u003c/a\u003e Use PyGILState_Ensure to avoid accessing CPython internals (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/269\"\u003e#269\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/270\"\u003e#270\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/d9f6f70adac5ca9f260abf5405cf4d0373767b65\"\u003e\u003ccode\u003ed9f6f70\u003c/code\u003e\u003c/a\u003e New release 2.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/02a7b0e32db93964b9756537110119d74aa23425\"\u003e\u003ccode\u003e02a7b0e\u003c/code\u003e\u003c/a\u003e Misc pre-2.1 release/packaging cleanup (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/253\"\u003e#253\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/1362e5ddc5417f1350200d4d6183c3eb3da9cc8d\"\u003e\u003ccode\u003e1362e5d\u003c/code\u003e\u003c/a\u003e Move cffi-gen-src release note to 2.1.0 notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/a797055125e049fd79483d0dcdf8cff59c64c6e4\"\u003e\u003ccode\u003ea797055\u003c/code\u003e\u003c/a\u003e Make error message when embedding version test fails more friendly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/f1f40a8e1667b9ef6cf8fe3c451829408feab018\"\u003e\u003ccode\u003ef1f40a8\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/dc62c93af7be7c535dc17f621de2bfc99490d3bd\"\u003e\u003ccode\u003edc62c93\u003c/code\u003e\u003c/a\u003e Delete missed cp39 Windows builds\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/a34118009e64a7fed8ea49bdbad4d6a07494bb4f\"\u003e\u003ccode\u003ea341180\u003c/code\u003e\u003c/a\u003e Update version numbers to prepare for v2.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/9f04d8506a6c7186dc3be7316f21aab042e075cb\"\u003e\u003ccode\u003e9f04d85\u003c/code\u003e\u003c/a\u003e Mark test using inet_ntoa as thread-unsafe\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v2.0.0...v2.1.1\"\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.5.1\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.5.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.5.0...3.5.1\"\u003e3.5.1\u003c/a\u003e (2026-08-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised upper bound of setuptools to v84 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache performance access optimization for our CharInfo struct (prebuilt only).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer decoding large content when the noise detector output give a high entropy.\nOnly impacted large content input \u0026gt;1M bytes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.5.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.9...3.5.0\"\u003e3.5.0\u003c/a\u003e (2026-08-12)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExplicit support for Python 3.15\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComparing a CharsetMatch to a non-alias encoding strings (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReturn 0.0 CharsetMatch.multi_byte_usage for empty payloads instead of crashing (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA file with both a charset declaration and BOM/SIG did not verify first the BOM/SIG charset.\u003c/li\u003e\n\u003cli\u003eiso2022* cases misdetected due to a flaw in our multibyte chunking logic.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReplaced the optional mypyc build with Cython extensions while retaining the\npure Python fallback. The previous engine (mypyc) started to hit rough limit around\nthe optimization of our noise/coherence detector while Cython allows us to\nsteer the engine toward the right generated optimized sources.\nThis change SHOULD not impact bundler (e.g. Pyinstaller) as the module are\nimmediately discoverable (i.e. not hidden import like mypyc did).\nMoreover, a long wished distribution is the abi3 wheels, this will allow us\nto no longer rush each year when a new Python interpreter is released.\nWe still distribute the interpre...\n\n_Description has been truncated_","html_url":"https://github.com/mmtigers/my_python_project/pull/523","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmtigers%2Fmy_python_project/issues/523","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/523/packages"},{"uuid":"5361865955","node_id":"PR_kwDOQd8Gdc8AAAABCXaeCQ","number":503,"state":"open","title":"chore(deps): Bump the minor-and-patch group in /MY_HOME_SYSTEM with 58 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":4,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-06T00:28:59.000Z","updated_at":"2026-09-06T12:21:11.831Z","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":58,"packages":[{"name":"aenum","old_version":"3.1.16","new_version":"3.1.17","repository_url":"https://github.com/ethanfurman/aenum"},{"name":"aiohappyeyeballs","old_version":"2.6.1","new_version":"2.7.1","repository_url":"https://github.com/aio-libs/aiohappyeyeballs"},{"name":"altair","old_version":"6.0.0","new_version":"6.2.2","repository_url":"https://github.com/vega/altair"},{"name":"annotated-doc","old_version":"0.0.4","new_version":"0.0.5","repository_url":"https://github.com/fastapi/annotated-doc"},{"name":"annotated-types","old_version":"0.7.0","new_version":"0.8.0","repository_url":"https://github.com/annotated-types/annotated-types"},{"name":"anyio","old_version":"4.12.0","new_version":"4.15.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"beautifulsoup4","old_version":"4.14.3","new_version":"4.15.0"},{"name":"cffi","old_version":"2.0.0","new_version":"2.1.1","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.4.4","new_version":"3.5.1","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.3.3","new_version":"8.5.0","repository_url":"https://github.com/pallets/click"},{"name":"cryptography","old_version":"50.0.0","new_version":"50.0.1","repository_url":"https://github.com/pyca/cryptography"},{"name":"fonttools","old_version":"4.61.0","new_version":"4.64.0","repository_url":"https://github.com/fonttools/fonttools"},{"name":"google-ai-generativelanguage","old_version":"0.6.15","new_version":"0.12.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"google-api-core","old_version":"2.28.1","new_version":"2.34.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"google-api-python-client","old_version":"2.187.0","new_version":"2.200.0","repository_url":"https://github.com/googleapis/google-api-python-client"},{"name":"google-auth","old_version":"2.41.1","new_version":"2.57.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"google-auth-httplib2","old_version":"0.2.1","new_version":"0.4.2","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"google-auth-oauthlib","old_version":"1.2.3","new_version":"1.4.1","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"google-generativeai","old_version":"0.8.5","new_version":"0.8.6","repository_url":"https://github.com/google/generative-ai-python"},{"name":"googleapis-common-protos","old_version":"1.72.0","new_version":"1.75.2","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"grpcio","old_version":"1.76.0","new_version":"1.83.1","repository_url":"https://github.com/grpc/grpc"},{"name":"grpcio-status","old_version":"1.71.2","new_version":"1.83.1"},{"name":"idna","old_version":"3.18","new_version":"3.19","repository_url":"https://github.com/kjd/idna"},{"name":"jsonschema","old_version":"4.25.1","new_version":"4.26.0","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"kiwisolver","old_version":"1.4.9","new_version":"1.5.1","repository_url":"https://github.com/nucleic/kiwi"},{"name":"line-bot-sdk","old_version":"3.21.0","new_version":"3.25.0","repository_url":"https://github.com/line/line-bot-sdk-python"},{"name":"lxml","old_version":"6.1.0","new_version":"6.1.3","repository_url":"https://github.com/lxml/lxml"},{"name":"multidict","old_version":"6.7.0","new_version":"6.7.1","repository_url":"https://github.com/aio-libs/multidict"},{"name":"narwhals","old_version":"2.13.0","new_version":"2.25.0","repository_url":"https://github.com/narwhals-dev/narwhals"},{"name":"numpy","old_version":"2.2.6","new_version":"2.4.6","repository_url":"https://github.com/numpy/numpy"},{"name":"platformdirs","old_version":"4.5.0","new_version":"4.11.7","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"propcache","old_version":"0.4.1","new_version":"0.5.2","repository_url":"https://github.com/aio-libs/propcache"},{"name":"proto-plus","old_version":"1.26.1","new_version":"1.28.4","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"pydantic","old_version":"2.12.5","new_version":"2.13.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-core","old_version":"2.41.5","new_version":"2.48.0","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydeck","old_version":"0.9.1","new_version":"0.9.3","repository_url":"https://github.com/visgl/deck.gl"},{"name":"pygments","old_version":"2.20.0","new_version":"2.21.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pyparsing","old_version":"3.2.5","new_version":"3.3.2","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"pypdfium2","old_version":"5.1.0","new_version":"5.13.0","repository_url":"https://github.com/pypdfium2-team/pypdfium2"},{"name":"python-dotenv","old_version":"1.2.2","new_version":"1.2.3","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"requests","old_version":"2.33.0","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"soupsieve","old_version":"2.8.4","new_version":"2.9.2","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"streamlit","old_version":"1.54.0","new_version":"1.63.0","repository_url":"https://github.com/streamlit/streamlit"},{"name":"tenacity","old_version":"9.1.2","new_version":"9.1.4","repository_url":"https://github.com/jd/tenacity"},{"name":"tqdm","old_version":"4.67.1","new_version":"4.70.0","repository_url":"https://github.com/tqdm/tqdm"},{"name":"typing-inspection","old_version":"0.4.2","new_version":"0.4.4","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"typing-extensions","old_version":"4.15.0","new_version":"4.16.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"uvicorn","old_version":"0.38.0","new_version":"0.52.4","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"wrapt","old_version":"2.0.1","new_version":"2.4.0","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"yarl","old_version":"1.22.0","new_version":"1.24.5","repository_url":"https://github.com/aio-libs/yarl"},{"name":"pytest","old_version":"9.0.3","new_version":"9.1.1","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-asyncio","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/pytest-dev/pytest-asyncio"},{"name":"httpx2","old_version":"2.10.0","new_version":"2.12.0","repository_url":"https://github.com/pydantic/httpx2"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"hypothesis","old_version":"6.145.1","new_version":"6.167.1","repository_url":"https://github.com/HypothesisWorks/hypothesis"},{"name":"ruff","old_version":"0.14.4","new_version":"0.16.5","repository_url":"https://github.com/astral-sh/ruff"},{"name":"bandit","old_version":"1.9.2","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"},{"name":"pip-audit","old_version":"2.9.0","new_version":"2.10.1","repository_url":"https://github.com/pypa/pip-audit"}],"path":"/MY_HOME_SYSTEM","ecosystem":"pip"},"body":"[//]: # (dependabot-start)\n⚠️  **Dependabot is rebasing this PR** ⚠️ \n\nRebasing might not happen immediately, so don't worry if this takes some time.\n\nNote: if you make any changes to this PR yourself, they will take precedence over the rebase.\n\n---\n\n[//]: # (dependabot-end)\n\nBumps the minor-and-patch group in /MY_HOME_SYSTEM with 58 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [aenum](https://github.com/ethanfurman/aenum) | `3.1.16` | `3.1.17` |\n| [aiohappyeyeballs](https://github.com/aio-libs/aiohappyeyeballs) | `2.6.1` | `2.7.1` |\n| [altair](https://github.com/vega/altair) | `6.0.0` | `6.2.2` |\n| [annotated-doc](https://github.com/fastapi/annotated-doc) | `0.0.4` | `0.0.5` |\n| [annotated-types](https://github.com/annotated-types/annotated-types) | `0.7.0` | `0.8.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.12.0` | `4.15.0` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.14.3` | `4.15.0` |\n| [cffi](https://github.com/python-cffi/cffi) | `2.0.0` | `2.1.1` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.4` | `3.5.1` |\n| [click](https://github.com/pallets/click) | `8.3.3` | `8.5.0` |\n| [cryptography](https://github.com/pyca/cryptography) | `50.0.0` | `50.0.1` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.61.0` | `4.64.0` |\n| [google-ai-generativelanguage](https://github.com/googleapis/google-cloud-python) | `0.6.15` | `0.12.0` |\n| [google-api-core](https://github.com/googleapis/google-cloud-python) | `2.28.1` | `2.34.0` |\n| [google-api-python-client](https://github.com/googleapis/google-api-python-client) | `2.187.0` | `2.200.0` |\n| [google-auth](https://github.com/googleapis/google-cloud-python) | `2.41.1` | `2.57.0` |\n| [google-auth-httplib2](https://github.com/googleapis/google-cloud-python) | `0.2.1` | `0.4.2` |\n| [google-auth-oauthlib](https://github.com/googleapis/google-cloud-python) | `1.2.3` | `1.4.1` |\n| [google-generativeai](https://github.com/google/generative-ai-python) | `0.8.5` | `0.8.6` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.72.0` | `1.75.2` |\n| [grpcio](https://github.com/grpc/grpc) | `1.76.0` | `1.83.1` |\n| [grpcio-status](https://grpc.io) | `1.71.2` | `1.83.1` |\n| [idna](https://github.com/kjd/idna) | `3.18` | `3.19` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.25.1` | `4.26.0` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.4.9` | `1.5.1` |\n| [line-bot-sdk](https://github.com/line/line-bot-sdk-python) | `3.21.0` | `3.25.0` |\n| [lxml](https://github.com/lxml/lxml) | `6.1.0` | `6.1.3` |\n| [multidict](https://github.com/aio-libs/multidict) | `6.7.0` | `6.7.1` |\n| [narwhals](https://github.com/narwhals-dev/narwhals) | `2.13.0` | `2.25.0` |\n| [numpy](https://github.com/numpy/numpy) | `2.2.6` | `2.4.6` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.5.0` | `4.11.7` |\n| [propcache](https://github.com/aio-libs/propcache) | `0.4.1` | `0.5.2` |\n| [proto-plus](https://github.com/googleapis/google-cloud-python) | `1.26.1` | `1.28.4` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.12.5` | `2.13.5` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.41.5` | `2.48.0` |\n| [pydeck](https://github.com/visgl/deck.gl) | `0.9.1` | `0.9.3` |\n| [pygments](https://github.com/pygments/pygments) | `2.20.0` | `2.21.0` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.5` | `3.3.2` |\n| [pypdfium2](https://github.com/pypdfium2-team/pypdfium2) | `5.1.0` | `5.13.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.2` | `1.2.3` |\n| [requests](https://github.com/psf/requests) | `2.33.0` | `2.34.2` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.8.4` | `2.9.2` |\n| [streamlit](https://github.com/streamlit/streamlit) | `1.54.0` | `1.63.0` |\n| [tenacity](https://github.com/jd/tenacity) | `9.1.2` | `9.1.4` |\n| [tqdm](https://github.com/tqdm/tqdm) | `4.67.1` | `4.70.0` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.2` | `0.4.4` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.15.0` | `4.16.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.38.0` | `0.52.4` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `2.0.1` | `2.4.0` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.22.0` | `1.24.5` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.3` | `9.1.1` |\n| [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) | `1.3.0` | `1.4.0` |\n| [httpx2](https://github.com/pydantic/httpx2) | `2.10.0` | `2.12.0` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` |\n| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.145.1` | `6.167.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.4` | `0.16.5` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [pip-audit](https://github.com/pypa/pip-audit) | `2.9.0` | `2.10.1` |\n\nUpdates `aenum` from 3.1.16 to 3.1.17\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ethanfurman/aenum/commit/f0f6fd8e2ac0bb379eb11f6029023d2bad88732a\"\u003e\u003ccode\u003ef0f6fd8\u003c/code\u003e\u003c/a\u003e version 3.1.17\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ethanfurman/aenum/commit/60c5641a7c0525ae812c9674330c3634bd852e69\"\u003e\u003ccode\u003e60c5641\u003c/code\u003e\u003c/a\u003e remove duplicate function\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ethanfurman/aenum/commit/e463496bd4a485f92f34eec37b7b73aedef10405\"\u003e\u003ccode\u003ee463496\u003c/code\u003e\u003c/a\u003e fix global_flag_repr\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ethanfurman/aenum/commit/f6510625e7cf7e7291d3b1b12e0bb341467e6f27\"\u003e\u003ccode\u003ef651062\u003c/code\u003e\u003c/a\u003e bump version\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/ethanfurman/aenum/compare/3.1.16...3.1.17\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `aiohappyeyeballs` from 2.6.1 to 2.7.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/releases\"\u003eaiohappyeyeballs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.7.1 (2026-07-01)\u003c/h2\u003e\n\u003ch3\u003ePerformance Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse defaultdict to help with performance (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/239\"\u003e#239\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/e10f335ad9630122832e967428ac138992a50bca\"\u003e\u003ccode\u003ee10f335\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eCollapse collect-then-remove pattern in utils helpers (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/227\"\u003e#227\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/0dd3fd16fe394eb8493000dc9b9894fad3ca3190\"\u003e\u003ccode\u003e0dd3fd1\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMerge identical except blocks in _connect_sock cleanup (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/229\"\u003e#229\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/b7c186e3242eb4d6eaf0918857a99c263b3186fb\"\u003e\u003ccode\u003eb7c186e\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSimplify _interleave_addrinfos family grouping (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/226\"\u003e#226\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/fdf6548a5f8b38e45ad7cee8add3c3a7e34e2805\"\u003e\u003ccode\u003efdf6548\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eDetailed Changes\u003c/strong\u003e: \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.7.0...v2.7.1\"\u003ev2.7.0...v2.7.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.7.0 (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/224\"\u003e#224\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/10e7d4341666605de295dd00da716e30002e78c2\"\u003e\u003ccode\u003e10e7d43\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eDetailed Changes\u003c/strong\u003e: \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.6.2...v2.7.0\"\u003ev2.6.2...v2.7.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.6.2 (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClear error on empty addr_infos in start_connection (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/222\"\u003e#222\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/55dd76aee978ca47a38899b9caf69d058bf41fb3\"\u003e\u003ccode\u003e55dd76a\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptimize obtaining event-loop down to 1 line (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/185\"\u003e#185\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/02a70296210125b45952c3221db0dfb76d8ea911\"\u003e\u003ccode\u003e02a7029\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTesting\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStop verify_no_lingering_tasks from leaking an event loop (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/221\"\u003e#221\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/ce43beb0242007dc57be6e2f4e3bf0b9f4f239d1\"\u003e\u003ccode\u003ece43beb\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eDetailed Changes\u003c/strong\u003e: \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.6.1...v2.6.2\"\u003ev2.6.1...v2.6.2\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/aio-libs/aiohappyeyeballs/blob/main/CHANGELOG.md\"\u003eaiohappyeyeballs's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.7.1 (2026-07-01)\u003c/h2\u003e\n\u003ch3\u003ePerformance improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse defaultdict to help with performance (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/e10f335ad9630122832e967428ac138992a50bca\"\u003e\u003ccode\u003ee10f335\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSimplify _interleave_addrinfos family grouping (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/fdf6548a5f8b38e45ad7cee8add3c3a7e34e2805\"\u003e\u003ccode\u003efdf6548\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCollapse collect-then-remove pattern in utils helpers (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/0dd3fd16fe394eb8493000dc9b9894fad3ca3190\"\u003e\u003ccode\u003e0dd3fd1\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMerge identical except blocks in _connect_sock cleanup (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/b7c186e3242eb4d6eaf0918857a99c263b3186fb\"\u003e\u003ccode\u003eb7c186e\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.7.0 (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd python 3.14 support (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/10e7d4341666605de295dd00da716e30002e78c2\"\u003e\u003ccode\u003e10e7d43\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.6.2 (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClear error on empty addr_infos in start_connection (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/55dd76aee978ca47a38899b9caf69d058bf41fb3\"\u003e\u003ccode\u003e55dd76a\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTesting\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStop verify_no_lingering_tasks from leaking an event loop (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/ce43beb0242007dc57be6e2f4e3bf0b9f4f239d1\"\u003e\u003ccode\u003ece43beb\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptimize obtaining event-loop down to 1 line (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/02a70296210125b45952c3221db0dfb76d8ea911\"\u003e\u003ccode\u003e02a7029\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/4dfc926e30eea8d24c1a71602d73c0e9a895c191\"\u003e\u003ccode\u003e4dfc926\u003c/code\u003e\u003c/a\u003e 2.7.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/e10f335ad9630122832e967428ac138992a50bca\"\u003e\u003ccode\u003ee10f335\u003c/code\u003e\u003c/a\u003e perf: use defaultdict to help with performance (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/239\"\u003e#239\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/338277badfb25fc38759ce38ab9ea2c20ec1bfff\"\u003e\u003ccode\u003e338277b\u003c/code\u003e\u003c/a\u003e chore: stop tracking .DS_Store files (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/251\"\u003e#251\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/16978694944ed7fb5e7b49a173160144ccac45bc\"\u003e\u003ccode\u003e1697869\u003c/code\u003e\u003c/a\u003e ci: add codspeed benchmark suite for addrinfo reordering hot paths (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/250\"\u003e#250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/d40a848cd2262b435242646fa8e220300bcd6952\"\u003e\u003ccode\u003ed40a848\u003c/code\u003e\u003c/a\u003e chore(deps-dev): bump starlette from 1.0.1 to 1.3.1 (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/242\"\u003e#242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/51d42669b2b94a78c6d4bd059e449b8ef51c6646\"\u003e\u003ccode\u003e51d4266\u003c/code\u003e\u003c/a\u003e chore(deps-dev): bump cryptography from 46.0.7 to 48.0.1 (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/243\"\u003e#243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/2df44b3987d3c887a8493ba19259c63588226d6c\"\u003e\u003ccode\u003e2df44b3\u003c/code\u003e\u003c/a\u003e chore(pre-commit.ci): pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/241\"\u003e#241\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/3e3cb615f00bfb4d29c30e0c86c897f4de8fb02d\"\u003e\u003ccode\u003e3e3cb61\u003c/code\u003e\u003c/a\u003e chore(deps-dev): bump pytest from 9.0.3 to 9.1.1 (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/922dcd79a66d67fdd98a5f9b7587c4f8cda44653\"\u003e\u003ccode\u003e922dcd7\u003c/code\u003e\u003c/a\u003e chore(deps-ci): bump the github-actions group with 4 updates (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/245\"\u003e#245\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/70461c583a8cf3c6fa85b8c48b8e4b576cee8083\"\u003e\u003ccode\u003e70461c5\u003c/code\u003e\u003c/a\u003e ci: drop .github/FUNDING.yml to inherit org-wide config (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/247\"\u003e#247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.6.1...v2.7.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `altair` from 6.0.0 to 6.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/vega/altair/releases\"\u003ealtair's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.2.2\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: Avoid layered concat view name collisions by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4066\"\u003evega/altair#4066\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: Include layered concat views in selection params by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4069\"\u003evega/altair#4069\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edocs: Add an Andrews curves example to the gallery by \u003ca href=\"https://github.com/kyo5uke\"\u003e\u003ccode\u003e@​kyo5uke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4049\"\u003evega/altair#4049\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Add an interactive bin-size example to the gallery by \u003ca href=\"https://github.com/kyo5uke\"\u003e\u003ccode\u003e@​kyo5uke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4050\"\u003evega/altair#4050\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Validate docs publish clone by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4064\"\u003evega/altair#4064\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Fix broken example and sync with VL by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4010\"\u003evega/altair#4010\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eci: Make warning for doc preview page more prominent by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4048\"\u003evega/altair#4048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Check uv lockfile by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4052\"\u003evega/altair#4052\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Run docs build only for docs-related changes and don't duplicate builds on PRs by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4053\"\u003evega/altair#4053\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebuild: Update dependencies from dependabot alerts by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4055\"\u003evega/altair#4055\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Upload docs build artifact for PR preview by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4056\"\u003evega/altair#4056\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebuild: Reduce dependabot PRs by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4028\"\u003evega/altair#4028\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Correctly resolve docbuild worflow number from PR number by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4060\"\u003evega/altair#4060\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Group major GitHub Actions updates by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4061\"\u003evega/altair#4061\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Rename docbuild job from 'build' to 'docbuild' by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4062\"\u003evega/altair#4062\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Schedule release drafts twice monthly by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4057\"\u003evega/altair#4057\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Publish official docs after release is published by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4054\"\u003evega/altair#4054\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Document how local versioning works and add base tag by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4051\"\u003evega/altair#4051\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Disambiguate workflow naming by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4063\"\u003evega/altair#4063\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: enable partial Python 3.14t coverage by \u003ca href=\"https://github.com/axelray-dev\"\u003e\u003ccode\u003e@​axelray-dev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4038\"\u003evega/altair#4038\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/kyo5uke\"\u003e\u003ccode\u003e@​kyo5uke\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4049\"\u003evega/altair#4049\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/vega/altair/compare/v6.2.1...v6.2.2\"\u003ehttps://github.com/vega/altair/compare/v6.2.1...v6.2.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.2.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: Write dataset cache files atomically by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4034\"\u003evega/altair#4034\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eci: Prevent uv from dirtying worktree during publish by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4045\"\u003evega/altair#4045\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Clarify release review instructions by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4046\"\u003evega/altair#4046\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/vega/altair/compare/v6.2.0...v6.2.1\"\u003ehttps://github.com/vega/altair/compare/v6.2.0...v6.2.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.2.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003eThis is the first release in an effort to have smaller, more frequent releases going forward. By making the release process more convenient, we aim to more quickly push out fixes and features that already landed on the main branch to a released version of Altair.\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/vega/altair/commit/a9765713566095349cb1cfbbe85d6ad258c84245\"\u003e\u003ccode\u003ea976571\u003c/code\u003e\u003c/a\u003e fix: Include layered concat views in selection params (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4069\"\u003e#4069\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/432157b2304e0e30d89167ab26d1f7987f615a31\"\u003e\u003ccode\u003e432157b\u003c/code\u003e\u003c/a\u003e fix: Avoid layered concat view name collisions (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4066\"\u003e#4066\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/b875b95a24ee20f8e5665a730ee6d80cb6d55348\"\u003e\u003ccode\u003eb875b95\u003c/code\u003e\u003c/a\u003e docs: Fix a broken example and sync another one with VL (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4010\"\u003e#4010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/7b289f9adf07d960f94620ef02c33b8f400f4948\"\u003e\u003ccode\u003e7b289f9\u003c/code\u003e\u003c/a\u003e ci: Enable partial Python 3.14t coverage (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4038\"\u003e#4038\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/105ff2b4957651bf4cf55e4e2586705fa02ddfe7\"\u003e\u003ccode\u003e105ff2b\u003c/code\u003e\u003c/a\u003e docs: Validate docs publish clone (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4064\"\u003e#4064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/c82dd2e4af3bcd06ee4909cc38135d1b7f92c3dd\"\u003e\u003ccode\u003ec82dd2e\u003c/code\u003e\u003c/a\u003e ci: Disambiguate workflow naming (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4063\"\u003e#4063\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/624bee9705b345961c9b225d39562a10068461af\"\u003e\u003ccode\u003e624bee9\u003c/code\u003e\u003c/a\u003e docs: Add an interactive bin-size example to the gallery (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4050\"\u003e#4050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/3b1acf676a1a61d9df8d1ded2393dfde49587cae\"\u003e\u003ccode\u003e3b1acf6\u003c/code\u003e\u003c/a\u003e docs: Add an Andrews curves example to the gallery (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4049\"\u003e#4049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/edea5f64e7e893315e2050672058f86657b28201\"\u003e\u003ccode\u003eedea5f6\u003c/code\u003e\u003c/a\u003e ci: Document how local versioning works and add base tag (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4051\"\u003e#4051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/f8b4337e1355ca229d1e2e9645e89b6ec1a7a41c\"\u003e\u003ccode\u003ef8b4337\u003c/code\u003e\u003c/a\u003e ci: Publish official docs after release is published (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4054\"\u003e#4054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/vega/altair/compare/v6.0.0...v6.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `annotated-doc` from 0.0.4 to 0.0.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/annotated-doc/releases\"\u003eannotated-doc's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.5\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e➖ Drop support for Python 3.8. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/36\"\u003e#36\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\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ Bump ruff from 0.14.3 to 0.14.10. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/31\"\u003e#31\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\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Update security policy. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/63\"\u003e#63\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Upgrade latest-changes to 0.7.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/92\"\u003e#92\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⬆ Bump the github-actions group across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/91\"\u003e#91\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 the python-packages group across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/90\"\u003e#90\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 pre-commit hooks. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/89\"\u003e#89\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 GH workflow to bump pre-commit hook versions. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/81\"\u003e#81\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🔧 Set Dependabot schedule interval to \u0026quot;monthly\u0026quot;. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/82\"\u003e#82\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👷 Fix latest-changes checkout target. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/85\"\u003e#85\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 issue-manager to 0.8.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/84\"\u003e#84\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 latest-changes to 0.6.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/83\"\u003e#83\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⬆ Bump the python-packages group across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/72\"\u003e#72\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 the github-actions group across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/80\"\u003e#80\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 \u003ca href=\"https://github.com/crate-ci/typos\"\u003ehttps://github.com/crate-ci/typos\u003c/a\u003e from v1.46.0 to 1.47.2 in the pre-commit group across 1 directory. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/76\"\u003e#76\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👷 Simplify pull request workflow triggers. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/79\"\u003e#79\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 issue-manager to 0.7.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/78\"\u003e#78\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 issue-manager to 0.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/77\"\u003e#77\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 zizmor workflow security checks. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/75\"\u003e#75\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Fix alls-green test dependency. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/74\"\u003e#74\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 pre-commit hook to catch typos. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/68\"\u003e#68\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 the python-packages group with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/70\"\u003e#70\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 the github-actions group with 2 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/71\"\u003e#71\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👷 Automate release preparation. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/69\"\u003e#69\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👷 Configure Dependabot to group updates and update weekly. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/62\"\u003e#62\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔥 Remove config files now in central GitHub repo. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/65\"\u003e#65\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Fix branch name in \u003ccode\u003eguard-dependencies.yml\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/61\"\u003e#61\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Only allow team members to modify dependencies. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/60\"\u003e#60\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump ty from 0.0.33 to 0.0.34. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/58\"\u003e#58\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 prek from 0.3.11 to 0.3.13. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/59\"\u003e#59\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 zizmor and fix audit findings. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/50\"\u003e#50\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 the lower bound of \u003ccode\u003ety\u003c/code\u003e to 0.0.25. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/57\"\u003e#57\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Configure \u003ccode\u003ety\u003c/code\u003e to exit with error code on warnings. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/56\"\u003e#56\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/add-to-project from 1.0.2 to 2.0.0. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/54\"\u003e#54\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/labeler from 6.0.1 to 6.1.0. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/55\"\u003e#55\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 ruff from 0.15.8 to 0.15.12. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/51\"\u003e#51\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 prek from 0.3.8 to 0.3.11. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/53\"\u003e#53\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 ty from 0.0.27 to 0.0.33. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/52\"\u003e#52\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\u003c/ul\u003e\n\u003c!-- 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/fastapi/annotated-doc/blob/main/release-notes.md\"\u003eannotated-doc's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.5 (2026-07-28)\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e➖ Drop support for Python 3.8. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/36\"\u003e#36\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\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ Bump ruff from 0.14.3 to 0.14.10. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/31\"\u003e#31\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\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Update security policy. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/63\"\u003e#63\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Upgrade latest-changes to 0.7.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/92\"\u003e#92\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⬆ Bump the github-actions group across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/91\"\u003e#91\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 the python-packages group across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/90\"\u003e#90\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 pre-commit hooks. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/89\"\u003e#89\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 GH workflow to bump pre-commit hook versions. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/81\"\u003e#81\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🔧 Set Dependabot schedule interval to \u0026quot;monthly\u0026quot;. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/82\"\u003e#82\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👷 Fix latest-changes checkout target. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/85\"\u003e#85\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 issue-manager to 0.8.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/84\"\u003e#84\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 latest-changes to 0.6.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/83\"\u003e#83\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⬆ Bump the python-packages group across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/72\"\u003e#72\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 the github-actions group across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/80\"\u003e#80\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 \u003ca href=\"https://github.com/crate-ci/typos\"\u003ehttps://github.com/crate-ci/typos\u003c/a\u003e from v1.46.0 to 1.47.2 in the pre-commit group across 1 directory. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/76\"\u003e#76\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👷 Simplify pull request workflow triggers. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/79\"\u003e#79\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 issue-manager to 0.7.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/78\"\u003e#78\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 issue-manager to 0.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/77\"\u003e#77\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 zizmor workflow security checks. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/75\"\u003e#75\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Fix alls-green test dependency. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/74\"\u003e#74\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 pre-commit hook to catch typos. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/68\"\u003e#68\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 the python-packages group with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/70\"\u003e#70\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 the github-actions group with 2 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/71\"\u003e#71\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👷 Automate release preparation. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/69\"\u003e#69\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👷 Configure Dependabot to group updates and update weekly. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/62\"\u003e#62\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔥 Remove config files now in central GitHub repo. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/65\"\u003e#65\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Fix branch name in \u003ccode\u003eguard-dependencies.yml\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/61\"\u003e#61\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Only allow team members to modify dependencies. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/60\"\u003e#60\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump ty from 0.0.33 to 0.0.34. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/58\"\u003e#58\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 prek from 0.3.11 to 0.3.13. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/59\"\u003e#59\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 zizmor and fix audit findings. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/50\"\u003e#50\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 the lower bound of \u003ccode\u003ety\u003c/code\u003e to 0.0.25. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/57\"\u003e#57\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Configure \u003ccode\u003ety\u003c/code\u003e to exit with error code on warnings. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/56\"\u003e#56\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/add-to-project from 1.0.2 to 2.0.0. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/54\"\u003e#54\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/labeler from 6.0.1 to 6.1.0. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/55\"\u003e#55\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 ruff from 0.15.8 to 0.15.12. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/51\"\u003e#51\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 prek from 0.3.8 to 0.3.11. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/53\"\u003e#53\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\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/annotated-doc/commit/ef48d6ad51d226f772fd9c5284f55199afe4007c\"\u003e\u003ccode\u003eef48d6a\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.0.5 (\u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/issues/93\"\u003e#93\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/c628000835a26f6bc8c776f90bcbcf95211f233b\"\u003e\u003ccode\u003ec628000\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/e0b4579d2ad8d62a304c9f30a1c2c084f0d372e5\"\u003e\u003ccode\u003ee0b4579\u003c/code\u003e\u003c/a\u003e ➖ Drop support for Python 3.8 (\u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/issues/36\"\u003e#36\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/ef956b4e9f2c0e2bead1cba7a6888e1ed8c2c237\"\u003e\u003ccode\u003eef956b4\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/84bf1e5402c5e0cfd1462c5d3c8bae22fb717bd8\"\u003e\u003ccode\u003e84bf1e5\u003c/code\u003e\u003c/a\u003e ⬆️ Upgrade latest-changes to 0.7.1 (\u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/issues/92\"\u003e#92\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/cf773e138b1dc5608ce0f0d11e1939c410ef6228\"\u003e\u003ccode\u003ecf773e1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/1375d6eb8147cb2352d080ef09f356dfc18e0d29\"\u003e\u003ccode\u003e1375d6e\u003c/code\u003e\u003c/a\u003e ⬆ Bump the github-actions group across 1 directory with 3 updates (\u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/issues/91\"\u003e#91\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/cd373656cbf40e5fd4cc28680ca5e05bf12709cb\"\u003e\u003ccode\u003ecd37365\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/f9f3b695cbacc4ffc37d9cebff6e05bd1751f68a\"\u003e\u003ccode\u003ef9f3b69\u003c/code\u003e\u003c/a\u003e ⬆ Bump the python-packages group across 1 directory with 3 updates (\u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/issues/90\"\u003e#90\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/842084457f0a7739fb91d2a4ea602b2bc4e15767\"\u003e\u003ccode\u003e8420844\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/annotated-doc/compare/0.0.4...0.0.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `annotated-types` from 0.7.0 to 0.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/annotated-types/annotated-types/releases\"\u003eannotated-types's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.8.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRename DocInfo to Doc by \u003ca href=\"https://github.com/zen-xu\"\u003e\u003ccode\u003e@​zen-xu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/80\"\u003eannotated-types/annotated-types#80\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/83\"\u003eannotated-types/annotated-types#83\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix docstring of \u003ccode\u003eTimezone\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/annotated-types/annotated-types/pull/84\"\u003eannotated-types/annotated-types#84\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate license-files to be PEP-639 compliant (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/85\"\u003e#85\u003c/a\u003e) by \u003ca href=\"https://github.com/shoeffner\"\u003e\u003ccode\u003e@​shoeffner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/86\"\u003eannotated-types/annotated-types#86\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: typo in README.md by \u003ca href=\"https://github.com/camiloaz\"\u003e\u003ccode\u003e@​camiloaz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/87\"\u003eannotated-types/annotated-types#87\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd CI for PyPy3.11 and fix test (issue 71) by \u003ca href=\"https://github.com/mattip\"\u003e\u003ccode\u003e@​mattip\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/88\"\u003eannotated-types/annotated-types#88\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix string predicate names in doc by \u003ca href=\"https://github.com/leogermond\"\u003e\u003ccode\u003e@​leogermond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/90\"\u003eannotated-types/annotated-types#90\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SPDX license expression by \u003ca href=\"https://github.com/wichert\"\u003e\u003ccode\u003e@​wichert\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/92\"\u003eannotated-types/annotated-types#92\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded Python 3.14 to the test matrix by \u003ca href=\"https://github.com/imtoopunkforyou\"\u003e\u003ccode\u003e@​imtoopunkforyou\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/96\"\u003eannotated-types/annotated-types#96\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 and drop EOL 3.8-3.9 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/97\"\u003eannotated-types/annotated-types#97\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typo in \u003ccode\u003eLen\u003c/code\u003e docstring by \u003ca href=\"https://github.com/Dutcho\"\u003e\u003ccode\u003e@​Dutcho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/100\"\u003eannotated-types/annotated-types#100\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for 0.8.0 release by \u003ca href=\"https://github.com/adriangb\"\u003e\u003ccode\u003e@​adriangb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/103\"\u003eannotated-types/annotated-types#103\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/zen-xu\"\u003e\u003ccode\u003e@​zen-xu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/80\"\u003eannotated-types/annotated-types#80\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/83\"\u003eannotated-types/annotated-types#83\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shoeffner\"\u003e\u003ccode\u003e@​shoeffner\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/86\"\u003eannotated-types/annotated-types#86\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/camiloaz\"\u003e\u003ccode\u003e@​camiloaz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/87\"\u003eannotated-types/annotated-types#87\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mattip\"\u003e\u003ccode\u003e@​mattip\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/88\"\u003eannotated-types/annotated-types#88\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/leogermond\"\u003e\u003ccode\u003e@​leogermond\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/90\"\u003eannotated-types/annotated-types#90\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/wichert\"\u003e\u003ccode\u003e@​wichert\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/92\"\u003eannotated-types/annotated-types#92\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/imtoopunkforyou\"\u003e\u003ccode\u003e@​imtoopunkforyou\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/96\"\u003eannotated-types/annotated-types#96\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dutcho\"\u003e\u003ccode\u003e@​Dutcho\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/100\"\u003eannotated-types/annotated-types#100\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/annotated-types/annotated-types/compare/v0.7.0...v0.8.0\"\u003ehttps://github.com/annotated-types/annotated-types/compare/v0.7.0...v0.8.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/annotated-types/annotated-types/commit/9eb96680138269811a39d838d720abc3dce33954\"\u003e\u003ccode\u003e9eb9668\u003c/code\u003e\u003c/a\u003e Prepare for 0.8.0 release (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/103\"\u003e#103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/10b77644f88b385357653730a1ab23748ca3ae2e\"\u003e\u003ccode\u003e10b7764\u003c/code\u003e\u003c/a\u003e Fix typo in \u003ccode\u003eLen\u003c/code\u003e docstring (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/100\"\u003e#100\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/955f7576d616feb6e9407c74498517787c38afd4\"\u003e\u003ccode\u003e955f757\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 and drop EOL 3.8-3.9 (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/97\"\u003e#97\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/bd280fea7983550d266f993d868b8dd7ff822bf1\"\u003e\u003ccode\u003ebd280fe\u003c/code\u003e\u003c/a\u003e Added Python 3.14 to the test matrix (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/96\"\u003e#96\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/a471bb757663452459893e6f593118ec21eb1b9e\"\u003e\u003ccode\u003ea471bb7\u003c/code\u003e\u003c/a\u003e Add SPDX license expression (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/92\"\u003e#92\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/eab91d9a8c0d3f73661fc4b0794a1fe76c94fa84\"\u003e\u003ccode\u003eeab91d9\u003c/code\u003e\u003c/a\u003e Fix string predicate names in doc (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/90\"\u003e#90\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/03ad9c3c7b4d4dfe9e33c09075a3a2766c0820e1\"\u003e\u003ccode\u003e03ad9c3\u003c/code\u003e\u003c/a\u003e add CI for PyPy3.11 and fix test (issue 71) (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/88\"\u003e#88\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/5ae60437f0ab493cedd27311bc6ce6d2188e8d8b\"\u003e\u003ccode\u003e5ae6043\u003c/code\u003e\u003c/a\u003e fix: typo in README.md (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/87\"\u003e#87\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/b60ad7bff90019c7de3547df1c8e3586eb328423\"\u003e\u003ccode\u003eb60ad7b\u003c/code\u003e\u003c/a\u003e Update license-files to be PEP-639 compliant (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/85\"\u003e#85\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/86\"\u003e#86\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/3fbeb6d129760ae48d7a0372fb9301764acc95ae\"\u003e\u003ccode\u003e3fbeb6d\u003c/code\u003e\u003c/a\u003e Fix docstring of \u003ccode\u003eTimezone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/84\"\u003e#84\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/annotated-types/annotated-types/compare/v0.7.0...v0.8.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.0 to 4.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.15.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support for the newer keyword-only arguments on \u003ccode\u003eanyio.Path\u003c/code\u003e methods to match the standard library \u003ccode\u003epathlib.Path\u003c/code\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eexists()\u003c/code\u003e (Python 3.12+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eis_dir()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eis_file()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eowner()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003egroup()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003enewline\u003c/code\u003e on \u003ccode\u003eread_text()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e(\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1286\"\u003e#1286\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1293\"\u003e#1293\u003c/a\u003e; PR by \u003ca href=\"https://github.com/jaideeppyne\"\u003e\u003ccode\u003e@​jaideeppyne\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003eamap\u003c/code\u003e, \u003ccode\u003egather\u003c/code\u003e, and \u003ccode\u003eas_completed\u003c/code\u003e utility functions to simplify common patterns (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1173\"\u003e#1173\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003e--anyio-mode\u003c/code\u003e command-line option as an alternative to the \u003ccode\u003eanyio_mode\u003c/code\u003e ini setting, and fix the pytest plugin's auto mode detection to recognize the mode when set via either mechanism(e.g: \u003ccode\u003epytest_asyncio\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1242\"\u003e#1242\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003eanyio.Future\u003c/code\u003e synchronization primitive which behaves similar to \u003ccode\u003easyncio.Future\u003c/code\u003e, allowing tasks to wait for a value (or exception) from another task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1146\"\u003e#1146\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded guidance for managing multiple memory object stream producers and consumers with cloned streams (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/330\"\u003e#330\u003c/a\u003e; PR by \u003ca href=\"https://github.com/nightcityblade\"\u003e\u003ccode\u003e@​nightcityblade\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003eStapledObjectStream.send_nowait()\u003c/code\u003e that delegates to the underlying \u003ccode\u003eObjectSendStream\u003c/code\u003e, if it implements it (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1241\"\u003e#1241\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003emove_on_at()\u003c/code\u003e and \u003ccode\u003efail_at()\u003c/code\u003e functions to complement \u003ccode\u003emove_on_after()\u003c/code\u003e and \u003ccode\u003efail_after()\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged the default name for a task spawned with \u003ccode\u003eTaskGroup.create_task(func())\u003c/code\u003e to match the default task name for the analogous task spawned with \u003ccode\u003eTaskGroup.start_soon(func)\u003c/code\u003e or \u003ccode\u003eTaskGroup.start(func)\u003c/code\u003e in more situations. Previously, the default name of a \u003ccode\u003eTaskGroup.create_task\u003c/code\u003e task never included the module name. (The default name for a task spawned with \u003ccode\u003eTaskGroup.start_soon\u003c/code\u003e or \u003ccode\u003eTaskGroup.start\u003c/code\u003e typically includes the module name.) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1234\"\u003e#1234\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged the \u003ccode\u003eanyio\u003c/code\u003e and \u003ccode\u003eanyio.abc\u003c/code\u003e modules to lazily (much like \u003ccode\u003e810\u003c/code\u003e) import the necessary submodules. This is done by parsing the AST of the module and building a lookup table from the \u003ccode\u003eif TYPE_CHECKING:\u003c/code\u003e block. A fallback mode has been provided for installations where the source code is unavailable (e.g. PyInstaller). (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1169\"\u003e#1169\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed free-threading compatibility issues arising from the fact that on Python 3.14 free-threading builds, newly created threads inherit the current context by default, causing AnyIO to behave erroneously in relation to \u003ccode\u003estart_blocking_portal()\u003c/code\u003e and \u003ccode\u003eanyio.to_thread.run_sync()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1224\"\u003e#1224\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eSpooledTemporaryFile.readinto()\u003c/code\u003e and \u003ccode\u003ereadinto1()\u003c/code\u003e reading twice before rollover, so the destination buffer was overwritten by the second read and the file position advanced twice, silently losing data (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1215\"\u003e#1215\u003c/a\u003e; PR by \u003ca href=\"https://github.com/c-tonneslan\"\u003e\u003ccode\u003e@​c-tonneslan\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a \u003ccode\u003ereason\u003c/code\u003e parameter to \u003ccode\u003efail_after\u003c/code\u003e (and the new \u003ccode\u003efail_at\u003c/code\u003e) allowing for added exception context when raising \u003ccode\u003eTimeoutError\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1227\"\u003e#1227\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed the default \u003ccode\u003eTaskHandle.name\u003c/code\u003e missing part of the task name for tasks started with \u003ccode\u003eTaskGroup.start\u003c/code\u003e on Trio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1231\"\u003e#1231\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eanyio.run\u003c/code\u003e leaking, or at least, delaying collection of loop and root_task due to the root task being cached in a \u003ccode\u003eRunVar\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1203\"\u003e#1203\u003c/a\u003e; PR by \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eanyio.Path.with_stem()\u003c/code\u003e silently producing a wrong path (e.g. \u003ccode\u003ePath(\u0026quot;.txt\u0026quot;)\u003c/code\u003e) instead of raising \u003ccode\u003eValueError\u003c/code\u003e when given an empty stem on a path with a non-empty suffix, unlike \u003ccode\u003epathlib.PurePath.with_stem\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1200\"\u003e#1200\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Sanjays2402\"\u003e\u003ccode\u003e@​Sanjays2402\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eUNIXSocketStream.aclose()\u003c/code\u003e raising \u003ccode\u003easyncio.InvalidStateError\u003c/code\u003e when a concurrent receive or send operation had just been cancelled on the asyncio backend (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1267\"\u003e#1267\u003c/a\u003e; PR by \u003ca href=\"https://github.com/alloutflo\"\u003e\u003ccode\u003e@​alloutflo\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed the pytest plugin importing the deprecated \u003ccode\u003e_pytest.python.CallSpec2\u003c/code\u003e alias, which triggers \u003ccode\u003ePytestRemovedIn10Warning\u003c/code\u003e on \u003ccode\u003epytest\u0026gt;=9.2\u003c/code\u003e and crashes pytest at startup when \u003ccode\u003efilterwarnings = error\u003c/code\u003e is configured (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1271\"\u003e#1271\u003c/a\u003e; PR by \u003ca href=\"https://github.com/matthewfeickert\"\u003e\u003ccode\u003e@​matthewfeickert\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed an asyncio worker thread race that could raise \u003ccode\u003eRuntimeError\u003c/code\u003e when the event loop closed between checking its state and scheduling the worker result (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1265\"\u003e#1265\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hansu650\"\u003e\u003ccode\u003e@​hansu650\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eCapacityLimiter\u003c/code\u003e on the asyncio backend over-granting tokens when \u003ccode\u003etotal_tokens\u003c/code\u003e was raised while the limiter was over-subscribed (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1223\"\u003e#1223\u003c/a\u003e; PR by \u003ca href=\"https://github.com/zelinewang\"\u003e\u003ccode\u003e@​zelinewang\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed asyncio task groups leaking unawaited coroutines when a custom task constructor fails; default task creation is unaffected (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1274\"\u003e#1274\u003c/a\u003e; PR by \u003ca href=\"https://github.com/dsfaccini\"\u003e\u003ccode\u003e@​dsfaccini\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/928366259543412a2deb1e2ba09ea45ffa92ef4f\"\u003e\u003ccode\u003e9283662\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d137692a90f76e4f71605e32ea5ca94cab3a539d\"\u003e\u003ccode\u003ed137692\u003c/code\u003e\u003c/a\u003e Improved the instructions for AI agents\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/033fc52b8fa8e90c5d0ef24b10b3860e974a6265\"\u003e\u003ccode\u003e033fc52\u003c/code\u003e\u003c/a\u003e Shield TemporaryDirectory cleanup from cancellation (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1304\"\u003e#1304\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/942e9a6552cc10b5aaa779d84bfc8e2c3d5fcffc\"\u003e\u003ccode\u003e942e9a6\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1305\"\u003e#1305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b825c3be7cb4ca1a8000b8065d4e147843deb704\"\u003e\u003ccode\u003eb825c3b\u003c/code\u003e\u003c/a\u003e Fixed pyproject.toml changes not triggering the test suite\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9727dc504681e2986b5bc285de9571fb467539af\"\u003e\u003ccode\u003e9727dc5\u003c/code\u003e\u003c/a\u003e Fixed start inconsistencies between trio and asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1198\"\u003e#1198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b05fe6d160a640355c201363cab286a7d2581da8\"\u003e\u003ccode\u003eb05fe6d\u003c/code\u003e\u003c/a\u003e Fixed wrong type in move_on_after (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1297\"\u003e#1297\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/44d0c93cc20079acbf38ba4dbed5ab9df323f153\"\u003e\u003ccode\u003e44d0c93\u003c/code\u003e\u003c/a\u003e Fixed asyncio task group coroutine cleanup (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1275\"\u003e#1275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/ae250440c90020b030ba4e83cccc37e9a84512c5\"\u003e\u003ccode\u003eae25044\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1290\"\u003e#1290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6d3a30d264637374b1b642d2e97217c816151cfe\"\u003e\u003ccode\u003e6d3a30d\u003c/code\u003e\u003c/a\u003e Add follow_symlinks argument to anyio.Path.owner() and group() (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1293\"\u003e#1293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.12.0...4.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `beautifulsoup4` from 4.14.3 to 4.15.0\n\nUpdates `cffi` from 2.0.0 to 2.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMinimize internal Python API usage for interpreter and thread state sampling where possible. Avoids breaking ABI change in Python \u0026gt;= 3.15.0b4 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/pull/269\"\u003epython-cffi/cffi#269\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v2.1.0...v2.1.1\"\u003ehttps://github.com/python-cffi/cffi/compare/v2.1.0...v2.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.1.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.15 and support for C extensions generated by CFFI\nto target the new \u003ccode\u003eabi3t\u003c/code\u003e free-threaded ABI.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.9.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ecffi-gen-src\u003c/code\u003e CLI to generate CFFI C extension source for alternate build backend support.\u003c/li\u003e\n\u003cli\u003eFixed crashes inside \u003ccode\u003e__delitem__\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eFixed \u0026quot;string too big\u0026quot; error under MSVC.\u003c/li\u003e\n\u003cli\u003eFixed mingw builds.\u003c/li\u003e\n\u003cli\u003eAdded support for arm64 iOS wheels.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/fd33e7700f0ebafe6f30bd5053f13327221b77a2\"\u003e\u003ccode\u003efd33e77\u003c/code\u003e\u003c/a\u003e New release 2.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/56a7876b8cd3b2d8148233a90e0121d74cd83852\"\u003e\u003ccode\u003e56a7876\u003c/code\u003e\u003c/a\u003e Use PyGILState_Ensure to avoid accessing CPython internals (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/269\"\u003e#269\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/270\"\u003e#270\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/d9f6f70adac5ca9f260abf5405cf4d0373767b65\"\u003e\u003ccode\u003ed9f6f70\u003c/code\u003e\u003c/a\u003e New release 2.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/02a7b0e32db93964b9756537110119d74aa23425\"\u003e\u003ccode\u003e02a7b0e\u003c/code\u003e\u003c/a\u003e Misc pre-2.1 release/packaging cleanup (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/253\"\u003e#253\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/1362e5ddc5417f1350200d4d6183c3eb3da9cc8d\"\u003e\u003ccode\u003e1362e5d\u003c/code\u003e\u003c/a\u003e Move cffi-gen-src release note to 2.1.0 notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/a797055125e049fd79483d0dcdf8cff59c64c6e4\"\u003e\u003ccode\u003ea797055\u003c/code\u003e\u003c/a\u003e Make error message when embedding version test fails more friendly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/f1f40a8e1667b9ef6cf8fe3c451829408feab018\"\u003e\u003ccode\u003ef1f40a8\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/dc62c93af7be7c535dc17f621de2bfc99490d3bd\"\u003e\u003ccode\u003edc62c93\u003c/code\u003e\u003c/a\u003e Delete missed cp39 Windows builds\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/a34118009e64a7fed8ea49bdbad4d6a07494bb4f\"\u003e\u003ccode\u003ea341180\u003c/code\u003e\u003c/a\u003e Update version numbers to prepare for v2.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/9f04d8506a6c7186dc3be7316f21aab042e075cb\"\u003e\u003ccode\u003e9f04d85\u003c/code\u003e\u003c/a\u003e Mark test using inet_ntoa as thread-unsafe\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v2.0.0...v2.1.1\"\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.5.1\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.5.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.5.0...3.5.1\"\u003e3.5.1\u003c/a\u003e (2026-08-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised upper bound of setuptools to v84 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache performance access optimization for our CharInfo struct (prebuilt only).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer decoding large content when the noise detector output give a high entropy.\nOnly impacted large content input \u0026gt;1M bytes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.5.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.9...3.5.0\"\u003e3.5.0\u003c/a\u003e (2026-08-12)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExplicit support for Python 3.15\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComparing a CharsetMatch to a non-alias encoding strings (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReturn 0.0 CharsetMatch.multi_byte_usage for empty payloads instead of crashing (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA file with both a charset declaration and BOM/SIG did not verify first the BOM/SIG charset.\u003c/li\u003e\n\u003cli\u003eiso2022* cases misdetected due to a flaw in our multibyte chunking logic.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReplaced the option...\n\n_Description has been truncated_","html_url":"https://github.com/mmtigers/my_python_project/pull/503","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmtigers%2Fmy_python_project/issues/503","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/503/packages"},{"uuid":"5359796673","node_id":"PR_kwDOUHR0pc8AAAABCV1xug","number":9,"state":"open","title":"chore(deps-dev): update bandit requirement from \u003c2.0,\u003e=1.7 to \u003e=1.9.4,\u003c2.0","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-05T17:44:07.000Z","updated_at":"2026-09-05T17:44:08.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev): update","packages":[{"name":"bandit","old_version":"\u003c2.0,\u003e=1.7","new_version":"\u003e=1.9.4,\u003c2.0","repository_url":"https://github.com/PyCQA/bandit"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [bandit](https://github.com/PyCQA/bandit) 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/PyCQA/bandit/releases\"\u003ebandit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: fixed some typos in comments by \u003ca href=\"https://github.com/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/login-action from 3.6.0 to 3.7.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/PyCQA/bandit/pull/1353\"\u003ePyCQA/bandit#1353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.18.0 to 6.19.2 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/PyCQA/bandit/pull/1357\"\u003ePyCQA/bandit#1357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B613 crash when reading from stdin by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude filename in nosec 'no failed test' warning by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1363\"\u003ePyCQA/bandit#1363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B615 false positive when revision is set via variable by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1358\"\u003ePyCQA/bandit#1358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLower version guard in check_ast_node to Python 3.12 by \u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B106 reporting wrong line number on multiline function calls by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1360\"\u003ePyCQA/bandit#1360\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/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\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/PyCQA/bandit/commit/92ae8b82fb422a639f0ed8d99e96cea769594e08\"\u003e\u003ccode\u003e92ae8b8\u003c/code\u003e\u003c/a\u003e Fix B106 reporting wrong line number on multiline function calls (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1360\"\u003e#1360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c8c8a55c3307333b8eb46cb2ef46d49b1fad6546\"\u003e\u003ccode\u003ec8c8a55\u003c/code\u003e\u003c/a\u003e Lower version guard in check_ast_node to Python 3.12 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1355\"\u003e#1355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/8f2f9284fca830ca017b2e2cc3ddc2a7b74b7040\"\u003e\u003ccode\u003e8f2f928\u003c/code\u003e\u003c/a\u003e Fix B615 false positive when revision is set via variable (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1358\"\u003e#1358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e27493f71c114e0e5dfc0a475d225d7f9f4a7e2b\"\u003e\u003ccode\u003ee27493f\u003c/code\u003e\u003c/a\u003e Include filename in nosec 'no failed test' warning (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1363\"\u003e#1363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/b69b336450301d424e5ba04c9a58e8d41b7169b6\"\u003e\u003ccode\u003eb69b336\u003c/code\u003e\u003c/a\u003e Fix B613 crash when reading from stdin (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1361\"\u003e#1361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e418b798abcc3f2b00c07fd6315da8fe9aeead00\"\u003e\u003ccode\u003ee418b79\u003c/code\u003e\u003c/a\u003e Bump docker/build-push-action from 6.18.0 to 6.19.2 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1357\"\u003e#1357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/ff646fd7e0e34fb350196fc58448fad17178c27a\"\u003e\u003ccode\u003eff646fd\u003c/code\u003e\u003c/a\u003e Bump docker/login-action from 3.6.0 to 3.7.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1353\"\u003e#1353\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c0def6c7ebab60f98c28ba759d488f4fbe6dae89\"\u003e\u003ccode\u003ec0def6c\u003c/code\u003e\u003c/a\u003e chore: fixed some typos in comments (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1351\"\u003e#1351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/765f00d3f202f83f61d03f882f80a2d5142d81f8\"\u003e\u003ccode\u003e765f00d\u003c/code\u003e\u003c/a\u003e Limit B614 to torch.load deserializers (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1348\"\u003e#1348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/06fbbab0df3374ffa8ef24c6f601b2d5e1d4d429\"\u003e\u003ccode\u003e06fbbab\u003c/code\u003e\u003c/a\u003e Bump docker/setup-buildx-action from 3.11.1 to 3.12.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1347\"\u003e#1347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.7.0...1.9.4\"\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/fallen020/comic-dl/pull/9","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/fallen020%2Fcomic-dl/issues/9","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/9/packages"},{"uuid":"5359719805","node_id":"PR_kwDOR9i09M8AAAABCVx5cA","number":517,"state":"open","title":"chore(deps): bump the patch-and-minor group with 189 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-05T17:33:20.000Z","updated_at":"2026-09-05T17:33:21.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"patch-and-minor","update_count":189,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.14.2","repository_url":"https://github.com/agronholm/anyio"},{"name":"charset-normalizer","old_version":"3.4.2","new_version":"3.5.1","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"httpx","old_version":"0.26.0","new_version":"0.28.1","repository_url":"https://github.com/encode/httpx"},{"name":"idna","old_version":"3.10","new_version":"3.19","repository_url":"https://github.com/kjd/idna"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"requests","old_version":"2.32.5","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"ruff","old_version":"0.2.1","new_version":"0.16.5","repository_url":"https://github.com/astral-sh/ruff"},{"name":"urllib3","old_version":"2.6.3","new_version":"2.7.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"prometheus-client","old_version":"0.22.1","new_version":"0.26.0","repository_url":"https://github.com/prometheus/client_python"},{"name":"aiohttp","old_version":"3.13.3","new_version":"3.14.3","repository_url":"https://github.com/aio-libs/aiohttp"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.3","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"wheel","old_version":"0.46.2","new_version":"0.48.0","repository_url":"https://github.com/pypa/wheel"},{"name":"authlib","old_version":"1.6.9","new_version":"1.8.0","repository_url":"https://github.com/authlib/authlib"},{"name":"nltk","old_version":"3.9.1","new_version":"3.10.3","repository_url":"https://github.com/nltk/nltk"},{"name":"pyjwt","old_version":"2.12.0","new_version":"2.13.0","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"python-multipart","old_version":"0.0.22","new_version":"0.0.32","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"tornado","old_version":"6.5.5","new_version":"6.5.8","repository_url":"https://github.com/tornadoweb/tornado"},{"name":"fastapi","old_version":"0.111.0","new_version":"0.141.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"aiohappyeyeballs","old_version":"2.6.1","new_version":"2.7.1","repository_url":"https://github.com/aio-libs/aiohappyeyeballs"},{"name":"alembic","old_version":"1.18.4","new_version":"1.19.1","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"annotated-doc","old_version":"0.0.4","new_version":"0.0.5","repository_url":"https://github.com/fastapi/annotated-doc"},{"name":"annotated-types","old_version":"0.7.0","new_version":"0.8.0","repository_url":"https://github.com/annotated-types/annotated-types"},{"name":"apscheduler","old_version":"3.11.2","new_version":"3.11.3","repository_url":"https://github.com/agronholm/apscheduler"},{"name":"arq","old_version":"0.27.0","new_version":"0.28.0","repository_url":"https://github.com/python-arq/arq"},{"name":"asgiref","old_version":"3.11.1","new_version":"3.12.1","repository_url":"https://github.com/django/asgiref"},{"name":"astroid","old_version":"4.0.4","new_version":"4.3.1","repository_url":"https://github.com/pylint-dev/astroid"},{"name":"asyncpg","old_version":"0.30.0","new_version":"0.31.0","repository_url":"https://github.com/MagicStack/asyncpg"},{"name":"bandit","old_version":"1.8.6","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.15.0"},{"name":"bidict","old_version":"0.23.1","new_version":"0.24.1","repository_url":"https://github.com/jab/bidict"},{"name":"boto3","old_version":"1.42.64","new_version":"1.43.86","repository_url":"https://github.com/boto/boto3"},{"name":"botocore","old_version":"1.42.64","new_version":"1.43.86","repository_url":"https://github.com/boto/botocore"},{"name":"build","old_version":"1.3.0","new_version":"1.6.0","repository_url":"https://github.com/pypa/build"},{"name":"celery","old_version":"5.6.2","new_version":"5.6.3","repository_url":"https://github.com/celery/celery"},{"name":"cffi","old_version":"2.0.0","new_version":"2.1.1","repository_url":"https://github.com/python-cffi/cffi"},{"name":"chromadb","old_version":"1.0.15","new_version":"1.5.9","repository_url":"https://github.com/chroma-core/chroma"},{"name":"click","old_version":"8.2.1","new_version":"8.5.0","repository_url":"https://github.com/pallets/click"},{"name":"colorlog","old_version":"6.9.0","new_version":"6.12.0","repository_url":"https://github.com/borntyping/python-colorlog"},{"name":"coverage","old_version":"7.13.4","new_version":"7.16.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cross-web","old_version":"0.4.1","new_version":"0.7.0","repository_url":"https://github.com/usecross/cross-web"},{"name":"decorator","old_version":"5.2.1","new_version":"5.3.1","repository_url":"https://github.com/micheles/decorator"},{"name":"deprecated","old_version":"1.2.18","new_version":"1.3.1","repository_url":"https://github.com/laurent-laporte-pro/deprecated"},{"name":"discord-py","old_version":"2.5.2","new_version":"2.7.1","repository_url":"https://github.com/Rapptz/discord.py"},{"name":"docker","old_version":"7.1.0","new_version":"7.2.0","repository_url":"https://github.com/docker/docker-py"},{"name":"docstring-parser","old_version":"0.17.0","new_version":"0.18.0","repository_url":"https://github.com/rr-/docstring_parser"},{"name":"durationpy","old_version":"0.10","new_version":"0.11","repository_url":"https://github.com/icholy/durationpy"},{"name":"fabric","old_version":"3.2.2","new_version":"3.2.3","repository_url":"https://github.com/fabric/fabric"},{"name":"fakeredis","old_version":"2.33.0","new_version":"2.37.1","repository_url":"https://github.com/cunla/fakeredis-py"},{"name":"feedparser","old_version":"6.0.11","new_version":"6.0.14","repository_url":"https://github.com/kurtmckee/feedparser"},{"name":"filelock","old_version":"3.20.3","new_version":"3.32.5","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"flask-cors","old_version":"6.0.1","new_version":"6.0.5","repository_url":"https://github.com/corydolphin/flask-cors"},{"name":"flask-socketio","old_version":"5.5.1","new_version":"5.6.1","repository_url":"https://github.com/miguelgrinberg/flask-socketio"},{"name":"flatbuffers","old_version":"25.2.10","new_version":"25.12.19","repository_url":"https://github.com/google/flatbuffers"},{"name":"fonttools","old_version":"4.60.2","new_version":"4.64.0","repository_url":"https://github.com/fonttools/fonttools"},{"name":"frozenlist","old_version":"1.7.0","new_version":"1.8.0","repository_url":"https://github.com/aio-libs/frozenlist"},{"name":"fsspec","old_version":"2026.3.0","new_version":"2026.7.0","repository_url":"https://github.com/fsspec/filesystem_spec"},{"name":"geographiclib","old_version":"2.0","new_version":"2.1","repository_url":"https://github.com/geographiclib/geographiclib-python"},{"name":"geopy","old_version":"2.4.1","new_version":"2.5.0","repository_url":"https://github.com/geopy/geopy"},{"name":"gitpython","old_version":"3.1.50","new_version":"3.1.61","repository_url":"https://github.com/gitpython-developers/GitPython"},{"name":"google-auth","old_version":"2.40.3","new_version":"2.57.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"googleapis-common-protos","old_version":"1.70.0","new_version":"1.75.2","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"graphql-core","old_version":"3.2.8","new_version":"3.2.12","repository_url":"https://github.com/graphql-python/graphql-core"},{"name":"greenlet","old_version":"3.3.2","new_version":"3.5.5","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"grpcio","old_version":"1.74.0","new_version":"1.83.1","repository_url":"https://github.com/grpc/grpc"},{"name":"hiredis","old_version":"3.3.0","new_version":"3.4.1","repository_url":"https://github.com/redis/hiredis-py"},{"name":"httptools","old_version":"0.6.4","new_version":"0.8.0","repository_url":"https://github.com/MagicStack/httptools"},{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"jaraco-context","old_version":"6.1.0","new_version":"6.1.2","repository_url":"https://github.com/jaraco/jaraco.context"},{"name":"jiter","old_version":"0.10.0","new_version":"0.16.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"joblib","old_version":"1.5.1","new_version":"1.6.0","repository_url":"https://github.com/joblib/joblib"},{"name":"jsonpointer","old_version":"3.0.0","new_version":"3.1.1","repository_url":"https://github.com/stefankoegl/python-json-pointer"},{"name":"jsonschema","old_version":"4.25.0","new_version":"4.26.0","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"jsonschema-specifications","old_version":"2025.4.1","new_version":"2025.9.1","repository_url":"https://github.com/python-jsonschema/jsonschema-specifications"},{"name":"kiwisolver","old_version":"1.4.8","new_version":"1.5.1","repository_url":"https://github.com/nucleic/kiwi"},{"name":"langgraph","old_version":"1.1.0","new_version":"1.2.11","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langgraph-checkpoint","old_version":"4.0.1","new_version":"4.2.0","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langgraph-prebuilt","old_version":"1.0.8","new_version":"1.1.0","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langgraph-sdk","old_version":"0.3.13","new_version":"0.4.4","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"levenshtein","old_version":"0.27.3","new_version":"0.27.4","repository_url":"https://github.com/rapidfuzz/Levenshtein"},{"name":"lxml","old_version":"6.1.0","new_version":"6.1.3","repository_url":"https://github.com/lxml/lxml"},{"name":"mako","old_version":"1.3.12","new_version":"1.4.1","repository_url":"https://github.com/sqlalchemy/mako"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"matplotlib","old_version":"3.10.5","new_version":"3.11.1","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"mmh3","old_version":"5.2.0","new_version":"5.3.0","repository_url":"https://github.com/hajimes/mmh3"},{"name":"mpmath","old_version":"1.3.0","new_version":"1.4.1","repository_url":"https://github.com/mpmath/mpmath"},{"name":"msgpack","old_version":"1.1.2","new_version":"1.2.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"multidict","old_version":"6.6.3","new_version":"6.7.1","repository_url":"https://github.com/aio-libs/multidict"},{"name":"narwhals","old_version":"2.0.1","new_version":"2.25.0","repository_url":"https://github.com/narwhals-dev/narwhals"},{"name":"networkx","old_version":"3.5","new_version":"3.6.1","repository_url":"https://github.com/networkx/networkx"},{"name":"numpy","old_version":"2.3.2","new_version":"2.5.2","repository_url":"https://github.com/numpy/numpy"},{"name":"onnxruntime","old_version":"1.22.1","new_version":"1.29.0","repository_url":"https://github.com/microsoft/onnxruntime"},{"name":"openai","old_version":"1.98.0","new_version":"1.109.1","repository_url":"https://github.com/openai/openai-python"},{"name":"opentelemetry-api","old_version":"1.40.0","new_version":"1.44.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-distro","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-exporter-otlp","old_version":"1.40.0","new_version":"1.44.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-common","old_version":"1.40.0","new_version":"1.44.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.40.0","new_version":"1.44.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-http","old_version":"1.40.0","new_version":"1.44.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-asgi","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-fastapi","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-httpx","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-logging","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-redis","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-sqlalchemy","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-system-metrics","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.40.0","new_version":"1.44.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.40.0","new_version":"1.44.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"orjson","old_version":"3.11.7","new_version":"3.12.0","repository_url":"https://github.com/ijl/orjson"},{"name":"pathspec","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/cpburnz/python-pathspec"},{"name":"pip-tools","old_version":"7.5.3","new_version":"7.6.1","repository_url":"https://github.com/jazzband/pip-tools"},{"name":"pip-audit","old_version":"2.8.0","new_version":"2.10.1","repository_url":"https://github.com/pypa/pip-audit"},{"name":"platformdirs","old_version":"4.9.4","new_version":"4.11.7","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"prompt-toolkit","old_version":"3.0.52","new_version":"3.0.53","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"propcache","old_version":"0.3.2","new_version":"0.5.2","repository_url":"https://github.com/aio-libs/propcache"},{"name":"psycopg2-binary","old_version":"2.9.10","new_version":"2.9.12","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"py-cord","old_version":"2.6.1","new_version":"2.8.1","repository_url":"https://github.com/Pycord-Development/pycord"},{"name":"pyasn1","old_version":"0.6.3","new_version":"0.6.4","repository_url":"https://github.com/pyasn1/pyasn1"},{"name":"pybase64","old_version":"1.4.2","new_version":"1.5.0","repository_url":"https://github.com/mayeut/pybase64"},{"name":"pydantic-settings","old_version":"2.13.1","new_version":"2.15.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"pydeck","old_version":"0.9.1","new_version":"0.9.3","repository_url":"https://github.com/visgl/deck.gl"},{"name":"pygithub","old_version":"2.9.0","new_version":"2.10.0","repository_url":"https://github.com/pygithub/pygithub"},{"name":"pygments","old_version":"2.20.0","new_version":"2.21.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pylint","old_version":"4.0.5","new_version":"4.0.8","repository_url":"https://github.com/pylint-dev/pylint"},{"name":"pyparsing","old_version":"3.2.3","new_version":"3.3.2","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"pypika","old_version":"0.48.9","new_version":"0.51.1","repository_url":"https://github.com/kayak/pypika"},{"name":"pyreadline3","old_version":"3.5.4","new_version":"3.5.6","repository_url":"https://github.com/pyreadline3/pyreadline3"},{"name":"python-engineio","old_version":"4.12.2","new_version":"4.14.0","repository_url":"https://github.com/miguelgrinberg/python-engineio"},{"name":"python-levenshtein","old_version":"0.27.3","new_version":"0.27.4","repository_url":"https://github.com/rapidfuzz/python-Levenshtein"},{"name":"python-socketio","old_version":"5.14.0","new_version":"5.16.4","repository_url":"https://github.com/miguelgrinberg/python-socketio"},{"name":"qiskit","old_version":"2.3.1","new_version":"2.5.2","repository_url":"https://github.com/Qiskit/qiskit"},{"name":"rapidfuzz","old_version":"3.14.3","new_version":"3.14.6","repository_url":"https://github.com/rapidfuzz/RapidFuzz"},{"name":"referencing","old_version":"0.36.2","new_version":"0.37.0","repository_url":"https://github.com/python-jsonschema/referencing"},{"name":"ruamel-yaml","old_version":"0.18.14","new_version":"0.19.1"},{"name":"ruamel-yaml-clib","old_version":"0.2.12","new_version":"0.2.15"},{"name":"rustworkx","old_version":"0.17.1","new_version":"0.18.1","repository_url":"https://github.com/Qiskit/rustworkx"},{"name":"s3transfer","old_version":"0.16.0","new_version":"0.19.2","repository_url":"https://github.com/boto/s3transfer"},{"name":"safehttpx","old_version":"0.1.6","new_version":"0.1.7","repository_url":"https://github.com/gradio-app/safehttpx"},{"name":"scikit-learn","old_version":"1.7.1","new_version":"1.9.0","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"scipy","old_version":"1.12.0","new_version":"1.18.1","repository_url":"https://github.com/scipy/scipy"},{"name":"slowapi","old_version":"0.1.9","new_version":"0.1.10","repository_url":"https://github.com/laurents/slowapi"},{"name":"smmap","old_version":"5.0.2","new_version":"5.0.3","repository_url":"https://github.com/gitpython-developers/smmap"},{"name":"soupsieve","old_version":"2.7","new_version":"2.9.2","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"sqlalchemy","old_version":"2.0.48","new_version":"2.0.52","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"stevedore","old_version":"5.4.1","new_version":"5.9.1"},{"name":"strawberry-graphql","old_version":"0.312.3","new_version":"0.327.1","repository_url":"https://github.com/sponsors/strawberry-graphql"},{"name":"tomlkit","old_version":"0.13.3","new_version":"0.15.1","repository_url":"https://github.com/python-poetry/tomlkit"},{"name":"tqdm","old_version":"4.66.1","new_version":"4.70.0","repository_url":"https://github.com/tqdm/tqdm"},{"name":"typer","old_version":"0.16.0","new_version":"0.27.2","repository_url":"https://github.com/fastapi/typer"},{"name":"types-requests","old_version":"2.32.4.20260107","new_version":"2.33.0.20260712","repository_url":"https://github.com/python/typeshed"},{"name":"typing-inspection","old_version":"0.4.2","new_version":"0.4.4","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"typing-extensions","old_version":"4.14.1","new_version":"4.16.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"tzlocal","old_version":"5.3.1","new_version":"5.4.4","repository_url":"https://github.com/regebro/tzlocal"},{"name":"uuid-utils","old_version":"0.14.1","new_version":"0.17.0","repository_url":"https://github.com/aminalaee/uuid-utils"},{"name":"uvicorn","old_version":"0.27.1","new_version":"0.52.4","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"watchfiles","old_version":"1.1.0","new_version":"1.2.0","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"wcwidth","old_version":"0.5.3","new_version":"0.8.3","repository_url":"https://github.com/jquast/wcwidth"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.2","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"werkzeug","old_version":"3.1.6","new_version":"3.1.8","repository_url":"https://github.com/pallets/werkzeug"},{"name":"wsproto","old_version":"1.2.0","new_version":"1.3.2","repository_url":"https://github.com/python-hyper/wsproto"},{"name":"yarl","old_version":"1.20.1","new_version":"1.24.5","repository_url":"https://github.com/aio-libs/yarl"},{"name":"safety","old_version":"3.2.0","new_version":"3.8.1","repository_url":"https://github.com/pyupio/safety"},{"name":"opentelemetry-instrumentation-celery","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"langchain-community","old_version":"0.3.5","new_version":"0.4.2","repository_url":"https://github.com/langchain-ai/langchain-community"},{"name":"langserve","old_version":"0.2.1","new_version":"0.3.3","repository_url":"https://github.com/langchain-ai/langserve"},{"name":"autogen","old_version":"0.5.0","new_version":"0.14.1","repository_url":"https://github.com/ag2ai/ag2classic"},{"name":"eth-account","old_version":"0.13.0","new_version":"0.14.0","repository_url":"https://github.com/ApeWorX/eth-account"},{"name":"eth-keys","old_version":"0.7.1","new_version":"0.8.0","repository_url":"https://github.com/ApeWorX/eth-keys"},{"name":"semgrep","old_version":"1.92.0","new_version":"1.176.0","repository_url":"https://github.com/semgrep/semgrep"},{"name":"pytest-benchmark","old_version":"5.1.0","new_version":"5.3.0","repository_url":"https://github.com/ionelmc/pytest-benchmark"},{"name":"hypothesis","old_version":"6.131.0","new_version":"6.167.1","repository_url":"https://github.com/HypothesisWorks/hypothesis"},{"name":"accelerate","old_version":"1.10.0","new_version":"1.14.0","repository_url":"https://github.com/huggingface/accelerate"},{"name":"bitsandbytes","old_version":"0.46.1","new_version":"0.50.2","repository_url":"https://github.com/bitsandbytes-foundation/bitsandbytes"},{"name":"langchain-text-splitters","old_version":"1.1.1","new_version":"1.1.2","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langsmith","old_version":"0.7.16","new_version":"0.12.1","repository_url":"https://github.com/langchain-ai/langsmith-sdk"},{"name":"safetensors","old_version":"0.5.3","new_version":"0.8.0","repository_url":"https://github.com/huggingface/safetensors"},{"name":"streamlit","old_version":"1.54.0","new_version":"1.63.0","repository_url":"https://github.com/streamlit/streamlit"},{"name":"tokenizers","old_version":"0.21.4","new_version":"0.23.1","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"torch","old_version":"2.2.0","new_version":"2.14.0","repository_url":"https://github.com/pytorch/pytorch"},{"name":"torchvision","old_version":"0.17.0","new_version":"0.29.0","repository_url":"https://github.com/pytorch/vision"},{"name":"torchaudio","old_version":"2.2.0","new_version":"2.11.0","repository_url":"https://github.com/pytorch/audio"},{"name":"scikit-image","old_version":"0.22.0","new_version":"0.26.0","repository_url":"https://github.com/scikit-image/scikit-image"},{"name":"soundfile","old_version":"0.12.1","new_version":"0.14.0","repository_url":"https://github.com/bastibe/python-soundfile"},{"name":"wyn-wav2lip","old_version":"0.1.0","new_version":"0.2.3"},{"name":"face-alignment","old_version":"1.4.1","new_version":"1.5.0","repository_url":"https://github.com/1adrianb/face-alignment"},{"name":"azure-cognitiveservices-speech","old_version":"1.35.0","new_version":"1.51.2"},{"name":"supabase","old_version":"2.3.4","new_version":"2.31.0","repository_url":"https://github.com/supabase/supabase-py"}],"path":null,"ecosystem":"pip"},"body":"Bumps the patch-and-minor group with 189 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.14.2` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.5.1` |\n| [httpx](https://github.com/encode/httpx) | `0.26.0` | `0.28.1` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.19` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [requests](https://github.com/psf/requests) | `2.32.5` | `2.34.2` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.2.1` | `0.16.5` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.6.3` | `2.7.0` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.22.1` | `0.26.0` |\n| [aiohttp](https://github.com/aio-libs/aiohttp) | `3.13.3` | `3.14.3` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.3` |\n| [wheel](https://github.com/pypa/wheel) | `0.46.2` | `0.48.0` |\n| [authlib](https://github.com/authlib/authlib) | `1.6.9` | `1.8.0` |\n| [nltk](https://github.com/nltk/nltk) | `3.9.1` | `3.10.3` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.12.0` | `2.13.0` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.22` | `0.0.32` |\n| [tornado](https://github.com/tornadoweb/tornado) | `6.5.5` | `6.5.8` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.111.0` | `0.141.1` |\n| [aiohappyeyeballs](https://github.com/aio-libs/aiohappyeyeballs) | `2.6.1` | `2.7.1` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.18.4` | `1.19.1` |\n| [annotated-doc](https://github.com/fastapi/annotated-doc) | `0.0.4` | `0.0.5` |\n| [annotated-types](https://github.com/annotated-types/annotated-types) | `0.7.0` | `0.8.0` |\n| [apscheduler](https://github.com/agronholm/apscheduler) | `3.11.2` | `3.11.3` |\n| [arq](https://github.com/python-arq/arq) | `0.27.0` | `0.28.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.11.1` | `3.12.1` |\n| [astroid](https://github.com/pylint-dev/astroid) | `4.0.4` | `4.3.1` |\n| [asyncpg](https://github.com/MagicStack/asyncpg) | `0.30.0` | `0.31.0` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.8.6` | `1.9.4` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.15.0` |\n| [bidict](https://github.com/jab/bidict) | `0.23.1` | `0.24.1` |\n| [boto3](https://github.com/boto/boto3) | `1.42.64` | `1.43.86` |\n| [botocore](https://github.com/boto/botocore) | `1.42.64` | `1.43.86` |\n| [build](https://github.com/pypa/build) | `1.3.0` | `1.6.0` |\n| [celery](https://github.com/celery/celery) | `5.6.2` | `5.6.3` |\n| [cffi](https://github.com/python-cffi/cffi) | `2.0.0` | `2.1.1` |\n| [chromadb](https://github.com/chroma-core/chroma) | `1.0.15` | `1.5.9` |\n| [click](https://github.com/pallets/click) | `8.2.1` | `8.5.0` |\n| [colorlog](https://github.com/borntyping/python-colorlog) | `6.9.0` | `6.12.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.4` | `7.16.0` |\n| [cross-web](https://github.com/usecross/cross-web) | `0.4.1` | `0.7.0` |\n| [decorator](https://github.com/micheles/decorator) | `5.2.1` | `5.3.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [discord-py](https://github.com/Rapptz/discord.py) | `2.5.2` | `2.7.1` |\n| [docker](https://github.com/docker/docker-py) | `7.1.0` | `7.2.0` |\n| [docstring-parser](https://github.com/rr-/docstring_parser) | `0.17.0` | `0.18.0` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.10` | `0.11` |\n| [fabric](https://github.com/fabric/fabric) | `3.2.2` | `3.2.3` |\n| [fakeredis](https://github.com/cunla/fakeredis-py) | `2.33.0` | `2.37.1` |\n| [feedparser](https://github.com/kurtmckee/feedparser) | `6.0.11` | `6.0.14` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.20.3` | `3.32.5` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `6.0.1` | `6.0.5` |\n| [flask-socketio](https://github.com/miguelgrinberg/flask-socketio) | `5.5.1` | `5.6.1` |\n| [flatbuffers](https://github.com/google/flatbuffers) | `25.2.10` | `25.12.19` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.60.2` | `4.64.0` |\n| [frozenlist](https://github.com/aio-libs/frozenlist) | `1.7.0` | `1.8.0` |\n| [fsspec](https://github.com/fsspec/filesystem_spec) | `2026.3.0` | `2026.7.0` |\n| [geographiclib](https://github.com/geographiclib/geographiclib-python) | `2.0` | `2.1` |\n| [geopy](https://github.com/geopy/geopy) | `2.4.1` | `2.5.0` |\n| [gitpython](https://github.com/gitpython-developers/GitPython) | `3.1.50` | `3.1.61` |\n| [google-auth](https://github.com/googleapis/google-cloud-python) | `2.40.3` | `2.57.0` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.70.0` | `1.75.2` |\n| [graphql-core](https://github.com/graphql-python/graphql-core) | `3.2.8` | `3.2.12` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.3.2` | `3.5.5` |\n| [grpcio](https://github.com/grpc/grpc) | `1.74.0` | `1.83.1` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.3.0` | `3.4.1` |\n| [httptools](https://github.com/MagicStack/httptools) | `0.6.4` | `0.8.0` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.0` |\n| [jaraco-context](https://github.com/jaraco/jaraco.context) | `6.1.0` | `6.1.2` |\n| [jiter](https://github.com/pydantic/jiter) | `0.10.0` | `0.16.0` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.1` | `1.6.0` |\n| [jsonpointer](https://github.com/stefankoegl/python-json-pointer) | `3.0.0` | `3.1.1` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.25.0` | `4.26.0` |\n| [jsonschema-specifications](https://github.com/python-jsonschema/jsonschema-specifications) | `2025.4.1` | `2025.9.1` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.4.8` | `1.5.1` |\n| [langgraph](https://github.com/langchain-ai/langgraph) | `1.1.0` | `1.2.11` |\n| [langgraph-checkpoint](https://github.com/langchain-ai/langgraph) | `4.0.1` | `4.2.0` |\n| [langgraph-prebuilt](https://github.com/langchain-ai/langgraph) | `1.0.8` | `1.1.0` |\n| [langgraph-sdk](https://github.com/langchain-ai/langgraph) | `0.3.13` | `0.4.4` |\n| [levenshtein](https://github.com/rapidfuzz/Levenshtein) | `0.27.3` | `0.27.4` |\n| [lxml](https://github.com/lxml/lxml) | `6.1.0` | `6.1.3` |\n| [mako](https://github.com/sqlalchemy/mako) | `1.3.12` | `1.4.1` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.5` | `3.11.1` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.2.0` | `5.3.0` |\n| [mpmath](https://github.com/mpmath/mpmath) | `1.3.0` | `1.4.1` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.2` | `1.2.2` |\n| [multidict](https://github.com/aio-libs/multidict) | `6.6.3` | `6.7.1` |\n| [narwhals](https://github.com/narwhals-dev/narwhals) | `2.0.1` | `2.25.0` |\n| [networkx](https://github.com/networkx/networkx) | `3.5` | `3.6.1` |\n| [numpy](https://github.com/numpy/numpy) | `2.3.2` | `2.5.2` |\n| [onnxruntime](https://github.com/microsoft/onnxruntime) | `1.22.1` | `1.29.0` |\n| [openai](https://github.com/openai/openai-python) | `1.98.0` | `1.109.1` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.44.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.65b0` |\n| [opentelemetry-exporter-otlp](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.44.0` |\n| [opentelemetry-exporter-otlp-proto-common](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.44.0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.44.0` |\n| [opentelemetry-exporter-otlp-proto-http](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.44.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.65b0` |\n| [opentelemetry-instrumentation-asgi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.65b0` |\n| [opentelemetry-instrumentation-fastapi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.65b0` |\n| [opentelemetry-instrumentation-httpx](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.65b0` |\n| [opentelemetry-instrumentation-logging](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.65b0` |\n| [opentelemetry-instrumentation-redis](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.65b0` |\n| [opentelemetry-instrumentation-sqlalchemy](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.65b0` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.65b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.44.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.44.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.61b0` | `0.65b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.65b0` |\n| [orjson](https://github.com/ijl/orjson) | `3.11.7` | `3.12.0` |\n| [pathspec](https://github.com/cpburnz/python-pathspec) | `1.1.0` | `1.1.1` |\n| [pip-tools](https://github.com/jazzband/pip-tools) | `7.5.3` | `7.6.1` |\n| [pip-audit](https://github.com/pypa/pip-audit) | `2.8.0` | `2.10.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.9.4` | `4.11.7` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.52` | `3.0.53` |\n| [propcache](https://github.com/aio-libs/propcache) | `0.3.2` | `0.5.2` |\n| [psycopg2-binary](https://github.com/psycopg/psycopg2) | `2.9.10` | `2.9.12` |\n| [py-cord](https://github.com/Pycord-Development/pycord) | `2.6.1` | `2.8.1` |\n| [pyasn1](https://github.com/pyasn1/pyasn1) | `0.6.3` | `0.6.4` |\n| [pybase64](https://github.com/mayeut/pybase64) | `1.4.2` | `1.5.0` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.13.1` | `2.15.0` |\n| [pydeck](https://github.com/visgl/deck.gl) | `0.9.1` | `0.9.3` |\n| [pygithub](https://github.com/pygithub/pygithub) | `2.9.0` | `2.10.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.20.0` | `2.21.0` |\n| [pylint](https://github.com/pylint-dev/pylint) | `4.0.5` | `4.0.8` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.3` | `3.3.2` |\n| [pypika](https://github.com/kayak/pypika) | `0.48.9` | `0.51.1` |\n| [pyreadline3](https://github.com/pyreadline3/pyreadline3) | `3.5.4` | `3.5.6` |\n| [python-engineio](https://github.com/miguelgrinberg/python-engineio) | `4.12.2` | `4.14.0` |\n| [python-levenshtein](https://github.com/rapidfuzz/python-Levenshtein) | `0.27.3` | `0.27.4` |\n| [python-socketio](https://github.com/miguelgrinberg/python-socketio) | `5.14.0` | `5.16.4` |\n| [qiskit](https://github.com/Qiskit/qiskit) | `2.3.1` | `2.5.2` |\n| [rapidfuzz](https://github.com/rapidfuzz/RapidFuzz) | `3.14.3` | `3.14.6` |\n| [referencing](https://github.com/python-jsonschema/referencing) | `0.36.2` | `0.37.0` |\n| ruamel-yaml | `0.18.14` | `0.19.1` |\n| ruamel-yaml-clib | `0.2.12` | `0.2.15` |\n| [rustworkx](https://github.com/Qiskit/rustworkx) | `0.17.1` | `0.18.1` |\n| [s3transfer](https://github.com/boto/s3transfer) | `0.16.0` | `0.19.2` |\n| [safehttpx](https://github.com/gradio-app/safehttpx) | `0.1.6` | `0.1.7` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.7.1` | `1.9.0` |\n| [scipy](https://github.com/scipy/scipy) | `1.12.0` | `1.18.1` |\n| [slowapi](https://github.com/laurents/slowapi) | `0.1.9` | `0.1.10` |\n| [smmap](https://github.com/gitpython-developers/smmap) | `5.0.2` | `5.0.3` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.9.2` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.48` | `2.0.52` |\n| [stevedore](https://docs.openstack.org/stevedore) | `5.4.1` | `5.9.1` |\n| [strawberry-graphql](https://github.com/sponsors/strawberry-graphql) | `0.312.3` | `0.327.1` |\n| [tomlkit](https://github.com/python-poetry/tomlkit) | `0.13.3` | `0.15.1` |\n| [tqdm](https://github.com/tqdm/tqdm) | `4.66.1` | `4.70.0` |\n| [typer](https://github.com/fastapi/typer) | `0.16.0` | `0.27.2` |\n| [types-requests](https://github.com/python/typeshed) | `2.32.4.20260107` | `2.33.0.20260712` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.2` | `0.4.4` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.14.1` | `4.16.0` |\n| [tzlocal](https://github.com/regebro/tzlocal) | `5.3.1` | `5.4.4` |\n| [uuid-utils](https://github.com/aminalaee/uuid-utils) | `0.14.1` | `0.17.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.27.1` | `0.52.4` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.0` | `1.2.0` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.5.3` | `0.8.3` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.2` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.6` | `3.1.8` |\n| [wsproto](https://github.com/python-hyper/wsproto) | `1.2.0` | `1.3.2` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.20.1` | `1.24.5` |\n| [safety](https://github.com/pyupio/safety) | `3.2.0` | `3.8.1` |\n| [opentelemetry-instrumentation-celery](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.65b0` |\n| [langchain-community](https://github.com/langchain-ai/langchain-community) | `0.3.5` | `0.4.2` |\n| [langserve](https://github.com/langchain-ai/langserve) | `0.2.1` | `0.3.3` |\n| [autogen](https://github.com/ag2ai/ag2classic) | `0.5.0` | `0.14.1` |\n| [eth-account](https://github.com/ApeWorX/eth-account) | `0.13.0` | `0.14.0` |\n| [eth-keys](https://github.com/ApeWorX/eth-keys) | `0.7.1` | `0.8.0` |\n| [semgrep](https://github.com/semgrep/semgrep) | `1.92.0` | `1.176.0` |\n| [pytest-benchmark](https://github.com/ionelmc/pytest-benchmark) | `5.1.0` | `5.3.0` |\n| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.131.0` | `6.167.1` |\n| [accelerate](https://github.com/huggingface/accelerate) | `1.10.0` | `1.14.0` |\n| [bitsandbytes](https://github.com/bitsandbytes-foundation/bitsandbytes) | `0.46.1` | `0.50.2` |\n| [langchain-text-splitters](https://github.com/langchain-ai/langchain) | `1.1.1` | `1.1.2` |\n| [langsmith](https://github.com/langchain-ai/langsmith-sdk) | `0.7.16` | `0.12.1` |\n| [safetensors](https://github.com/huggingface/safetensors) | `0.5.3` | `0.8.0` |\n| [streamlit](https://github.com/streamlit/streamlit) | `1.54.0` | `1.63.0` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.21.4` | `0.23.1` |\n| [torch](https://github.com/pytorch/pytorch) | `2.2.0` | `2.14.0` |\n| [torchvision](https://github.com/pytorch/vision) | `0.17.0` | `0.29.0` |\n| [torchaudio](https://github.com/pytorch/audio) | `2.2.0` | `2.11.0` |\n| [scikit-image](https://github.com/scikit-image/scikit-image) | `0.22.0` | `0.26.0` |\n| [soundfile](https://github.com/bastibe/python-soundfile) | `0.12.1` | `0.14.0` |\n| wyn-wav2lip | `0.1.0` | `0.2.3` |\n| [face-alignment](https://github.com/1adrianb/face-alignment) | `1.4.1` | `1.5.0` |\n| azure-cognitiveservices-speech | `1.35.0` | `1.51.2` |\n| [supabase](https://github.com/supabase/supabase-py) | `2.3.4` | `2.31.0` |\n\nUpdates `anyio` from 4.9.0 to 4.14.2\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.14.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eChanged \u003ccode\u003eByteReceiveStream.receive()\u003c/code\u003e implementations to raise a \u003ccode\u003eValueError\u003c/code\u003e when \u003ccode\u003emax_bytes\u003c/code\u003e is not a positive integer (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1191\"\u003e#1191\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCapacityLimiter.total_tokens\u003c/code\u003e rejecting \u003ccode\u003efloat(\u0026quot;inf\u0026quot;)\u003c/code\u003e when the limiter was instantiated outside of an event loop. The adapter setter checked for infinity by identity (\u003ccode\u003evalue is math.inf\u003c/code\u003e), so only the exact \u003ccode\u003emath.inf\u003c/code\u003e singleton was accepted, while every backend setter (using \u003ccode\u003emath.isinf()\u003c/code\u003e) accepts any positive infinity (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1189\"\u003e#1189\u003c/a\u003e; PR by \u003ca href=\"https://github.com/greymoth-jp\"\u003e\u003ccode\u003e@​greymoth-jp\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eto_process.run_sync()\u003c/code\u003e deadlocking when the worker function writes enough data to \u003ccode\u003esys.stderr\u003c/code\u003e to fill the (undrained) pipe buffer. The worker process now redirects \u003ccode\u003esys.stderr\u003c/code\u003e to \u003ccode\u003eos.devnull\u003c/code\u003e as well, matching the documented behavior\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eTLSStream.wrap()\u003c/code\u003e matching an internationalized (unicode) host name against the peer certificate using IDNA 2003 (via the standard library) instead of IDNA 2008, which could cause the host name to be matched against the wrong certificate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1208\"\u003e#1208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.open_process()\u003c/code\u003e (and \u003ccode\u003erun_process()\u003c/code\u003e) ignoring the \u003ccode\u003eextra_groups\u003c/code\u003e argument, as it mistakenly passed the value of the \u003ccode\u003egroup\u003c/code\u003e argument instead (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1209\"\u003e#1209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCapacityLimiter.acquire_nowait()\u003c/code\u003e and \u003ccode\u003eCapacityLimiter.acquire_nowait_on_behalf_of()\u003c/code\u003e raising \u003ccode\u003etrio.WouldBlock\u003c/code\u003e instead of \u003ccode\u003eanyio.WouldBlock\u003c/code\u003e on the \u003ccode\u003etrio\u003c/code\u003e backend when there are no tokens available (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1218\"\u003e#1218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCapacityLimiter\u003c/code\u003e on the asyncio backend over-granting tokens (\u003ccode\u003eborrowed_tokens\u003c/code\u003e exceeding \u003ccode\u003etotal_tokens\u003c/code\u003e and \u003ccode\u003eavailable_tokens\u003c/code\u003e going negative) when a non-blocking acquire was made in the window between a token being released and the notified waiter resuming. The freed token is now reserved for the woken waiter right away, so the non-blocking acquire correctly raises \u003ccode\u003eWouldBlock\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1170\"\u003e#1170\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gaoflow\"\u003e\u003ccode\u003e@​gaoflow\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed unnecessary CPU spin when delivering cancellation from \u003ccode\u003eCancelScope\u003c/code\u003e on asyncio under certain conditions, including improper cancel scope nesting (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1111\"\u003e#1111\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.14.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed teardown of higher-scoped async fixtures failing on asyncio with \u003ccode\u003eRuntimeError: Attempted to exit cancel scope in a different task than it was entered in\u003c/code\u003e when an async test raise an outcome exception (e.g., \u003ccode\u003epytest.skip()\u003c/code\u003e, \u003ccode\u003epytest.xfail()\u003c/code\u003e, or \u003ccode\u003epytest.fail()\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1179\"\u003e#1179\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCapacityLimiter.total_tokens\u003c/code\u003e rejecting a value of \u003ccode\u003e0\u003c/code\u003e when the limiter was instantiated outside of an event loop, contradicting the documented behavior of allowing 0 total tokens (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1183\"\u003e#1183\u003c/a\u003e; PR by \u003ca href=\"https://github.com/nyxst4ck\"\u003e\u003ccode\u003e@​nyxst4ck\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.14.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support for Python 3.15\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded an asynchronous implementation of the \u003ccode\u003eitertools\u003c/code\u003e module (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/998\"\u003e#998\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003elocal_port\u003c/code\u003e parameter to \u003ccode\u003econnect_tcp()\u003c/code\u003e to allow binding to a specific local port before connecting (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1067\"\u003e#1067\u003c/a\u003e; PR by \u003ca href=\"https://github.com/nullwiz\"\u003e\u003ccode\u003e@​nullwiz\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support for custom capacity limiters in async path and file I/O functions and classes\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003ecreate_task()\u003c/code\u003e task group method for easier asyncio migration (returns a \u003ccode\u003eTaskHandle\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1098\"\u003e#1098\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged \u003ccode\u003eTaskGroup.start_soon()\u003c/code\u003e to return a \u003ccode\u003eTaskHandle\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded an option for \u003ccode\u003eTaskGroup.start()\u003c/code\u003e to return a \u003ccode\u003eTaskHandle\u003c/code\u003e (which then contains the start value in the \u003ccode\u003estart_value\u003c/code\u003e property)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003ecancel()\u003c/code\u003e convenience method to \u003ccode\u003eTaskGroup\u003c/code\u003e as a shortcut for cancelling the task group's cancel scope\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImproved the error message when a known backend is not installed to suggest the install command (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1115\"\u003e#1115\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImproved \u003ccode\u003eanyio.Path\u003c/code\u003e to preserve subclass types by returning \u003ccode\u003eSelf\u003c/code\u003e in methods that return path objects (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1130\"\u003e#1130\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged the parameter type annotation in \u003ccode\u003eanyio.Path.write_bytes()\u003c/code\u003e to accept any \u003ccode\u003eReadableBuffer\u003c/code\u003e, thus allowing it to accept \u003ccode\u003ebytearray\u003c/code\u003e and \u003ccode\u003ememoryview\u003c/code\u003e to match \u003ccode\u003epathlib.Path.write_bytes()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1135\"\u003e#1135\u003c/a\u003e; PR by \u003ca href=\"https://github.com/SAY-5\"\u003e\u003ccode\u003e@​SAY-5\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged several type annotations to only accept callables returning coroutine-like objects instead of arbitrary awaitables:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eTaskGroup.start_soon()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eTaskGroup.start()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.from_thread.run()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis reverts an earlier change from v3.7.0 which was made in error. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1153\"\u003e#1153\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged \u003ccode\u003eanyio.run\u003c/code\u003e to support callables returning arbitrary awaitables at runtime on all backends. Previously, this only worked on asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1171\"\u003e#1171\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged several classes (and their subclasses) to have \u003ccode\u003e__slots__\u003c/code\u003e (with \u003ccode\u003e__weakref__\u003c/code\u003e):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eanyio.CancelScope\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/c384f99687c64c59ed8a11c3a0f11a2d57daff71\"\u003e\u003ccode\u003ec384f99\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/dbba29d1ade7936f18fb71ba24aa92978673482a\"\u003e\u003ccode\u003edbba29d\u003c/code\u003e\u003c/a\u003e Fixed 100% CPU spin on cancel scope misuse (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1217\"\u003e#1217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6bbc6c33caabc13af5bc4256f745027cf8d5d7b8\"\u003e\u003ccode\u003e6bbc6c3\u003c/code\u003e\u003c/a\u003e Fix CapacityLimiter over-granting tokens on asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1172\"\u003e#1172\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6f82b2537cbbe98f3df3f295499056ab7de0b15b\"\u003e\u003ccode\u003e6f82b25\u003c/code\u003e\u003c/a\u003e Refactored TestTLSStream.test_receive_invalid_max_bytes() to be less flaky\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/be24b0414f67f604bcbdd5ea3bcc56ab920d872e\"\u003e\u003ccode\u003ebe24b04\u003c/code\u003e\u003c/a\u003e Relaxed timeouts to fix test flakiness\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/81135065749b4f60c06619b9caaf0a11871c1ddf\"\u003e\u003ccode\u003e8113506\u003c/code\u003e\u003c/a\u003e Fix test flakiness caused by slow callback duration logging\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/1e988b617b69588e33fecb75e36a9837245f562f\"\u003e\u003ccode\u003e1e988b6\u003c/code\u003e\u003c/a\u003e Fixed CapacityLimiter raising trio.WouldBlock instead of anyio.WouldBlock (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1\"\u003e#1\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/44713f345cd29dd4e7d76553c134543a1296cc62\"\u003e\u003ccode\u003e44713f3\u003c/code\u003e\u003c/a\u003e Pin setup-uv to a commit sha across downstream jobs (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1213\"\u003e#1213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/f1b7301c8264b0d2e8d24a5788fd29e93dea4040\"\u003e\u003ccode\u003ef1b7301\u003c/code\u003e\u003c/a\u003e Fixed stderr writes in a worker subprocess causing a deadlock (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1207\"\u003e#1207\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/212be93c2cf2c841e753e95e5e2c543ee7feca90\"\u003e\u003ccode\u003e212be93\u003c/code\u003e\u003c/a\u003e Fix flaky test_tcp_listener_same_port using a hardcoded port (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1206\"\u003e#1206\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.14.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.2 to 3.5.1\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.5.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.5.0...3.5.1\"\u003e3.5.1\u003c/a\u003e (2026-08-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised upper bound of setuptools to v84 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache performance access optimization for our CharInfo struct (prebuilt only).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer decoding large content when the noise detector output give a high entropy.\nOnly impacted large content input \u0026gt;1M bytes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.5.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.9...3.5.0\"\u003e3.5.0\u003c/a\u003e (2026-08-12)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExplicit support for Python 3.15\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComparing a CharsetMatch to a non-alias encoding strings (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReturn 0.0 CharsetMatch.multi_byte_usage for empty payloads instead of crashing (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA file with both a charset declaration and BOM/SIG did not verify first the BOM/SIG charset.\u003c/li\u003e\n\u003cli\u003eiso2022* cases misdetected due to a flaw in our multibyte chunking logic.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReplaced the optional mypyc build with Cython extensions while retaining the\npure Python fallback. The previous engine (mypyc) started to hit rough limit around\nthe optimization of our noise/coherence detector while Cython allows us to\nsteer the engine toward the right generated optimized sources.\nThis change SHOULD not impact bundler (e.g. Pyinstaller) as the module are\nimmediately discoverable (i.e. not hidden import like mypyc did).\nMoreover, a long wished distribution is the abi3 wheels, this will allow us\nto no longer rush each year when a new Python interpreter is released.\nWe still distribute the interpreter specific wheels for faster performance.\u003c/li\u003e\n\u003cli\u003eApplied micro-optimization on several utils.\u003c/li\u003e\n\u003cli\u003eCharsetMatches no longer sort on each match insertion.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved an old performance optimization attempt in apy.py (success_fast_tracked+payload_result_cache).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.9\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.8...3.4.9\"\u003e3.4.9\u003c/a\u003e (2026-07-07)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRegression in our fallback path leading to a decode error. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/771\"\u003e#771\u003c/a\u003e)\nWe've yanked 3.4.8 as a result of that bug.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.8\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.7...3.4.8\"\u003e3.4.8\u003c/a\u003e (2026-07-06)\u003c/h2\u003e\n\u003ch3\u003eFixed\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.5.0...3.5.1\"\u003e3.5.1\u003c/a\u003e (2026-08-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised upper bound of setuptools to v84 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache performance access optimization for our CharInfo struct (prebuilt only).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer decoding large content when the noise detector output give a high entropy.\nOnly impacted large content input \u0026gt;1M bytes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.9...3.5.0\"\u003e3.5.0\u003c/a\u003e (2026-08-12)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExplicit support for Python 3.15\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComparing a CharsetMatch to a non-alias encoding strings (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReturn 0.0 CharsetMatch.multi_byte_usage for empty payloads instead of crashing (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA file with both a charset declaration and BOM/SIG did not verify first the BOM/SIG charset.\u003c/li\u003e\n\u003cli\u003eiso2022* cases misdetected due to a flaw in our multibyte chunking logic.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReplaced the optional mypyc build with Cython extensions while retaining the\npure Python fallback. The previous engine (mypyc) started to hit rough limit around\nthe optimization of our noise/coherence detector while Cython allows us to\nsteer the engine toward the right generated optimized sources.\nThis change SHOULD not impact bundler (e.g. Pyinstaller) as the module are\nimmediately discoverable (i.e. not hidden import like mypyc did).\nMoreover, a long wished distribution is the abi3 wheels, this will allow us\nto no longer rush each year when a new Python interpreter is released.\nWe still distribute the interpreter specific wheels for faster performance.\u003c/li\u003e\n\u003cli\u003eApplied micro-optimization on several utils.\u003c/li\u003e\n\u003cli\u003eCharsetMatches no longer sort on each match insertion.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved an old performance optimization attempt in apy.py (success_fast_tracked+payload_result_cache).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.8...3.4.9\"\u003e3.4.9\u003c/a\u003e (2026-07-07)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRegression in our fallback path leading to a decode error. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/771\"\u003e#771\u003c/a\u003e)\nWe've yanked 3.4.8 as a result of that bug.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.7...3.4.8\"\u003e3.4.8\u003c/a\u003e (2026-07-06)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eWall import time due to cascade codec imports for our multibyte first sort of iana supported codecs (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/742\"\u003e#742\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUnnecessary json import at runtime (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/753\"\u003e#753\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eInverse capitalization not seen by noise detector (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/731\"\u003e#731\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/e239bdc5cc1eb1f0db08d4046ad531f805dbea71\"\u003e\u003ccode\u003ee239bdc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/795\"\u003e#795\u003c/a\u003e from jawah/release-3.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/648ad776db64a00aa7efd70a94656ac43784abb3\"\u003e\u003ccode\u003e648ad77\u003c/code\u003e\u003c/a\u003e docs: update faq\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/fab27492c39baa61aca12826022e266781108570\"\u003e\u003ccode\u003efab2749\u003c/code\u003e\u003c/a\u003e docs: write changelog for 3.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/7d32774e75d16cccd3d22c758a77fca135952787\"\u003e\u003ccode\u003e7d32774\u003c/code\u003e\u003c/a\u003e chore: bump version to 3.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9a69f609f254ba4bfe9d0cbf375728e43360cdf2\"\u003e\u003ccode\u003e9a69f60\u003c/code\u003e\u003c/a\u003e docs: update data/info\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/5dcc6dd81a8a0a4bd525f8d6f508da8285caf402\"\u003e\u003ccode\u003e5dcc6dd\u003c/code\u003e\u003c/a\u003e perf: charinfo cache access optimization in cython\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ea3b4479270762be1228562c590e5a212727f208\"\u003e\u003ccode\u003eea3b447\u003c/code\u003e\u003c/a\u003e fix: do not validate-decode large payload when md says it's noise\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/a05917f87b5f71d6022d8abe2b0af239f65c1111\"\u003e\u003ccode\u003ea05917f\u003c/code\u003e\u003c/a\u003e chore: allow setuptools 84 builds (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/3325d87c3c73fa1a8746947151faaf9a41177543\"\u003e\u003ccode\u003e3325d87\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/792\"\u003e#792\u003c/a\u003e from jawah/update-cibuildwheel-action\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/77203b104216a6d578a682b5ac0514750aa988f7\"\u003e\u003ccode\u003e77203b1\u003c/code\u003e\u003c/a\u003e chore: reformat noxfile.py\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.2...3.5.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `httpx` from 0.26.0 to 0.28.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/httpx/releases\"\u003ehttpx's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.28.1\u003c/h2\u003e\n\u003ch2\u003e0.28.1 (6th December, 2024)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix SSL case where \u003ccode\u003everify=False\u003c/code\u003e together with client side certificates.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 0.28.0\u003c/h2\u003e\n\u003ch2\u003e0.28.0 (28th November, 2024)\u003c/h2\u003e\n\u003cp\u003eThe 0.28 release includes a limited set of deprecations.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e:\u003c/p\u003e\n\u003cp\u003eWe are working towards a simplified SSL configuration API.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eFor users of the standard \u003ccode\u003everify=True\u003c/code\u003e or \u003ccode\u003everify=False\u003c/code\u003e cases, or \u003ccode\u003everify=\u0026lt;ssl_context\u0026gt;\u003c/code\u003e case this should require no changes. The following cases have been deprecated...\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003everify\u003c/code\u003e argument as a string argument is now deprecated and will raise warnings.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ecert\u003c/code\u003e argument is now deprecated and will raise warnings.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOur revised \u003ca href=\"https://github.com/encode/httpx/blob/HEAD/docs/advanced/ssl.md\"\u003eSSL documentation\u003c/a\u003e covers how to implement the same behaviour with a more constrained API.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eThe following changes are also included\u003c/strong\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003eproxies\u003c/code\u003e argument has now been removed.\u003c/li\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003eapp\u003c/code\u003e argument has now been removed.\u003c/li\u003e\n\u003cli\u003eJSON request bodies use a compact representation. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3363\"\u003e#3363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReview URL percent escape sets, based on WHATWG spec. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3371\"\u003e#3371\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/encode/httpx/issues/3373\"\u003e#3373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure \u003ccode\u003ecertifi\u003c/code\u003e and \u003ccode\u003ehttpcore\u003c/code\u003e are only imported if required. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003esocks5h\u003c/code\u003e as a valid proxy scheme. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3178\"\u003e#3178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCleanup \u003ccode\u003eRequest()\u003c/code\u003e method signature in line with \u003ccode\u003eclient.request()\u003c/code\u003e and \u003ccode\u003ehttpx.request()\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3378\"\u003e#3378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBugfix: When passing \u003ccode\u003eparams={}\u003c/code\u003e, always strictly update rather than merge with an existing querystring. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3364\"\u003e#3364\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 0.27.2\u003c/h2\u003e\n\u003ch2\u003e0.27.2 (27th August, 2024)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReintroduced supposedly-private \u003ccode\u003eURLTypes\u003c/code\u003e shortcut. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/2673\"\u003e#2673\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 0.27.1\u003c/h2\u003e\n\u003ch2\u003e0.27.1 (27th August, 2024)\u003c/h2\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for \u003ccode\u003ezstd\u003c/code\u003e content decoding using the python \u003ccode\u003ezstandard\u003c/code\u003e package is added. Installable using \u003ccode\u003ehttpx[zstd]\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3139\"\u003e#3139\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved error messaging for \u003ccode\u003eInvalidURL\u003c/code\u003e exceptions. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3250\"\u003e#3250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eapp\u003c/code\u003e type signature in \u003ccode\u003eASGITransport\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3109\"\u003e#3109\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/httpx/blob/master/CHANGELOG.md\"\u003ehttpx's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.28.1 (6th December, 2024)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix SSL case where \u003ccode\u003everify=False\u003c/code\u003e together with client side certificates.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.28.0 (28th November, 2024)\u003c/h2\u003e\n\u003cp\u003eBe aware that the default \u003cem\u003eJSON request bodies now use a more compact representation\u003c/em\u003e. This is generally considered a prefered style, tho may require updates to test suites.\u003c/p\u003e\n\u003cp\u003eThe 0.28 release includes a limited set of deprecations...\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e:\u003c/p\u003e\n\u003cp\u003eWe are working towards a simplified SSL configuration API.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eFor users of the standard \u003ccode\u003everify=True\u003c/code\u003e or \u003ccode\u003everify=False\u003c/code\u003e cases, or \u003ccode\u003everify=\u0026lt;ssl_context\u0026gt;\u003c/code\u003e case this should require no changes. The following cases have been deprecated...\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003everify\u003c/code\u003e argument as a string argument is now deprecated and will raise warnings.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ecert\u003c/code\u003e argument is now deprecated and will raise warnings.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOur revised \u003ca href=\"https://github.com/encode/httpx/blob/master/docs/advanced/ssl.md\"\u003eSSL documentation\u003c/a\u003e covers how to implement the same behaviour with a more constrained API.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eThe following changes are also included\u003c/strong\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003eproxies\u003c/code\u003e argument has now been removed.\u003c/li\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003eapp\u003c/code\u003e argument has now been removed.\u003c/li\u003e\n\u003cli\u003eJSON request bodies use a compact representation. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3363\"\u003e#3363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReview URL percent escape sets, based on WHATWG spec. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3371\"\u003e#3371\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/encode/httpx/issues/3373\"\u003e#3373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure \u003ccode\u003ecertifi\u003c/code\u003e and \u003ccode\u003ehttpcore\u003c/code\u003e are only imported if required. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003esocks5h\u003c/code\u003e as a valid proxy scheme. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3178\"\u003e#3178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCleanup \u003ccode\u003eRequest()\u003c/code\u003e method signature in line with \u003ccode\u003eclient.request()\u003c/code\u003e and \u003ccode\u003ehttpx.request()\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3378\"\u003e#3378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBugfix: When passing \u003ccode\u003eparams={}\u003c/code\u003e, always strictly update rather than merge with an existing querystring. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3364\"\u003e#3364\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.27.2 (27th August, 2024)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReintroduced supposedly-private \u003ccode\u003eURLTypes\u003c/code\u003e shortcut. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/2673\"\u003e#2673\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.27.1 (27th August, 2024)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for \u003ccode\u003ezstd\u003c/code\u003e content decoding using the python \u003ccode\u003ezstandard\u003c/code\u003e package is added. Installable using \u003ccode\u003ehttpx[zstd]\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3139\"\u003e#3139\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved error messaging for \u003ccode\u003eInvalidURL\u003c/code\u003e exceptions. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3250\"\u003e#3250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eapp\u003c/code\u003e type signature in \u003ccode\u003eASGITransport\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3109\"\u003e#3109\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.27.0 (21st February, 2024)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/26d48e0634e6ee9cdc0533996db289ce4b430177\"\u003e\u003ccode\u003e26d48e0\u003c/code\u003e\u003c/a\u003e Version 0.28.1 (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3445\"\u003e#3445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/89599a9541af14bcf906fc4ed58ccbdf403802ba\"\u003e\u003ccode\u003e89599a9\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003everify=False\u003c/code\u003e, \u003ccode\u003ecert=...\u003c/code\u003e case. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3442\"\u003e#3442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/8ecb86f0d74ffc52d4663214fae9526bee89358d\"\u003e\u003ccode\u003e8ecb86f\u003c/code\u003e\u003c/a\u003e Add test for request params behavior changes (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3364\"\u003e#3364\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3440\"\u003e#3440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/0cb7e5a2e736628e2f506d259fcf0d48cd2bde82\"\u003e\u003ccode\u003e0cb7e5a\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 11 updates (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3434\"\u003e#3434\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/15e21e9ea3cad4f06e22a7e704aabefdf43d2e29\"\u003e\u003ccode\u003e15e21e9\u003c/code\u003e\u003c/a\u003e Updating deprecated docstring Client() class (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3426\"\u003e#3426\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/80960fa31918d7663c3f4c3ad61661cf0e80628f\"\u003e\u003ccode\u003e80960fa\u003c/code\u003e\u003c/a\u003e Version 0.28.0. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3419\"\u003e#3419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/a33c87852b8a0dddc65e5f739af1e0a6fca4b91f\"\u003e\u003ccode\u003ea33c878\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eextensions\u003c/code\u003e type annotation. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3380\"\u003e#3380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/ce7e14da27abba6574be9b3ea7cd5990556a9343\"\u003e\u003ccode\u003ece7e14d\u003c/code\u003e\u003c/a\u003e Error on verify as str. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3418\"\u003e#3418\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/47f4a96ffaaaa07dca1614409549b5d7a6e7af49\"\u003e\u003ccode\u003e47f4a96\u003c/code\u003e\u003c/a\u003e Handle empty zstd responses (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3412\"\u003e#3412\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/189fc4bcbe5f314128775dec66a616ac9a31ad48\"\u003e\u003ccode\u003e189fc4b\u003c/code\u003e\u003c/a\u003e Update CHANGELOG.md, fix typo(s) (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3406\"\u003e#3406\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/httpx/compare/0.26.0...0.28.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `idna` from 3.10 to 3.19\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/releases\"\u003eidna's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.19\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRestore the \u003ccode\u003estd3_rules\u003c/code\u003e option, which had no effect since changes\nto UTS \u003ca href=\"https://redirect.github.com/kjd/idna/issues/46\"\u003e#46\u003c/a\u003e processing in Unicode 16. Note that \u003ccode\u003euts46_remap()\u003c/code\u003e\ndefaults to enabling STD3 rules, so direct callers will see input\ncontaining non-LDH ASCII characters rejected again.\u003c/li\u003e\n\u003cli\u003ePerformance improvements to UTS \u003ca href=\"https://redirect.github.com/kjd/idna/issues/46\"\u003e#46\u003c/a\u003e mapping, particularly for\nASCII-only domains.\u003c/li\u003e\n\u003cli\u003eTest on free-threaded CPython with the GIL disabled and document\nthread safety.\u003c/li\u003e\n\u003cli\u003eExpose the Unicode version of the generated tables as\n\u003ccode\u003eidna.unicode_version\u003c/code\u003e, and show it in \u003ccode\u003eidna --version\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ecode\u003c/code\u003e, \u003ccode\u003etext\u003c/code\u003e, \u003ccode\u003ecodepoint\u003c/code\u003e and \u003ccode\u003eposition\u003c/code\u003e attributes to\n\u003ccode\u003eIDNAError\u003c/code\u003e so that the failed rule and the offending character can\nbe identified without parsing the exception message.\u003c/li\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003etransitional\u003c/code\u003e argument to \u003ccode\u003eencode()\u003c/code\u003e and\n\u003ccode\u003euts46_remap()\u003c/code\u003e is now completely ignored, and gives a deprecation warning\nfor the latter.\u003c/li\u003e\n\u003cli\u003eReject A-labels that are not the canonical Punycode encoding of\ntheir U-label.\u003c/li\u003e\n\u003cli\u003eFix CONTEXTJ violations raising \u003ccode\u003eIDNAError\u003c/code\u003e instead of\n\u003ccode\u003eInvalidCodepointContext\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eConsistently raise \u003ccode\u003eIDNAError\u003c/code\u003e for empty labels and non-ASCII bytes\npassed to label helper functions and the incremental codec.\u003c/li\u003e\n\u003cli\u003eAdd property-based tests, extended fuzzing targets, coverage\nmeasurement, and CI checks that the data tables match the generator\noutput.\u003c/li\u003e\n\u003cli\u003eVarious code quality and tooling improvements.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to stefan6419846, LouieLuNZ, and Salvatore Corvaglia for\ncontributions to this release.\u003c/p\u003e\n\u003ch2\u003ev3.18\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.17\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.16\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.15\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.14\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.13\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.12\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/kjd/idna/blob/master/HISTORY.md\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.19 (2026-08-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRestore the \u003ccode\u003estd3_rules\u003c/code\u003e option, which had no effect since changes\nto UTS \u003ca href=\"https://redirect.github.com/kjd/idna/issues/46\"\u003e#46\u003c/a\u003e processing in Unicode 16. Note that \u003ccode\u003euts46_remap()\u003c/code\u003e\ndefaults to enabling STD3 rules, so direct callers will see input\ncontaining non-LDH ASCII characters rejected again.\u003c/li\u003e\n\u003cli\u003ePerformance improvements to UTS \u003ca href=\"https://redirect.github.com/kjd/idna/issues/46\"\u003e#46\u003c/a\u003e mapping, particularly for\nASCII-only domains.\u003c/li\u003e\n\u003cli\u003eTest on free-threaded CPython with the GIL disabled and document\nthread safety.\u003c/li\u003e\n\u003cli\u003eExpose the Unicode version of the generated tables as\n\u003ccode\u003eidna.unicode_version\u003c/code\u003e, and show it in \u003ccode\u003eidna --version\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ecode\u003c/code\u003e, \u003ccode\u003etext\u003c/code\u003e, \u003ccode\u003ecodepoint\u003c/code\u003e and \u003ccode\u003eposition\u003c/code\u003e attributes to\n\u003ccode\u003eIDNAError\u003c/code\u003e so that the failed rule and the offending character can\nbe identified without parsing the exception message.\u003c/li\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003etransitional\u003c/code\u003e argument to \u003ccode\u003eencode()\u003c/code\u003e and\n\u003ccode\u003euts46_remap()\u003c/code\u003e is now completely ignored, and gives a deprecation warning\nfor the latter.\u003c/li\u003e\n\u003cli\u003eReject A-labels that are not the canonical Punycode encoding of\ntheir U-label.\u003c/li\u003e\n\u003cli\u003eFix CONTEXTJ violations raising \u003ccode\u003eIDNAError\u003c/code\u003e instead of\n\u003ccode\u003eInvalidCodepointContext\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eConsistently raise \u003ccode\u003eIDNAError\u003c/code\u003e for empty labels and non-ASCII bytes\npassed to label helper functions and the incremental codec.\u003c/li\u003e\n\u003cli\u003eAdd property-based tests, extended fuzzing targets, coverage\nmeasurement, and CI checks that the data tables match the generator\noutput.\u003c/li\u003e\n\u003cli\u003eVarious code quality and tooling improvements.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to stefan6419846, LouieLuNZ, and Salvatore Corvaglia for\ncontributions to this release.\u003c/p\u003e\n\u003ch2\u003e3.18 (2026-06-02)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen decoding a domain, add a \u003ccode\u003edisplay\u003c/code\u003e argument that will pass\nthrough invalid labels rather than raising an exception.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.17 (2026-05-28)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSubstantial 75% reduction in memory usage through new data\nstructures and some optimization in processing speed.\u003c/li\u003e\n\u003cli\u003eAdded a general 1024-character input length cap to the public\nvalidation, conversion, and codec entry points. This is well above\nany legitimate domain or label and guards against pathological\ninputs.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.16 (2026-05-22)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a command-line interface (\u003ccode\u003epython -m idna\u003c/code\u003e, also available as\nthe \u003ccode\u003eidna\u003c/code\u003e script). Encodes or decodes one or more domains supplied\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/03a9a11dd8aecd4fea742cabe20f4d3d9ed82abb\"\u003e\u003ccode\u003e03a9a11\u003c/code\u003e\u003c/a\u003e Release 3.19\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/2d2a7ef0c59210a48407b3dde6d884933cecf093\"\u003e\u003ccode\u003e2d2a7ef\u003c/code\u003e\u003c/a\u003e Pre-release 3.19rc0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/5cce1308d148019c5fa0febceafa13e99cdacfe7\"\u003e\u003ccode\u003e5cce130\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/268\"\u003e#268\u003c/a\u003e from kjd/fix-std3-regex-alert\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/3914b75f3e4cbc11e59f92eeecdb16d10871e57f\"\u003e\u003ccode\u003e3914b75\u003c/code\u003e\u003c/a\u003e Split the STD3 disallowed-character range so uppercase is explicit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/ce9fd98ac4073866db276e93834b259f2a5a4ac4\"\u003e\u003ccode\u003ece9fd98\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/267\"\u003e#267\u003c/a\u003e from kjd/housekeeping\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/809240c3cc9358c9c9c79b2d12ffe39e75ccfb0f\"\u003e\u003ccode\u003e809240c\u003c/code\u003e\u003c/a\u003e Fail CI when the license copyright year is behind the current year\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/d9e16c523d7d25dcc14100fa80f3e303404e09be\"\u003e\u003ccode\u003ed9e16c5\u003c/code\u003e\u003c/a\u003e Consolidate test fixtures, prune stale gitignore entries, and fix doc typos\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/ef30feeed3a758e96286fdab0315a551f7f5e7d6\"\u003e\u003ccode\u003eef30fee\u003c/code\u003e\u003c/a\u003e Remove dead code and pare back superfluous comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/b907913f854d26cc714f721c6c2cb626d41ac468\"\u003e\u003ccode\u003eb907913\u003c/code\u003e\u003c/a\u003e Tighten the version support and Unicode notes in the README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/6204cbe343ef438df7c58bc80b94d0f960991d90\"\u003e\u003ccode\u003e6204cbe\u003c/code\u003e\u003c/a\u003e Ignore local build artifacts and stop packaging stray tooling config\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.10...v3.19\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyyaml` from 6.0.2 to 6.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/yaml/pyyaml/releases\"\u003epyyaml's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.0.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14 and free-threading (experimental).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\"\u003ehttps://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/yaml/pyyaml/blob/6.0.3/CHANGES\"\u003epyyaml's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e6.0.3 (2025-09-25)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/yaml/pyyaml/pull/864\"\u003eyaml/pyyaml#864\u003c/a\u003e -- Support for Python 3.14 and free-threading (experimental)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/49790e73684bebad1df05ef8d828fa12f685bffb\"\u003e\u003ccode\u003e49790e7\u003c/code\u003e\u003c/a\u003e Release 6.0.3 (\u003ca href=\"https://redirect.github.com/yaml/pyyaml/issues/889\"\u003e#889\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.32.5 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!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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.32.5...v2.34.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.2.1 to 0.16.5\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.16.5\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-27.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow rules without codes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28049\"\u003e#28049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIntroduce category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27666\"\u003e#27666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate preview default rules and categories (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27877\"\u003e#27877\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Detect blocking generic HTTP requests (\u003ccode\u003eASYNC210\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28024\"\u003e#28024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-datetimez\u003c/code\u003e] Allow timezone-safe \u003ccode\u003estrptime\u003c/code\u003e chains (\u003ccode\u003eDTZ007\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28023\"\u003e#28023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Respect side effects in \u003ccode\u003elambda\u003c/code\u003e defaults (\u003ccode\u003eSIM401\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28000\"\u003e#28000\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix duplicated \u0026quot;of\u0026quot; in \u003ccode\u003eClientOptions\u003c/code\u003e doc comment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27978\"\u003e#27978\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument rule acceptance guidelines (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27910\"\u003e#27910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument the new category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27906\"\u003e#27906\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/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sharkdp\"\u003e\u003ccode\u003e@​sharkdp\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelle-openai\"\u003e\u003ccode\u003e@​jelle-openai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aarushkandukoori\"\u003e\u003ccode\u003e@​aarushkandukoori\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.16.5\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.16.5/ruff-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eInstall prebuilt binaries via powershell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003epowershell -ExecutionPolicy Bypass -c \u0026quot;irm https://releases.astral.sh/github/ruff/releases/download/0.16.5/ruff-installer.ps1 | iex\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eDownload ruff 0.16.5\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/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.16.5\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-27.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow rules without codes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28049\"\u003e#28049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIntroduce category selectors (\u003ca href=\"https://red...\n\n_Description has been truncated_","html_url":"https://github.com/welshDog/HyperCode-V2.4/pull/517","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/welshDog%2FHyperCode-V2.4/issues/517","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/517/packages"},{"uuid":"5355588084","node_id":"PR_kwDOUO7Awc8AAAABCSomMA","number":1,"state":"closed","title":"deps(backend): Bump the security-tools group across 1 directory with 2 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-09-05T16:11:32.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-05T04:36:34.000Z","updated_at":"2026-09-05T16:11:34.000Z","time_to_close":41698,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(backend): Bump","group_name":"security-tools","update_count":2,"packages":[{"name":"bandit","old_version":"1.7.6","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [semgrep](https://github.com/semgrep/semgrep) and [bandit](https://github.com/PyCQA/bandit) to permit the latest version.\nUpdates `semgrep` to 1.176.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/semgrep/semgrep/releases\"\u003esemgrep's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.176.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/semgrep/semgrep/releases/tag/v1.176.0\"\u003e1.176.0\u003c/a\u003e - 2026-09-01\u003c/h2\u003e\n\u003ch3\u003e### Changed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHomebrew installs of Semgrep are no longer supported on Intel Macs. (ENGINE-2951)\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/semgrep/semgrep/blob/develop/CHANGELOG.md\"\u003esemgrep's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/semgrep/semgrep/releases/tag/v1.176.0\"\u003e1.176.0\u003c/a\u003e - 2026-09-01\u003c/h2\u003e\n\u003ch3\u003e### Changed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHomebrew installs of Semgrep are no longer supported on Intel Macs. (ENGINE-2951)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/semgrep/semgrep/releases/tag/v1.175.0\"\u003e1.175.0\u003c/a\u003e - 2026-08-26\u003c/h2\u003e\n\u003ch3\u003e### Changed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSemgrep is now built with OCaml 5.4 instead of OCaml 5.3. End users should notice no change. (ocaml-5.4)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/semgrep/semgrep/releases/tag/v1.174.0\"\u003e1.174.0\u003c/a\u003e - 2026-08-20\u003c/h2\u003e\n\u003ch3\u003e### Added\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDiff scans now report which dependency source files were added or modified relative to the merge base. (changed-dependency-sources)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e### Changed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePartial scans (\u003ccode\u003e--x-partial-scan-rule-id\u003c/code\u003e) now resolve dependencies only for\nsubprojects whose ecosystem is evaluated by the rules being run. Subprojects in\nany other ecosystem are skipped and reported to semgrep-app as skipped\nsubprojects. (SC-3830)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/semgrep/semgrep/releases/tag/v1.173.0\"\u003e1.173.0\u003c/a\u003e - 2026-08-12\u003c/h2\u003e\n\u003ch3\u003e### Added\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esemgrep-core -version\u003c/code\u003e now reports the git commit that the binary was built\nfrom. (core-version-git-sha)\u003c/li\u003e\n\u003cli\u003ePro: Added a \u003ccode\u003eno_disk_cache\u003c/code\u003e memory policy (\u003ccode\u003e--x-mem-policy no_disk_cache\u003c/code\u003e) to trade higher memory usage for not caching intermediary scan data structures on disk. (no-disk-cache-memory-policy)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e### Changed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFile targeting now submits path-filtering work to worker domains in batches\nremoving multithreaded synchronization overhead for very large repos. (ENGINE-2854)\u003c/li\u003e\n\u003cli\u003eParallel rule parsing for large rulesets now shards rules into files sized by\nbytes rather than by worker count, stabilizing memory allocations at parse-time\nand improving parsing throughput. (ENGINE-2920)\u003c/li\u003e\n\u003cli\u003eUpdated the Solidity parser for newer language features (transient storage, named mapping parameters, \u003ccode\u003elayout at\u003c/code\u003e, assembly flags, \u003ccode\u003eglobal\u003c/code\u003e using-directives, EVM Cancun builtins) and corrected ternary/\u003ccode\u003e?:\u003c/code\u003e vs member-access precedence. (LANG-207)\u003c/li\u003e\n\u003cli\u003ePro: Unsupported patterns in case expressions are now handled more\nrobustly, with improved error recovery during taint analysis — branch\nbodies are no longer dropped from the dataflow intermediate language when\na pattern can't be compiled. Pattern matching in statement position also\nnow benefits from the same compilation as expression position. (LANG-598)\u003c/li\u003e\n\u003cli\u003eImproved performance in highly parallel scans with many target files, running\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/semgrep/semgrep/commit/5bdaec16e18e33c520426dc1e4417161219daf35\"\u003e\u003ccode\u003e5bdaec1\u003c/code\u003e\u003c/a\u003e chore: release 1.176.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/semgrep/semgrep/commit/7e4ac398b9f642f7d91d3b1d88368cbd2e121210\"\u003e\u003ccode\u003e7e4ac39\u003c/code\u003e\u003c/a\u003e chore: drop Homebrew Intel Mac smoke test (ENGINE-2951) (semgrep/semgrep-prop...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/semgrep/semgrep/commit/e1bb0c2a77213d4ba004ab571963638fe3ae1fbf\"\u003e\u003ccode\u003ee1bb0c2\u003c/code\u003e\u003c/a\u003e\u003ccode\u003esemgrep/semgrep-proprietary#6998\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/semgrep/semgrep/commit/01870906955216aa946e4538cc5b38d819ad4d82\"\u003e\u003ccode\u003e0187090\u003c/code\u003e\u003c/a\u003e\u003ccode\u003esemgrep/semgrep-proprietary#6885\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/semgrep/semgrep/commit/704ebe6515813eb61bc9f8f6661594290695aab0\"\u003e\u003ccode\u003e704ebe6\u003c/code\u003e\u003c/a\u003e fix: make core match ordering independent of hash iteration order (semgrep/se...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/semgrep/semgrep/commit/0744a17ba93177e92fe8a82a99366cf59fd61432\"\u003e\u003ccode\u003e0744a17\u003c/code\u003e\u003c/a\u003e fix: drop duplicate hash-table bindings (add -\u0026gt; replace) (semgrep/semgrep-pro...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/semgrep/semgrep/commit/089569eb45881134a0fc1a2fccf8d125a75c9844\"\u003e\u003ccode\u003e089569e\u003c/code\u003e\u003c/a\u003e\u003ccode\u003esemgrep/semgrep-proprietary#6938\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/semgrep/semgrep/commit/5fcf5c71278f7d93b2d114799da8e64c547ed459\"\u003e\u003ccode\u003e5fcf5c7\u003c/code\u003e\u003c/a\u003e chore: restructure hashtbl multi-binding call sites (semgrep/semgrep-propriet...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/semgrep/semgrep/commit/cc4080625d064b2f39ffe8dff35a0a23d656cb8c\"\u003e\u003ccode\u003ecc40806\u003c/code\u003e\u003c/a\u003e chore: update slack action to v2+ chat.postMessage API (semgrep/semgrep-propr...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/semgrep/semgrep/commit/cb3a4ae9b2b3af81bdada48d52e939168d1f6431\"\u003e\u003ccode\u003ecb3a4ae\u003c/code\u003e\u003c/a\u003e\u003ccode\u003esemgrep/semgrep-proprietary#6921\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/semgrep/semgrep/compare/v1.60.0...v1.176.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bandit` from 1.7.6 to 1.9.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/bandit/releases\"\u003ebandit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: fixed some typos in comments by \u003ca href=\"https://github.com/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/login-action from 3.6.0 to 3.7.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/PyCQA/bandit/pull/1353\"\u003ePyCQA/bandit#1353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.18.0 to 6.19.2 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/PyCQA/bandit/pull/1357\"\u003ePyCQA/bandit#1357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B613 crash when reading from stdin by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude filename in nosec 'no failed test' warning by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1363\"\u003ePyCQA/bandit#1363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B615 false positive when revision is set via variable by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1358\"\u003ePyCQA/bandit#1358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLower version guard in check_ast_node to Python 3.12 by \u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B106 reporting wrong line number on multiline function calls by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1360\"\u003ePyCQA/bandit#1360\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/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1334\"\u003ePyCQA/bandit#1334\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/PyCQA/bandit/pull/1335\"\u003ePyCQA/bandit#1335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B608 to detect \u003ccode\u003eVALUES(\u003c/code\u003e without space by \u003ca href=\"https://github.com/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd check for hardcoded passwords in dicts. by \u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\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/PyCQA/bandit/pull/1341\"\u003ePyCQA/bandit#1341\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate tox tests for Python 3.10 by \u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/setup-buildx-action from 3.11.1 to 3.12.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/PyCQA/bandit/pull/1347\"\u003ePyCQA/bandit#1347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimit B614 to torch.load deserializers by \u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\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/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eArgparse Python 3.14 enhancements by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1331\"\u003ePyCQA/bandit#1331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCheck whether Constant value is str by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1333\"\u003ePyCQA/bandit#1333\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.1...1.9.2\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.1...1.9.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMore Python version related fixes by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1327\"\u003ePyCQA/bandit#1327\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/PyCQA/bandit/commit/92ae8b82fb422a639f0ed8d99e96cea769594e08\"\u003e\u003ccode\u003e92ae8b8\u003c/code\u003e\u003c/a\u003e Fix B106 reporting wrong line number on multiline function calls (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1360\"\u003e#1360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c8c8a55c3307333b8eb46cb2ef46d49b1fad6546\"\u003e\u003ccode\u003ec8c8a55\u003c/code\u003e\u003c/a\u003e Lower version guard in check_ast_node to Python 3.12 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1355\"\u003e#1355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/8f2f9284fca830ca017b2e2cc3ddc2a7b74b7040\"\u003e\u003ccode\u003e8f2f928\u003c/code\u003e\u003c/a\u003e Fix B615 false positive when revision is set via variable (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1358\"\u003e#1358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e27493f71c114e0e5dfc0a475d225d7f9f4a7e2b\"\u003e\u003ccode\u003ee27493f\u003c/code\u003e\u003c/a\u003e Include filename in nosec 'no failed test' warning (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1363\"\u003e#1363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/b69b336450301d424e5ba04c9a58e8d41b7169b6\"\u003e\u003ccode\u003eb69b336\u003c/code\u003e\u003c/a\u003e Fix B613 crash when reading from stdin (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1361\"\u003e#1361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e418b798abcc3f2b00c07fd6315da8fe9aeead00\"\u003e\u003ccode\u003ee418b79\u003c/code\u003e\u003c/a\u003e Bump docker/build-push-action from 6.18.0 to 6.19.2 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1357\"\u003e#1357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/ff646fd7e0e34fb350196fc58448fad17178c27a\"\u003e\u003ccode\u003eff646fd\u003c/code\u003e\u003c/a\u003e Bump docker/login-action from 3.6.0 to 3.7.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1353\"\u003e#1353\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c0def6c7ebab60f98c28ba759d488f4fbe6dae89\"\u003e\u003ccode\u003ec0def6c\u003c/code\u003e\u003c/a\u003e chore: fixed some typos in comments (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1351\"\u003e#1351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/765f00d3f202f83f61d03f882f80a2d5142d81f8\"\u003e\u003ccode\u003e765f00d\u003c/code\u003e\u003c/a\u003e Limit B614 to torch.load deserializers (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1348\"\u003e#1348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/06fbbab0df3374ffa8ef24c6f601b2d5e1d4d429\"\u003e\u003ccode\u003e06fbbab\u003c/code\u003e\u003c/a\u003e Bump docker/setup-buildx-action from 3.11.1 to 3.12.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1347\"\u003e#1347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.7.6...1.9.4\"\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/kamakshi18-sketch/ai-secure-code-reviewer/pull/1","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/kamakshi18-sketch%2Fai-secure-code-reviewer/issues/1","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1/packages"},{"uuid":"5350736909","node_id":"PR_kwDOTiCLEM8AAAABCOyeZw","number":12,"state":"open","title":"deps: bump the python-dependencies group across 19 directories with 25 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-04T16:46:05.000Z","updated_at":"2026-09-11T16:58:30.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps: bump","group_name":"python-dependencies","update_count":25,"packages":[{"name":"fastapi","old_version":"0.136.3","new_version":"0.141.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"starlette","old_version":"1.3.1","new_version":"1.6.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"uvicorn","old_version":"0.37.0","new_version":"0.52.4","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"azure-identity","old_version":"1.23.0","new_version":"1.25.3","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"websocket-client","old_version":"1.9.0","new_version":"1.9.2","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"ruff","old_version":"0.14.9","new_version":"0.16.5","repository_url":"https://github.com/astral-sh/ruff"},{"name":"mypy","old_version":"1.18.2","new_version":"2.3.1","repository_url":"https://github.com/python/mypy"},{"name":"bandit","old_version":"1.9.2","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 8 updates in the /buswatch directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.136.3` | `0.141.1` |\n| [starlette](https://github.com/Kludex/starlette) | `1.3.1` | `1.6.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.37.0` | `0.52.4` |\n| [azure-identity](https://github.com/Azure/azure-sdk-for-python) | `1.23.0` | `1.25.3` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.9.0` | `1.9.2` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n\nBumps the python-dependencies group with 9 updates in the /dashboard directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [azure-mgmt-appcontainers](https://github.com/Azure/azure-sdk-for-python) | `4.0.0` | `5.0.0` |\n| [azure-mgmt-servicebus](https://github.com/Azure/azure-sdk-for-python) | `9.0.0` | `10.0.0` |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `25.3.0` | `26.2.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.2` | `1.2.3` |\n| [tzdata](https://github.com/python/tzdata) | `2026.2` | `2026.3` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.3` | `9.1.1` |\n\nBumps the python-dependencies group with 5 updates in the /hl7_chemo_transformer directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [setuptools](https://github.com/pypa/setuptools) | `82.0.1` | `84.0.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.0` | `1.41.0` |\n\nBumps the python-dependencies group with 5 updates in the /hl7_mock_receiver directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [setuptools](https://github.com/pypa/setuptools) | `82.0.1` | `84.0.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.0` | `1.41.0` |\n\nBumps the python-dependencies group with 5 updates in the /hl7_phw_transformer directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [setuptools](https://github.com/pypa/setuptools) | `82.0.1` | `84.0.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.0` | `1.41.0` |\n\nBumps the python-dependencies group with 5 updates in the /hl7_pims_transformer directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [setuptools](https://github.com/pypa/setuptools) | `82.0.1` | `84.0.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.0` | `1.41.0` |\n\nBumps the python-dependencies group with 5 updates in the /hl7_sender directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [setuptools](https://github.com/pypa/setuptools) | `82.0.1` | `84.0.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.0` | `1.41.0` |\n\nBumps the python-dependencies group with 9 updates in the /hl7_server directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [setuptools](https://github.com/pypa/setuptools) | `82.0.1` | `84.0.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.0` | `1.41.0` |\n| [hishel](https://github.com/karpetrosyan/hishel) | `1.1.8` | `1.3.1` |\n| [idna](https://github.com/kjd/idna) | `3.16` | `3.19` |\n| [pygments](https://github.com/pygments/pygments) | `2.20.0` | `2.21.0` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.2.1` | `1.2.2` |\n\nBumps the python-dependencies group with 5 updates in the /hl7_subscription_sender directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [setuptools](https://github.com/pypa/setuptools) | `82.0.1` | `84.0.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.2` | `1.41.0` |\n\nBumps the python-dependencies group with 5 updates in the /message_replay_job directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.1` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.19.1` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.3` | `1.9.4` |\n| [setuptools](https://github.com/pypa/setuptools) | `82.0.1` | `84.0.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.2` | `1.41.0` |\n\nBumps the python-dependencies group with 5 updates in the /message_store_service directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.1` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.19.1` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.3` | `1.9.4` |\n| [setuptools](https://github.com/pypa/setuptools) | `82.0.1` | `84.0.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.1` | `1.41.0` |\n\nBumps the python-dependencies group with 2 updates in the /shared_libs directory: [xmlschema](https://github.com/sissaschool/xmlschema) and [elementpath](https://github.com/sissaschool/elementpath).\nBumps the python-dependencies group with 3 updates in the /shared_libs/event_logger_lib directory: [azure-identity](https://github.com/Azure/azure-sdk-for-python), [azure-core](https://github.com/Azure/azure-sdk-for-python) and [azure-monitor-opentelemetry](https://github.com/Azure/azure-sdk-for-python).\nBumps the python-dependencies group with 3 updates in the /shared_libs/field_utils_lib directory: [ruff](https://github.com/astral-sh/ruff), [mypy](https://github.com/python/mypy) and [bandit](https://github.com/PyCQA/bandit).\nBumps the python-dependencies group with 5 updates in the /shared_libs/hl7_validation directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [xmlschema](https://github.com/sissaschool/xmlschema) | `3.4.3` | `4.3.2` |\n| [elementpath](https://github.com/sissaschool/elementpath) | `4.8.0` | `5.1.4` |\n\nBumps the python-dependencies group with 4 updates in the /shared_libs/message_bus_lib directory: [ruff](https://github.com/astral-sh/ruff), [mypy](https://github.com/python/mypy), [bandit](https://github.com/PyCQA/bandit) and [azure-core](https://github.com/Azure/azure-sdk-for-python).\nBumps the python-dependencies group with 7 updates in the /shared_libs/metric_sender_lib directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [azure-identity](https://github.com/Azure/azure-sdk-for-python) | `1.23.0` | `1.25.3` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.1` | `1.9.4` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.0` | `1.41.0` |\n| [idna](https://github.com/kjd/idna) | `3.18` | `3.19` |\n| [azure-monitor-opentelemetry](https://github.com/Azure/azure-sdk-for-python) | `1.6.13` | `1.8.9` |\n\nBumps the python-dependencies group with 5 updates in the /shared_libs/otel_lib directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.0` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [idna](https://github.com/kjd/idna) | `3.18` | `3.19` |\n| [azure-monitor-opentelemetry](https://github.com/Azure/azure-sdk-for-python) | `1.6.13` | `1.8.9` |\n\nBumps the python-dependencies group with 4 updates in the /shared_libs/transformer_base_lib directory: [ruff](https://github.com/astral-sh/ruff), [mypy](https://github.com/python/mypy), [bandit](https://github.com/PyCQA/bandit) and [azure-core](https://github.com/Azure/azure-sdk-for-python).\n\nUpdates `fastapi` from 0.136.3 to 0.141.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.141.1\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix support for background tasks and headers from dependencies in \u003ccode\u003eapp.frontend()\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16105\"\u003e#16105\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Document \u003ccode\u003eFASTAPI_ENV\u003c/code\u003e in FastAPI CLI guide. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16104\"\u003e#16104\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.141.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003eapp.frontend(check_dir=\u0026quot;auto\u0026quot;)\u003c/code\u003e, to make local development more convenient with \u003ccode\u003efastapi dev\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16102\"\u003e#16102\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.140.13\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003estatus_code\u003c/code\u003e being ignored for SSE and JSONL streaming endpoints. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15937\"\u003e#15937\u003c/a\u003e by \u003ca href=\"https://github.com/SAURABHSALVE\"\u003e\u003ccode\u003e@​SAURABHSALVE\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Fix \u003ccode\u003eformat_sse_event\u003c/code\u003e docstring rendering of \u003ccode\u003e\\n\\n\u003c/code\u003e terminator. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15613\"\u003e#15613\u003c/a\u003e by \u003ca href=\"https://github.com/AshNicolus\"\u003e\u003ccode\u003e@​AshNicolus\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Add API reference page for fastapi.sse. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15930\"\u003e#15930\u003c/a\u003e by \u003ca href=\"https://github.com/SAURABHSALVE\"\u003e\u003ccode\u003e@​SAURABHSALVE\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.140.12\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix line splitting in \u003ccode\u003eformat_sse_event\u003c/code\u003e to comply with SSE spec. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15515\"\u003e#15515\u003c/a\u003e by \u003ca href=\"https://github.com/Zawwarsami16\"\u003e\u003ccode\u003e@​Zawwarsami16\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.140.11\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eresponse_model_*\u003c/code\u003e params ignored for non-generator endpoints with \u003ccode\u003eIterable[..]\u003c/code\u003e return type. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15093\"\u003e#15093\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.140.10\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix handling sequences with nested Annotated types. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14874\"\u003e#14874\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\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Accept any base test failure as regression. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16092\"\u003e#16092\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🐛 Preserve pytest exit code in regression check. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16091\"\u003e#16091\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✅ Test PR regressions against base code. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16090\"\u003e#16090\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.140.9\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eexclude_defaults\u003c/code\u003e not propagated to dict keys and values in \u003ccode\u003ejsonable_encoder\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16043\"\u003e#16043\u003c/a\u003e by \u003ca href=\"https://github.com/MBGrao\"\u003e\u003ccode\u003e@​MBGrao\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/95f8322ee1dcda7ceace7b1c4f6c9915b36d748f\"\u003e\u003ccode\u003e95f8322\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.141.1 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16106\"\u003e#16106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f137944c435cff4e4b30ea7d12855ea88ddb868c\"\u003e\u003ccode\u003ef137944\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d62354434b2e508fe89024213b220ca8e67dea5e\"\u003e\u003ccode\u003ed623544\u003c/code\u003e\u003c/a\u003e 🐛 Fix support for background tasks and headers from dependencies in `app.fron...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/1d211b9c1009d577f39fa2b19b10d9a93a72a0ed\"\u003e\u003ccode\u003e1d211b9\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/8a1f8768411e62093e70ce142ea10863a485643c\"\u003e\u003ccode\u003e8a1f876\u003c/code\u003e\u003c/a\u003e 📝 Document \u003ccode\u003eFASTAPI_ENV\u003c/code\u003e in FastAPI CLI guide (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16104\"\u003e#16104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c7e7b651d6946c07cc9f675f39c9501d08319e57\"\u003e\u003ccode\u003ec7e7b65\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.141.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16103\"\u003e#16103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6bceb84053eb2405e9c000aad30ea13367b5ee32\"\u003e\u003ccode\u003e6bceb84\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/5429fed84e84e32672c25a953eca3429b841ce90\"\u003e\u003ccode\u003e5429fed\u003c/code\u003e\u003c/a\u003e ✨ Add \u003ccode\u003eapp.frontend(check_dir=\u0026quot;auto\u0026quot;)\u003c/code\u003e, to make local development more conven...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/628663f4f899c465da423bce681c7adf9a218948\"\u003e\u003ccode\u003e628663f\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.140.13 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16096\"\u003e#16096\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0b54fd00273019034dd30b120ac842e65d80690e\"\u003e\u003ccode\u003e0b54fd0\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.136.3...0.141.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `starlette` from 1.3.1 to 1.6.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/starlette/releases\"\u003estarlette's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.6.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003emax_body_size\u003c/code\u003e to \u003ccode\u003eStarlette\u003c/code\u003e and route classes 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/starlette/pull/3431\"\u003eKludex/starlette#3431\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpose \u003ccode\u003ehttp.response.debug\u003c/code\u003e info via response extensions by \u003ca href=\"https://github.com/y2kbugger\"\u003e\u003ccode\u003e@​y2kbugger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3130\"\u003eKludex/starlette#3130\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/y2kbugger\"\u003e\u003ccode\u003e@​y2kbugger\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3130\"\u003eKludex/starlette#3130\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/starlette/compare/1.5.1...1.6.0\"\u003ehttps://github.com/Kludex/starlette/compare/1.5.1...1.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 1.5.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eReject inverted single-byte Range like \u003ccode\u003ebytes=5-4\u003c/code\u003e by \u003ca href=\"https://github.com/nikolauspschuetz\"\u003e\u003ccode\u003e@​nikolauspschuetz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3389\"\u003eencode/starlette#3389\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimit \u003ccode\u003eFileResponse\u003c/code\u003e to 100 ranges by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3430\"\u003eencode/starlette#3430\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/encode/starlette/compare/1.5.0...1.5.1\"\u003ehttps://github.com/encode/starlette/compare/1.5.0...1.5.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 1.5.0\u003c/h2\u003e\n\u003cp\u003eThis release is all about giving \u003ccode\u003eGZipMiddleware\u003c/code\u003e some love. 🗜️\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eexclude_content_types\u003c/code\u003e parameter to \u003ccode\u003eGZipMiddleware\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/encode/starlette/pull/3418\"\u003eencode/starlette#3418\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFlush GZip output for each streamed chunk by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3419\"\u003eencode/starlette#3419\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSkip compression of partial responses in \u003ccode\u003eGZipMiddleware\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/encode/starlette/pull/3420\"\u003eencode/starlette#3420\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpand default excluded content types in \u003ccode\u003eGZipMiddleware\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/encode/starlette/pull/3421\"\u003eencode/starlette#3421\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/encode/starlette/compare/1.4.1...1.5.0\"\u003ehttps://github.com/encode/starlette/compare/1.4.1...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 1.4.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDefault \u003ccode\u003ethread_minimum_size\u003c/code\u003e in \u003ccode\u003eGZipResponder\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/starlette/pull/3415\"\u003eKludex/starlette#3415\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/starlette/compare/1.4.0...1.4.1\"\u003ehttps://github.com/Kludex/starlette/compare/1.4.0...1.4.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 1.4.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eLazily allocate GZipMiddleware compression resources 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/starlette/pull/3407\"\u003eKludex/starlette#3407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ezlib.compressobj\u003c/code\u003e instead of \u003ccode\u003eGzipFile\u003c/code\u003e in \u003ccode\u003eGZipMiddleware\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/starlette/pull/3411\"\u003eKludex/starlette#3411\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOffload large GZip compression 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/starlette/pull/3410\"\u003eKludex/starlette#3410\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/benberryallwood\"\u003e\u003ccode\u003e@​benberryallwood\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3334\"\u003eKludex/starlette#3334\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lkk7\"\u003e\u003ccode\u003e@​lkk7\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3359\"\u003eKludex/starlette#3359\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/starlette/compare/1.3.1...1.4.0\"\u003ehttps://github.com/Kludex/starlette/compare/1.3.1...1.4.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/Kludex/starlette/blob/main/docs/release-notes.md\"\u003estarlette's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.0 (August 8, 2026)\u003c/h2\u003e\n\u003ch4\u003eAdded\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003emax_body_size\u003c/code\u003e to \u003ccode\u003eStarlette\u003c/code\u003e and route classes \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3431\"\u003e#3431\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eExpose \u003ccode\u003ehttp.response.debug\u003c/code\u003e information via response extensions \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3130\"\u003e#3130\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.5.1 (August 8, 2026)\u003c/h2\u003e\n\u003ch4\u003eFixed\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eReject inverted single-byte ranges in \u003ccode\u003eFileResponse\u003c/code\u003e \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3389\"\u003e#3389\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eLimit \u003ccode\u003eFileResponse\u003c/code\u003e to 100 ranges \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3430\"\u003e#3430\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.5.0 (August 8, 2026)\u003c/h2\u003e\n\u003ch4\u003eAdded\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eexclude_content_types\u003c/code\u003e parameter to \u003ccode\u003eGZipMiddleware\u003c/code\u003e \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3418\"\u003e#3418\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanged\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eExpand default excluded content types in \u003ccode\u003eGZipMiddleware\u003c/code\u003e \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3421\"\u003e#3421\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixed\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFlush GZip output for each streamed chunk \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3419\"\u003e#3419\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSkip compression of partial responses in \u003ccode\u003eGZipMiddleware\u003c/code\u003e \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3420\"\u003e#3420\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.4.1 (August 5, 2026)\u003c/h2\u003e\n\u003ch4\u003eFixed\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eDefault \u003ccode\u003ethread_minimum_size\u003c/code\u003e to 128 KiB in \u003ccode\u003eGZipResponder\u003c/code\u003e, keeping it usable without the new keyword argument \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3415\"\u003e#3415\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.4.0 (August 5, 2026)\u003c/h2\u003e\n\u003ch4\u003eAdded\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eOffload large GZip compression to a worker thread, keeping the event loop responsive. \u003ccode\u003eGZipMiddleware\u003c/code\u003e accepts a new \u003ccode\u003ethread_minimum_size\u003c/code\u003e parameter (default 128 KiB) controlling the minimum body chunk size compressed in a thread \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3410\"\u003e#3410\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanged\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003ezlib.compressobj\u003c/code\u003e instead of \u003ccode\u003eGzipFile\u003c/code\u003e in \u003ccode\u003eGZipMiddleware\u003c/code\u003e, reducing memory usage during compression \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3411\"\u003e#3411\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eLazily allocate \u003ccode\u003eGZipMiddleware\u003c/code\u003e compression resources, avoiding compressor allocation for responses that are never compressed \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3407\"\u003e#3407\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/Kludex/starlette/commit/4f250d6b814587e20c5365f0a5f0c4d42bcb929f\"\u003e\u003ccode\u003e4f250d6\u003c/code\u003e\u003c/a\u003e Version 1.6.0 (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3434\"\u003e#3434\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/9eea41ad3c26ad21b9bdfe4578c1cdad6c9b9ac2\"\u003e\u003ccode\u003e9eea41a\u003c/code\u003e\u003c/a\u003e Expose \u003ccode\u003ehttp.response.debug\u003c/code\u003e info via response extensions (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3130\"\u003e#3130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/38f8999a229610b36f39d11f67d80515a15c6330\"\u003e\u003ccode\u003e38f8999\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003emax_body_size\u003c/code\u003e to \u003ccode\u003eStarlette\u003c/code\u003e and route classes (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3431\"\u003e#3431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/c41236c03868fb3779a64101f4ea88cd47877e23\"\u003e\u003ccode\u003ec41236c\u003c/code\u003e\u003c/a\u003e Version 1.5.1 (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3432\"\u003e#3432\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/9c500db197859dba4a8db13fa8e7d2c55de8152c\"\u003e\u003ccode\u003e9c500db\u003c/code\u003e\u003c/a\u003e Limit \u003ccode\u003eFileResponse\u003c/code\u003e to 100 ranges (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3430\"\u003e#3430\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/78ae82cad482fe66a73fb1217f0a6609b3f998f6\"\u003e\u003ccode\u003e78ae82c\u003c/code\u003e\u003c/a\u003e Reject inverted single-byte Range like bytes=5-4 (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3389\"\u003e#3389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/c1d6edaf43920104d4389e983c3e0314f6af14cf\"\u003e\u003ccode\u003ec1d6eda\u003c/code\u003e\u003c/a\u003e chore(deps): bump pymdown-extensions from 11.0 to 11.0.1 (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3429\"\u003e#3429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/ee66ca48418780d6415d231851b31464febc32de\"\u003e\u003ccode\u003eee66ca4\u003c/code\u003e\u003c/a\u003e chore(deps): bump the python-packages group across 1 directory with 8 updates...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/00d10167523f819d39d5ca36732348d58645a447\"\u003e\u003ccode\u003e00d1016\u003c/code\u003e\u003c/a\u003e fix(tests): skip test_staticfiles_filename_too_long on Windows where os.pathc...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/d96887ea7b49db3d1d15994be6438c7fe99936f4\"\u003e\u003ccode\u003ed96887e\u003c/code\u003e\u003c/a\u003e Add Pydantic Logfire banner to the docs (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3428\"\u003e#3428\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/starlette/compare/1.3.1...1.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn` from 0.37.0 to 0.52.4\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.52.4\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\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.52.3...0.52.4\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.3\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.24 and use its combined receive path, improving HTTP/1.1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3067\"\u003e#3067\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.52.2...0.52.3\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.2...0.52.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.2\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.22, fixing bodyless request receives and improving HTTP/1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3063\"\u003e#3063\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.52.1...0.52.2\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.1...0.52.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.1\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComplete the closing handshake on server-initiated WebSocket closes in the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e and \u003ccode\u003ewsproto\u003c/code\u003e implementations, waiting for the client's close reply with a 10 second timeout instead of resetting the connection (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing write flow control to the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, preventing data truncation on server-initiated closes with large in-flight payloads (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3048\"\u003e#3048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle connection loss while a WebSocket write is waiting on backpressure (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3050\"\u003e#3050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eContent-Type\u003c/code\u003e and \u003ccode\u003eContent-Length\u003c/code\u003e headers from WebSocket denial responses on the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, and deliver non-UTF-8 denial bodies intact (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3041\"\u003e#3041\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.52.0...0.52.1\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.0...0.52.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.0\u003c/h2\u003e\n\u003cp\u003eThis release adds an experimental HTTP/1.1 implementation backed by \u003ca href=\"https://zttp.marcelotryle.com/\"\u003ezttp\u003c/a\u003e, a sans-IO HTTP parser I've been developing on the side: a core written in Zig, with bindings to Python. It has been running under a fuzzer for some weeks now, and has been through multiple rounds of security auditing.\u003c/p\u003e\n\u003cp\u003eIt is still \u003cstrong\u003eexperimental\u003c/strong\u003e, so don't put it in front of production traffic yet. Try it with \u003ccode\u003e--http zttp\u003c/code\u003e, and please send any feedback to the \u003ca href=\"https://github.com/Kludex/uvicorn/issues\"\u003eissue tracker\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an experimental \u003ccode\u003ezttp\u003c/code\u003e HTTP/1.1 implementation, selectable with \u003ccode\u003e--http zttp\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2979\"\u003e#2979\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKeep non-ASCII WebSocket request headers intact with websockets 17.0, which encodes them with ISO-8859-1 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3036\"\u003e#3036\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.51.0...0.52.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.51.0...0.52.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.51.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRestart workers with overlap on SIGHUP for near-zero-downtime reloads 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/3025\"\u003eKludex/uvicorn#3025\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.52.4 (August 18, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.3 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.24 and use its combined receive path, improving HTTP/1.1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3067\"\u003e#3067\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.2 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.22, fixing bodyless request receives and improving HTTP/1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3063\"\u003e#3063\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.1 (August 1, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComplete the closing handshake on server-initiated WebSocket closes in the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e and \u003ccode\u003ewsproto\u003c/code\u003e implementations, waiting for the client's close reply with a 10 second timeout instead of resetting the connection (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing write flow control to the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, preventing data truncation on server-initiated closes with large in-flight payloads (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3048\"\u003e#3048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle connection loss while a WebSocket write is waiting on backpressure (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3050\"\u003e#3050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eContent-Type\u003c/code\u003e and \u003ccode\u003eContent-Length\u003c/code\u003e headers from WebSocket denial responses on the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, and deliver non-UTF-8 denial bodies intact (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3041\"\u003e#3041\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.0 (July 29, 2026)\u003c/h2\u003e\n\u003cp\u003eThis release adds an experimental HTTP/1.1 implementation backed by \u003ca href=\"https://zttp.marcelotryle.com/\"\u003ezttp\u003c/a\u003e, a sans-IO HTTP parser I've been developing on the side: a core written in Zig, with bindings to Python. It has been running under a fuzzer for some weeks now, and has been through multiple rounds of security auditing.\u003c/p\u003e\n\u003cp\u003eIt is still \u003cstrong\u003eexperimental\u003c/strong\u003e, so don't put it in front of production traffic yet. Try it with \u003ccode\u003e--http zttp\u003c/code\u003e, and please send any feedback to the \u003ca href=\"https://github.com/Kludex/uvicorn/issues\"\u003eissue tracker\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an experimental \u003ccode\u003ezttp\u003c/code\u003e HTTP/1.1 implementation, selectable with \u003ccode\u003e--http zttp\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2979\"\u003e#2979\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKeep non-ASCII WebSocket request headers intact with websockets 17.0, which encodes them with ISO-8859-1 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3036\"\u003e#3036\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.51.0 (July 8, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRestart workers one at a time on \u003ccode\u003eSIGHUP\u003c/code\u003e, bringing each replacement up before retiring the old worker, so reloads no longer drop requests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3025\"\u003e#3025\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u003ccode\u003ecolorama\u003c/code\u003e from the \u003ccode\u003estandard\u003c/code\u003e extra (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3027\"\u003e#3027\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/8988c23704fc373c9206cca53ec57dd8ad7f44a5\"\u003e\u003ccode\u003e8988c23\u003c/code\u003e\u003c/a\u003e Stabilize macOS Python 3.13 signal shutdown tests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3084\"\u003e#3084\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/898ddca9254b53c5bf7a6ee509756704caaa949f\"\u003e\u003ccode\u003e898ddca\u003c/code\u003e\u003c/a\u003e Update PyPI publish action to version 1.14.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3083\"\u003e#3083\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3869f8aac2bdd040fa3fbe564e1dad67e2637641\"\u003e\u003ccode\u003e3869f8a\u003c/code\u003e\u003c/a\u003e Restore Mermaid diagram rendering (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3080\"\u003e#3080\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/64148a9c574e1eb87d3d09b3ce4c256606f8d973\"\u003e\u003ccode\u003e64148a9\u003c/code\u003e\u003c/a\u003e Version 0.52.4 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3079\"\u003e#3079\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9e9e5691bd14d5c4cd66d9bd76c7730bc48461a2\"\u003e\u003ccode\u003e9e9e569\u003c/code\u003e\u003c/a\u003e docs: correct release example PR number (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3072\"\u003e#3072\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/b783dacab50b9d6767b0cf65826b2dc3aae21909\"\u003e\u003ccode\u003eb783dac\u003c/code\u003e\u003c/a\u003e Remove duplicate Date header from SansIO WebSocket handshakes (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/27019b2a4b1fa6d68a289fcf7d738fbdc6ee4e5d\"\u003e\u003ccode\u003e27019b2\u003c/code\u003e\u003c/a\u003e chore(deps): bump the python-packages group across 1 directory with 11 update...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/1b6427311bb84a15addee688f6d41d96e33f8b0a\"\u003e\u003ccode\u003e1b64273\u003c/code\u003e\u003c/a\u003e Fix a typo in index.md (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3006\"\u003e#3006\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/a68da608147c5f79d962352dce11de8f6e32d972\"\u003e\u003ccode\u003ea68da60\u003c/code\u003e\u003c/a\u003e Version 0.52.3 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3068\"\u003e#3068\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/6e3bb4c5c22531c16d341f2da49f2653307f412f\"\u003e\u003ccode\u003e6e3bb4c\u003c/code\u003e\u003c/a\u003e Use zttp 0.0.24 fast receive path (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3067\"\u003e#3067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.37.0...0.52.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `azure-identity` from 1.23.0 to 1.25.3\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/a989ea467731265fdf097b622ba254703187746b\"\u003e\u003ccode\u003ea989ea4\u003c/code\u003e\u003c/a\u003e [Identity] Prep patch release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/79728834e7f38018d372860cf9117bf51d9ed417\"\u003e\u003ccode\u003e7972883\u003c/code\u003e\u003c/a\u003e [Identity] Adjust refresh logic (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/45496\"\u003e#45496\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/04764a9a8a0cb59aab6421b41152246853dfcfe8\"\u003e\u003ccode\u003e04764a9\u003c/code\u003e\u003c/a\u003e add psscript to convert apiview json files to md (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/45589\"\u003e#45589\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/50e01659d7204865dfa07c5ece1019ed9a229b4f\"\u003e\u003ccode\u003e50e0165\u003c/code\u003e\u003c/a\u003e Sync eng/common directory with azure-sdk-tools for PR 14461 (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/45646\"\u003e#45646\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/5333117e0e181404ff4deaa757e9b6ef86dabf8b\"\u003e\u003ccode\u003e5333117\u003c/code\u003e\u003c/a\u003e Add Bo to /sdk/ai/azure-ai-projects owner list (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/45664\"\u003e#45664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/775d6942e4335422fc69da8e997a6069e356b104\"\u003e\u003ccode\u003e775d694\u003c/code\u003e\u003c/a\u003e Doc and automation updates for .github sync directory changes (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/45630\"\u003e#45630\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/c6e48b5cd71adf5728a5e2f33bc9f62fb221221f\"\u003e\u003ccode\u003ec6e48b5\u003c/code\u003e\u003c/a\u003e [Core] Prepare release (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/45656\"\u003e#45656\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/ae769c4e9379c8d309bffa5ccb76dcfba64e1f71\"\u003e\u003ccode\u003eae769c4\u003c/code\u003e\u003c/a\u003e Fix custom Memory Stores LRO poller operation (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/45662\"\u003e#45662\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/6074492844d670316eb171756483f1394a6c94c7\"\u003e\u003ccode\u003e6074492\u003c/code\u003e\u003c/a\u003e Add asset id none check in dt (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/45618\"\u003e#45618\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/e1a986aeb7a8001bd3a4f336cf096c2b050aa480\"\u003e\u003ccode\u003ee1a986a\u003c/code\u003e\u003c/a\u003e Bump tar from 7.5.10 to 7.5.11 in /eng/common/tsp-client (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/45640\"\u003e#45640\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Azure/azure-sdk-for-python/compare/azure-identity_1.23.0...azure-identity_1.25.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `websocket-client` from 1.9.0 to 1.9.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/websocket-client/websocket-client/releases\"\u003ewebsocket-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.9.2\u003c/h2\u003e\n\u003ch1\u003e1.9.2\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix race in \u003ccode\u003eWebSocketApp.close()\u003c/code\u003e when \u003ccode\u003erun_forever()\u003c/code\u003e thread clears the socket during the close handshake (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1057\"\u003e#1057\u003c/a\u003e, fixes \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1055\"\u003e#1055\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.1\u003c/h2\u003e\n\u003ch1\u003e1.9.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support to setup config and CI (f2bc97a)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e dropping close frame when reason is str (2f22e2e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e type annotation and docstring for timeout and reason (d69f730)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eabort()\u003c/code\u003e robust for sockets that cannot shutdown, same logic as \u003ccode\u003eshutdown()\u003c/code\u003e (1904e3d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects missing a \u003ccode\u003eLocation\u003c/code\u003e header (97e34db)\u003c/li\u003e\n\u003cli\u003eRaise when WebSocket connect redirect limit is exhausted (be0d38d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects to invalid targets (62ef6af)\u003c/li\u003e\n\u003cli\u003eFix unformatted ABNF validation error messages (0145b7b)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003evalidate_utf8()\u003c/code\u003e crash on str input (4a8e6ed)\u003c/li\u003e\n\u003cli\u003eStore \u003ccode\u003estatus_message\u003c/code\u003e on \u003ccode\u003eWebSocketBadStatusException\u003c/code\u003e (368aeda)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for \u003ccode\u003echeck_hostname\u003c/code\u003e with \u003ccode\u003eCERT_NONE\u003c/code\u003e (0232aca)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ehandleDisconnect\u003c/code\u003e type annotation: None default requires Optional (20f3712)\u003c/li\u003e\n\u003cli\u003eRemove unreachable \u003ccode\u003enot frame\u003c/code\u003e check in \u003ccode\u003erecv_data_frame()\u003c/code\u003e (b684242)\u003c/li\u003e\n\u003cli\u003eSet \u003ccode\u003eproxy_timeout\u003c/code\u003e on \u003ccode\u003eproxy_info\u003c/code\u003e without a proxy host (68f0aed)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e_wsdump.py\u003c/code\u003e bytes annotations and remove dead code (5ecc6e4)\u003c/li\u003e\n\u003cli\u003eExport \u003ccode\u003eSTATUS_SERVICE_RESTART\u003c/code\u003e and \u003ccode\u003eSTATUS_TRY_AGAIN_LATER\u003c/code\u003e close codes (22279c4)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eextract_err_message()\u003c/code\u003e to always return str (e2091bd)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketProxyException\u003c/code\u003e for SOCKS proxy without a port, correct proxy port docs (3c62bdf)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for malformed HTTP responses (04f4d94)\u003c/li\u003e\n\u003cli\u003eFix docs examples using dead or unreachable endpoints (2fc92c0)\u003c/li\u003e\n\u003cli\u003eAdd pyproject.toml, drop deprecated setup.py metadata (8b34f50)\u003c/li\u003e\n\u003cli\u003eApply linting (3b4ffab)\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/websocket-client/websocket-client/blob/master/ChangeLog\"\u003ewebsocket-client's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e1.9.2\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix race in \u003ccode\u003eWebSocketApp.close()\u003c/code\u003e when \u003ccode\u003erun_forever()\u003c/code\u003e thread clears the socket during the close handshake (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1057\"\u003e#1057\u003c/a\u003e, fixes \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1055\"\u003e#1055\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.9.1\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support to setup config and CI (f2bc97a)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e dropping close frame when reason is str (2f22e2e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e type annotation and docstring for timeout and reason (d69f730)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eabort()\u003c/code\u003e robust for sockets that cannot shutdown, same logic as \u003ccode\u003eshutdown()\u003c/code\u003e (1904e3d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects missing a \u003ccode\u003eLocation\u003c/code\u003e header (97e34db)\u003c/li\u003e\n\u003cli\u003eRaise when WebSocket connect redirect limit is exhausted (be0d38d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects to invalid targets (62ef6af)\u003c/li\u003e\n\u003cli\u003eFix unformatted ABNF validation error messages (0145b7b)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003evalidate_utf8()\u003c/code\u003e crash on str input (4a8e6ed)\u003c/li\u003e\n\u003cli\u003eStore \u003ccode\u003estatus_message\u003c/code\u003e on \u003ccode\u003eWebSocketBadStatusException\u003c/code\u003e (368aeda)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for \u003ccode\u003echeck_hostname\u003c/code\u003e with \u003ccode\u003eCERT_NONE\u003c/code\u003e (0232aca)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ehandleDisconnect\u003c/code\u003e type annotation: None default requires Optional (20f3712)\u003c/li\u003e\n\u003cli\u003eRemove unreachable \u003ccode\u003enot frame\u003c/code\u003e check in \u003ccode\u003erecv_data_frame()\u003c/code\u003e (b684242)\u003c/li\u003e\n\u003cli\u003eSet \u003ccode\u003eproxy_timeout\u003c/code\u003e on \u003ccode\u003eproxy_info\u003c/code\u003e without a proxy host (68f0aed)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e_wsdump.py\u003c/code\u003e bytes annotations and remove dead code (5ecc6e4)\u003c/li\u003e\n\u003cli\u003eExport \u003ccode\u003eSTATUS_SERVICE_RESTART\u003c/code\u003e and \u003ccode\u003eSTATUS_TRY_AGAIN_LATER\u003c/code\u003e close codes (22279c4)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eextract_err_message()\u003c/code\u003e to always return str (e2091bd)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketProxyException\u003c/code\u003e for SOCKS proxy without a port, correct proxy port docs (3c62bdf)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for malformed HTTP responses (04f4d94)\u003c/li\u003e\n\u003cli\u003eFix docs examples using dead or unreachable endpoints (2fc92c0)\u003c/li\u003e\n\u003cli\u003eAdd pyproject.toml, drop deprecated setup.py metadata (8b34f50)\u003c/li\u003e\n\u003cli\u003eApply linting (3b4ffab)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/12225f5ce6e27536be3b0da85fd763ed75581bcc\"\u003e\u003ccode\u003e12225f5\u003c/code\u003e\u003c/a\u003e 1.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/09f2828f2496323ec6b95630ac69b79f51e65562\"\u003e\u003ccode\u003e09f2828\u003c/code\u003e\u003c/a\u003e Fix race in WebSocketApp.close() when run_forever thread clears sock (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1057\"\u003e#1057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/b5435d66b152230777c0530b7af81c3549fae5d8\"\u003e\u003ccode\u003eb5435d6\u003c/code\u003e\u003c/a\u003e 1.9.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/26f1c6439eb71489f2c5a2869942e049b78c2e41\"\u003e\u003ccode\u003e26f1c64\u003c/code\u003e\u003c/a\u003e Fix custom dispatcher SSL errors and socket timeouts (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1049\"\u003e#1049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/2a1b4893241250ed1337c24b322b0d66e0b7d5ca\"\u003e\u003ccode\u003e2a1b489\u003c/code\u003e\u003c/a\u003e Add ConnectionResetError to improve custom dispatcher error handling when ser...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/10d9159af9ba1ecb76e0ebb6a04edfd990eacbbb\"\u003e\u003ccode\u003e10d9159\u003c/code\u003e\u003c/a\u003e Improve close frame handling to fix \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1043\"\u003e#1043\u003c/a\u003e and add tests (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1044\"\u003e#1044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/75a361a80374dd624ef711410317c51489c7b256\"\u003e\u003ccode\u003e75a361a\u003c/code\u003e\u003c/a\u003e Closing open issues (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1037\"\u003e#1037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/websocket-client/websocket-client/compare/v1.9.0...v1.9.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.14.9 to 0.16.5\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.16.5\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-27.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow rules without codes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28049\"\u003e#28049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIntroduce category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27666\"\u003e#27666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate preview default rules and categories (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27877\"\u003e#27877\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Detect blocking generic HTTP requests (\u003ccode\u003eASYNC210\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28024\"\u003e#28024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-datetimez\u003c/code\u003e] Allow timezone-safe \u003ccode\u003estrptime\u003c/code\u003e chains (\u003ccode\u003eDTZ007\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28023\"\u003e#28023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Respect side effects in \u003ccode\u003elambda\u003c/code\u003e defaults (\u003ccode\u003eSIM401\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28000\"\u003e#28000\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix duplicated \u0026quot;of\u0026quot; in \u003ccode\u003eClientOptions\u003c/code\u003e doc comment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27978\"\u003e#27978\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument rule acceptance guidelines (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27910\"\u003e#27910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument the new category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27906\"\u003e#27906\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/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sharkdp\"\u003e\u003ccode\u003e@​sharkdp\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelle-openai\"\u003e\u003ccode\u003e@​jelle-openai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aarushkandukoori\"\u003e\u003ccode\u003e@​aarushkandukoori\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.16.5\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.16.5/ruff-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eInstall prebuilt binaries via powershell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003epowershell -ExecutionPolicy Bypass -c \u0026quot;irm https://releases.astral.sh/github/ruff/releases/download/0.16.5/ruff-installer.ps1 | iex\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eDownload ruff 0.16.5\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/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.16.5\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-27.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow rules without codes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28049\"\u003e#28049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIntroduce category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27666\"\u003e#27666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate preview default rules and categories (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27877\"\u003e#27877\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Detect blocking generic HTTP requests (\u003ccode\u003eASYNC210\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28024\"\u003e#28024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-datetimez\u003c/code\u003e] Allow timezone-safe \u003ccode\u003estrptime\u003c/code\u003e chains (\u003ccode\u003eDTZ007\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28023\"\u003e#28023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Respect side effects in \u003ccode\u003elambda\u003c/code\u003e defaults (\u003ccode\u003eSIM401\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28000\"\u003e#28000\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix duplicated \u0026quot;of\u0026quot; in \u003ccode\u003eClientOptions\u003c/code\u003e doc comment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27978\"\u003e#27978\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument rule acceptance guidelines (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27910\"\u003e#27910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument the new category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27906\"\u003e#27906\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/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sharkdp\"\u003e\u003ccode\u003e@​sharkdp\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelle-openai\"\u003e\u003ccode\u003e@​jelle-openai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aarushkandukoori\"\u003e\u003ccode\u003e@​aarushkandukoori\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.16.4\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-20.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-use-pathlib\u003c/code\u003e] Add autofix for \u003ccode\u003ePTH116\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26460\"\u003e#26460\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Restrict \u003ccode\u003edelete-full-slice\u003c/code\u003e to lists (\u003ccode\u003eFURB131\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27711\"\u003e#27711\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Skip \u003ccode\u003eFURB101\u003c/code\u003e and \u003ccode\u003eFURB103\u003c/code\u003e when the \u003ccode\u003eopen\u003c/code\u003e argument is a file descriptor (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27643\"\u003e#27643\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eInvalidInstruction\u003c/code\u003e on Windows CPUs that do not support \u003ccode\u003ePOPCNT\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27803\"\u003e#27803\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Emit semantic syntax errors in string type definitions as \u003ccode\u003eF722\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27835\"\u003e#27835\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Allow \u003ccode\u003eos._exit\u003c/code\u003e imports in \u003ccode\u003eimport-private-name\u003c/code\u003e (\u003ccode\u003ePLC2701\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27738\"\u003e#27738\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/9e4938c4a60bed3e87a11ee1e1db1bd23f4d964a\"\u003e\u003ccode\u003e9e4938c\u003c/code\u003e\u003c/a\u003e Bump 0.16.5 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28110\"\u003e#28110\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/aad0e909ef1390f4b2a3ba8aa0a67fb8ea5cbacd\"\u003e\u003ccode\u003eaad0e90\u003c/code\u003e\u003c/a\u003e Allow rules without codes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28049\"\u003e#28049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5fdab73c5052350400c36b08c5d7710210343bc4\"\u003e\u003ccode\u003e5fdab73\u003c/code\u003e\u003c/a\u003e Update preview default rules and categories (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27877\"\u003e#27877\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/29c8e5b2d0a46eb7dc4ff11c1b0a0dc5ccea52e4\"\u003e\u003ccode\u003e29c8e5b\u003c/code\u003e\u003c/a\u003e Document rule acceptance guidelines (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27910\"\u003e#27910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/50a4d7fd106603a5616b01ac3bef3306252b248f\"\u003e\u003ccode\u003e50a4d7f\u003c/code\u003e\u003c/a\u003e Document the new category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27906\"\u003e#27906\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ada87950ea188f882f69b7bd6e2213a9696e3ee2\"\u003e\u003ccode\u003eada8795\u003c/code\u003e\u003c/a\u003e Introduce category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27666\"\u003e#27666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d8947238863b61922bfc83f07edcc697c1cc07c0\"\u003e\u003ccode\u003ed894723\u003c/code\u003e\u003c/a\u003e [ty] Infer lambda parameters through callable type aliases (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28109\"\u003e#28109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/2685fdebbcf9938736fed8c45886a629f9c99a06\"\u003e\u003ccode\u003e2685fde\u003c/code\u003e\u003c/a\u003e [ty] Narrow functional enum members in \u003ccode\u003e==\u003c/code\u003e and \u003ccode\u003ematch\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28103\"\u003e#28103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/efcffd2178ce62e9951a53d4c50cadc225a0cfec\"\u003e\u003ccode\u003eefcffd2\u003c/code\u003e\u003c/a\u003e [ty] Intersection simplifications with subtype-related generic specialization...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/eb780488037504e11f145ed778654fd8a825028b\"\u003e\u003ccode\u003eeb78048\u003c/code\u003e\u003c/a\u003e [ty] Bump ecosystem-analyzer for HTML escaping (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28104\"\u003e#28104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.14.9...0.16.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.18.2 to 2.3.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003eMypy 2.3.1\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix mypyc crash on double yielding Iterators (Daniël van Noord, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21826\"\u003e21826\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix mypyc \u003ccode\u003edefault_factory\u003c/code\u003e for inherited dataclass (Daniël van Noord, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21785\"\u003e21785\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClear mypyc coroutine env on coroutine completion (Piotr Sawicki, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21734\"\u003e21734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when unpacking return value from overload (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21830\"\u003e21830\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAcknowledgements\u003c/h3\u003e\n\u003cp\u003eThanks to all mypy contributors who contributed to this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAgriya Khetarpal\u003c/li\u003e\n\u003cli\u003eEthan Sarp\u003c/li\u003e\n\u003cli\u003eIvan Levkivskyi\u003c/li\u003e\n\u003cli\u003eJingchen Ye\u003c/li\u003e\n\u003cli\u003eJukka Lehtosalo\u003c/li\u003e\n\u003cli\u003ePiotr Sawicki\u003c/li\u003e\n\u003cli\u003eShantanu\u003c/li\u003e\n\u003cli\u003eTom Bannink\u003c/li\u003e\n\u003cli\u003eViktor Szépe\u003c/li\u003e\n\u003cli\u003eygale\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eI'd also like to thank my employer, Dropbox, for supporting mypy development.\u003c/p\u003e\n\u003ch2\u003eMypy 2.2\u003c/h2\u003e\n\u003cp\u003eWe've just uploaded mypy 2.2.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\u003eSupport for Closed TypedDicts (PEP 728)\u003c/h3\u003e\n\u003cp\u003eMypy now supports closed TypedDicts as specified in PEP 728. A closed TypedDict cannot have extra\nkeys beyond those explicitly defined. This allows the type checker to determine that certain\noperations are safe when they otherwise wouldn't be due to the potential presence of unknown keys.\u003c/p\u003e\n\u003cp\u003eYou can use the \u003ccode\u003eclosed\u003c/code\u003e keyword argument with \u003ccode\u003eTypedDict\u003c/code\u003e:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003eHasName = TypedDict(\u0026quot;HasName\u0026quot;, {\u0026quot;name\u0026quot;: str})\nHasOnlyName = TypedDict(\u0026quot;HasOnlyName\u0026quot;, {\u0026quot;name\u0026quot;: str}, closed=True)\nMovie = TypedDict(\u0026quot;Movie\u0026quot;, {\u0026quot;name\u0026quot;: str, \u0026quot;year\u0026quot;: int})\n\u003cp\u003emovie: Movie = {\u0026quot;name\u0026quot;: \u0026quot;Nimona\u0026quot;, \u0026quot;year\u0026quot;: 2023}\nhas_name: HasName = movie  # OK: HasName is open (default)\nhas_only_name: HasOnlyName = movie  # Error: HasOnlyName is closed and Movie has extra \u0026quot;year\u0026quot; key\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt;\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/d642c4478e9e3acbe9233edbe17ffc569a1a778c\"\u003e\u003ccode\u003ed642c44\u003c/code\u003e\u003c/a\u003e Bump version to 2.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/a39242983d3c2cb85886a1eb6d5869180672784c\"\u003e\u003ccode\u003ea392429\u003c/code\u003e\u003c/a\u003e [mypyc] Fix crash on double yielding Iterators (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21826\"\u003e#21826\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/4843e7773e7dc8fe3f1fd1319277d6d11cd6cdb3\"\u003e\u003ccode\u003e4843e77\u003c/code\u003e\u003c/a\u003e [mypyc] Fix \u003ccode\u003edefault_factory\u003c/code\u003e for inherited dataclass (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21785\"\u003e#21785\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/14f5df93ed8d1be4f4cc9c447eb2e6e619362e05\"\u003e\u003ccode\u003e14f5df9\u003c/code\u003e\u003c/a\u003e [mypyc] Clear coroutine env on coroutine completion (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21734\"\u003e#21734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/6dfa06dda6e34912279e498d35a43ba6dc30bfee\"\u003e\u003ccode\u003e6dfa06d\u003c/code\u003e\u003c/a\u003e Fix crash when unpacking return value from overload (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21830\"\u003e#21830\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/a3857467da126d28b55724e8bb682019df9a503e\"\u003e\u003ccode\u003ea385746\u003c/code\u003e\u003c/a\u003e Bump version to 2.3.1+dev\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/8aabf8435357eaffceca7237f371e293b8168e54\"\u003e\u003ccode\u003e8aabf84\u003c/code\u003e\u003c/a\u003e Drop +dev from version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/4d8ad2ab5e86c99581b73775f2c00b9b8265b589\"\u003e\u003ccode\u003e4d8ad2a\u003c/code\u003e\u003c/a\u003e Update changelog for 2.3 release (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21728\"\u003e#21728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/2c2154672040c52e481f423854d104e6cf172585\"\u003e\u003ccode\u003e2c21546\u003c/code\u003e\u003c/a\u003e [mypyc] Update documentation of race conditions under free threading (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21726\"\u003e#21726\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/a9f62a3cf98a58a7a2607b7c81695802b39f5edc\"\u003e\u003ccode\u003ea9f62a3\u003c/code\u003e\u003c/a\u003e [mypyc] Make attribute access memory safe on free-threaded builds (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21705\"\u003e#21705\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.18.2...v2.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bandit` from 1.9.2 to 1.9.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/bandit/releases\"\u003ebandit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: fixed some typos in comments by \u003ca href=\"https://github.com/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/login-action from 3.6.0 to 3.7.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/PyCQA/bandit/pull/1353\"\u003ePyCQA/bandit#1353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.18.0 to 6.19.2 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/PyCQA/bandit/pull/1357\"\u003ePyCQA/bandit#1357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B613 crash when reading from stdin by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude filename in nosec 'no failed test' warning by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1363\"\u003ePyCQA/bandit#1363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B615 false positive when revision is set via variable by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1358\"\u003ePyCQA/bandit#1358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLower version guard in check_ast_node to Python 3.12 by \u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B106 reporting wrong line number on multiline function calls by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1360\"\u003ePyCQA/bandit#1360\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/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1334\"\u003ePyCQA/bandit#1334\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/PyCQA/bandit/pull/1335\"\u003ePyCQA/bandit#1335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B608 to detect \u003ccode\u003eVALUES(\u003c/code\u003e without space by \u003ca href=\"https://github.com/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd check for hardcoded passwords in dicts. by \u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\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/PyCQA/bandit/pull/1341\"\u003ePyCQA/bandit#1341\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate tox tests for Python 3.10 by \u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/setup-buildx-action from 3.11.1 to 3.12.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/PyCQA/bandit/pull/1347\"\u003ePyCQA/bandit#1347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimit B614 to torch.load deserializers by \u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\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/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/wi...\n\n_Description has been truncated_","html_url":"https://github.com/joelparkerhenderson/Integration-Hub-Beta/pull/12","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/joelparkerhenderson%2FIntegration-Hub-Beta/issues/12","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/12/packages"},{"uuid":"5308278035","node_id":"PR_kwDOTLE0x88AAAABBs3W-w","number":5,"state":"closed","title":"Bump the python-dependencies group with 6 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-10-01T05:45:48.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-01T05:48:06.000Z","updated_at":"2026-10-01T05:45:50.000Z","time_to_close":2591862,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python-dependencies","update_count":6,"packages":[{"name":"netmiko","old_version":"4.6.0","new_version":"4.7.0","repository_url":"https://github.com/ktbyers/netmiko"},{"name":"bandit","old_version":"1.8.6","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"},{"name":"pip-audit","old_version":"2.9.0","new_version":"2.10.1","repository_url":"https://github.com/pypa/pip-audit"},{"name":"pyinstaller","old_version":"6.21.0","new_version":"6.22.2","repository_url":"https://github.com/pyinstaller/pyinstaller"},{"name":"pytest","old_version":"8.4.2","new_version":"9.1.1","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"ruff","old_version":"0.12.12","new_version":"0.16.5","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 6 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [netmiko](https://github.com/ktbyers/netmiko) | `4.6.0` | `4.7.0` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.8.6` | `1.9.4` |\n| [pip-audit](https://github.com/pypa/pip-audit) | `2.9.0` | `2.10.1` |\n| [pyinstaller](https://github.com/pyinstaller/pyinstaller) | `6.21.0` | `6.22.2` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.2` | `9.1.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.12.12` | `0.16.5` |\n\nUpdates `netmiko` from 4.6.0 to 4.7.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ktbyers/netmiko/releases\"\u003enetmiko's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eNetmiko 4.7.0 Release\u003c/h2\u003e\n\u003ch2\u003eNew Platforms\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eOptilink GOLT in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3583\"\u003ektbyers/netmiko#3583\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCisco Access Points in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3584\"\u003ektbyers/netmiko#3584\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIPInfusion OcNOS (commit model) in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3596\"\u003ektbyers/netmiko#3596\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAviat WTM in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3602\"\u003ektbyers/netmiko#3602\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eNokia ISAM in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3725\"\u003ektbyers/netmiko#3725\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePerle IOLAN Console in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3738\"\u003ektbyers/netmiko#3738\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmartoptics DWDM in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3760\"\u003ektbyers/netmiko#3760\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAPC AOS in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3768\"\u003ektbyers/netmiko#3768\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOpenGear in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3769\"\u003ektbyers/netmiko#3769\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCisco WLC IOS in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3777\"\u003ektbyers/netmiko#3777\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCalix EXA in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3781\"\u003ektbyers/netmiko#3781\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHioso OLT in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3799\"\u003ektbyers/netmiko#3799\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHuawei ONT in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3800\"\u003ektbyers/netmiko#3800\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRaisecom ROS in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3802\"\u003ektbyers/netmiko#3802\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIIJ Seilos in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3804\"\u003ektbyers/netmiko#3804\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvara in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3805\"\u003ektbyers/netmiko#3805\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLancom LCOSsx5 in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3806\"\u003ektbyers/netmiko#3806\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFujitsu SIR in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3807\"\u003ektbyers/netmiko#3807\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHirschmann HIOS in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3808\"\u003ektbyers/netmiko#3808\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFurukawa FITELnet in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3810\"\u003ektbyers/netmiko#3810\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eZPE Nodegrid in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3835\"\u003ektbyers/netmiko#3835\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes 'enable' call issue when device prompt is a substring of literal 'password' string in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3708\"\u003ektbyers/netmiko#3708\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing flags in re.search call in enable() in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3709\"\u003ektbyers/netmiko#3709\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAruba OS: Add file transfer support in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3691\"\u003ektbyers/netmiko#3691\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMinor updates to Aruba OS file transfer in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3711\"\u003ektbyers/netmiko#3711\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOcnos commit description map to 'comment' argument in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3714\"\u003ektbyers/netmiko#3714\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove superfluous executable bits in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3722\"\u003ektbyers/netmiko#3722\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typing hints for timeouts: change from int to float in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3720\"\u003ektbyers/netmiko#3720\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd py.typed and fix include/MANIFEST.in issues in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3723\"\u003ektbyers/netmiko#3723\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMikrotik space fix issue in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3739\"\u003ektbyers/netmiko#3739\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse proper type hints for session_log argument of BaseConnection constructor in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3727\"\u003ektbyers/netmiko#3727\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMinor perle fixes in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3740\"\u003ektbyers/netmiko#3740\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Check Point Gaia double command echo issue in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3742\"\u003ektbyers/netmiko#3742\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove Check Point Gaia in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3748\"\u003ektbyers/netmiko#3748\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Garderos GRS alt_prompt in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3733\"\u003ektbyers/netmiko#3733\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGH Actions: updating Python and MacOS runner versions in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3755\"\u003ektbyers/netmiko#3755\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix error in enable_secret_handler() in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3759\"\u003ektbyers/netmiko#3759\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003enokia_isam improvements in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3754\"\u003ektbyers/netmiko#3754\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd cleanup method for graceful cleanup for Gaia in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3772\"\u003ektbyers/netmiko#3772\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd save config method for Gaia in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3773\"\u003ektbyers/netmiko#3773\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd additional search pattern for AOS-CX (e.g. CX 6300M) in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3774\"\u003ektbyers/netmiko#3774\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdva driver fixes in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3595\"\u003ektbyers/netmiko#3595\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIOS-XR add 'replace' option to commit method in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3668\"\u003ektbyers/netmiko#3668\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove Paramiko Cleanup in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3675\"\u003ektbyers/netmiko#3675\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/ktbyers/netmiko/commit/1e28a763860dbda1522dacabaf66353f011001bd\"\u003e\u003ccode\u003e1e28a76\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/issues/3851\"\u003e#3851\u003c/a\u003e from ktbyers/develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ktbyers/netmiko/commit/33f6f5ed6c8a81a428b0ac8b1289f99dee2de16c\"\u003e\u003ccode\u003e33f6f5e\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ktbyers/netmiko/commit/e781ac9d98838e1236619c7ec40e12a9ecbcbadc\"\u003e\u003ccode\u003ee781ac9\u003c/code\u003e\u003c/a\u003e Update poetry lock file including paramiko version 5 (\u003ca href=\"https://redirect.github.com/ktbyers/netmiko/issues/3852\"\u003e#3852\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ktbyers/netmiko/commit/706ca1ffb62fd0c36dc9d952645da592bee60b38\"\u003e\u003ccode\u003e706ca1f\u003c/code\u003e\u003c/a\u003e Netmiko 4.7.0 Release (\u003ca href=\"https://redirect.github.com/ktbyers/netmiko/issues/3850\"\u003e#3850\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ktbyers/netmiko/commit/c27bb919411bc6ed242575c4af84f320cfc74709\"\u003e\u003ccode\u003ec27bb91\u003c/code\u003e\u003c/a\u003e Doc update (\u003ca href=\"https://redirect.github.com/ktbyers/netmiko/issues/3849\"\u003e#3849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ktbyers/netmiko/commit/560538864801ba4d587c25fe28dd42dd9e51fa9b\"\u003e\u003ccode\u003e5605388\u003c/code\u003e\u003c/a\u003e Minor fix for tests (\u003ca href=\"https://redirect.github.com/ktbyers/netmiko/issues/3848\"\u003e#3848\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ktbyers/netmiko/commit/4570e14d9c574f9de4cec2f68fed25552db1057c\"\u003e\u003ccode\u003e4570e14\u003c/code\u003e\u003c/a\u003e Fix exit_enable_mode issue with not verifying command echo (\u003ca href=\"https://redirect.github.com/ktbyers/netmiko/issues/3847\"\u003e#3847\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ktbyers/netmiko/commit/6105c7292a96dc544fc43149653f72c5b8f03fa0\"\u003e\u003ccode\u003e6105c72\u003c/code\u003e\u003c/a\u003e Fix typing import issue on PY3.13 (\u003ca href=\"https://redirect.github.com/ktbyers/netmiko/issues/3846\"\u003e#3846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ktbyers/netmiko/commit/eadebd7f59314708e11d8e5acd143957d9d74ebd\"\u003e\u003ccode\u003eeadebd7\u003c/code\u003e\u003c/a\u003e Add unit tests for SessionLog (Layer 1 + Layer 2) (\u003ca href=\"https://redirect.github.com/ktbyers/netmiko/issues/3843\"\u003e#3843\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ktbyers/netmiko/commit/2c1286d062b9bd0faf07cfd1feb216fb2f7dbf48\"\u003e\u003ccode\u003e2c1286d\u003c/code\u003e\u003c/a\u003e Fix session_log flush so data is written immediately on write() (\u003ca href=\"https://redirect.github.com/ktbyers/netmiko/issues/3841\"\u003e#3841\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ktbyers/netmiko/compare/v4.6.0...v4.7.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bandit` from 1.8.6 to 1.9.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/bandit/releases\"\u003ebandit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: fixed some typos in comments by \u003ca href=\"https://github.com/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/login-action from 3.6.0 to 3.7.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/PyCQA/bandit/pull/1353\"\u003ePyCQA/bandit#1353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.18.0 to 6.19.2 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/PyCQA/bandit/pull/1357\"\u003ePyCQA/bandit#1357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B613 crash when reading from stdin by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude filename in nosec 'no failed test' warning by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1363\"\u003ePyCQA/bandit#1363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B615 false positive when revision is set via variable by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1358\"\u003ePyCQA/bandit#1358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLower version guard in check_ast_node to Python 3.12 by \u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B106 reporting wrong line number on multiline function calls by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1360\"\u003ePyCQA/bandit#1360\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/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1334\"\u003ePyCQA/bandit#1334\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/PyCQA/bandit/pull/1335\"\u003ePyCQA/bandit#1335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B608 to detect \u003ccode\u003eVALUES(\u003c/code\u003e without space by \u003ca href=\"https://github.com/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd check for hardcoded passwords in dicts. by \u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\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/PyCQA/bandit/pull/1341\"\u003ePyCQA/bandit#1341\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate tox tests for Python 3.10 by \u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/setup-buildx-action from 3.11.1 to 3.12.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/PyCQA/bandit/pull/1347\"\u003ePyCQA/bandit#1347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimit B614 to torch.load deserializers by \u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\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/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eArgparse Python 3.14 enhancements by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1331\"\u003ePyCQA/bandit#1331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCheck whether Constant value is str by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1333\"\u003ePyCQA/bandit#1333\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.1...1.9.2\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.1...1.9.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMore Python version related fixes by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1327\"\u003ePyCQA/bandit#1327\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/PyCQA/bandit/commit/92ae8b82fb422a639f0ed8d99e96cea769594e08\"\u003e\u003ccode\u003e92ae8b8\u003c/code\u003e\u003c/a\u003e Fix B106 reporting wrong line number on multiline function calls (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1360\"\u003e#1360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c8c8a55c3307333b8eb46cb2ef46d49b1fad6546\"\u003e\u003ccode\u003ec8c8a55\u003c/code\u003e\u003c/a\u003e Lower version guard in check_ast_node to Python 3.12 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1355\"\u003e#1355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/8f2f9284fca830ca017b2e2cc3ddc2a7b74b7040\"\u003e\u003ccode\u003e8f2f928\u003c/code\u003e\u003c/a\u003e Fix B615 false positive when revision is set via variable (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1358\"\u003e#1358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e27493f71c114e0e5dfc0a475d225d7f9f4a7e2b\"\u003e\u003ccode\u003ee27493f\u003c/code\u003e\u003c/a\u003e Include filename in nosec 'no failed test' warning (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1363\"\u003e#1363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/b69b336450301d424e5ba04c9a58e8d41b7169b6\"\u003e\u003ccode\u003eb69b336\u003c/code\u003e\u003c/a\u003e Fix B613 crash when reading from stdin (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1361\"\u003e#1361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e418b798abcc3f2b00c07fd6315da8fe9aeead00\"\u003e\u003ccode\u003ee418b79\u003c/code\u003e\u003c/a\u003e Bump docker/build-push-action from 6.18.0 to 6.19.2 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1357\"\u003e#1357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/ff646fd7e0e34fb350196fc58448fad17178c27a\"\u003e\u003ccode\u003eff646fd\u003c/code\u003e\u003c/a\u003e Bump docker/login-action from 3.6.0 to 3.7.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1353\"\u003e#1353\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c0def6c7ebab60f98c28ba759d488f4fbe6dae89\"\u003e\u003ccode\u003ec0def6c\u003c/code\u003e\u003c/a\u003e chore: fixed some typos in comments (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1351\"\u003e#1351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/765f00d3f202f83f61d03f882f80a2d5142d81f8\"\u003e\u003ccode\u003e765f00d\u003c/code\u003e\u003c/a\u003e Limit B614 to torch.load deserializers (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1348\"\u003e#1348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/06fbbab0df3374ffa8ef24c6f601b2d5e1d4d429\"\u003e\u003ccode\u003e06fbbab\u003c/code\u003e\u003c/a\u003e Bump docker/setup-buildx-action from 3.11.1 to 3.12.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1347\"\u003e#1347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.8.6...1.9.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pip-audit` from 2.9.0 to 2.10.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/pip-audit/releases\"\u003epip-audit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.10.1\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a \u003ccode\u003eKeyError\u003c/code\u003e crash when an OSV vulnerability record contains an\n\u003ccode\u003eaffected\u003c/code\u003e entry that omits the optional \u003ccode\u003eranges\u003c/code\u003e field\n(\u003ca href=\"https://redirect.github.com/pypa/pip-audit/pull/1046\"\u003e#1046\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.10.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003epip-audit\u003c/code\u003e now supports the \u003ccode\u003e--osv-url URL\u003c/code\u003e flag, which can be used to\nretrieve vulnerabilities from a custom OSV service. This is useful for\norganizations that host their own mirror of the OSV database, or that\nhave custom OSV records\n(\u003ca href=\"https://redirect.github.com/pypa/pip-audit/pull/810\"\u003e#810\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003epip-audit\u003c/code\u003e now supports the Ecosyste.ms vulnerability service with\n\u003ccode\u003e--vulnerability-service=esms\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/pypa/pip-audit/pull/903\"\u003e#903\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe minimum version of Python is now 3.10\n(\u003ca href=\"https://redirect.github.com/pypa/pip-audit/pull/905\"\u003e#905\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed a bug where \u003ccode\u003epip-audit\u003c/code\u003e would fail to parse \u003ccode\u003epyproject.toml\u003c/code\u003e files\ncontaining TOML 1.0.0 features\n(\u003ca href=\"https://redirect.github.com/pypa/pip-audit/pull/910\"\u003e#910\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCycloneDX JSON/XML output now correctly links vulnerabilities to their\naffected components via the \u003ccode\u003eaffects\u003c/code\u003e field\n(\u003ca href=\"https://redirect.github.com/pypa/pip-audit/issues/980\"\u003e#980\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/pip-audit/blob/main/CHANGELOG.md\"\u003epip-audit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[2.10.1]\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a \u003ccode\u003eKeyError\u003c/code\u003e crash when an OSV vulnerability record contains an\n\u003ccode\u003eaffected\u003c/code\u003e entry that omits the optional \u003ccode\u003eranges\u003c/code\u003e field\n(\u003ca href=\"https://redirect.github.com/pypa/pip-audit/pull/1046\"\u003e#1046\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[2.10.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003epip-audit\u003c/code\u003e now supports the \u003ccode\u003e--osv-url URL\u003c/code\u003e flag, which can be used to\nretrieve vulnerabilities from a custom OSV service. This is useful for\norganizations that host their own mirror of the OSV database, or that\nhave custom OSV records\n(\u003ca href=\"https://redirect.github.com/pypa/pip-audit/pull/810\"\u003e#810\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003epip-audit\u003c/code\u003e now supports the Ecosyste.ms vulnerability service with\n\u003ccode\u003e--vulnerability-service=esms\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/pypa/pip-audit/pull/903\"\u003e#903\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe minimum version of Python is now 3.10\n(\u003ca href=\"https://redirect.github.com/pypa/pip-audit/pull/905\"\u003e#905\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed a bug where \u003ccode\u003epip-audit\u003c/code\u003e would fail to parse \u003ccode\u003epyproject.toml\u003c/code\u003e files\ncontaining TOML 1.0.0 features\n(\u003ca href=\"https://redirect.github.com/pypa/pip-audit/pull/910\"\u003e#910\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCycloneDX JSON/XML output now correctly links vulnerabilities to their\naffected components via the \u003ccode\u003eaffects\u003c/code\u003e field\n(\u003ca href=\"https://redirect.github.com/pypa/pip-audit/issues/980\"\u003e#980\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip-audit/commit/8894eb8cee033531a1fbd9f2fb160892531c14e3\"\u003e\u003ccode\u003e8894eb8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pypa/pip-audit/issues/1056\"\u003e#1056\u003c/a\u003e from pypa/copilot/release-2101\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip-audit/commit/1c625b7f4fd5790e6a05723b2ad9e670629a061d\"\u003e\u003ccode\u003e1c625b7\u003c/code\u003e\u003c/a\u003e Update version in README.md to 2.10.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip-audit/commit/fd2094bb7b58438176d65722d77c021750a16f84\"\u003e\u003ccode\u003efd2094b\u003c/code\u003e\u003c/a\u003e Prep 2.10.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip-audit/commit/58d24880a0053c9ec3ce7e3c35aef6d51d600921\"\u003e\u003ccode\u003e58d2488\u003c/code\u003e\u003c/a\u003e build(deps): bump github/codeql-action from 4.35.2 to 4.36.1 (\u003ca href=\"https://redirect.github.com/pypa/pip-audit/issues/1052\"\u003e#1052\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip-audit/commit/8df942058831baec6258f712d42a0bcb03729134\"\u003e\u003ccode\u003e8df9420\u003c/code\u003e\u003c/a\u003e build(deps): bump zizmorcore/zizmor-action from 0.5.3 to 0.5.6 (\u003ca href=\"https://redirect.github.com/pypa/pip-audit/issues/1044\"\u003e#1044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip-audit/commit/3f618d3cde900cd89545d6a3fa4d41612f3b83df\"\u003e\u003ccode\u003e3f618d3\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/checkout from 6.0.2 to 6.0.3 (\u003ca href=\"https://redirect.github.com/pypa/pip-audit/issues/1053\"\u003e#1053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip-audit/commit/4849132c9ec7a2b0b160ec4276408659d0cdcede\"\u003e\u003ccode\u003e4849132\u003c/code\u003e\u003c/a\u003e Restrict OIDC token to publish job (\u003ca href=\"https://redirect.github.com/pypa/pip-audit/issues/1050\"\u003e#1050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip-audit/commit/c1eb69a71306be7a3ffbbf2bdb59a4cb4eeaa414\"\u003e\u003ccode\u003ec1eb69a\u003c/code\u003e\u003c/a\u003e Fix KeyError when OSV affected entry omits optional \u003ccode\u003eranges\u003c/code\u003e field (\u003ca href=\"https://redirect.github.com/pypa/pip-audit/issues/1046\"\u003e#1046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip-audit/commit/68de07fb9637027f61df7df2620da93f9deb11ec\"\u003e\u003ccode\u003e68de07f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pypa/pip-audit/issues/1054\"\u003e#1054\u003c/a\u003e from pypa/fix/1047\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip-audit/commit/ef31c9ea7ae844d6f9c1f85efceb9d4a2533ef5a\"\u003e\u003ccode\u003eef31c9e\u003c/code\u003e\u003c/a\u003e Formatting fixes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/pip-audit/compare/v2.9.0...v2.10.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyinstaller` from 6.21.0 to 6.22.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyinstaller/pyinstaller/releases\"\u003epyinstaller's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev6.22.2\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://pyinstaller.org/en/v6.22.2/CHANGES.html#id1\"\u003ev6.22.2 section of the changelog\u003c/a\u003e for a list of the changes since v6.22.1.\u003c/p\u003e\n\u003ch2\u003ev6.22.1\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://pyinstaller.org/en/v6.22.1/CHANGES.html#id1\"\u003ev6.22.1 section of the changelog\u003c/a\u003e for a list of the changes since v6.22.0.\u003c/p\u003e\n\u003ch2\u003ev6.22.0\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://pyinstaller.org/en/v6.22.0/CHANGES.html#id1\"\u003ev6.22.0 section of the changelog\u003c/a\u003e for a list of the changes since v6.21.0.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyinstaller/pyinstaller/blob/develop/doc/CHANGES.rst\"\u003epyinstaller's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.22.2 (2026-08-17)\u003c/h2\u003e\n\u003cp\u003eBugfix\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* (Windows) Fix spurious security validation error when a ``onefile``\n  executable is launched from a symlinked directory or a junction.\n  (:issue:`9508`)\n\u003ch2\u003e6.22.1 (2026-08-15)\u003c/h2\u003e\n\u003cp\u003eBugfix\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix invalid spec file generation when :option:\u003ccode\u003e--hide-console\u003c/code\u003e option is\ngiven (regression introduced in v6.22.0). (:issue:\u003ccode\u003e9503\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e(NetBSD) Fix binary dependency analysis. (:issue:\u003ccode\u003e9505\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e(NetBSD) Fix/improve NetBSD support: add the \u003ccode\u003eis_netbsd\u003c/code\u003e platform\nflag, treat NetBSD as a Unix platform, and search \u003ccode\u003e/usr/local/lib\u003c/code\u003e for\nshared libraries, as is already done for FreeBSD and OpenBSD. (:issue:\u003ccode\u003e9496\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e(OpenBSD) Fix binary dependency analysis. (:issue:\u003ccode\u003e9505\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eIncompatible Changes\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* (POSIX) Executables built in ``onedir`` mode with ``setuid`` bit set\n  now validate the owner and permissions on their contents directory\n  (typically the ``_internal`` directory); the owner ID must match the\n  effective user ID under which the process is running, and the\n  permissions on the directory need to be `0700`. This aims to prevent\n  unprivileged users from modifying contents of an application that\n  runs in privileged mode. (:issue:`9492`)\n* (POSIX) When running as a ``onefile`` child process (on POSIX platforms\n  other than OpenBSD and AIX), the bootloader now attempts to verify\n  the parent process executable via ``procfs`` lookup. This check is\n  mandatory for ``onefile`` executables with ``setuid`` bit set; if the\n  relevant ``procfs`` entry is inaccessible (for example, due to ``procfs``\n  not being mounted, as is the case on FreeBSD by default, or due to access\n  being blocked by local security policy), the process will exit with\n  security validation error message. For regular ``onefile`` executables\n  (without ``setuid`` bit set), the parent-process check is enforced when the\n  relevant ``procfs`` entry is accessible, and skipped when it happens to be\n  inaccessible. (:issue:`9492`)\n* (POSIX) When running as a ``onefile`` child process and the executable\n  has ``setuid`` bit set, the bootloader now validates the owner and\n  permissions on the (inherited) temporary directory. The owner ID of the\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/pyinstaller/pyinstaller/commit/19f42e7f13d56cd880a4ced8bb3594875e5227c6\"\u003e\u003ccode\u003e19f42e7\u003c/code\u003e\u003c/a\u003e Release v6.22.2. [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyinstaller/pyinstaller/commit/72bbdb4bbe82f6b63bc5a21b4444c65c1e1a3220\"\u003e\u003ccode\u003e72bbdb4\u003c/code\u003e\u003c/a\u003e bootloader: Windows: use QueryFullProcessImageNameW for executable resolution\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyinstaller/pyinstaller/commit/0d6941c42760b0286dcf5405cc65f7e82568bea2\"\u003e\u003ccode\u003e0d6941c\u003c/code\u003e\u003c/a\u003e tests: add test to ensure security validation works with symlinked executables\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyinstaller/pyinstaller/commit/6e0036849ebe90b5b42d4168d5508138d70e378e\"\u003e\u003ccode\u003e6e00368\u003c/code\u003e\u003c/a\u003e Tests: Requirements: Scheduled weekly dependency update for week 33 (\u003ca href=\"https://redirect.github.com/pyinstaller/pyinstaller/issues/9506\"\u003e#9506\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyinstaller/pyinstaller/commit/22ea0f20c67c1337aa21b5ba383867cf2d9dcd6d\"\u003e\u003ccode\u003e22ea0f2\u003c/code\u003e\u003c/a\u003e Release v6.22.1. [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyinstaller/pyinstaller/commit/e709c0496cbfe150ebbc56ac7dec09d29d80d8eb\"\u003e\u003ccode\u003ee709c04\u003c/code\u003e\u003c/a\u003e bootloader: relax parent-process validation requirements on POSIX platforms\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyinstaller/pyinstaller/commit/e0388d3c74fb7ec852718be41f0fef14bd25523c\"\u003e\u003ccode\u003ee0388d3\u003c/code\u003e\u003c/a\u003e bootloader: relax parent-process validation requirements on FreeBSD\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyinstaller/pyinstaller/commit/92afdf8c1a6a1f9f945733482328c9800eccd237\"\u003e\u003ccode\u003e92afdf8\u003c/code\u003e\u003c/a\u003e tests: test_application_home_directory_hijack: handle 8.3 short paths\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyinstaller/pyinstaller/commit/4b509a28c8cefe173b1d75f35d9e9b1c2259732d\"\u003e\u003ccode\u003e4b509a2\u003c/code\u003e\u003c/a\u003e tests: improve logging in test_application_home_directory_hijack\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyinstaller/pyinstaller/commit/66b0249e1f2cbe9628f66d0a74dafbd1dab54138\"\u003e\u003ccode\u003e66b0249\u003c/code\u003e\u003c/a\u003e doc: document the new security validation and its implications\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyinstaller/pyinstaller/compare/v6.21.0...v6.22.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest` from 8.4.2 to 9.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest/releases\"\u003epytest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.1.1\u003c/h2\u003e\n\u003ch1\u003epytest 9.1.1 (2026-06-19)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14220\"\u003e#14220\u003c/a\u003e: Fixed a logic bug in \u003ccode\u003epytest.RaisesGroup\u003c/code\u003e which would might cause it to display incorrect \u0026quot;It matches \u003c!-- raw HTML omitted --\u003eFooError()\u003c!-- raw HTML omitted --\u003e which was paired with \u003c!-- raw HTML omitted --\u003eBarError\u003c!-- raw HTML omitted --\u003e\u0026quot; messages.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14591\"\u003e#14591\u003c/a\u003e: Fixed a regression in pytest 9.1.0 which caused overriding a parametrized fixture with an indirect \u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pytest\"\u003e\u003ccode\u003e@​pytest\u003c/code\u003e\u003c/a\u003e.mark.parametrize\u003c!-- raw HTML omitted --\u003e to fail with \u0026quot;duplicate parametrization of '\u0026lt;fixture name\u0026gt;'\u0026quot;.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14606\"\u003e#14606\u003c/a\u003e: Fixed \u003ccode\u003elist-item\u003c/code\u003e typing errors from mypy in \u003ccode\u003e@pytest.mark.parametrize \u0026lt;pytest.mark.parametrize ref\u0026gt;\u003c/code\u003e \u003ccode\u003eargvalues\u003c/code\u003e parameter.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14608\"\u003e#14608\u003c/a\u003e: Fixed a regression in pytest 9.1.0 where \u003ccode\u003econftest.py\u003c/code\u003e files located in \u003ccode\u003e\u0026lt;invocation dir\u0026gt;/test*\u003c/code\u003e were no longer loaded as initial conftests when invoked without arguments.\nThis could cause certain hooks (like \u003ccode\u003epytest_addoption\u003c/code\u003e) in these files to not fire.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e9.1.0\u003c/h2\u003e\n\u003ch1\u003epytest 9.1.0 (2026-06-13)\u003c/h1\u003e\n\u003ch2\u003eRemovals and backward incompatible breaking changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14533\"\u003e#14533\u003c/a\u003e: When using \u003ccode\u003e--doctest-modules\u003c/code\u003e, autouse fixtures with \u003ccode\u003emodule\u003c/code\u003e, \u003ccode\u003epackage\u003c/code\u003e or \u003ccode\u003esession\u003c/code\u003e scope that are defined inline in Python test modules (not plugins or conftests) will now possibly execute twice.\u003c/p\u003e\n\u003cp\u003eIf this is undesirable, move the fixture definition to a \u003ccode\u003econftest.py\u003c/code\u003e file if possible.\u003c/p\u003e\n\u003cp\u003eTechnical explanation for those interested:\nWhen using \u003c!-- raw HTML omitted --\u003e--doctest-modules\u003c!-- raw HTML omitted --\u003e, pytest possibly collects Python modules twice, once as \u003ccode\u003epytest.Module\u003c/code\u003e and once as a \u003ccode\u003eDoctestModule\u003c/code\u003e (depending on the configuration).\nDue to improvements in pytest's fixture implementation, if e.g. the \u003ccode\u003eDoctestModule\u003c/code\u003e collects a fixture, it is now visible to it only, and not to the \u003ccode\u003eModule\u003c/code\u003e.\nThis means that both need to register the fixtures independently.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDeprecations (removal in next major release)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/10819\"\u003e#10819\u003c/a\u003e: Added a deprecation warning for class-scoped fixtures defined as instance methods (without \u003ccode\u003e@classmethod\u003c/code\u003e). Such fixtures set attributes on a different instance than the test methods use, leading to unexpected behavior. Use \u003ccode\u003e@classmethod\u003c/code\u003e decorator instead -- by \u003ccode\u003eyastcher\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eSee \u003ccode\u003e10819\u003c/code\u003e and \u003ccode\u003e14011\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12882\"\u003e#12882\u003c/a\u003e: Calling \u003ccode\u003erequest.getfixturevalue() \u0026lt;pytest.FixtureRequest.getfixturevalue\u0026gt;\u003c/code\u003e during teardown to request a fixture that was not already requested is now deprecated and will become an error in pytest 10.\u003c/p\u003e\n\u003cp\u003eSee \u003ccode\u003edynamic-fixture-request-during-teardown\u003c/code\u003e for details.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13409\"\u003e#13409\u003c/a\u003e: Using non-\u003ccode\u003e~collections.abc.Collection\u003c/code\u003e iterables (such as generators, iterators, or custom iterable objects) for the \u003ccode\u003eargvalues\u003c/code\u003e parameter in \u003ccode\u003e@pytest.mark.parametrize \u0026lt;pytest.mark.parametrize ref\u0026gt;\u003c/code\u003e and \u003ccode\u003emetafunc.parametrize \u0026lt;pytest.Metafunc.parametrize\u0026gt;\u003c/code\u003e is now deprecated.\u003c/p\u003e\n\u003cp\u003eThese iterables get exhausted after the first iteration,\nleading to tests getting unexpectedly skipped in cases such as running \u003ccode\u003epytest.main()\u003c/code\u003e multiple times,\nusing class-level parametrize decorators,\nor collecting tests multiple times.\u003c/p\u003e\n\u003cp\u003eSee \u003ccode\u003eparametrize-iterators\u003c/code\u003e for details and suggestions.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13946\"\u003e#13946\u003c/a\u003e: The private \u003ccode\u003econfig.inicfg\u003c/code\u003e attribute is now deprecated.\nUse \u003ccode\u003econfig.getini() \u0026lt;pytest.Config.getini\u0026gt;\u003c/code\u003e to access configuration values instead.\u003c/p\u003e\n\u003cp\u003eSee \u003ccode\u003econfig-inicfg\u003c/code\u003e for more details.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14004\"\u003e#14004\u003c/a\u003e: Passing \u003ccode\u003ebaseid\u003c/code\u003e to \u003ccode\u003e~pytest.FixtureDef\u003c/code\u003e or \u003ccode\u003enodeid\u003c/code\u003e strings to fixture registration APIs is now deprecated. These are internal pytest APIs that are used by some plugins.\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/pytest-dev/pytest/commit/cf470ec0bf7eb89cd97dd56df4859eae5db46447\"\u003e\u003ccode\u003ecf470ec\u003c/code\u003e\u003c/a\u003e Prepare release version 9.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/e0c8ce6cc5db1f08363be6f152c32e6838df2690\"\u003e\u003ccode\u003ee0c8ce6\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14625\"\u003e#14625\u003c/a\u003e from pytest-dev/patchback/backports/9.1.x/a07c31a97...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/1b82d1694fce22385ee7a4287917fbafbaf2e757\"\u003e\u003ccode\u003e1b82d16\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14624\"\u003e#14624\u003c/a\u003e from pytest-dev/patchback/backports/9.1.x/b375b79ec...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/501c4bc784da3b08bfcaa64858eba5d15dc59e53\"\u003e\u003ccode\u003e501c4bc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14596\"\u003e#14596\u003c/a\u003e from bluetech/doc-classmethod\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/b61f588e36e9377c3d1d3f06bece1da0fc31d9ca\"\u003e\u003ccode\u003eb61f588\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14622\"\u003e#14622\u003c/a\u003e from chrisburr/fix-14608-initial-conftest-test-subdir\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/9a567e009f4d2da3ce1721c6db3109cb5744d40a\"\u003e\u003ccode\u003e9a567e0\u003c/code\u003e\u003c/a\u003e [automated] Update plugin list (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14617\"\u003e#14617\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14618\"\u003e#14618\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/ef8b2993e5b48639e4a3d97d0525df9760781384\"\u003e\u003ccode\u003eef8b299\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14620\"\u003e#14620\u003c/a\u003e from pytest-dev/patchback/backports/9.1.x/680f9f3ed...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/66abd0784d4cb7c1ba44ab9a8896506cd4985acc\"\u003e\u003ccode\u003e66abd07\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14220\"\u003e#14220\u003c/a\u003e from bysiber/fix-stale-iexp-raisesgroup\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/79fbf93b666cac5f27c9dad047943d47b766c8d5\"\u003e\u003ccode\u003e79fbf93\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14612\"\u003e#14612\u003c/a\u003e from pytest-dev/patchback/backports/9.1.x/974ed48b6...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/0d312eb876177e9f1c04262b54060a41034ebf5c\"\u003e\u003ccode\u003e0d312eb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14611\"\u003e#14611\u003c/a\u003e from bluetech/parametrize-argvalues-typing\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest/compare/8.4.2...9.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.12.12 to 0.16.5\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.16.5\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-27.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow rules without codes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28049\"\u003e#28049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIntroduce category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27666\"\u003e#27666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate preview default rules and categories (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27877\"\u003e#27877\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Detect blocking generic HTTP requests (\u003ccode\u003eASYNC210\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28024\"\u003e#28024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-datetimez\u003c/code\u003e] Allow timezone-safe \u003ccode\u003estrptime\u003c/code\u003e chains (\u003ccode\u003eDTZ007\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28023\"\u003e#28023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Respect side effects in \u003ccode\u003elambda\u003c/code\u003e defaults (\u003ccode\u003eSIM401\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28000\"\u003e#28000\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix duplicated \u0026quot;of\u0026quot; in \u003ccode\u003eClientOptions\u003c/code\u003e doc comment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27978\"\u003e#27978\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument rule acceptance guidelines (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27910\"\u003e#27910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument the new category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27906\"\u003e#27906\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/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sharkdp\"\u003e\u003ccode\u003e@​sharkdp\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelle-openai\"\u003e\u003ccode\u003e@​jelle-openai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aarushkandukoori\"\u003e\u003ccode\u003e@​aarushkandukoori\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.16.5\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.16.5/ruff-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eInstall prebuilt binaries via powershell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003epowershell -ExecutionPolicy Bypass -c \u0026quot;irm https://releases.astral.sh/github/ruff/releases/download/0.16.5/ruff-installer.ps1 | iex\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eDownload ruff 0.16.5\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/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.16.5\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-27.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow rules without codes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28049\"\u003e#28049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIntroduce category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27666\"\u003e#27666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate preview default rules and categories (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27877\"\u003e#27877\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Detect blocking generic HTTP requests (\u003ccode\u003eASYNC210\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28024\"\u003e#28024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-datetimez\u003c/code\u003e] Allow timezone-safe \u003ccode\u003estrptime\u003c/code\u003e chains (\u003ccode\u003eDTZ007\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28023\"\u003e#28023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Respect side effects in \u003ccode\u003elambda\u003c/code\u003e defaults (\u003ccode\u003eSIM401\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28000\"\u003e#28000\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix duplicated \u0026quot;of\u0026quot; in \u003ccode\u003eClientOptions\u003c/code\u003e doc comment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27978\"\u003e#27978\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument rule acceptance guidelines (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27910\"\u003e#27910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument the new category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27906\"\u003e#27906\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/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sharkdp\"\u003e\u003ccode\u003e@​sharkdp\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelle-openai\"\u003e\u003ccode\u003e@​jelle-openai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aarushkandukoori\"\u003e\u003ccode\u003e@​aarushkandukoori\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.16.4\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-20.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-use-pathlib\u003c/code\u003e] Add autofix for \u003ccode\u003ePTH116\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26460\"\u003e#26460\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Restrict \u003ccode\u003edelete-full-slice\u003c/code\u003e to lists (\u003ccode\u003eFURB131\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27711\"\u003e#27711\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Skip \u003ccode\u003eFURB101\u003c/code\u003e and \u003ccode\u003eFURB103\u003c/code\u003e when the \u003ccode\u003eopen\u003c/code\u003e argument is a file descriptor (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27643\"\u003e#27643\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eInvalidInstruction\u003c/code\u003e on Windows CPUs that do not support \u003ccode\u003ePOPCNT\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27803\"\u003e#27803\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Emit semantic syntax errors in string type definitions as \u003ccode\u003eF722\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27835\"\u003e#27835\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Allow \u003ccode\u003eos._exit\u003c/code\u003e imports in \u003ccode\u003eimport-private-name\u003c/code\u003e (\u003ccode\u003ePLC2701\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27738\"\u003e#27738\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/9e4938c4a60bed3e87a11ee1e1db1bd23f4d964a\"\u003e\u003ccode\u003e9e4938c\u003c/code\u003e\u003c/a\u003e Bump 0.16.5 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28110\"\u003e#28110\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/aad0e909ef1390f4b2a3ba8aa0a67fb8ea5cbacd\"\u003e\u003ccode\u003eaad0e90\u003c/code\u003e\u003c/a\u003e Allow rules without codes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28049\"\u003e#28049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5fdab73c5052350400c36b08c5d7710210343bc4\"\u003e\u003ccode\u003e5fdab73\u003c/code\u003e\u003c/a\u003e Update preview default rules and categories (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27877\"\u003e#27877\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/29c8e5b2d0a46eb7dc4ff11c1b0a0dc5ccea52e4\"\u003e\u003ccode\u003e29c8e5b\u003c/code\u003e\u003c/a\u003e Document rule acceptance guidelines (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27910\"\u003e#27910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/50a4d7fd106603a5616b01ac3bef3306252b248f\"\u003e\u003ccode\u003e50a4d7f\u003c/code\u003e\u003c/a\u003e Document the new category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27906\"\u003e#27906\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ada87950ea188f882f69b7bd6e2213a9696e3ee2\"\u003e\u003ccode\u003eada8795\u003c/code\u003e\u003c/a\u003e Introduce category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27666\"\u003e#27666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d8947238863b61922bfc83f07edcc697c1cc07c0\"\u003e\u003ccode\u003ed894723\u003c/code\u003e\u003c/a\u003e [ty] Infer lambda parameters through callable type aliases (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28109\"\u003e#28109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/2685fdebbcf9938736fed8c45886a629f9c99a06\"\u003e\u003ccode\u003e2685fde\u003c/code\u003e\u003c/a\u003e [ty] Narrow functional enum members in \u003ccode\u003e==\u003c/code\u003e and \u003ccode\u003ematch\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28103\"\u003e#28103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/efcffd2178ce62e9951a53d4c50cadc225a0cfec\"\u003e\u003ccode\u003eefcffd2\u003c/code\u003e\u003c/a\u003e [ty] Intersection simplifications with subtype-related generic specialization...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/eb780488037504e11f145ed778654fd8a825028b\"\u003e\u003ccode\u003eeb78048\u003c/code\u003e\u003c/a\u003e [ty] Bump ecosystem-analyzer for HTML escaping (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28104\"\u003e#28104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.12.12...0.16.5\"\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/sebia1993/aruba-mm-session-cleanup/pull/5","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/sebia1993%2Faruba-mm-session-cleanup/issues/5","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/5/packages"}],"issue_packages":[{"old_version":"1.7.10","new_version":"1.9.4","update_type":"minor","path":null,"pr_created_at":"2026-09-28T23:18:47.000Z","version_change":"1.7.10 → 1.9.4","issue":{"uuid":"5622573368","node_id":"PR_kwDOGLIeyc8AAAABFmE1Bw","number":1611,"state":"open","title":"Bump the python-packages group across 1 directory with 38 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-28T23:18:47.000Z","updated_at":"2026-09-29T07:45:58.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python-packages","update_count":38,"packages":[{"name":"sqlalchemy","old_version":"2.0.51","new_version":"2.1.1","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"coverage","old_version":"7.6.1","new_version":"7.16.2","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"flake8-rst-docstrings","old_version":"0.3.0","new_version":"0.3.1","repository_url":"https://github.com/peterjc/flake8-rst-docstrings"},{"name":"pygments","old_version":"2.19.2","new_version":"2.21.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pyupgrade","old_version":"3.8.0","new_version":"3.21.2","repository_url":"https://github.com/asottile/pyupgrade"},{"name":"reorder-python-imports","old_version":"3.14.0","new_version":"3.17.0","repository_url":"https://github.com/asottile/reorder-python-imports"},{"name":"alembic","old_version":"1.11.1","new_version":"1.20.0","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"bandit","old_version":"1.7.10","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"},{"name":"binaryornot","old_version":"0.4.4","new_version":"0.6.0","repository_url":"https://github.com/binaryornot/binaryornot"},{"name":"cfgv","old_version":"3.4.0","new_version":"3.5.0","repository_url":"https://github.com/asottile/cfgv"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.5.1","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"classify-imports","old_version":"4.2.0","new_version":"4.5.0","repository_url":"https://github.com/asottile/classify-imports"},{"name":"commonmark","old_version":"0.9.1","new_version":"0.9.2","repository_url":"https://github.com/rtfd/commonmark.py"},{"name":"cookiecutter","old_version":"2.6.0","new_version":"2.7.1","repository_url":"https://github.com/cookiecutter/cookiecutter"},{"name":"distlib","old_version":"0.3.9","new_version":"0.4.3","repository_url":"https://github.com/pypa/distlib"},{"name":"gitpython","old_version":"3.1.50","new_version":"3.1.62","repository_url":"https://github.com/gitpython-developers/GitPython"},{"name":"identify","old_version":"2.6.1","new_version":"2.6.20","repository_url":"https://github.com/pre-commit/identify"},{"name":"idna","old_version":"3.15","new_version":"3.20","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":"mako","old_version":"1.3.8","new_version":"1.4.3","repository_url":"https://github.com/sqlalchemy/mako"},{"name":"mypy-extensions","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/python/mypy_extensions"},{"name":"nodeenv","old_version":"1.9.1","new_version":"1.11.0","repository_url":"https://github.com/ekalinin/nodeenv"},{"name":"platformdirs","old_version":"4.3.6","new_version":"4.12.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pluggy","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pluggy"},{"name":"pyparsing","old_version":"3.0.9","new_version":"3.3.3","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"python-discovery","old_version":"1.6.0","new_version":"1.6.1","repository_url":"https://github.com/tox-dev/python-discovery"},{"name":"requests","old_version":"2.32.3","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"ruamel-yaml","old_version":"0.18.16","new_version":"0.19.1"},{"name":"snowballstemmer","old_version":"3.0.1","new_version":"3.1.1","repository_url":"https://github.com/snowballstem/snowball"},{"name":"soupsieve","old_version":"2.6","new_version":"2.10","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"sphinxcontrib-htmlhelp","old_version":"2.0.1","new_version":"2.1.0","repository_url":"https://github.com/sphinx-doc/sphinxcontrib-htmlhelp"},{"name":"stevedore","old_version":"5.3.0","new_version":"5.9.1"},{"name":"tokenize-rt","old_version":"6.0.0","new_version":"6.2.0","repository_url":"https://github.com/asottile/tokenize-rt"},{"name":"tornado","old_version":"6.4.2","new_version":"6.5.10","repository_url":"https://github.com/tornadoweb/tornado"},{"name":"typer","old_version":"0.20.1","new_version":"0.24.2","repository_url":"https://github.com/fastapi/typer"},{"name":"tzdata","old_version":"2026.2","new_version":"2026.4","repository_url":"https://github.com/python/tzdata"},{"name":"urllib3","old_version":"2.2.3","new_version":"2.8.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"virtualenv","old_version":"21.4.2","new_version":"21.13.0","repository_url":"https://github.com/pypa/virtualenv"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-packages group with 38 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.51` | `2.1.1` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.6.1` | `7.16.2` |\n| [flake8-rst-docstrings](https://github.com/peterjc/flake8-rst-docstrings) | `0.3.0` | `0.3.1` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.2` | `2.21.0` |\n| [pyupgrade](https://github.com/asottile/pyupgrade) | `3.8.0` | `3.21.2` |\n| [reorder-python-imports](https://github.com/asottile/reorder-python-imports) | `3.14.0` | `3.17.0` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.11.1` | `1.20.0` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.7.10` | `1.9.4` |\n| [binaryornot](https://github.com/binaryornot/binaryornot) | `0.4.4` | `0.6.0` |\n| [cfgv](https://github.com/asottile/cfgv) | `3.4.0` | `3.5.0` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.5.1` |\n| [classify-imports](https://github.com/asottile/classify-imports) | `4.2.0` | `4.5.0` |\n| [commonmark](https://github.com/rtfd/commonmark.py) | `0.9.1` | `0.9.2` |\n| [cookiecutter](https://github.com/cookiecutter/cookiecutter) | `2.6.0` | `2.7.1` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.9` | `0.4.3` |\n| [gitpython](https://github.com/gitpython-developers/GitPython) | `3.1.50` | `3.1.62` |\n| [identify](https://github.com/pre-commit/identify) | `2.6.1` | `2.6.20` |\n| [idna](https://github.com/kjd/idna) | `3.15` | `3.20` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.0` |\n| [mako](https://github.com/sqlalchemy/mako) | `1.3.8` | `1.4.3` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [nodeenv](https://github.com/ekalinin/nodeenv) | `1.9.1` | `1.11.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.3.6` | `4.12.1` |\n| [pluggy](https://github.com/pytest-dev/pluggy) | `1.5.0` | `1.6.0` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.0.9` | `3.3.3` |\n| [python-discovery](https://github.com/tox-dev/python-discovery) | `1.6.0` | `1.6.1` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.34.2` |\n| ruamel-yaml | `0.18.16` | `0.19.1` |\n| [snowballstemmer](https://github.com/snowballstem/snowball) | `3.0.1` | `3.1.1` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.6` | `2.10` |\n| [sphinxcontrib-htmlhelp](https://github.com/sphinx-doc/sphinxcontrib-htmlhelp) | `2.0.1` | `2.1.0` |\n| [stevedore](https://docs.openstack.org/stevedore) | `5.3.0` | `5.9.1` |\n| [tokenize-rt](https://github.com/asottile/tokenize-rt) | `6.0.0` | `6.2.0` |\n| [tornado](https://github.com/tornadoweb/tornado) | `6.4.2` | `6.5.10` |\n| [typer](https://github.com/fastapi/typer) | `0.20.1` | `0.24.2` |\n| [tzdata](https://github.com/python/tzdata) | `2026.2` | `2026.4` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.2.3` | `2.8.0` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `21.4.2` | `21.13.0` |\n\n\nUpdates `sqlalchemy` from 2.0.51 to 2.1.1\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.1.1\u003c/h1\u003e\n\u003cp\u003eReleased: September 25, 2026\u003c/p\u003e\n\u003ch2\u003eplatform\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[platform] [bug]\u003c/strong\u003e Removed the legacy underscore-separated extra names such as\n\u003ccode\u003emssql_pymssql\u003c/code\u003e and \u003ccode\u003epostgresql_psycopg\u003c/code\u003e from \u003ccode\u003epyproject.toml\u003c/code\u003e.\nThey normalize to the same names as the existing dash-separated extras,\nwhich is disallowed by \u003ca href=\"https://peps.python.org/pep-0685\"\u003ePEP 685\u003c/a\u003e, and caused the 2.1.0 source\ndistribution to fail to build with installers that enforce this rule,\nsuch as uv. The underscore spellings continue to work when installing,\nas installers normalize extra names before matching them.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13604\"\u003e#13604\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.1.0\u003c/h1\u003e\n\u003cp\u003eReleased: September 24, 2026\u003c/p\u003e\n\u003ch2\u003eorm\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [feature]\u003c/strong\u003e Added \u003ccode\u003e_orm.composite.column_template\u003c/code\u003e parameter to\n\u003ccode\u003e_orm.composite()\u003c/code\u003e.  When the composite class is a dataclass, this\nparameter accepts a string template such as \u003ccode\u003e\u0026quot;person_%s\u0026quot;\u003c/code\u003e, containing\nexactly one \u003ccode\u003e%s\u003c/code\u003e placeholder, that's used to generate column names for\ndataclass fields that don't otherwise have an explicit name, rather than\nusing the bare field name.  This removes the need to hand-write a\n\u003ccode\u003e_orm.mapped_column()\u003c/code\u003e for each field when the same composite dataclass\nis mapped multiple times on the same class with different column-name\nprefixes.  Pull request courtesy Leonardo Rosa.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/12575\"\u003e#12575\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 pickling an ORM object that had an instance level lazy\nloader established, such as when the \u003ccode\u003e_orm.raiseload()\u003c/code\u003e option is used,\nwould emit a spurious warning regarding the loader containing additional\ncriteria, if the object had itself been unpickled from a previous\nserialization.  This would occur for objects that cross more than one\nserialization boundary, such as when using multiprocessing.\u003c/p\u003e\n\u003cp\u003eThis change is also \u003cstrong\u003ebackported\u003c/strong\u003e to: 2.0.53\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13574\"\u003e#13574\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 calling \u003ccode\u003e_orm.aliased()\u003c/code\u003e against an existing\n\u003ccode\u003e_orm.aliased()\u003c/code\u003e construct, without passing an explicit selectable,\nwould disregard the selectable of the existing construct and produce an\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.6.1 to 7.16.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/releases\"\u003ecoverage's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.16.2\u003c/h2\u003e\n\u003ch2\u003eVersion 7.16.2 — 2026-09-27\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: on Python 3.14 and later, a \u003ccode\u003efor\u003c/code\u003e loop completing immediately before a function return could mistakenly report an uncovered branch. This is now fixed, closing \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2168\"\u003eissue 2168\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFix: on Python 3.14 and later, the \u003ccode\u003eelse\u003c/code\u003e clause of a \u003ccode\u003etry\u003c/code\u003e whose body is a \u003ccode\u003ewith\u003c/code\u003e statement could incorrectly be reported as covered when the \u003ccode\u003ewith\u003c/code\u003e raised. This is now fixed, closing \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2289\"\u003eissue 2289\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFix: with \u003ccode\u003edynamic_context = test_function\u003c/code\u003e, test methods written as \u003ccode\u003e@staticmethod\u003c/code\u003e or \u003ccode\u003e@classmethod\u003c/code\u003e were not given a context of their own. Now they are, on Python 3.11 and later. Closes \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1923\"\u003eissue 1923\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e:arrow_right:  PyPI page: \u003ca href=\"https://pypi.org/project/coverage/7.16.2\"\u003ecoverage 7.16.2\u003c/a\u003e.\n:arrow_right:  To install: \u003ccode\u003epython3 -m pip install coverage==7.16.2\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003e7.16.1\u003c/h2\u003e\n\u003ch2\u003eVersion 7.16.1 — 2026-09-13\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: when the body of an irrefutable \u003ccode\u003ecase\u003c/code\u003e (like \u003ccode\u003ecase _:\u003c/code\u003e) is entirely excluded, the \u003ccode\u003ecase\u003c/code\u003e line is now excluded too, just as an excluded \u003ccode\u003eelse:\u003c/code\u003e body removes the \u003ccode\u003eelse:\u003c/code\u003e line. Previously the \u003ccode\u003ecase\u003c/code\u003e line was left behind and reported as missing. Closes \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1563\"\u003eissue 1563\u003c/a\u003e with \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2269\"\u003epull 2269\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFix: using \u003ca href=\"https://coverage.readthedocs.io/en/latest/api_coveragedata.html#coverage.CoverageData.update\"\u003eCoverageData.update()\u003c/a\u003e twice on an in-memory database would fail, as described in \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2279\"\u003eissue 2279\u003c/a\u003e. This is now fixed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e:arrow_right:  PyPI page: \u003ca href=\"https://pypi.org/project/coverage/7.16.1\"\u003ecoverage 7.16.1\u003c/a\u003e.\n:arrow_right:  To install: \u003ccode\u003epython3 -m pip install coverage==7.16.1\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003e7.16.0\u003c/h2\u003e\n\u003ch2\u003eVersion 7.16.0 — 2026-08-28\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen combining files, now path separator slashes will automatically be converted to the local file system style. This makes it less necessary to define \u003ccode\u003e[paths]\u003c/code\u003e configuration to combine data across operating systems. Fixes \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2266\"\u003eissue 2266\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eThe \u003ca href=\"https://coverage.readthedocs.io/en/latest/api_coverage.html#coverage.Coverage.switch_context\"\u003eCoverage.switch_context()\u003c/a\u003e method now returns the previous context.\u003c/li\u003e\n\u003cli\u003eFix: previously, a \u003ccode\u003e[paths]\u003c/code\u003e pattern would be replaced everywhere in a file path when it was only meant to be replaced once, in the leading portion of the path. This is now fixed, in \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2268\"\u003epull 2268\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixes to validation of options and configuration settings:\n\u003cul\u003e\n\u003cli\u003eNegative precision settings now always cause useful error messages (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2261\"\u003epull 2261\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAn invalid regex in the \u003ccode\u003e--contexts\u003c/code\u003e option (or the \u003ccode\u003e[report] contexts\u003c/code\u003e setting) reported a confusing “Couldn’t use data file …: user-defined function raised exception” error. Now it raises a proper configuration error naming the bad regex, like other regex settings do (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2262\"\u003epull 2262\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eNon-string values in TOML configuration settings now produce a helpful error message instead of a traceback. This affects list settings whose elements aren’t strings (like \u003ccode\u003eomit\u003c/code\u003e, \u003ccode\u003eexclude_lines\u003c/code\u003e, or a \u003ccode\u003e[paths]\u003c/code\u003e entry), file settings like \u003ccode\u003edata_file\u003c/code\u003e, and any wrong-typed value in the \u003ccode\u003e[paths]\u003c/code\u003e section (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2263\"\u003epull 2263\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ecoverage run\u003c/code\u003e refuses run-affecting command-line options like \u003ccode\u003e--branch\u003c/code\u003e alongside \u003ccode\u003e--concurrency=multiprocessing\u003c/code\u003e, since they can’t reach the subprocesses. The check only recognized \u003ccode\u003emultiprocessing\u003c/code\u003e as the entire option value, so \u003ccode\u003e--concurrency=multiprocessing,thread\u003c/code\u003e slipped through and failed later with “Can’t combine statement coverage data with branch data”. Each named concurrency library is now properly considered (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2270\"\u003epull 2270\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eFix: \u003ccode\u003ecoverage annotate -d DIR\u003c/code\u003e raised an \u003ccode\u003eAssertionError\u003c/code\u003e if any measured file had an extension other than \u003ccode\u003e.py\u003c/code\u003e, such as a \u003ccode\u003e.pyw\u003c/code\u003e file on Windows. The original extension is now restored on the annotated copy (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2265\"\u003epull 2265\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e:arrow_right:  PyPI page: \u003ca href=\"https://pypi.org/project/coverage/7.16.0\"\u003ecoverage 7.16.0\u003c/a\u003e.\n:arrow_right:  To install: \u003ccode\u003epython3 -m pip install coverage==7.16.0\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003e7.15.4\u003c/h2\u003e\n\u003ch2\u003eVersion 7.15.4 — 2026-08-06\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: in the HTML report, a source file name containing a double quote (legal on POSIX) wasn’t escaped where it’s dropped into the \u003ccode\u003ehref\u003c/code\u003e of the index and prev/next links, so it could close the attribute early and inject markup. Page URLs are now escaped. Thanks, \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2227\"\u003eRajath Mohare\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFix: the LCOV report wrote file names and other fields into its line-oriented records without neutralizing control characters. A measured file whose name contained a newline (legal on POSIX) could forge extra records, inflating the coverage seen by tools that read the report. Control characters in a field are now replaced. Thanks, \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2226\"\u003eRajath Mohare\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eWheels are now provided for Python 3.15.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e:arrow_right:  PyPI page: \u003ca href=\"https://pypi.org/project/coverage/7.15.4\"\u003ecoverage 7.15.4\u003c/a\u003e.\n:arrow_right:  To install: \u003ccode\u003epython3 -m pip install coverage==7.15.4\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003e7.15.3\u003c/h2\u003e\n\u003ch2\u003eVersion 7.15.3 — 2026-08-02\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: the sysmon core is incompatible with dynamic contexts. Previously, the combination would be prevented when read from the coverage.py configuration. But using the context API as pytest-cov does, contexts would be silently dropped. Now a warning is issued, thanks to \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2234\"\u003eJisang Han\u003c/a\u003e. Closes \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2200\"\u003eissue 2200\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eA performance improvement in the low-level line number bookkeeping when combining data files, thanks to \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2239\"\u003eKevin Turcios\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/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.16.2 — 2026-09-27\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: on Python 3.14 and later, a \u003ccode\u003efor\u003c/code\u003e loop completing immediately before a\nfunction return could mistakenly report an uncovered branch. This is now\nfixed, closing \u003ccode\u003eissue 2168\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: on Python 3.14 and later, the \u003ccode\u003eelse\u003c/code\u003e clause of a \u003ccode\u003etry\u003c/code\u003e whose body is\na \u003ccode\u003ewith\u003c/code\u003e statement could incorrectly be reported as covered when the\n\u003ccode\u003ewith\u003c/code\u003e raised.  This is now fixed, closing \u003ccode\u003eissue 2289\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: with \u003ccode\u003edynamic_context = test_function\u003c/code\u003e, test methods written as\n\u003ccode\u003e@staticmethod\u003c/code\u003e or \u003ccode\u003e@classmethod\u003c/code\u003e were not given a context of their own.\nNow they are, on Python 3.11 and later.  Closes \u003ccode\u003eissue 1923\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1923: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1923\"\u003ecoveragepy/coveragepy#1923\u003c/a\u003e\n.. _issue 2168: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2168\"\u003ecoveragepy/coveragepy#2168\u003c/a\u003e\n.. _issue 2289: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2289\"\u003ecoveragepy/coveragepy#2289\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-16-1:\u003c/p\u003e\n\u003ch2\u003eVersion 7.16.1 — 2026-09-13\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: when the body of an irrefutable \u003ccode\u003ecase\u003c/code\u003e (like \u003ccode\u003ecase _:\u003c/code\u003e) is entirely\nexcluded, the \u003ccode\u003ecase\u003c/code\u003e line is now excluded too, just as an excluded\n\u003ccode\u003eelse:\u003c/code\u003e body removes the \u003ccode\u003eelse:\u003c/code\u003e line.  Previously the \u003ccode\u003ecase\u003c/code\u003e line was\nleft behind and reported as missing.  Closes \u003ccode\u003eissue 1563\u003c/code\u003e_ with \u003ccode\u003epull 2269\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: using :meth:\u003ccode\u003e.CoverageData.update\u003c/code\u003e twice on an in-memory database would\nfail, as described in \u003ccode\u003eissue 2279\u003c/code\u003e_. This is now fixed.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1563: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1563\"\u003ecoveragepy/coveragepy#1563\u003c/a\u003e\n.. _pull 2269: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2269\"\u003ecoveragepy/coveragepy#2269\u003c/a\u003e\n.. _issue 2279: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2279\"\u003ecoveragepy/coveragepy#2279\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-16-0:\u003c/p\u003e\n\u003ch2\u003eVersion 7.16.0 — 2026-08-28\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eWhen combining files, now path separator slashes will automatically be\nconverted to the local file system style. This makes it less necessary to\ndefine \u003ccode\u003e[paths]\u003c/code\u003e configuration to combine data across operating systems.\nFixes \u003ccode\u003eissue 2266\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe :meth:\u003ccode\u003e.Coverage.switch_context\u003c/code\u003e method now returns the previous context.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: previously, a \u003ccode\u003e[paths]\u003c/code\u003e pattern would be replaced everywhere in a file\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/5643ae7c682bbd56ee1ac2b11556145ab8c2cab0\"\u003e\u003ccode\u003e5643ae7\u003c/code\u003e\u003c/a\u003e docs: prep for 7.16.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a3e969fc6ce8273538702a2336d8c2674f8017d8\"\u003e\u003ccode\u003ea3e969f\u003c/code\u003e\u003c/a\u003e fix: dynamic_context for \u003ca href=\"https://github.com/staticmethod\"\u003e\u003ccode\u003e@​staticmethod\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/classmethod\"\u003e\u003ccode\u003e@​classmethod\u003c/code\u003e\u003c/a\u003e tests (issue 1923) (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/8ad72362f03e59643865d15ffadd002529a777a9\"\u003e\u003ccode\u003e8ad7236\u003c/code\u003e\u003c/a\u003e fix: stop counting the try/else line when a with statement raises (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2301\"\u003e#2301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c6dab1fc387d161fe5938ce9421a7a38ca81ae7f\"\u003e\u003ccode\u003ec6dab1f\u003c/code\u003e\u003c/a\u003e fix(debug): debug output doesn't mis-handle odd line separators \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2296\"\u003e#2296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/08fbc3229adc8e7681a0d9134d3d5beb1684ae54\"\u003e\u003ccode\u003e08fbc32\u003c/code\u003e\u003c/a\u003e style: Protocols should use \u003ccode\u003e...\u003c/code\u003e for method bodies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/bc7b0e386388148687241cadcab56ac3e17aea9c\"\u003e\u003ccode\u003ebc7b0e3\u003c/code\u003e\u003c/a\u003e refactor: positional-only args are better than pragmas\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/52afd6be360c3b949d69ff83aca873c119a7959a\"\u003e\u003ccode\u003e52afd6b\u003c/code\u003e\u003c/a\u003e Document parallel tox coverage data files (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2284\"\u003e#2284\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/f653aaec4c58f89375716389e4ca17dd056d2069\"\u003e\u003ccode\u003ef653aae\u003c/code\u003e\u003c/a\u003e fix: loop completion arcs on Python 3.14 (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2281\"\u003e#2281\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/cc1ced4d4c8ef7674a824002aa5157d1f37acd78\"\u003e\u003ccode\u003ecc1ced4\u003c/code\u003e\u003c/a\u003e test: PyPy still compiles comprehensions as functions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/85a9088395e89840cb11c1c86735ba1f7a62d50d\"\u003e\u003ccode\u003e85a9088\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.6.1...7.16.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flake8-rst-docstrings` from 0.3.0 to 0.3.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/peterjc/flake8-rst-docstrings/commit/357d42d8873d5e6c23066061045d367c184b2165\"\u003e\u003ccode\u003e357d42d\u003c/code\u003e\u003c/a\u003e Call this v0.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/peterjc/flake8-rst-docstrings/commit/a0f0415efb138a8a5ddb62cc0730f35c9f4c28ba\"\u003e\u003ccode\u003ea0f0415\u003c/code\u003e\u003c/a\u003e Allow for line-break in flake8 version output\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/peterjc/flake8-rst-docstrings/commit/12c425fcb2a51e8bddb0932a4d45a6150291f196\"\u003e\u003ccode\u003e12c425f\u003c/code\u003e\u003c/a\u003e Add RST220 for redefining an anonymous link\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/peterjc/flake8-rst-docstrings/commit/da9eeb146b33bc0ff07580e73d893669632c1b71\"\u003e\u003ccode\u003eda9eeb1\u003c/code\u003e\u003c/a\u003e Document testing in README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/peterjc/flake8-rst-docstrings/commit/84855652ea18c9a495f183acf6fff70aeba4fc1e\"\u003e\u003ccode\u003e8485565\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/peterjc/flake8-rst-docstrings/commit/a66b0bbc4aeab38d75e434184ffcc90ca5df0170\"\u003e\u003ccode\u003ea66b0bb\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/peterjc/flake8-rst-docstrings/commit/aa2e5685cd7a275d91b26395e3c0fef0a1efa9fb\"\u003e\u003ccode\u003eaa2e568\u003c/code\u003e\u003c/a\u003e Python 3.8 in installation text\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/peterjc/flake8-rst-docstrings/commit/74edef65a13f6edd4e36cfefdd500622c25603aa\"\u003e\u003ccode\u003e74edef6\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/peterjc/flake8-rst-docstrings/commit/863bb2a0104c5ed68613daf6c9ef1c7588676a2f\"\u003e\u003ccode\u003e863bb2a\u003c/code\u003e\u003c/a\u003e Actually, no point pushing this to PyPI yet\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/peterjc/flake8-rst-docstrings/commit/5a04fe58f9506f1b3889e8746dbbdf9934b1e492\"\u003e\u003ccode\u003e5a04fe5\u003c/code\u003e\u003c/a\u003e black\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/peterjc/flake8-rst-docstrings/compare/v0.3.0...v0.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pygments` from 2.19.2 to 2.21.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygments/pygments/releases\"\u003epygments's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.21.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eNew lexers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBitBake (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3103\"\u003e#3103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCaddyfile (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3225\"\u003e#3225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCEL (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3048\"\u003e#3048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePureScript (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/1077\"\u003e#1077\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3054\"\u003e#3054\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdated lexers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBash: Fix coloured keyword at the beginning of a name (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2926\"\u003e#2926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBoogie: Add missing Boogie and Civl Verifier keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3156\"\u003e#3156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eC#:\n\u003cul\u003e\n\u003cli\u003eRecognize interpolated verbatim strings with either \u003ccode\u003e$@\u003c/code\u003e or \u003ccode\u003e@$\u003c/code\u003e\nprefixes (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2685\"\u003e#2685\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport dollar-prefixed and multi-quote raw strings (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3129\"\u003e#3129\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2897\"\u003e#2897\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRecognize \u003ccode\u003eunion\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3182\"\u003e#3182\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eC/C++:\n\u003cul\u003e\n\u003cli\u003eAdd C23/C++26 attributes (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3084\"\u003e#3084\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd more C2Y keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3092\"\u003e#3092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHighlight a function following a namespace body (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2928\"\u003e#2928\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix C/C++ lexer support for multiline pre-processor comments (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3051\"\u003e#3051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e.ipp\u003c/code\u003e as a file extension (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3141\"\u003e#3141\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/1008\"\u003e#1008\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eClojure: Recognize named, octal and unicode character literals such as\n\u003ccode\u003e\\space\u003c/code\u003e and \u003ccode\u003e\\o377\u003c/code\u003e as a single token (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/979\"\u003e#979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCsound: Add missing opcode parameter type letter (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3161\"\u003e#3161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCUDA: Derive from the C++ lexer instead of C to highlight C++\nconstructs such as \u003ccode\u003etemplate\u003c/code\u003e, \u003ccode\u003eclass\u003c/code\u003e and \u003ccode\u003enamespace\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3127\"\u003e#3127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eD: Allow non-ASCII (Unicode) identifiers (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/1088\"\u003e#1088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFish: Fix single quote backslash escape (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3138\"\u003e#3138\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2821\"\u003e#2821\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eGo: Various lexer improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3199\"\u003e#3199\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eGoogleSQL: Require a word break after \u003ccode\u003eSET\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3167\"\u003e#3167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHexdump: Only match valid digits (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3200\"\u003e#3200\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2847\"\u003e#2847\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJavaScript: Highlight the \u003ccode\u003earguments\u003c/code\u003e object (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJsonnet: Recognize colons in array slice expressions (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2828\"\u003e#2828\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJSX: Allow apostrophes in element text (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2816\"\u003e#2816\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJulia: Fix rstrings backslash (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3140\"\u003e#3140\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2537\"\u003e#2537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eKotlin: Support companion objects without an explicit name (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2525\"\u003e#2525\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eKotlin: Don't let a nullable type marker (\u003ccode\u003e?\u003c/code\u003e) consume the following\ncharacter, so \u003ccode\u003eFoo?,\u003c/code\u003e and \u003ccode\u003ea?:b\u003c/code\u003e tokenize correctly (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2964\"\u003e#2964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eKusto: Recognize member-access dots in dynamic objects (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2779\"\u003e#2779\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLua: Various improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3143\"\u003e#3143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMacaulay2: Update symbols to 1.26.05 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3120\"\u003e#3120\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMarkdown:\n\u003cul\u003e\n\u003cli\u003eHighlight bold-italics (\u003ccode\u003e***...***\u003c/code\u003e and \u003ccode\u003e___...___\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3067\"\u003e#3067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix mention regex to support hyphens in usernames (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3139\"\u003e#3139\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3135\"\u003e#3135\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eMarkdown, reStructuredText, TiddlyWiki5: Fix wrong token offsets for\nembedded code blocks (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3133\"\u003e#3133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMathematica: Recognize \u003ccode\u003e\\[Name]\u003c/code\u003e named-character escapes such as\n\u003ccode\u003e\\[Nu]\u003c/code\u003e instead of emitting an \u003ccode\u003eError\u003c/code\u003e token (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3097\"\u003e#3097\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygments/pygments/blob/master/CHANGES\"\u003epygments's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.21.0\u003c/h2\u003e\n\u003cp\u003e(released August 17th, 2026)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eNew lexers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBitBake (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3103\"\u003e#3103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCaddyfile (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3225\"\u003e#3225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCEL (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3048\"\u003e#3048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePureScript (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/1077\"\u003e#1077\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3054\"\u003e#3054\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdated lexers:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBash: Fix coloured keyword at the beginning of a name (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2926\"\u003e#2926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBoogie: Add missing Boogie and Civl Verifier keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3156\"\u003e#3156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eC#:\n\u003cul\u003e\n\u003cli\u003eRecognize interpolated verbatim strings with either \u003ccode\u003e$@\u003c/code\u003e or \u003ccode\u003e@$\u003c/code\u003e\nprefixes (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2685\"\u003e#2685\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport dollar-prefixed and multi-quote raw strings (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3129\"\u003e#3129\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2897\"\u003e#2897\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRecognize \u003ccode\u003eunion\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3182\"\u003e#3182\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eC/C++:\n\u003cul\u003e\n\u003cli\u003eAdd C23/C++26 attributes (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3084\"\u003e#3084\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd more C2Y keywords (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3092\"\u003e#3092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHighlight a function following a namespace body (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2928\"\u003e#2928\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix C/C++ lexer support for multiline pre-processor comments (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3051\"\u003e#3051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e.ipp\u003c/code\u003e as a file extension (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3141\"\u003e#3141\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/1008\"\u003e#1008\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eClojure: Recognize named, octal and unicode character literals such as\n\u003ccode\u003e\\space\u003c/code\u003e and \u003ccode\u003e\\o377\u003c/code\u003e as a single token (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/979\"\u003e#979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCsound: Add missing opcode parameter type letter (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3161\"\u003e#3161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCUDA: Derive from the C++ lexer instead of C to highlight C++\nconstructs such as \u003ccode\u003etemplate\u003c/code\u003e, \u003ccode\u003eclass\u003c/code\u003e and \u003ccode\u003enamespace\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3127\"\u003e#3127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eD: Allow non-ASCII (Unicode) identifiers (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/1088\"\u003e#1088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFish: Fix single quote backslash escape (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3138\"\u003e#3138\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2821\"\u003e#2821\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eGo: Various lexer improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3199\"\u003e#3199\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eGoogleSQL: Require a word break after \u003ccode\u003eSET\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3167\"\u003e#3167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHexdump: Only match valid digits (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3200\"\u003e#3200\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2847\"\u003e#2847\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJavaScript: Highlight the \u003ccode\u003earguments\u003c/code\u003e object (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJsonnet: Recognize colons in array slice expressions (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2828\"\u003e#2828\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJSX: Allow apostrophes in element text (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2816\"\u003e#2816\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eJulia: Fix rstrings backslash (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3140\"\u003e#3140\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2537\"\u003e#2537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eKotlin: Support companion objects without an explicit name (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2525\"\u003e#2525\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eKotlin: Don't let a nullable type marker (\u003ccode\u003e?\u003c/code\u003e) consume the following\ncharacter, so \u003ccode\u003eFoo?,\u003c/code\u003e and \u003ccode\u003ea?:b\u003c/code\u003e tokenize correctly (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2964\"\u003e#2964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eKusto: Recognize member-access dots in dynamic objects (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2779\"\u003e#2779\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLua: Various improvements (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3143\"\u003e#3143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMacaulay2: Update symbols to 1.26.05 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3120\"\u003e#3120\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMarkdown:\n\u003cul\u003e\n\u003cli\u003eHighlight bold-italics (\u003ccode\u003e***...***\u003c/code\u003e and \u003ccode\u003e___...___\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3067\"\u003e#3067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix mention regex to support hyphens in usernames (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3139\"\u003e#3139\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3135\"\u003e#3135\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eMarkdown, reStructuredText, TiddlyWiki5: Fix wrong token offsets for\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/pygments/pygments/commit/a43b45dcf081b6010c6ab4428f149f7f6d2499c4\"\u003e\u003ccode\u003ea43b45d\u003c/code\u003e\u003c/a\u003e Get ready for the 2.21.0 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/d8f14cb395026abb288db38839f57499cba695e0\"\u003e\u003ccode\u003ed8f14cb\u003c/code\u003e\u003c/a\u003e Fix version_added for Purescript.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/19c581704c466cde59fd1a49e04c3424449110f3\"\u003e\u003ccode\u003e19c5817\u003c/code\u003e\u003c/a\u003e Remove superfluous parentheses from PostgresExplainLexer (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3232\"\u003e#3232\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/9992e0992ad273565f19ffb1b4c9cae96cd8dd00\"\u003e\u003ccode\u003e9992e09\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3191\"\u003e#3191\u003c/a\u003e from jvoisin/dupes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/bd225771e856b79e8cb5b81533e1eba0cf9fbf85\"\u003e\u003ccode\u003ebd22577\u003c/code\u003e\u003c/a\u003e Fix regexlint warnings after latest update.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/6a62df1d1fc77af7e9fc61325ef376297cadffbb\"\u003e\u003ccode\u003e6a62df1\u003c/code\u003e\u003c/a\u003e Release preparation: Update the changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/aabba32860b5ba15acabdcba9b436a32e92ce75e\"\u003e\u003ccode\u003eaabba32\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3221\"\u003e#3221\u003c/a\u003e from jvoisin/alter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/d3441d00a33467255b8b3ae9862f454e3aa58e3d\"\u003e\u003ccode\u003ed3441d0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/3225\"\u003e#3225\u003c/a\u003e from jvoisin/caddy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/c593f3f2f69e09670e58a121437a3c830a643071\"\u003e\u003ccode\u003ec593f3f\u003c/code\u003e\u003c/a\u003e Add a lexer for Caddy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/0644b532c8df1dd67b26471871d432d100252a11\"\u003e\u003ccode\u003e0644b53\u003c/code\u003e\u003c/a\u003e Simplify single-character regex alternations to character classes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pygments/pygments/compare/2.19.2...2.21.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyupgrade` from 3.8.0 to 3.21.2\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/pyupgrade/commit/75992aaa40730136014f34227e0135f63fc951b4\"\u003e\u003ccode\u003e75992aa\u003c/code\u003e\u003c/a\u003e v3.21.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/pyupgrade/commit/3a1254b1d9ee85380bafa043d0a781be7b5f3c93\"\u003e\u003ccode\u003e3a1254b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/asottile/pyupgrade/issues/1043\"\u003e#1043\u003c/a\u003e from asottile/unstring-annotation-multiline\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/pyupgrade/commit/98a37188adf22444e2c66062152e11fba5647a52\"\u003e\u003ccode\u003e98a3718\u003c/code\u003e\u003c/a\u003e fix unstringing multiline string annotations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/pyupgrade/commit/46c3d526905780be88d227f46e19f24f2593fbbe\"\u003e\u003ccode\u003e46c3d52\u003c/code\u003e\u003c/a\u003e v3.21.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/pyupgrade/commit/372cb618ce0368a25c97b6598e8f8778f21740d3\"\u003e\u003ccode\u003e372cb61\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/asottile/pyupgrade/issues/1040\"\u003e#1040\u003c/a\u003e from asottile/315-hax\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/pyupgrade/commit/fb9f5039e33bd9caa3a13c5fa1a2b20639aa16bf\"\u003e\u003ccode\u003efb9f503\u003c/code\u003e\u003c/a\u003e vendor cookie_re from cpython\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/pyupgrade/commit/afcce08e069d150a318f0a22f754cc87b797f34a\"\u003e\u003ccode\u003eafcce08\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/asottile/pyupgrade/issues/1036\"\u003e#1036\u003c/a\u003e from asottile/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/pyupgrade/commit/2deeeb00a1f4983750f17f063f55c5ba1df72cd4\"\u003e\u003ccode\u003e2deeeb0\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/pyupgrade/commit/cde85eac77266e20ba3ae9bf5f7d3d5c0cfa9f76\"\u003e\u003ccode\u003ecde85ea\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/asottile/pyupgrade/issues/1035\"\u003e#1035\u003c/a\u003e from asottile/all-repos_autofix_all-repos-manual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/pyupgrade/commit/c612b1b77c8d7b10794621efa077f01d132007a3\"\u003e\u003ccode\u003ec612b1b\u003c/code\u003e\u003c/a\u003e py310+\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/asottile/pyupgrade/compare/v3.8.0...v3.21.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `reorder-python-imports` from 3.14.0 to 3.17.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/reorder-python-imports/commit/5e38415c12154247a099c7023c210e3d458275b5\"\u003e\u003ccode\u003e5e38415\u003c/code\u003e\u003c/a\u003e v3.17.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/reorder-python-imports/commit/cd1247451e8cc03412540ccef8611b36e8f916a9\"\u003e\u003ccode\u003ecd12474\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/asottile/reorder-python-imports/issues/443\"\u003e#443\u003c/a\u003e from asottile/lazy-imports\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/reorder-python-imports/commit/f70daa1eb2f3dc700bdd0e548511cda7e8baf5d9\"\u003e\u003ccode\u003ef70daa1\u003c/code\u003e\u003c/a\u003e add support for lazy imports\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/reorder-python-imports/commit/72f91ea73273f0e152917bc57ab47cd581cdbff2\"\u003e\u003ccode\u003e72f91ea\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/asottile/reorder-python-imports/issues/440\"\u003e#440\u003c/a\u003e from asottile/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/reorder-python-imports/commit/aa8c9bf52cfb8c1c51de8a6ca25aee55da13c4b0\"\u003e\u003ccode\u003eaa8c9bf\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/reorder-python-imports/commit/2d9adf0c18fc88f14c83994b3d0a229f628adb2a\"\u003e\u003ccode\u003e2d9adf0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/asottile/reorder-python-imports/issues/439\"\u003e#439\u003c/a\u003e from asottile/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/reorder-python-imports/commit/27d317d239a68dc1053613aaf254b1fa36d85aa5\"\u003e\u003ccode\u003e27d317d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/reorder-python-imports/commit/9d992d54ec024eb005b6712e162d8d0f3ce0568a\"\u003e\u003ccode\u003e9d992d5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/asottile/reorder-python-imports/issues/438\"\u003e#438\u003c/a\u003e from asottile/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/reorder-python-imports/commit/9263e241dfa753e1cdc85194462855e47d6ef48d\"\u003e\u003ccode\u003e9263e24\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/reorder-python-imports/commit/16729cd0537dab53998690ea3985354560a5e1aa\"\u003e\u003ccode\u003e16729cd\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/asottile/reorder-python-imports/issues/437\"\u003e#437\u003c/a\u003e from asottile/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/asottile/reorder-python-imports/compare/v3.14.0...v3.17.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `alembic` from 1.11.1 to 1.20.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/alembic/releases\"\u003ealembic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.20.0\u003c/h1\u003e\n\u003cp\u003eReleased: September 11, 2026\u003c/p\u003e\n\u003ch2\u003eusecase\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[usecase] [batch]\u003c/strong\u003e Added a warning for the case where an unnamed CHECK constraint on a\nreflected table is omitted from a batch \u0026quot;recreate\u0026quot; operation.  An unnamed\nCHECK constraint can't be reliably carried over in a batch recreate\nas it may refer to columns that are being dropped or changed.  This\nomission was previously a silent operation.   The presence of any\n\u003ccode\u003e~sqlalchemy.schema.CheckConstraint\u003c/code\u003e in\n\u003ccode\u003eOperations.batch_alter_table.table_args\u003c/code\u003e is taken to indicate\nthat the case has been accommodated, and no warning is emitted.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1846\"\u003e#1846\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[usecase] [autogenerate]\u003c/strong\u003e Autogenerate now renders a warning comment above any rendered\n\u003ccode\u003eOperations.drop_constraint()\u003c/code\u003e directive for which the constraint name\nis \u003ccode\u003eNone\u003c/code\u003e, as is the case when a constraint that has no name in the model\nis dropped, most typically within the \u003ccode\u003edowngrade()\u003c/code\u003e function of a\nmigration that adds an unnamed constraint.  A warning is also emitted on\nthe console when the migration script is generated.   The directive\nrequires a non-None name in order to be able to emit a \u0026quot;DROP CONSTRAINT\u0026quot;\ncommand.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/916\"\u003e#916\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [batch]\u003c/strong\u003e Fixed bug in batch mode where adding a column with a type that generates\nits own CHECK constraint, such as \u003ccode\u003e~sqlalchemy.types.Boolean\u003c/code\u003e or\n\u003ccode\u003e~sqlalchemy.types.Enum\u003c/code\u003e with\n\u003ccode\u003e~sqlalchemy.types.Boolean.create_constraint\u003c/code\u003e set to \u003ccode\u003eTrue\u003c/code\u003e,\nwould emit the constraint twice when the table was recreated, once under\nthe name generated by the naming convention in use and once under the\nname given to the type.  The constraint is now emitted once, using the\nsame name that would be used outside of batch mode.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1768\"\u003e#1768\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [batch]\u003c/strong\u003e Fixed bug in batch mode where a CHECK constraint generated by a type such\nas \u003ccode\u003e~sqlalchemy.types.Boolean\u003c/code\u003e or \u003ccode\u003e~sqlalchemy.types.Enum\u003c/code\u003e\nwould lose the name established for it by the naming convention in use\nwhen the table was recreated, as the constraint was regenerated against\nthe temporary table used for the recreate operation.  The naming\nconvention is now resolved against the name of the table being replaced.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/alembic/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bandit` from 1.7.10 to 1.9.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/bandit/releases\"\u003ebandit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: fixed some typos in comments by \u003ca href=\"https://github.com/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/login-action from 3.6.0 to 3.7.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/PyCQA/bandit/pull/1353\"\u003ePyCQA/bandit#1353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.18.0 to 6.19.2 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/PyCQA/bandit/pull/1357\"\u003ePyCQA/bandit#1357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B613 crash when reading from stdin by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude filename in nosec 'no failed test' warning by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1363\"\u003ePyCQA/bandit#1363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B615 false positive when revision is set via variable by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1358\"\u003ePyCQA/bandit#1358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLower version guard in check_ast_node to Python 3.12 by \u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B106 reporting wrong line number on multiline function calls by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1360\"\u003ePyCQA/bandit#1360\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/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1334\"\u003ePyCQA/bandit#1334\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/PyCQA/bandit/pull/1335\"\u003ePyCQA/bandit#1335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B608 to detect \u003ccode\u003eVALUES(\u003c/code\u003e without space by \u003ca href=\"https://github.com/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd check for hardcoded passwords in dicts. by \u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\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/PyCQA/bandit/pull/1341\"\u003ePyCQA/bandit#1341\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate tox tests for Python 3.10 by \u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/setup-buildx-action from 3.11.1 to 3.12.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/PyCQA/bandit/pull/1347\"\u003ePyCQA/bandit#1347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimit B614 to torch.load deserializers by \u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\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/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eArgparse Python 3.14 enhancements by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1331\"\u003ePyCQA/bandit#1331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCheck whether Constant value is str by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1333\"\u003ePyCQA/bandit#1333\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.1...1.9.2\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.1...1.9.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMore Python version related fixes by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1327\"\u003ePyCQA/bandit#1327\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/PyCQA/bandit/commit/92ae8b82fb422a639f0ed8d99e96cea769594e08\"\u003e\u003ccode\u003e92ae8b8\u003c/code\u003e\u003c/a\u003e Fix B106 reporting wrong line number on multiline function calls (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1360\"\u003e#1360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c8c8a55c3307333b8eb46cb2ef46d49b1fad6546\"\u003e\u003ccode\u003ec8c8a55\u003c/code\u003e\u003c/a\u003e Lower version guard in check_ast_node to Python 3.12 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1355\"\u003e#1355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/8f2f9284fca830ca017b2e2cc3ddc2a7b74b7040\"\u003e\u003ccode\u003e8f2f928\u003c/code\u003e\u003c/a\u003e Fix B615 false positive when revision is set via variable (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1358\"\u003e#1358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e27493f71c114e0e5dfc0a475d225d7f9f4a7e2b\"\u003e\u003ccode\u003ee27493f\u003c/code\u003e\u003c/a\u003e Include filename in nosec 'no failed test' warning (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1363\"\u003e#1363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/b69b336450301d424e5ba04c9a58e8d41b7169b6\"\u003e\u003ccode\u003eb69b336\u003c/code\u003e\u003c/a\u003e Fix B613 crash when reading from stdin (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1361\"\u003e#1361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e418b798abcc3f2b00c07fd6315da8fe9aeead00\"\u003e\u003ccode\u003ee418b79\u003c/code\u003e\u003c/a\u003e Bump docker/build-push-action from 6.18.0 to 6.19.2 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1357\"\u003e#1357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/ff646fd7e0e34fb350196fc58448fad17178c27a\"\u003e\u003ccode\u003eff646fd\u003c/code\u003e\u003c/a\u003e Bump docker/login-action from 3.6.0 to 3.7.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1353\"\u003e#1353\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c0def6c7ebab60f98c28ba759d488f4fbe6dae89\"\u003e\u003ccode\u003ec0def6c\u003c/code\u003e\u003c/a\u003e chore: fixed some typos in comments (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1351\"\u003e#1351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/765f00d3f202f83f61d03f882f80a2d5142d81f8\"\u003e\u003ccode\u003e765f00d\u003c/code\u003e\u003c/a\u003e Limit B614 to torch.load deserializers (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1348\"\u003e#1348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/06fbbab0df3374ffa8ef24c6f601b2d5e1d4d429\"\u003e\u003ccode\u003e06fbbab\u003c/code\u003e\u003c/a\u003e Bump docker/setup-buildx-action from 3.11.1 to 3.12.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1347\"\u003e#1347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.7.10...1.9.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `binaryornot` from 0.4.4 to 0.6.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/binaryornot/binaryornot/releases\"\u003ebinaryornot's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eBinaryOrNot 0.6.0: Three Layers of Detection\u003c/h2\u003e\n\u003cp\u003eBinaryOrNot identifies binary files three ways: by extension, by file signature, and by content analysis. Pass it any file path and it tells you binary or text, accurately, across PNGs, PDFs, executables, archives, fonts, CJK-encoded text, and hundreds of other formats.\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003euv pip install --upgrade binaryornot\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eWhat's new\u003c/h3\u003e\n\u003cp\u003e\u003cstrong\u003e131 file types recognized by name.\u003c/strong\u003e \u003ccode\u003eis_binary()\u003c/code\u003e checks the filename extension against a curated list of binary types (images, audio, video, archives, executables, fonts, documents, databases, 3D models, CAD files, scientific data formats, game ROMs) before reading any bytes. A \u003ccode\u003e.png\u003c/code\u003e or \u003ccode\u003e.mp4\u003c/code\u003e is classified instantly with zero file I/O. The extension list ships as \u003ccode\u003ebinary_extensions.csv\u003c/code\u003e and is easy to inspect or extend. (\u003ca href=\"https://redirect.github.com/binaryornot/binaryornot/pull/648\"\u003e#648\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eIf you need pure content-based classification, pass \u003ccode\u003echeck_extensions=False\u003c/code\u003e:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003efrom binaryornot.check import is_binary\n\u003ch1\u003eExtension says binary, but let's check the actual bytes\u003c/h1\u003e\n\u003cp\u003eis_binary(\u0026quot;mystery_file.pyc\u0026quot;, check_extensions=False)\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e55 binary format signatures.\u003c/strong\u003e The detector checks file headers against known magic bytes for PNG, JPEG, PDF, ZIP, ELF, Mach-O, WebAssembly, SQLite, Parquet, Arrow IPC, and 45 more formats. Files that match a known signature are classified as binary immediately, before the statistical model runs. The signature table ships as \u003ccode\u003ebinary_formats.csv\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/binaryornot/binaryornot/pull/647\"\u003e#647\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eType annotations on the public API.\u003c/strong\u003e \u003ccode\u003eis_binary()\u003c/code\u003e, \u003ccode\u003eis_binary_string()\u003c/code\u003e, and \u003ccode\u003eget_starting_chunk()\u003c/code\u003e all have inline type annotations. Editors and type checkers know that \u003ccode\u003eis_binary()\u003c/code\u003e accepts \u003ccode\u003estr\u003c/code\u003e, \u003ccode\u003ebytes\u003c/code\u003e, or \u003ccode\u003epathlib.Path\u003c/code\u003e and returns \u003ccode\u003ebool\u003c/code\u003e. Credit to \u003ca href=\"https://github.com/smheidrich\"\u003e\u003ccode\u003e@​smheidrich\u003c/code\u003e\u003c/a\u003e for the initial type stubs proposal (\u003ca href=\"https://redirect.github.com/binaryornot/binaryornot/issues/627\"\u003e#627\u003c/a\u003e) and \u003ca href=\"https://github.com/AlJohri\"\u003e\u003ccode\u003e@​AlJohri\u003c/code\u003e\u003c/a\u003e for requesting \u003ccode\u003epathlib.Path\u003c/code\u003e support (\u003ca href=\"https://redirect.github.com/binaryornot/binaryornot/issues/628\"\u003e#628\u003c/a\u003e). (\u003ca href=\"https://redirect.github.com/binaryornot/binaryornot/pull/643\"\u003e#643\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eWhat's better\u003c/h3\u003e\n\u003cp\u003e\u003cstrong\u003eCompletely retrained decision tree on 4x more data.\u003c/strong\u003e The detector reads 512 bytes per file instead of 128, and the decision tree was rebuilt from scratch on those larger samples. A new feature, \u003ccode\u003ehas_magic_signature\u003c/code\u003e, gives the tree a second path to the right answer when statistical features are ambiguous. Byte ratios and entropy calculations reflect actual file content rather than header artifacts. (\u003ca href=\"https://redirect.github.com/binaryornot/binaryornot/pull/647\"\u003e#647\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003ePython 3.10+ compatibility.\u003c/strong\u003e BinaryOrNot installs on Python 3.10 through 3.14, supporting Cookiecutter, cookieplone, and other tools that run on older interpreters. Thanks \u003ca href=\"https://github.com/wesleybl\"\u003e\u003ccode\u003e@​wesleybl\u003c/code\u003e\u003c/a\u003e for raising this. (\u003ca href=\"https://redirect.github.com/binaryornot/binaryornot/pull/645\"\u003e#645\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eTest fixtures ship in the sdist.\u003c/strong\u003e \u003ccode\u003e.pyc\u003c/code\u003e and \u003ccode\u003e.DS_Store\u003c/code\u003e test fixtures are force-included in the source distribution so tests pass when run from the sdist. (\u003ca href=\"https://redirect.github.com/binaryornot/binaryornot/pull/646\"\u003e#646\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eWhat's fixed\u003c/h3\u003e\n\u003cp\u003e\u003cstrong\u003ePNGs with ambiguous headers are correctly classified.\u003c/strong\u003e A 512x512 grayscale+alpha PNG has an IHDR chunk with enough null bytes that the first 128 bytes accidentally decode as UTF-16. Extension checking, signature matching, and the retrained tree each independently prevent this misclassification. Closes \u003ca href=\"https://redirect.github.com/binaryornot/binaryornot/issues/642\"\u003e#642\u003c/a\u003e. (\u003ca href=\"https://redirect.github.com/binaryornot/binaryornot/pull/647\"\u003e#647\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eWhat's changed\u003c/h3\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ccode\u003eis_binary()\u003c/code\u003e has a new keyword argument.\u003c/strong\u003e \u003ccode\u003echeck_extensions\u003c/code\u003e (default \u003ccode\u003eTrue\u003c/code\u003e) controls whether the extension check runs. Existing code that calls \u003ccode\u003eis_binary(path)\u003c/code\u003e gets the extension check automatically. Code that passes \u003ccode\u003echeck_extensions=False\u003c/code\u003e gets the previous content-only behavior.\u003c/p\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/audreyfeldroy\"\u003e\u003ccode\u003e@​audreyfeldroy\u003c/code\u003e\u003c/a\u003e (Audrey M. Roy Greenfeld) designed and built this release: the extension detection system, file signature matching, decision tree retraining, type annotations, Python 3.10 compatibility, and sdist fixes.\u003c/p\u003e\n\u003cp\u003eThanks to \u003ca href=\"https://github.com/smheidrich\"\u003e\u003ccode\u003e@​smheidrich\u003c/code\u003e\u003c/a\u003e for the type stubs proposal, \u003ca href=\"https://github.com/AlJohri\"\u003e\u003ccode\u003e@​AlJohri\u003c/code\u003e\u003c/a\u003e for requesting pathlib.Path support, and \u003ca href=\"https://github.com/wesleybl\"\u003e\u003ccode\u003e@​wesleybl\u003c/code\u003e\u003c/a\u003e for raising Python 3.10 compatibility.\u003c/p\u003e\n\u003ch2\u003eBinaryOrNot 0.5.0: Zero Dependencies, 128 Bytes, One Trained Classifier\u003c/h2\u003e\n\u003cp\u003eThis is the biggest release in BinaryOrNot's history. I rebuilt the detection engine from the ground up. The original used byte ratio heuristics with chardet as a second opinion for ambiguous files. I replaced all of that with a trained decision tree operating on 23 features, covering 49 binary formats and 37 text encodings, with zero external dependencies. It's backed by 211 tests and a training pipeline you can re-run yourself. If you've ever had BinaryOrNot misidentify a UTF-16 file, choke on a CJK-encoded document, or crash because chardet changed its API, this release is for you.\u003c/p\u003e\n\u003cp\u003eBinaryOrNot now has zero dependencies. The chardet library (2.1 MB installed) is gone, replaced by a decision tree that reads 128 bytes of a file and classifies it as binary or text using 23 features computed from those bytes alone. The API is unchanged: \u003ccode\u003eis_binary(\u0026quot;file.png\u0026quot;)\u003c/code\u003e still returns \u003ccode\u003eTrue\u003c/code\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/binaryornot/binaryornot/commit/9c979cd0dce0627ed01a52d2c160357d79b9af36\"\u003e\u003ccode\u003e9c979cd\u003c/code\u003e\u003c/a\u003e Release 0.6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/binaryornot/binaryornot/commit/fba3730a0aa870f9cfa1984bff001a0451484a6e\"\u003e\u003ccode\u003efba3730\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/binaryornot/binaryornot/issues/648\"\u003e#648\u003c/a\u003e from binaryornot/check-file-extensions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/binaryornot/binaryornot/commit/c375996242da98dd2d3fa28f44d348a0dca00891\"\u003e\u003ccode\u003ec375996\u003c/code\u003e\u003c/a\u003e Document why bytes filenames matter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/binaryornot/binaryornot/commit/17540bceefb04e68ac27f0699ba2d9cdc7e00337\"\u003e\u003ccode\u003e17540bc\u003c/code\u003e\u003c/a\u003e Handle bytes filenames in extension check\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/binaryornot/binaryornot/commit/bc069ff99f5a0f0e7586b539d596d5563a0bbe40\"\u003e\u003ccode\u003ebc069ff\u003c/code\u003e\u003c/a\u003e Classify 131 file types by extension before reading them\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/binaryornot/binaryornot/commit/a1ff8d05609233cdee2a5f012edb3f1606067927\"\u003e\u003ccode\u003ea1ff8d0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/binaryornot/binaryornot/issues/647\"\u003e#647\u003c/a\u003e from binaryornot/fix-png-misclassification\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/binaryornot/binaryornot/commit/7c1864b397e4aab74ad032584ce37a2bce5a8401\"\u003e\u003ccode\u003e7c1864b\u003c/code\u003e\u003c/a\u003e Cover 55 binary formats from plists to network captures\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/binaryornot/binaryornot/commit/2a31e623aaa2a95a9df514546cf7da343d235dca\"\u003e\u003ccode\u003e2a31e62\u003c/code\u003e\u003c/a\u003e Apply ruff formatting to slice expression\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/binaryornot/binaryornot/commit/5f6351a02fcd23c887a3aee17e2a082ca3cdf2f8\"\u003e\u003ccode\u003e5f6351a\u003c/code\u003e\u003c/a\u003e Teach the decision tree to use file signatures as evidence\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/binaryornot/binaryornot/commit/feb38d84747cce3243ffcdfca5526f281cd9e805\"\u003e\u003ccode\u003efeb38d8\u003c/code\u003e\u003c/a\u003e Give the decision tree 4x more context per file\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/binaryornot/binaryornot/compare/0.4.4...v0.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cfgv` from 3.4.0 to 3.5.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/cfgv/commit/c7342120ec8513671fb8dd54d8a14399dc59cd47\"\u003e\u003ccode\u003ec734212\u003c/code\u003e\u003c/a\u003e v3.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/cfgv/commit/d64e0cc2ba77dff75a4c15fb6cf5e6ed315dc80b\"\u003e\u003ccode\u003ed64e0cc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/asottile/cfgv/issues/158\"\u003e#158\u003c/a\u003e from asottile/key-value-map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/cfgv/commit/641559f162edff0c37277cd7c5ebd2b65292fad1\"\u003e\u003ccode\u003e641559f\u003c/code\u003e\u003c/a\u003e add KeyValueMap\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/cfgv/commit/82e2f93a1554805a8938a6a3a588efe982e03019\"\u003e\u003ccode\u003e82e2f93\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/asottile/cfgv/issues/157\"\u003e#157\u003c/a\u003e from asottile/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/cfgv/commit/69cd02016f6a69de3a19a9741f16aa6d40120164\"\u003e\u003ccode\u003e69cd020\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/cfgv/commit/5ccc4d404d9a6a83bd3b12c1a24437db7ce8a081\"\u003e\u003ccode\u003e5ccc4d4\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/asottile/cfgv/issues/156\"\u003e#156\u003c/a\u003e from asottile/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/cfgv/commit/2e7ffe560a5de38906821304378fe26ceb7a536c\"\u003e\u003ccode\u003e2e7ffe5\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/cfgv/commit/ef7849933897d28727e453646a5a632202724d41\"\u003e\u003ccode\u003eef78499\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/asottile/cfgv/issues/155\"\u003e#155\u003c/a\u003e from asottile/all-repos_autofix_all-repos-manual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/cfgv/commit/b34b882bba1f683e9e3da7b3ab97e3ee1607977f\"\u003e\u003ccode\u003eb34b882\u003c/code\u003e\u003c/a\u003e py310+\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/asottile/cfgv/commit/724a279ea352c1883761e34e3f261c11be28f374\"\u003e\u003ccode\u003e724a279\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/asottile/cfgv/issues/154\"\u003e#154\u003c/a\u003e from asottile/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/asottile/cfgv/compare/v3.4.0...v3.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.1 to 3.5.1\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.5.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.5.0...3.5.1\"\u003e3.5.1\u003c/a\u003e (2026-08-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised upper bound of setuptools to v84 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache performance access optimization for our CharInfo struct (prebuilt only).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer decoding large content when the noise detector output give a high entropy.\nOnly impacted large content input \u0026gt;1M bytes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.5.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.9...3.5.0\"\u003e3.5.0\u003c/a\u003e (2026-08-12)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExplicit support for Python 3.15\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComparing a CharsetMatch to a non-alias encoding strings (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReturn 0.0 CharsetMatch.multi_byte_usage for empty payloads instead of crashing (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA file with both a charset declaration and BOM/SIG did not verify first the BOM/SIG charset.\u003c/li\u003e\n\u003cli\u003eiso2022* cases misdetected due to a flaw in our multibyte chunking logic.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReplaced the optional mypyc build with Cython extensions while retaining the\npure Python fallback. The previous engine (mypyc) started to hit rough limit around\nthe optimization of our noise/coherence detector while Cython allows us to\nsteer the engine toward the right generated optimized sources.\nThis change SHOULD not impact bundler (e.g. Pyinstaller) as the module are\nimmediately discoverable (i.e. not hidden import like mypyc did).\nMoreover, a long wished distribution is the abi3 wheels, this will allow us\nto no longer rush each year when a new Python interpreter is released.\nWe still distribute the interpreter specific wheels for faster performance.\u003c/li\u003e\n\u003cli\u003eApplied micro-optimization on several utils.\u003c/li\u003e\n\u003cli\u003eCharsetMatches no longer sort on each match insertion.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved an old performance optimization attempt in apy.py (success_fast_tracked+payload_result_cache).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.9\u003c/h2\u003e\n\u003ch2\u003e\u003c...\n\n_Description has been truncated_","html_url":"https://github.com/alexistli/tic-tac-toe-game/pull/1611","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexistli%2Ftic-tac-toe-game/issues/1611","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1611/packages"}},{"old_version":"~=1.7.10","new_version":"~=1.9.4","update_type":"minor","path":"/templates/service","pr_created_at":"2026-09-21T19:07:30.000Z","version_change":"~=1.7.10 → ~=1.9.4","issue":{"uuid":"5531294237","node_id":"PR_kwDOSC3iXs8AAAABEeQmeQ","number":221,"state":"open","title":"deps: Update bandit requirement from ~=1.7.10 to ~=1.9.4 in /templates/service","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-21T19:07:30.000Z","updated_at":"2026-09-21T19:07:31.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps: Update","packages":[{"name":"bandit","old_version":"~=1.7.10","new_version":"~=1.9.4","repository_url":"https://github.com/PyCQA/bandit"}],"path":"/templates/service","ecosystem":"pip"},"body":"Updates the requirements on [bandit](https://github.com/PyCQA/bandit) 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/PyCQA/bandit/releases\"\u003ebandit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: fixed some typos in comments by \u003ca href=\"https://github.com/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/login-action from 3.6.0 to 3.7.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/PyCQA/bandit/pull/1353\"\u003ePyCQA/bandit#1353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.18.0 to 6.19.2 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/PyCQA/bandit/pull/1357\"\u003ePyCQA/bandit#1357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B613 crash when reading from stdin by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude filename in nosec 'no failed test' warning by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1363\"\u003ePyCQA/bandit#1363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B615 false positive when revision is set via variable by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1358\"\u003ePyCQA/bandit#1358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLower version guard in check_ast_node to Python 3.12 by \u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B106 reporting wrong line number on multiline function calls by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1360\"\u003ePyCQA/bandit#1360\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/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\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/PyCQA/bandit/commit/92ae8b82fb422a639f0ed8d99e96cea769594e08\"\u003e\u003ccode\u003e92ae8b8\u003c/code\u003e\u003c/a\u003e Fix B106 reporting wrong line number on multiline function calls (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1360\"\u003e#1360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c8c8a55c3307333b8eb46cb2ef46d49b1fad6546\"\u003e\u003ccode\u003ec8c8a55\u003c/code\u003e\u003c/a\u003e Lower version guard in check_ast_node to Python 3.12 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1355\"\u003e#1355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/8f2f9284fca830ca017b2e2cc3ddc2a7b74b7040\"\u003e\u003ccode\u003e8f2f928\u003c/code\u003e\u003c/a\u003e Fix B615 false positive when revision is set via variable (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1358\"\u003e#1358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e27493f71c114e0e5dfc0a475d225d7f9f4a7e2b\"\u003e\u003ccode\u003ee27493f\u003c/code\u003e\u003c/a\u003e Include filename in nosec 'no failed test' warning (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1363\"\u003e#1363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/b69b336450301d424e5ba04c9a58e8d41b7169b6\"\u003e\u003ccode\u003eb69b336\u003c/code\u003e\u003c/a\u003e Fix B613 crash when reading from stdin (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1361\"\u003e#1361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e418b798abcc3f2b00c07fd6315da8fe9aeead00\"\u003e\u003ccode\u003ee418b79\u003c/code\u003e\u003c/a\u003e Bump docker/build-push-action from 6.18.0 to 6.19.2 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1357\"\u003e#1357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/ff646fd7e0e34fb350196fc58448fad17178c27a\"\u003e\u003ccode\u003eff646fd\u003c/code\u003e\u003c/a\u003e Bump docker/login-action from 3.6.0 to 3.7.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1353\"\u003e#1353\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c0def6c7ebab60f98c28ba759d488f4fbe6dae89\"\u003e\u003ccode\u003ec0def6c\u003c/code\u003e\u003c/a\u003e chore: fixed some typos in comments (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1351\"\u003e#1351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/765f00d3f202f83f61d03f882f80a2d5142d81f8\"\u003e\u003ccode\u003e765f00d\u003c/code\u003e\u003c/a\u003e Limit B614 to torch.load deserializers (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1348\"\u003e#1348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/06fbbab0df3374ffa8ef24c6f601b2d5e1d4d429\"\u003e\u003ccode\u003e06fbbab\u003c/code\u003e\u003c/a\u003e Bump docker/setup-buildx-action from 3.11.1 to 3.12.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1347\"\u003e#1347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.7.10...1.9.4\"\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/DuqueOM/ml-service-template/pull/221","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/DuqueOM%2Fml-service-template/issues/221","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/221/packages"}},{"old_version":"1.8.2","new_version":"1.9.4","update_type":"minor","path":null,"pr_created_at":"2026-09-12T12:21:45.000Z","version_change":"1.8.2 → 1.9.4","issue":{"uuid":"5433250827","node_id":"PR_kwDOT_qDQc8AAAABDQIp1A","number":2,"state":"open","title":"chore(deps-dev): bump bandit from 1.8.2 to 1.9.4","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":9,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-12T12:21:45.000Z","updated_at":"2026-09-12T14:04:35.509Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"bandit","old_version":"1.8.2","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"}],"path":null,"ecosystem":"pip"},"body":"Bumps [bandit](https://github.com/PyCQA/bandit) from 1.8.2 to 1.9.4.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/bandit/releases\"\u003ebandit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: fixed some typos in comments by \u003ca href=\"https://github.com/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/login-action from 3.6.0 to 3.7.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/PyCQA/bandit/pull/1353\"\u003ePyCQA/bandit#1353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.18.0 to 6.19.2 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/PyCQA/bandit/pull/1357\"\u003ePyCQA/bandit#1357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B613 crash when reading from stdin by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude filename in nosec 'no failed test' warning by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1363\"\u003ePyCQA/bandit#1363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B615 false positive when revision is set via variable by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1358\"\u003ePyCQA/bandit#1358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLower version guard in check_ast_node to Python 3.12 by \u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B106 reporting wrong line number on multiline function calls by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1360\"\u003ePyCQA/bandit#1360\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/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1334\"\u003ePyCQA/bandit#1334\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/PyCQA/bandit/pull/1335\"\u003ePyCQA/bandit#1335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B608 to detect \u003ccode\u003eVALUES(\u003c/code\u003e without space by \u003ca href=\"https://github.com/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd check for hardcoded passwords in dicts. by \u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\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/PyCQA/bandit/pull/1341\"\u003ePyCQA/bandit#1341\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate tox tests for Python 3.10 by \u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/setup-buildx-action from 3.11.1 to 3.12.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/PyCQA/bandit/pull/1347\"\u003ePyCQA/bandit#1347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimit B614 to torch.load deserializers by \u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\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/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eArgparse Python 3.14 enhancements by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1331\"\u003ePyCQA/bandit#1331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCheck whether Constant value is str by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1333\"\u003ePyCQA/bandit#1333\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.1...1.9.2\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.1...1.9.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMore Python version related fixes by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1327\"\u003ePyCQA/bandit#1327\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/PyCQA/bandit/commit/92ae8b82fb422a639f0ed8d99e96cea769594e08\"\u003e\u003ccode\u003e92ae8b8\u003c/code\u003e\u003c/a\u003e Fix B106 reporting wrong line number on multiline function calls (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1360\"\u003e#1360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c8c8a55c3307333b8eb46cb2ef46d49b1fad6546\"\u003e\u003ccode\u003ec8c8a55\u003c/code\u003e\u003c/a\u003e Lower version guard in check_ast_node to Python 3.12 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1355\"\u003e#1355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/8f2f9284fca830ca017b2e2cc3ddc2a7b74b7040\"\u003e\u003ccode\u003e8f2f928\u003c/code\u003e\u003c/a\u003e Fix B615 false positive when revision is set via variable (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1358\"\u003e#1358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e27493f71c114e0e5dfc0a475d225d7f9f4a7e2b\"\u003e\u003ccode\u003ee27493f\u003c/code\u003e\u003c/a\u003e Include filename in nosec 'no failed test' warning (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1363\"\u003e#1363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/b69b336450301d424e5ba04c9a58e8d41b7169b6\"\u003e\u003ccode\u003eb69b336\u003c/code\u003e\u003c/a\u003e Fix B613 crash when reading from stdin (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1361\"\u003e#1361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e418b798abcc3f2b00c07fd6315da8fe9aeead00\"\u003e\u003ccode\u003ee418b79\u003c/code\u003e\u003c/a\u003e Bump docker/build-push-action from 6.18.0 to 6.19.2 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1357\"\u003e#1357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/ff646fd7e0e34fb350196fc58448fad17178c27a\"\u003e\u003ccode\u003eff646fd\u003c/code\u003e\u003c/a\u003e Bump docker/login-action from 3.6.0 to 3.7.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1353\"\u003e#1353\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c0def6c7ebab60f98c28ba759d488f4fbe6dae89\"\u003e\u003ccode\u003ec0def6c\u003c/code\u003e\u003c/a\u003e chore: fixed some typos in comments (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1351\"\u003e#1351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/765f00d3f202f83f61d03f882f80a2d5142d81f8\"\u003e\u003ccode\u003e765f00d\u003c/code\u003e\u003c/a\u003e Limit B614 to torch.load deserializers (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1348\"\u003e#1348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/06fbbab0df3374ffa8ef24c6f601b2d5e1d4d429\"\u003e\u003ccode\u003e06fbbab\u003c/code\u003e\u003c/a\u003e Bump docker/setup-buildx-action from 3.11.1 to 3.12.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1347\"\u003e#1347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.8.2...1.9.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=bandit\u0026package-manager=pip\u0026previous-version=1.8.2\u0026new-version=1.9.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/luoshitianchen/SM-Workflow-Approval/pull/2","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/luoshitianchen%2FSM-Workflow-Approval/issues/2","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2/packages"}},{"old_version":"1.8.2","new_version":"1.9.4","update_type":"minor","path":null,"pr_created_at":"2026-09-12T12:18:28.000Z","version_change":"1.8.2 → 1.9.4","issue":{"uuid":"5433236413","node_id":"PR_kwDOTiJ3CM8AAAABDQH-YQ","number":15,"state":"closed","title":"chore(deps-dev): bump bandit from 1.8.2 to 1.9.4","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":6,"pull_request":true,"closed_at":"2026-09-12T13:10:06.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-12T12:18:28.000Z","updated_at":"2026-09-12T13:10:07.000Z","time_to_close":3098,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"bandit","old_version":"1.8.2","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"}],"path":null,"ecosystem":"pip"},"body":"Bumps [bandit](https://github.com/PyCQA/bandit) from 1.8.2 to 1.9.4.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/bandit/releases\"\u003ebandit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: fixed some typos in comments by \u003ca href=\"https://github.com/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/login-action from 3.6.0 to 3.7.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/PyCQA/bandit/pull/1353\"\u003ePyCQA/bandit#1353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.18.0 to 6.19.2 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/PyCQA/bandit/pull/1357\"\u003ePyCQA/bandit#1357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B613 crash when reading from stdin by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude filename in nosec 'no failed test' warning by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1363\"\u003ePyCQA/bandit#1363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B615 false positive when revision is set via variable by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1358\"\u003ePyCQA/bandit#1358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLower version guard in check_ast_node to Python 3.12 by \u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B106 reporting wrong line number on multiline function calls by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1360\"\u003ePyCQA/bandit#1360\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/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1334\"\u003ePyCQA/bandit#1334\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/PyCQA/bandit/pull/1335\"\u003ePyCQA/bandit#1335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B608 to detect \u003ccode\u003eVALUES(\u003c/code\u003e without space by \u003ca href=\"https://github.com/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd check for hardcoded passwords in dicts. by \u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\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/PyCQA/bandit/pull/1341\"\u003ePyCQA/bandit#1341\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate tox tests for Python 3.10 by \u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/setup-buildx-action from 3.11.1 to 3.12.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/PyCQA/bandit/pull/1347\"\u003ePyCQA/bandit#1347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimit B614 to torch.load deserializers by \u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\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/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eArgparse Python 3.14 enhancements by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1331\"\u003ePyCQA/bandit#1331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCheck whether Constant value is str by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1333\"\u003ePyCQA/bandit#1333\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.1...1.9.2\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.1...1.9.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMore Python version related fixes by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1327\"\u003ePyCQA/bandit#1327\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/PyCQA/bandit/commit/92ae8b82fb422a639f0ed8d99e96cea769594e08\"\u003e\u003ccode\u003e92ae8b8\u003c/code\u003e\u003c/a\u003e Fix B106 reporting wrong line number on multiline function calls (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1360\"\u003e#1360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c8c8a55c3307333b8eb46cb2ef46d49b1fad6546\"\u003e\u003ccode\u003ec8c8a55\u003c/code\u003e\u003c/a\u003e Lower version guard in check_ast_node to Python 3.12 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1355\"\u003e#1355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/8f2f9284fca830ca017b2e2cc3ddc2a7b74b7040\"\u003e\u003ccode\u003e8f2f928\u003c/code\u003e\u003c/a\u003e Fix B615 false positive when revision is set via variable (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1358\"\u003e#1358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e27493f71c114e0e5dfc0a475d225d7f9f4a7e2b\"\u003e\u003ccode\u003ee27493f\u003c/code\u003e\u003c/a\u003e Include filename in nosec 'no failed test' warning (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1363\"\u003e#1363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/b69b336450301d424e5ba04c9a58e8d41b7169b6\"\u003e\u003ccode\u003eb69b336\u003c/code\u003e\u003c/a\u003e Fix B613 crash when reading from stdin (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1361\"\u003e#1361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e418b798abcc3f2b00c07fd6315da8fe9aeead00\"\u003e\u003ccode\u003ee418b79\u003c/code\u003e\u003c/a\u003e Bump docker/build-push-action from 6.18.0 to 6.19.2 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1357\"\u003e#1357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/ff646fd7e0e34fb350196fc58448fad17178c27a\"\u003e\u003ccode\u003eff646fd\u003c/code\u003e\u003c/a\u003e Bump docker/login-action from 3.6.0 to 3.7.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1353\"\u003e#1353\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c0def6c7ebab60f98c28ba759d488f4fbe6dae89\"\u003e\u003ccode\u003ec0def6c\u003c/code\u003e\u003c/a\u003e chore: fixed some typos in comments (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1351\"\u003e#1351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/765f00d3f202f83f61d03f882f80a2d5142d81f8\"\u003e\u003ccode\u003e765f00d\u003c/code\u003e\u003c/a\u003e Limit B614 to torch.load deserializers (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1348\"\u003e#1348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/06fbbab0df3374ffa8ef24c6f601b2d5e1d4d429\"\u003e\u003ccode\u003e06fbbab\u003c/code\u003e\u003c/a\u003e Bump docker/setup-buildx-action from 3.11.1 to 3.12.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1347\"\u003e#1347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.8.2...1.9.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e","html_url":"https://github.com/luoshitianchen/SM-knowledge-bot/pull/15","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/luoshitianchen%2FSM-knowledge-bot/issues/15","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/15/packages"}},{"old_version":"1.8.2","new_version":"1.9.4","update_type":"minor","path":null,"pr_created_at":"2026-09-12T12:18:16.000Z","version_change":"1.8.2 → 1.9.4","issue":{"uuid":"5433235243","node_id":"PR_kwDOUApVyc8AAAABDQH6XA","number":7,"state":"open","title":"chore(deps-dev): bump bandit from 1.8.2 to 1.9.4","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":5,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-12T12:18:16.000Z","updated_at":"2026-09-12T12:18:24.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"bandit","old_version":"1.8.2","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"}],"path":null,"ecosystem":"pip"},"body":"Bumps [bandit](https://github.com/PyCQA/bandit) from 1.8.2 to 1.9.4.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/bandit/releases\"\u003ebandit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: fixed some typos in comments by \u003ca href=\"https://github.com/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/login-action from 3.6.0 to 3.7.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/PyCQA/bandit/pull/1353\"\u003ePyCQA/bandit#1353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.18.0 to 6.19.2 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/PyCQA/bandit/pull/1357\"\u003ePyCQA/bandit#1357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B613 crash when reading from stdin by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude filename in nosec 'no failed test' warning by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1363\"\u003ePyCQA/bandit#1363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B615 false positive when revision is set via variable by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1358\"\u003ePyCQA/bandit#1358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLower version guard in check_ast_node to Python 3.12 by \u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B106 reporting wrong line number on multiline function calls by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1360\"\u003ePyCQA/bandit#1360\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/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1334\"\u003ePyCQA/bandit#1334\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/PyCQA/bandit/pull/1335\"\u003ePyCQA/bandit#1335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B608 to detect \u003ccode\u003eVALUES(\u003c/code\u003e without space by \u003ca href=\"https://github.com/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd check for hardcoded passwords in dicts. by \u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\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/PyCQA/bandit/pull/1341\"\u003ePyCQA/bandit#1341\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate tox tests for Python 3.10 by \u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/setup-buildx-action from 3.11.1 to 3.12.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/PyCQA/bandit/pull/1347\"\u003ePyCQA/bandit#1347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimit B614 to torch.load deserializers by \u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\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/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eArgparse Python 3.14 enhancements by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1331\"\u003ePyCQA/bandit#1331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCheck whether Constant value is str by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1333\"\u003ePyCQA/bandit#1333\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.1...1.9.2\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.1...1.9.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMore Python version related fixes by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1327\"\u003ePyCQA/bandit#1327\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/PyCQA/bandit/commit/92ae8b82fb422a639f0ed8d99e96cea769594e08\"\u003e\u003ccode\u003e92ae8b8\u003c/code\u003e\u003c/a\u003e Fix B106 reporting wrong line number on multiline function calls (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1360\"\u003e#1360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c8c8a55c3307333b8eb46cb2ef46d49b1fad6546\"\u003e\u003ccode\u003ec8c8a55\u003c/code\u003e\u003c/a\u003e Lower version guard in check_ast_node to Python 3.12 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1355\"\u003e#1355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/8f2f9284fca830ca017b2e2cc3ddc2a7b74b7040\"\u003e\u003ccode\u003e8f2f928\u003c/code\u003e\u003c/a\u003e Fix B615 false positive when revision is set via variable (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1358\"\u003e#1358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e27493f71c114e0e5dfc0a475d225d7f9f4a7e2b\"\u003e\u003ccode\u003ee27493f\u003c/code\u003e\u003c/a\u003e Include filename in nosec 'no failed test' warning (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1363\"\u003e#1363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/b69b336450301d424e5ba04c9a58e8d41b7169b6\"\u003e\u003ccode\u003eb69b336\u003c/code\u003e\u003c/a\u003e Fix B613 crash when reading from stdin (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1361\"\u003e#1361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e418b798abcc3f2b00c07fd6315da8fe9aeead00\"\u003e\u003ccode\u003ee418b79\u003c/code\u003e\u003c/a\u003e Bump docker/build-push-action from 6.18.0 to 6.19.2 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1357\"\u003e#1357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/ff646fd7e0e34fb350196fc58448fad17178c27a\"\u003e\u003ccode\u003eff646fd\u003c/code\u003e\u003c/a\u003e Bump docker/login-action from 3.6.0 to 3.7.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1353\"\u003e#1353\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c0def6c7ebab60f98c28ba759d488f4fbe6dae89\"\u003e\u003ccode\u003ec0def6c\u003c/code\u003e\u003c/a\u003e chore: fixed some typos in comments (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1351\"\u003e#1351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/765f00d3f202f83f61d03f882f80a2d5142d81f8\"\u003e\u003ccode\u003e765f00d\u003c/code\u003e\u003c/a\u003e Limit B614 to torch.load deserializers (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1348\"\u003e#1348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/06fbbab0df3374ffa8ef24c6f601b2d5e1d4d429\"\u003e\u003ccode\u003e06fbbab\u003c/code\u003e\u003c/a\u003e Bump docker/setup-buildx-action from 3.11.1 to 3.12.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1347\"\u003e#1347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.8.2...1.9.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=bandit\u0026package-manager=pip\u0026previous-version=1.8.2\u0026new-version=1.9.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/luoshitianchen/SM-Legal-Contract/pull/7","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/luoshitianchen%2FSM-Legal-Contract/issues/7","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/7/packages"}},{"old_version":"1.8.0","new_version":"1.9.4","update_type":"minor","path":null,"pr_created_at":"2026-09-12T11:32:20.000Z","version_change":"1.8.0 → 1.9.4","issue":{"uuid":"5433027707","node_id":"PR_kwDOR0SEms8AAAABDP-Gyg","number":3,"state":"open","title":"chore(deps-dev): bump bandit from 1.8.0 to 1.9.4","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-12T11:32:20.000Z","updated_at":"2026-09-12T11:32:21.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"bandit","old_version":"1.8.0","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"}],"path":null,"ecosystem":"pip"},"body":"Bumps [bandit](https://github.com/PyCQA/bandit) from 1.8.0 to 1.9.4.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/bandit/releases\"\u003ebandit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: fixed some typos in comments by \u003ca href=\"https://github.com/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/login-action from 3.6.0 to 3.7.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/PyCQA/bandit/pull/1353\"\u003ePyCQA/bandit#1353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.18.0 to 6.19.2 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/PyCQA/bandit/pull/1357\"\u003ePyCQA/bandit#1357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B613 crash when reading from stdin by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude filename in nosec 'no failed test' warning by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1363\"\u003ePyCQA/bandit#1363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B615 false positive when revision is set via variable by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1358\"\u003ePyCQA/bandit#1358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLower version guard in check_ast_node to Python 3.12 by \u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B106 reporting wrong line number on multiline function calls by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1360\"\u003ePyCQA/bandit#1360\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/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1334\"\u003ePyCQA/bandit#1334\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/PyCQA/bandit/pull/1335\"\u003ePyCQA/bandit#1335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B608 to detect \u003ccode\u003eVALUES(\u003c/code\u003e without space by \u003ca href=\"https://github.com/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd check for hardcoded passwords in dicts. by \u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\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/PyCQA/bandit/pull/1341\"\u003ePyCQA/bandit#1341\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate tox tests for Python 3.10 by \u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/setup-buildx-action from 3.11.1 to 3.12.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/PyCQA/bandit/pull/1347\"\u003ePyCQA/bandit#1347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimit B614 to torch.load deserializers by \u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\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/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eArgparse Python 3.14 enhancements by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1331\"\u003ePyCQA/bandit#1331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCheck whether Constant value is str by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1333\"\u003ePyCQA/bandit#1333\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.1...1.9.2\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.1...1.9.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMore Python version related fixes by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1327\"\u003ePyCQA/bandit#1327\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/PyCQA/bandit/commit/92ae8b82fb422a639f0ed8d99e96cea769594e08\"\u003e\u003ccode\u003e92ae8b8\u003c/code\u003e\u003c/a\u003e Fix B106 reporting wrong line number on multiline function calls (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1360\"\u003e#1360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c8c8a55c3307333b8eb46cb2ef46d49b1fad6546\"\u003e\u003ccode\u003ec8c8a55\u003c/code\u003e\u003c/a\u003e Lower version guard in check_ast_node to Python 3.12 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1355\"\u003e#1355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/8f2f9284fca830ca017b2e2cc3ddc2a7b74b7040\"\u003e\u003ccode\u003e8f2f928\u003c/code\u003e\u003c/a\u003e Fix B615 false positive when revision is set via variable (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1358\"\u003e#1358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e27493f71c114e0e5dfc0a475d225d7f9f4a7e2b\"\u003e\u003ccode\u003ee27493f\u003c/code\u003e\u003c/a\u003e Include filename in nosec 'no failed test' warning (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1363\"\u003e#1363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/b69b336450301d424e5ba04c9a58e8d41b7169b6\"\u003e\u003ccode\u003eb69b336\u003c/code\u003e\u003c/a\u003e Fix B613 crash when reading from stdin (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1361\"\u003e#1361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e418b798abcc3f2b00c07fd6315da8fe9aeead00\"\u003e\u003ccode\u003ee418b79\u003c/code\u003e\u003c/a\u003e Bump docker/build-push-action from 6.18.0 to 6.19.2 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1357\"\u003e#1357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/ff646fd7e0e34fb350196fc58448fad17178c27a\"\u003e\u003ccode\u003eff646fd\u003c/code\u003e\u003c/a\u003e Bump docker/login-action from 3.6.0 to 3.7.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1353\"\u003e#1353\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c0def6c7ebab60f98c28ba759d488f4fbe6dae89\"\u003e\u003ccode\u003ec0def6c\u003c/code\u003e\u003c/a\u003e chore: fixed some typos in comments (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1351\"\u003e#1351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/765f00d3f202f83f61d03f882f80a2d5142d81f8\"\u003e\u003ccode\u003e765f00d\u003c/code\u003e\u003c/a\u003e Limit B614 to torch.load deserializers (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1348\"\u003e#1348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/06fbbab0df3374ffa8ef24c6f601b2d5e1d4d429\"\u003e\u003ccode\u003e06fbbab\u003c/code\u003e\u003c/a\u003e Bump docker/setup-buildx-action from 3.11.1 to 3.12.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1347\"\u003e#1347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.8.0...1.9.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=bandit\u0026package-manager=pip\u0026previous-version=1.8.0\u0026new-version=1.9.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/opok-ops/MindForge/pull/3","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/opok-ops%2FMindForge/issues/3","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/3/packages"}},{"old_version":"\u003e=1.7.0","new_version":"\u003e=1.9.4","update_type":"minor","path":null,"pr_created_at":"2026-09-11T22:11:42.000Z","version_change":"\u003e=1.7.0 → \u003e=1.9.4","issue":{"uuid":"5429391155","node_id":"PR_kwDOUT8Z0s8AAAABDNKl5Q","number":8,"state":"open","title":"chore(deps): update bandit requirement from \u003e=1.7.0 to \u003e=1.9.4","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-11T22:11:42.000Z","updated_at":"2026-09-13T00:10:35.637Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): update","packages":[{"name":"bandit","old_version":"\u003e=1.7.0","new_version":"\u003e=1.9.4","repository_url":"https://github.com/PyCQA/bandit"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [bandit](https://github.com/PyCQA/bandit) 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/PyCQA/bandit/releases\"\u003ebandit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: fixed some typos in comments by \u003ca href=\"https://github.com/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/login-action from 3.6.0 to 3.7.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/PyCQA/bandit/pull/1353\"\u003ePyCQA/bandit#1353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.18.0 to 6.19.2 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/PyCQA/bandit/pull/1357\"\u003ePyCQA/bandit#1357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B613 crash when reading from stdin by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude filename in nosec 'no failed test' warning by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1363\"\u003ePyCQA/bandit#1363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B615 false positive when revision is set via variable by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1358\"\u003ePyCQA/bandit#1358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLower version guard in check_ast_node to Python 3.12 by \u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B106 reporting wrong line number on multiline function calls by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1360\"\u003ePyCQA/bandit#1360\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/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\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/PyCQA/bandit/commit/92ae8b82fb422a639f0ed8d99e96cea769594e08\"\u003e\u003ccode\u003e92ae8b8\u003c/code\u003e\u003c/a\u003e Fix B106 reporting wrong line number on multiline function calls (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1360\"\u003e#1360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c8c8a55c3307333b8eb46cb2ef46d49b1fad6546\"\u003e\u003ccode\u003ec8c8a55\u003c/code\u003e\u003c/a\u003e Lower version guard in check_ast_node to Python 3.12 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1355\"\u003e#1355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/8f2f9284fca830ca017b2e2cc3ddc2a7b74b7040\"\u003e\u003ccode\u003e8f2f928\u003c/code\u003e\u003c/a\u003e Fix B615 false positive when revision is set via variable (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1358\"\u003e#1358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e27493f71c114e0e5dfc0a475d225d7f9f4a7e2b\"\u003e\u003ccode\u003ee27493f\u003c/code\u003e\u003c/a\u003e Include filename in nosec 'no failed test' warning (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1363\"\u003e#1363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/b69b336450301d424e5ba04c9a58e8d41b7169b6\"\u003e\u003ccode\u003eb69b336\u003c/code\u003e\u003c/a\u003e Fix B613 crash when reading from stdin (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1361\"\u003e#1361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e418b798abcc3f2b00c07fd6315da8fe9aeead00\"\u003e\u003ccode\u003ee418b79\u003c/code\u003e\u003c/a\u003e Bump docker/build-push-action from 6.18.0 to 6.19.2 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1357\"\u003e#1357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/ff646fd7e0e34fb350196fc58448fad17178c27a\"\u003e\u003ccode\u003eff646fd\u003c/code\u003e\u003c/a\u003e Bump docker/login-action from 3.6.0 to 3.7.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1353\"\u003e#1353\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c0def6c7ebab60f98c28ba759d488f4fbe6dae89\"\u003e\u003ccode\u003ec0def6c\u003c/code\u003e\u003c/a\u003e chore: fixed some typos in comments (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1351\"\u003e#1351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/765f00d3f202f83f61d03f882f80a2d5142d81f8\"\u003e\u003ccode\u003e765f00d\u003c/code\u003e\u003c/a\u003e Limit B614 to torch.load deserializers (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1348\"\u003e#1348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/06fbbab0df3374ffa8ef24c6f601b2d5e1d4d429\"\u003e\u003ccode\u003e06fbbab\u003c/code\u003e\u003c/a\u003e Bump docker/setup-buildx-action from 3.11.1 to 3.12.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1347\"\u003e#1347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.7.0...1.9.4\"\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/vansh070605/AgentForge/pull/8","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/vansh070605%2FAgentForge/issues/8","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/8/packages"}},{"old_version":"1.8.6","new_version":"1.9.4","update_type":"minor","path":null,"pr_created_at":"2026-09-11T20:14:27.000Z","version_change":"1.8.6 → 1.9.4","issue":{"uuid":"5428575296","node_id":"PR_kwDOPZX_4c8AAAABDMhM5Q","number":147,"state":"closed","title":"build(deps): bump the backend-python group across 1 directory with 13 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-15T21:24:55.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-11T20:14:27.000Z","updated_at":"2026-09-15T21:24:57.000Z","time_to_close":349828,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"backend-python","update_count":13,"packages":[{"name":"uvicorn","old_version":"0.30.6","new_version":"0.52.4","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"sqlalchemy","old_version":"2.0.35","new_version":"2.0.52","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"psycopg","old_version":"3.3.4","new_version":"3.3.5","repository_url":"https://github.com/psycopg/psycopg"},{"name":"bcrypt","old_version":"4.0.1","new_version":"5.0.0","repository_url":"https://github.com/pyca/bcrypt"},{"name":"email-validator","old_version":"2.2.0","new_version":"2.3.0","repository_url":"https://github.com/JoshData/python-email-validator"},{"name":"pydantic-settings","old_version":"2.5.2","new_version":"2.15.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"httpx","old_version":"0.27.2","new_version":"0.28.1","repository_url":"https://github.com/encode/httpx"},{"name":"alembic","old_version":"1.13.2","new_version":"1.19.2","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"apscheduler","old_version":"3.10.4","new_version":"3.11.3","repository_url":"https://github.com/agronholm/apscheduler"},{"name":"redis","old_version":"5.0.8","new_version":"8.1.0","repository_url":"https://github.com/redis/redis-py"},{"name":"bandit","old_version":"1.8.6","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"},{"name":"pip-audit","old_version":"2.9.0","new_version":"2.10.1","repository_url":"https://github.com/pypa/pip-audit"},{"name":"ruff","old_version":"0.12.12","new_version":"0.16.7","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the backend-python group with 13 updates in the /backend directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.30.6` | `0.52.4` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.35` | `2.0.52` |\n| [psycopg](https://github.com/psycopg/psycopg) | `3.3.4` | `3.3.5` |\n| [bcrypt](https://github.com/pyca/bcrypt) | `4.0.1` | `5.0.0` |\n| [email-validator](https://github.com/JoshData/python-email-validator) | `2.2.0` | `2.3.0` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.5.2` | `2.15.0` |\n| [httpx](https://github.com/encode/httpx) | `0.27.2` | `0.28.1` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.13.2` | `1.19.2` |\n| [apscheduler](https://github.com/agronholm/apscheduler) | `3.10.4` | `3.11.3` |\n| [redis](https://github.com/redis/redis-py) | `5.0.8` | `8.1.0` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.8.6` | `1.9.4` |\n| [pip-audit](https://github.com/pypa/pip-audit) | `2.9.0` | `2.10.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.12.12` | `0.16.7` |\n\n\nUpdates `uvicorn` from 0.30.6 to 0.52.4\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.52.4\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\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.52.3...0.52.4\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.3\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.24 and use its combined receive path, improving HTTP/1.1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3067\"\u003e#3067\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.52.2...0.52.3\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.2...0.52.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.2\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.22, fixing bodyless request receives and improving HTTP/1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3063\"\u003e#3063\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.52.1...0.52.2\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.1...0.52.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.1\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComplete the closing handshake on server-initiated WebSocket closes in the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e and \u003ccode\u003ewsproto\u003c/code\u003e implementations, waiting for the client's close reply with a 10 second timeout instead of resetting the connection (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing write flow control to the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, preventing data truncation on server-initiated closes with large in-flight payloads (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3048\"\u003e#3048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle connection loss while a WebSocket write is waiting on backpressure (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3050\"\u003e#3050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eContent-Type\u003c/code\u003e and \u003ccode\u003eContent-Length\u003c/code\u003e headers from WebSocket denial responses on the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, and deliver non-UTF-8 denial bodies intact (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3041\"\u003e#3041\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.52.0...0.52.1\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.0...0.52.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.0\u003c/h2\u003e\n\u003cp\u003eThis release adds an experimental HTTP/1.1 implementation backed by \u003ca href=\"https://zttp.marcelotryle.com/\"\u003ezttp\u003c/a\u003e, a sans-IO HTTP parser I've been developing on the side: a core written in Zig, with bindings to Python. It has been running under a fuzzer for some weeks now, and has been through multiple rounds of security auditing.\u003c/p\u003e\n\u003cp\u003eIt is still \u003cstrong\u003eexperimental\u003c/strong\u003e, so don't put it in front of production traffic yet. Try it with \u003ccode\u003e--http zttp\u003c/code\u003e, and please send any feedback to the \u003ca href=\"https://github.com/Kludex/uvicorn/issues\"\u003eissue tracker\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an experimental \u003ccode\u003ezttp\u003c/code\u003e HTTP/1.1 implementation, selectable with \u003ccode\u003e--http zttp\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2979\"\u003e#2979\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKeep non-ASCII WebSocket request headers intact with websockets 17.0, which encodes them with ISO-8859-1 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3036\"\u003e#3036\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.51.0...0.52.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.51.0...0.52.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.51.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRestart workers with overlap on SIGHUP for near-zero-downtime reloads 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/3025\"\u003eKludex/uvicorn#3025\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.52.4 (August 18, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.3 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.24 and use its combined receive path, improving HTTP/1.1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3067\"\u003e#3067\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.2 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.22, fixing bodyless request receives and improving HTTP/1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3063\"\u003e#3063\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.1 (August 1, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComplete the closing handshake on server-initiated WebSocket closes in the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e and \u003ccode\u003ewsproto\u003c/code\u003e implementations, waiting for the client's close reply with a 10 second timeout instead of resetting the connection (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing write flow control to the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, preventing data truncation on server-initiated closes with large in-flight payloads (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3048\"\u003e#3048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle connection loss while a WebSocket write is waiting on backpressure (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3050\"\u003e#3050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eContent-Type\u003c/code\u003e and \u003ccode\u003eContent-Length\u003c/code\u003e headers from WebSocket denial responses on the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, and deliver non-UTF-8 denial bodies intact (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3041\"\u003e#3041\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.0 (July 29, 2026)\u003c/h2\u003e\n\u003cp\u003eThis release adds an experimental HTTP/1.1 implementation backed by \u003ca href=\"https://zttp.marcelotryle.com/\"\u003ezttp\u003c/a\u003e, a sans-IO HTTP parser I've been developing on the side: a core written in Zig, with bindings to Python. It has been running under a fuzzer for some weeks now, and has been through multiple rounds of security auditing.\u003c/p\u003e\n\u003cp\u003eIt is still \u003cstrong\u003eexperimental\u003c/strong\u003e, so don't put it in front of production traffic yet. Try it with \u003ccode\u003e--http zttp\u003c/code\u003e, and please send any feedback to the \u003ca href=\"https://github.com/Kludex/uvicorn/issues\"\u003eissue tracker\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an experimental \u003ccode\u003ezttp\u003c/code\u003e HTTP/1.1 implementation, selectable with \u003ccode\u003e--http zttp\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2979\"\u003e#2979\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKeep non-ASCII WebSocket request headers intact with websockets 17.0, which encodes them with ISO-8859-1 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3036\"\u003e#3036\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.51.0 (July 8, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRestart workers one at a time on \u003ccode\u003eSIGHUP\u003c/code\u003e, bringing each replacement up before retiring the old worker, so reloads no longer drop requests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3025\"\u003e#3025\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u003ccode\u003ecolorama\u003c/code\u003e from the \u003ccode\u003estandard\u003c/code\u003e extra (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3027\"\u003e#3027\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/8988c23704fc373c9206cca53ec57dd8ad7f44a5\"\u003e\u003ccode\u003e8988c23\u003c/code\u003e\u003c/a\u003e Stabilize macOS Python 3.13 signal shutdown tests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3084\"\u003e#3084\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/898ddca9254b53c5bf7a6ee509756704caaa949f\"\u003e\u003ccode\u003e898ddca\u003c/code\u003e\u003c/a\u003e Update PyPI publish action to version 1.14.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3083\"\u003e#3083\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3869f8aac2bdd040fa3fbe564e1dad67e2637641\"\u003e\u003ccode\u003e3869f8a\u003c/code\u003e\u003c/a\u003e Restore Mermaid diagram rendering (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3080\"\u003e#3080\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/64148a9c574e1eb87d3d09b3ce4c256606f8d973\"\u003e\u003ccode\u003e64148a9\u003c/code\u003e\u003c/a\u003e Version 0.52.4 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3079\"\u003e#3079\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9e9e5691bd14d5c4cd66d9bd76c7730bc48461a2\"\u003e\u003ccode\u003e9e9e569\u003c/code\u003e\u003c/a\u003e docs: correct release example PR number (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3072\"\u003e#3072\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/b783dacab50b9d6767b0cf65826b2dc3aae21909\"\u003e\u003ccode\u003eb783dac\u003c/code\u003e\u003c/a\u003e Remove duplicate Date header from SansIO WebSocket handshakes (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/27019b2a4b1fa6d68a289fcf7d738fbdc6ee4e5d\"\u003e\u003ccode\u003e27019b2\u003c/code\u003e\u003c/a\u003e chore(deps): bump the python-packages group across 1 directory with 11 update...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/1b6427311bb84a15addee688f6d41d96e33f8b0a\"\u003e\u003ccode\u003e1b64273\u003c/code\u003e\u003c/a\u003e Fix a typo in index.md (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3006\"\u003e#3006\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/a68da608147c5f79d962352dce11de8f6e32d972\"\u003e\u003ccode\u003ea68da60\u003c/code\u003e\u003c/a\u003e Version 0.52.3 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3068\"\u003e#3068\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/6e3bb4c5c22531c16d341f2da49f2653307f412f\"\u003e\u003ccode\u003e6e3bb4c\u003c/code\u003e\u003c/a\u003e Use zttp 0.0.24 fast receive path (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3067\"\u003e#3067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.30.6...0.52.4\"\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.35 to 2.0.52\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.52\u003c/h1\u003e\n\u003cp\u003eReleased: August 11, 2026\u003c/p\u003e\n\u003ch2\u003eplatform\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[platform] [bug]\u003c/strong\u003e Python 3.15 support has been added and tested, including minimal changes\nfor full compatibility.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13477\"\u003e#13477\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eorm\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed a result-column misalignment bug in ORM-enabled UPDATE statements\nwhere \u003ccode\u003esynchronize_session=\u0026quot;fetch\u0026quot;\u003c/code\u003e is in use, either explicitly or\nbecause the statement uses constructs such as CTEs that implicitly select\nfor it.  Columns in rows returned by \u003ccode\u003e.returning()\u003c/code\u003e could be returned\nunder incorrect keys (e.g. \u003ccode\u003erow[SomeClass.a]\u003c/code\u003e returning the value of\na different column), a problem most likely to manifest under concurrent\nworkloads.  ORM DELETE statements were not affected.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13439\"\u003e#13439\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed bug where a failed \u003ccode\u003e_orm.Session.bulk_insert_mappings()\u003c/code\u003e,\n\u003ccode\u003e_orm.Session.bulk_update_mappings()\u003c/code\u003e or\n\u003ccode\u003e_orm.Session.bulk_save_objects()\u003c/code\u003e call could leave the\n\u003ccode\u003e_orm.Session\u003c/code\u003e permanently in a \u0026quot;flushing\u0026quot; state, such as when the\ntransaction could not be begun because a previous flush had left it\nneeding a rollback.  Unlike \u003ccode\u003e_orm.Session.flush()\u003c/code\u003e, the bulk methods\nset the internal flushing flag and began the transaction outside of the\n\u003ccode\u003etry\u003c/code\u003e/\u003ccode\u003efinally\u003c/code\u003e block that resets it, so that neither\n\u003ccode\u003e_orm.Session.rollback()\u003c/code\u003e nor \u003ccode\u003e_orm.Session.close()\u003c/code\u003e would clear\nit, and every subsequent flush would raise \u003ccode\u003eInvalidRequestError: Session is already flushing\u003c/code\u003e.  Pull request courtesy Hamody We.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13485\"\u003e#13485\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 unpickling an ORM object that were loaded using loader\noptions making use of wildcard tokens, such as \u003ccode\u003e_orm.load_only()\u003c/code\u003e or\n\u003ccode\u003e_orm.raiseload()\u003c/code\u003e with \u003ccode\u003e\u0026quot;*\u0026quot;\u003c/code\u003e, would fail with \u003ccode\u003eKeyError\u003c/code\u003e or\n\u003ccode\u003eIndexError\u003c/code\u003e if the process doing the unpickling had not yet constructed\na loader path making use of that same token.  This would typically be\nobserved when the object were unpickled in a separate process, such as\nwith the \u003ccode\u003espawn\u003c/code\u003e or \u003ccode\u003eforkserver\u003c/code\u003e multiprocessing start methods, the\nlatter of which became the default on POSIX platforms as of Python 3.14.\nThe internal collection of these tokens is now established up front, so\nthat it is identical in every process.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psycopg` from 3.3.4 to 3.3.5\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psycopg/psycopg/blob/master/docs/news.rst\"\u003epsycopg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e.. currentmodule:: psycopg\u003c/p\u003e\n\u003cp\u003e.. index::\nsingle: Release notes\nsingle: News\u003c/p\u003e\n\u003ch1\u003e\u003ccode\u003epsycopg\u003c/code\u003e release notes\u003c/h1\u003e\n\u003ch2\u003eCurrent release\u003c/h2\u003e\n\u003cp\u003ePsycopg 3.3.5\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDiscard prepared statements upon :sql:\u003ccode\u003eALTER *\u003c/code\u003e or \u003ccode\u003eDISCARD *\u003c/code\u003e\n(:ticket:\u003ccode\u003e[#1307](https://github.com/psycopg/psycopg/issues/1307)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e!ProgrammingError\u003c/code\u003e when dumping non-\u003ccode\u003e!None\u003c/code\u003e values with\nno \u003ccode\u003e!NoneType\u003c/code\u003e dumper registered in python implementation (:ticket:\u003ccode\u003e[#1325](https://github.com/psycopg/psycopg/issues/1325)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e!wait_selector\u003c/code\u003e wait function to not raise \u003ccode\u003e!KeyError\u003c/code\u003e\n(:ticket:\u003ccode\u003e[#1327](https://github.com/psycopg/psycopg/issues/1327)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e!DataError\u003c/code\u003e messages leaking the literal \u003ccode\u003e{...}\u003c/code\u003e placeholder instead\nof the offending value when loading a pre-year-1 :sql:\u003ccode\u003etimestamp\u003c/code\u003e or a\nmalformed binary :sql:\u003ccode\u003ejsonb\u003c/code\u003e value (:ticket:\u003ccode\u003e[#1372](https://github.com/psycopg/psycopg/issues/1372)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003e!DataError\u003c/code\u003e instead of \u003ccode\u003e!ValueError\u003c/code\u003e when \u003ccode\u003e~psycopg.rows.namedtuple_row\u003c/code\u003e\nreceives duplicate column names (:ticket:\u003ccode\u003e[#1348](https://github.com/psycopg/psycopg/issues/1348)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003e!DataError\u003c/code\u003e on inconsistent copy data (:tickets:\u003ccode\u003e[#1359](https://github.com/psycopg/psycopg/issues/1359), [#1360](https://github.com/psycopg/psycopg/issues/1360)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eHandle client encodings aliases (:ticket:\u003ccode\u003e[#1363](https://github.com/psycopg/psycopg/issues/1363)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix building C extension with Cython 3.3.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePsycopg 3.3.4\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix possible spurious connection timeout in systems with very long uptimes\nin C extension (:ticket:\u003ccode\u003e[#1280](https://github.com/psycopg/psycopg/issues/1280)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix client-side adaptation of enums whose name require quotes\n(:ticket:\u003ccode\u003e[#1298](https://github.com/psycopg/psycopg/issues/1298)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eConsistently populate \u003ccode\u003e~Cursor.statusmessage\u003c/code\u003e after \u003ccode\u003e~Cursor.executemany()\u003c/code\u003e\n(:ticket:\u003ccode\u003e[#1302](https://github.com/psycopg/psycopg/issues/1302)\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePsycopg 3.3.3\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRetain \u003ccode\u003eError.pgconn\u003c/code\u003e when raising a single exception for multiple connection\nattempt errors (:ticket:\u003ccode\u003e[#1246](https://github.com/psycopg/psycopg/issues/1246)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eReturn a proper error when server sends \u003ccode\u003eErrorResponse\u003c/code\u003e for a \u003ccode\u003eSync\u003c/code\u003e after\na \u003ccode\u003eParse\u003c/code\u003e (:ticket:\u003ccode\u003e[#1260](https://github.com/psycopg/psycopg/issues/1260)\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/psycopg/commit/ea542c9534cc9841d50450e0c156b549cc6c805a\"\u003e\u003ccode\u003eea542c9\u003c/code\u003e\u003c/a\u003e chore: bump psycopg package version to 3.3.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/8d31e4711c22b206d8863b9397b3b34f5b106e4d\"\u003e\u003ccode\u003e8d31e47\u003c/code\u003e\u003c/a\u003e chore(deps): bump the actions group across 1 directory with 4 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/268f863e0e8dbdbaf4f10616ebd14ff00edaeb51\"\u003e\u003ccode\u003e268f863\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg/issues/1370\"\u003e#1370\u003c/a\u003e from Sanjays2402/fix/truncated-binary-copy-error\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/a412fa4d682f035a9cf3c7886a5c95c15c64ba96\"\u003e\u003ccode\u003ea412fa4\u003c/code\u003e\u003c/a\u003e docs: put together different issues fixed around copy parsing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/f757307068aef06e439cf164915a3781acf483b5\"\u003e\u003ccode\u003ef757307\u003c/code\u003e\u003c/a\u003e fix: clearer error messages according to truncated copy message part\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/b1f17c44096b8fbc90836d9652d083f23c88e28d\"\u003e\u003ccode\u003eb1f17c4\u003c/code\u003e\u003c/a\u003e test: move existing COPY format parsing tests into a single module\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/21eba573f9356276b2a3e0b7c1d86fad03f2872f\"\u003e\u003ccode\u003e21eba57\u003c/code\u003e\u003c/a\u003e test: drop useless parametrization of copy binary parsigh test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/6780e17bcee0b838dedd0aa9c1b6dcc563a50cec\"\u003e\u003ccode\u003e6780e17\u003c/code\u003e\u003c/a\u003e fix(copy): handle truncated binary row headers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/2f2fcfbf35af4b80a4755fff75fe8b8f5e059193\"\u003e\u003ccode\u003e2f2fcfb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg/issues/1364\"\u003e#1364\u003c/a\u003e from DylanYoung/fix_client_encoding_aliases\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/ccc351ec3180969d105199012a017240492a43c0\"\u003e\u003ccode\u003eccc351e\u003c/code\u003e\u003c/a\u003e refactor: don't store the encodings raw table as a dict\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psycopg/psycopg/compare/3.3.4...3.3.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bcrypt` from 4.0.1 to 5.0.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyca/bcrypt/blob/main/CHANGELOG.rst\"\u003ebcrypt's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.0.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBumped MSRV to 1.74.\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.14 and free-threaded Python 3.14.\u003c/li\u003e\n\u003cli\u003eAdded support for Windows on ARM.\u003c/li\u003e\n\u003cli\u003ePassing \u003ccode\u003ehashpw\u003c/code\u003e a password longer than 72 bytes now raises a\n\u003ccode\u003eValueError\u003c/code\u003e. Previously the password was silently truncated, following the\nbehavior of the original OpenBSD \u003ccode\u003ebcrypt\u003c/code\u003e implementation.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.3.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.7.\u003c/li\u003e\n\u003cli\u003eWe now support free-threaded Python 3.13.\u003c/li\u003e\n\u003cli\u003eWe now support PyPy 3.11.\u003c/li\u003e\n\u003cli\u003eWe now publish wheels for free-threaded Python 3.13, for PyPy 3.11 on\n\u003ccode\u003emanylinux\u003c/code\u003e, and for ARMv7l on \u003ccode\u003emanylinux\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.2.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump Rust dependency versions - this should resolve crashes on Python 3.13\nfree-threaded builds.\u003c/li\u003e\n\u003cli\u003eWe no longer build \u003ccode\u003emanylinux\u003c/code\u003e wheels for PyPy 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.2.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump Rust dependency versions\u003c/li\u003e\n\u003cli\u003eRemoved the \u003ccode\u003eBCRYPT_ALLOW_RUST_163\u003c/code\u003e environment variable.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.1.3\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump Rust dependency versions\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.1.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePublish both \u003ccode\u003epy37\u003c/code\u003e and \u003ccode\u003epy39\u003c/code\u003e wheels. This should resolve some errors\nrelating to initializing a module multiple times per process.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.1.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed the type signature on the \u003ccode\u003ekdf\u003c/code\u003e method.\u003c/li\u003e\n\u003cli\u003eFixed packaging bug on Windows.\u003c/li\u003e\n\u003cli\u003eFixed incompatibility with passlib package detection assumptions.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/5060bce7e6c27f55e89d5b0d22b7ae0437a362f7\"\u003e\u003ccode\u003e5060bce\u003c/code\u003e\u003c/a\u003e 5.0.0 release (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1078\"\u003e#1078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/e43f568265df7e1aabbaddccc336dbf3ea675df8\"\u003e\u003ccode\u003ee43f568\u003c/code\u003e\u003c/a\u003e Bump actions/cache from 4.2.4 to 4.3.0 (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1077\"\u003e#1077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/fc9f680a96a0d8e9df4c5a1a4d991fd961a90adb\"\u003e\u003ccode\u003efc9f680\u003c/code\u003e\u003c/a\u003e Bump libc from 0.2.175 to 0.2.176 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1075\"\u003e#1075\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/633f46fbb33d8abfe5b9cb0c12eed79878fbff06\"\u003e\u003ccode\u003e633f46f\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1073\"\u003e#1073\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/a2fefbbcff8d46cfd00efa8d2c13956b388d6bec\"\u003e\u003ccode\u003ea2fefbb\u003c/code\u003e\u003c/a\u003e Remove pypy310 builds (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1074\"\u003e#1074\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/f60707e18f3f9728f2c6f4ce97fb8fc90721c7d3\"\u003e\u003ccode\u003ef60707e\u003c/code\u003e\u003c/a\u003e Bump wasi from 0.14.5+wasi-0.2.4 to 0.14.7+wasi-0.2.4 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1071\"\u003e#1071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/c790eed8fa205403e1ea0587cf9178e866c940f3\"\u003e\u003ccode\u003ec790eed\u003c/code\u003e\u003c/a\u003e Bump unicode-ident from 1.0.18 to 1.0.19 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1070\"\u003e#1070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/122cbdc6895fd70c044a2f4ad7845c2a56b93096\"\u003e\u003ccode\u003e122cbdc\u003c/code\u003e\u003c/a\u003e Bump target-lexicon from 0.13.2 to 0.13.3 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1069\"\u003e#1069\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/2bd208d6c5cadba2f983280ec21cc8cf977904d0\"\u003e\u003ccode\u003e2bd208d\u003c/code\u003e\u003c/a\u003e Bump wasi from 0.14.4+wasi-0.2.4 to 0.14.5+wasi-0.2.4 in /src/_bcrypt (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1068\"\u003e#1068\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/bcrypt/commit/e1aa9e883090e0267bd7b38964fe852f70a99b88\"\u003e\u003ccode\u003ee1aa9e8\u003c/code\u003e\u003c/a\u003e remove poinless cargo cache paths from CI (\u003ca href=\"https://redirect.github.com/pyca/bcrypt/issues/1067\"\u003e#1067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyca/bcrypt/compare/4.0.1...5.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `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 `pydantic-settings` from 2.5.2 to 2.15.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.15.0\u003c/h2\u003e\n\u003ch2\u003eHighlights\u003c/h2\u003e\n\u003ch3\u003eBehavior changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003ecase_sensitive\u003c/code\u003e now applies to init kwargs and config-file sources\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/900\"\u003e#900\u003c/a\u003e). \u003ccode\u003eInitSettingsSource\u003c/code\u003e and the JSON/TOML/YAML config sources previously ignored \u003ccode\u003ecase_sensitive\u003c/code\u003e. Since it defaults to \u003ccode\u003eFalse\u003c/code\u003e, \u003cstrong\u003ecase-insensitive matching is now the default\u003c/strong\u003e for these sources — e.g. \u003ccode\u003eSettings(TeSt=...)\u003c/code\u003e now populates a \u003ccode\u003etest\u003c/code\u003e field where it previously did not. Nested keys are still matched case-sensitively.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFields with unresolved forward references now emit a warning\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/901\"\u003e#901\u003c/a\u003e). Settings sources can silently fail to resolve such fields; they now raise \u003ccode\u003eIncompleteFieldDefinitionWarning\u003c/code\u003e telling you to call \u003ccode\u003emodel_rebuild()\u003c/code\u003e. If you have \u003ccode\u003efilterwarnings = error\u003c/code\u003e configured, this may surface as a new failure.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNon-JSON env values for strict fields now raise \u003ccode\u003eValidationError\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/926\"\u003e#926\u003c/a\u003e) instead of a less specific error.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eShow environment variable names in CLI help\u003c/strong\u003e via \u003ccode\u003ecli_show_env_vars=True\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/860\"\u003e#860\u003c/a\u003e), so generated \u003ccode\u003e--help\u003c/code\u003e output doubles as configuration documentation.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003ePYDANTIC_SETTINGS_DEBUG\u003c/code\u003e for debugging settings resolution\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/906\"\u003e#906\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/913\"\u003e#913\u003c/a\u003e). Set it to a truthy value with \u003ccode\u003eDEBUG\u003c/code\u003e logging enabled to see each source's contribution in priority order, which source won for each value, and which \u003ccode\u003eenv_file\u003c/code\u003e/secret files were probed, loaded, or skipped — the long-standing \u0026quot;why isn't my \u003ccode\u003e.env\u003c/code\u003e being picked up?\u0026quot; question.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003etoml_table_header\u003c/code\u003e for regular TOML files\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/882\"\u003e#882\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/886\"\u003e#886\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/887\"\u003e#887\u003c/a\u003e), letting you root settings at a nested table in any TOML file, not just \u003ccode\u003epyproject.toml\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e\u003ccode\u003eTraversable\u003c/code\u003e support for JSON/TOML/YAML file sources\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/902\"\u003e#902\u003c/a\u003e), so you can load config packaged inside a distribution — including files inside a zip or wheel — via \u003ccode\u003eimportlib.resources.files(...)\u003c/code\u003e without casting to \u003ccode\u003ePath\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eGCP: \u003ccode\u003eproject_id\u003c/code\u003e can come from an earlier settings source\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/878\"\u003e#878\u003c/a\u003e), rather than only from the constructor or \u003ccode\u003eGOOGLE_CLOUD_PROJECT\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix env vars not loading on Windows with \u003ccode\u003ecase_sensitive=True\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/894\"\u003e#894\u003c/a\u003e). Windows upper-cases \u003ccode\u003eos.environ\u003c/code\u003e keys, so fields raised \u003ccode\u003eField required\u003c/code\u003e instead of picking up their values.\u003c/li\u003e\n\u003cli\u003eRead secret files as UTF-8 instead of the platform locale encoding (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/917\"\u003e#917\u003c/a\u003e). On Windows code pages such as cp1252 this silently corrupted non-ASCII secrets.\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAliasPath\u003c/code\u003e on nested model fields not JSON-decoding env values (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/898\"\u003e#898\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix case-insensitive matching for \u003cstrong\u003eoptional\u003c/strong\u003e nested models (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/905\"\u003e#905\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix dotenv extras being wrongly claimed by a complex field sharing a name prefix (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/912\"\u003e#912\u003c/a\u003e) — e.g. \u003ccode\u003edbx_token\u003c/code\u003e being swallowed by a \u003ccode\u003edb: dict\u003c/code\u003e field.\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003enested_model_default_partial_update=True\u003c/code\u003e corrupting discriminated unions (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/876\"\u003e#876\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eSecret\u003c/code\u003e subclasses crashing when loaded from the environment (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/920\"\u003e#920\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFix enum names not parsing through nested annotations such as \u003ccode\u003eOptional[Annotated[MyEnum, ...]]\u003c/code\u003e with \u003ccode\u003eenv_parse_enums=True\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/910\"\u003e#910\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAn empty \u003ccode\u003eyaml_config_section\u003c/code\u003e now falls back to defaults instead of raising \u003ccode\u003eAttributeError: 'NoneType' object has no attribute 'keys'\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/914\"\u003e#914\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eNestedSecretsSettingsSource\u003c/code\u003e no longer follows symlinks pointing outside \u003ccode\u003esecrets_dir\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/889\"\u003e#889\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eGCP: skip the \u003ccode\u003elist_secrets\u003c/code\u003e call when \u003ccode\u003ecase_sensitive=True\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/862\"\u003e#862\u003c/a\u003e), lowering the required IAM permissions to just \u003ccode\u003eroles/secretmanager.secretAccessor\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAWS: \u003ccode\u003etypes-boto3[secretsmanager]\u003c/code\u003e is no longer required at runtime (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/880\"\u003e#880\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument JSON parsing of complex env values, plus a comma-separated-values recipe (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/919\"\u003e#919\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eRecommend an async settings loading pattern (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/908\"\u003e#908\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eClarify behavior when an unprefixed value is present in a dotenv file (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/895\"\u003e#895\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eClarify environment variable helper descriptions (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/867\"\u003e#867\u003c/a\u003e) and fix assorted typos (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/904\"\u003e#904\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate documentation link for Pydantic settings 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/863\"\u003epydantic/pydantic-settings#863\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/865\"\u003epydantic/pydantic-settings#865\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: clarify environment variable helper descriptions by \u003ca href=\"https://github.com/vip892766gma\"\u003e\u003ccode\u003e@​vip892766gma\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/867\"\u003epydantic/pydantic-settings#867\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/870\"\u003epydantic/pydantic-settings#870\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/875\"\u003epydantic/pydantic-settings#875\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSkip list_secrets call when case_sensitive=True by \u003ca href=\"https://github.com/ecerulm\"\u003e\u003ccode\u003e@​ecerulm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/862\"\u003epydantic/pydantic-settings#862\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGoogleSecretManagerSettingsSource: read project_id from previous sources by \u003ca href=\"https://github.com/ecerulm\"\u003e\u003ccode\u003e@​ecerulm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/878\"\u003epydantic/pydantic-settings#878\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/f725ca187bee4212e9ef799eefa3cb25be788462\"\u003e\u003ccode\u003ef725ca1\u003c/code\u003e\u003c/a\u003e Prepare release 2.15.0 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/930\"\u003e#930\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/28f35c25fac5d61210d532c31a300d49c0b684a4\"\u003e\u003ccode\u003e28f35c2\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 4 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/929\"\u003e#929\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/9056db049560897229f2603493753bae27b6479f\"\u003e\u003ccode\u003e9056db0\u003c/code\u003e\u003c/a\u003e test: move function-local imports to the top of test modules (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/927\"\u003e#927\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/f077e3ab3d9492838c7ef9275a88c95134688095\"\u003e\u003ccode\u003ef077e3a\u003c/code\u003e\u003c/a\u003e fix: raise ValidationError for non-JSON env values on strict fields (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/926\"\u003e#926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/ae25d703c458b57f5a9a425f6ec9a28ad868f980\"\u003e\u003ccode\u003eae25d70\u003c/code\u003e\u003c/a\u003e fix: treat Secret subclasses as non-complex fields (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/716\"\u003e#716\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/920\"\u003e#920\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/798dcea2a23b08a3e9b37994014e036224f6dd18\"\u003e\u003ccode\u003e798dcea\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 4 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/924\"\u003e#924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/a190041d353bda2d432ea1908de4c499ae89ee0a\"\u003e\u003ccode\u003ea190041\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 4 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/925\"\u003e#925\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/5d9333282b5c85d65a457c45e4476369b9949726\"\u003e\u003ccode\u003e5d93332\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 4 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/921\"\u003e#921\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/d2fdeda91157140d2ff0c05404f32a9b1218115a\"\u003e\u003ccode\u003ed2fdeda\u003c/code\u003e\u003c/a\u003e fix: read secret files as UTF-8 instead of the locale encoding (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/917\"\u003e#917\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/2256a4e60f83f2da81e7654252562fc4841aa5d4\"\u003e\u003ccode\u003e2256a4e\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 3 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/915\"\u003e#915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.5.2...v2.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `httpx` from 0.27.2 to 0.28.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/httpx/releases\"\u003ehttpx's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.28.1\u003c/h2\u003e\n\u003ch2\u003e0.28.1 (6th December, 2024)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix SSL case where \u003ccode\u003everify=False\u003c/code\u003e together with client side certificates.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 0.28.0\u003c/h2\u003e\n\u003ch2\u003e0.28.0 (28th November, 2024)\u003c/h2\u003e\n\u003cp\u003eThe 0.28 release includes a limited set of deprecations.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e:\u003c/p\u003e\n\u003cp\u003eWe are working towards a simplified SSL configuration API.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eFor users of the standard \u003ccode\u003everify=True\u003c/code\u003e or \u003ccode\u003everify=False\u003c/code\u003e cases, or \u003ccode\u003everify=\u0026lt;ssl_context\u0026gt;\u003c/code\u003e case this should require no changes. The following cases have been deprecated...\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003everify\u003c/code\u003e argument as a string argument is now deprecated and will raise warnings.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ecert\u003c/code\u003e argument is now deprecated and will raise warnings.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOur revised \u003ca href=\"https://github.com/encode/httpx/blob/HEAD/docs/advanced/ssl.md\"\u003eSSL documentation\u003c/a\u003e covers how to implement the same behaviour with a more constrained API.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eThe following changes are also included\u003c/strong\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003eproxies\u003c/code\u003e argument has now been removed.\u003c/li\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003eapp\u003c/code\u003e argument has now been removed.\u003c/li\u003e\n\u003cli\u003eJSON request bodies use a compact representation. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3363\"\u003e#3363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReview URL percent escape sets, based on WHATWG spec. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3371\"\u003e#3371\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/encode/httpx/issues/3373\"\u003e#3373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure \u003ccode\u003ecertifi\u003c/code\u003e and \u003ccode\u003ehttpcore\u003c/code\u003e are only imported if required. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003esocks5h\u003c/code\u003e as a valid proxy scheme. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3178\"\u003e#3178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCleanup \u003ccode\u003eRequest()\u003c/code\u003e method signature in line with \u003ccode\u003eclient.request()\u003c/code\u003e and \u003ccode\u003ehttpx.request()\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3378\"\u003e#3378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBugfix: When passing \u003ccode\u003eparams={}\u003c/code\u003e, always strictly update rather than merge with an existing querystring. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3364\"\u003e#3364\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/httpx/blob/master/CHANGELOG.md\"\u003ehttpx's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.28.1 (6th December, 2024)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix SSL case where \u003ccode\u003everify=False\u003c/code\u003e together with client side certificates.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.28.0 (28th November, 2024)\u003c/h2\u003e\n\u003cp\u003eBe aware that the default \u003cem\u003eJSON request bodies now use a more compact representation\u003c/em\u003e. This is generally considered a prefered style, tho may require updates to test suites.\u003c/p\u003e\n\u003cp\u003eThe 0.28 release includes a limited set of deprecations...\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e:\u003c/p\u003e\n\u003cp\u003eWe are working towards a simplified SSL configuration API.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eFor users of the standard \u003ccode\u003everify=True\u003c/code\u003e or \u003ccode\u003everify=False\u003c/code\u003e cases, or \u003ccode\u003everify=\u0026lt;ssl_context\u0026gt;\u003c/code\u003e case this should require no changes. The following cases have been deprecated...\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003everify\u003c/code\u003e argument as a string argument is now deprecated and will raise warnings.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ecert\u003c/code\u003e argument is now deprecated and will raise warnings.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOur revised \u003ca href=\"https://github.com/encode/httpx/blob/master/docs/advanced/ssl.md\"\u003eSSL documentation\u003c/a\u003e covers how to implement the same behaviour with a more constrained API.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eThe following changes are also included\u003c/strong\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003eproxies\u003c/code\u003e argument has now been removed.\u003c/li\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003eapp\u003c/code\u003e argument has now been removed.\u003c/li\u003e\n\u003cli\u003eJSON request bodies use a compact representation. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3363\"\u003e#3363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReview URL percent escape sets, based on WHATWG spec. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3371\"\u003e#3371\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/encode/httpx/issues/3373\"\u003e#3373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure \u003ccode\u003ecertifi\u003c/code\u003e and \u003ccode\u003ehttpcore\u003c/code\u003e are only imported if required. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003esocks5h\u003c/code\u003e as a valid proxy scheme. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3178\"\u003e#3178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCleanup \u003ccode\u003eRequest()\u003c/code\u003e method signature in line with \u003ccode\u003eclient.request()\u003c/code\u003e and \u003ccode\u003ehttpx.request()\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3378\"\u003e#3378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBugfix: When passing \u003ccode\u003eparams={}\u003c/code\u003e, always strictly update rather than merge with an existing querystring. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3364\"\u003e#3364\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/26d48e0634e6ee9cdc0533996db289ce4b430177\"\u003e\u003ccode\u003e26d48e0\u003c/code\u003e\u003c/a\u003e Version 0.28.1 (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3445\"\u003e#3445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/89599a9541af14bcf906fc4ed58ccbdf403802ba\"\u003e\u003ccode\u003e89599a9\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003everify=False\u003c/code\u003e, \u003ccode\u003ecert=...\u003c/code\u003e case. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3442\"\u003e#3442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/8ecb86f0d74ffc52d4663214fae9526bee89358d\"\u003e\u003ccode\u003e8ecb86f\u003c/code\u003e\u003c/a\u003e Add test for request params behavior changes (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3364\"\u003e#3364\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3440\"\u003e#3440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/0cb7e5a2e736628e2f506d259fcf0d48cd2bde82\"\u003e\u003ccode\u003e0cb7e5a\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 11 updates (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3434\"\u003e#3434\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/15e21e9ea3cad4f06e22a7e704aabefdf43d2e29\"\u003e\u003ccode\u003e15e21e9\u003c/code\u003e\u003c/a\u003e Updating deprecated docstring Client() class (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3426\"\u003e#3426\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/80960fa31918d7663c3f4c3ad61661cf0e80628f\"\u003e\u003ccode\u003e80960fa\u003c/code\u003e\u003c/a\u003e Version 0.28.0. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3419\"\u003e#3419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/a33c87852b8a0dddc65e5f739af1e0a6fca4b91f\"\u003e\u003ccode\u003ea33c878\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eextensions\u003c/code\u003e type annotation. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3380\"\u003e#3380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/ce7e14da27abba6574be9b3ea7cd5990556a9343\"\u003e\u003ccode\u003ece7e14d\u003c/code\u003e\u003c/a\u003e Error on verify as str. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3418\"\u003e#3418\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/47f4a96ffaaaa07dca1614409549b5d7a6e7af49\"\u003e\u003ccode\u003e47f4a96\u003c/code\u003e\u003c/a\u003e Handle empty zstd responses (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3412\"\u003e#3412\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/189fc4bcbe5f314128775dec66a616ac9a31ad48\"\u003e\u003ccode\u003e189fc4b\u003c/code\u003e\u003c/a\u003e Update CHANGELOG.md, fix typo(s) (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3406\"\u003e#3406\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/httpx/compare/0.27.2...0.28.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.13.2 to 1.19.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/alembic/releases\"\u003ealembic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.19.2\u003c/h1\u003e\n\u003cp\u003eReleased: September 4, 2026\u003c/p\u003e\n\u003ch2\u003echanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[changed] [autogenerate]\u003c/strong\u003e The autogenerate plugin for CHECK constraint detection by name, added in\n1.19.0. for \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/508\"\u003e#508\u003c/a\u003e, is no longer enabled by default.  It has been\nrenamed from \u003ccode\u003ealembic.autogenerate.checkconstraint_byname\u003c/code\u003e to\n\u003ccode\u003ealembic.ext.checkconstraint_byname\u003c/code\u003e and no longer matches on the\n\u003ccode\u003e\u0026quot;alembic.autogenerate.*\u0026quot;\u003c/code\u003e wildcard, which remains the default plugin\nspecification.  The previous name will still function as well if placed in\nthe plugins list explicitly,  both to enable the plugin and within a\n\u003ccode\u003e\u0026quot;~\u0026quot;\u003c/code\u003e exclusion, so that an \u003ccode\u003eenv.py\u003c/code\u003e written against 1.19.0 or 1.19.1\nrequires no change.\u003c/p\u003e\n\u003cp\u003eThe plugin is now recommended only for schemas that ensure the naming of\nall constraints using a client side naming convention, otherwise there's a\npersistent risk of false positives. See\n\u003ccode\u003eautogenerate_check_constraints\u003c/code\u003e for background on things to be aware\nof when using this plugin.\u003c/p\u003e\n\u003cp\u003eAs part of this change \u0026quot;type bound\u0026quot; CHECK constraints, which include\nconstraints generated for the \u003ccode\u003eBoolean\u003c/code\u003e and \u003ccode\u003eEnum\u003c/code\u003e datatypes when the\n\u003ccode\u003ecreate_constraint\u003c/code\u003e parameter is set to True, are no longer ignored in\nthe metadata side, so that normal name-based matching can occur for\nthese constraints.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1859\"\u003e#1859\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eusecase\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[usecase] [autogenerate] [batch]\u003c/strong\u003e The target of a \u003ccode\u003e~sqlalchemy.schema.ForeignKey\u003c/code\u003e is now located\nusing the \u003ccode\u003eForeignKey.target_tokens\u003c/code\u003e and\n\u003ccode\u003eForeignKey.target_table_key\u003c/code\u003e accessors added in SQLAlchemy 2.1, rather\nthan by splitting the dotted string form of that target on \u003ccode\u003e\u0026quot;.\u0026quot;\u003c/code\u003e.  As a\ndot inside a schema, table or column name cannot be told apart from the\nseparator between those names, a foreign key whose target name contained\na dot was previously mis-parsed by autogenerate rendering as well as by\nbatch migrations.  The dotted string continues to be split when running\nagainst SQLAlchemy 2.0, where these accessors are not present.  Thanks to\nGyanu Mayank for the initial pull request.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1860\"\u003e#1860\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.19.1\u003c/h1\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\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 `apscheduler` from 3.10.4 to 3.11.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/apscheduler/releases\"\u003eapscheduler's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.11.3\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed sub-minute interval jobs stalling for the duration of a DST spring-forward gap when the scheduler was configured with a \u003ccode\u003eZoneInfo\u003c/code\u003e time zone, caused by the wakeup delay being computed from the naive wall-clock difference instead of the actual UTC difference (\u003ca href=\"https://redirect.github.com/agronholm/apscheduler/issues/1103\"\u003e#1103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed imported jobs missing their scheduler and job store links (\u003ca href=\"https://redirect.github.com/agronholm/apscheduler/issues/1119\"\u003e#1119\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed an issue where a job using a \u003ccode\u003eCronTrigger\u003c/code\u003e scheduled in a repeated time interval during DST transitions could cause the scheduler to get stuck in an infinite loop (\u003ca href=\"https://redirect.github.com/agronholm/apscheduler/issues/1021\"\u003e#1021\u003c/a\u003e; PR by \u003ca href=\"https://github.com/soulofakuma\"\u003e\u003ccode\u003e@​soulofakuma\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ccode\u003escheduler.shutdown()\u003c/code\u003e not raising \u003ccode\u003eSchedulerNotRunning\u003c/code\u003e (or raising the wrong exception) for asynchronous schedulers when the scheduler is in fact not running\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCronTrigger\u003c/code\u003e sticking on a folded datetime during the fall-back DST transition (\u003ca href=\"https://redirect.github.com/agronholm/apscheduler/issues/1021\"\u003e#1021\u003c/a\u003e \u0026lt;\u003ca href=\"https://redirect.github.com/agronholm/apscheduler/issues/1021\"\u003eagronholm/apscheduler#1021\u003c/a\u003e\u0026gt;_; PR by \u003ca href=\"https://github.com/berianjames\"\u003e\u003ccode\u003e@​berianjames\u003c/code\u003e\u003c/a\u003e)`\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.11.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.6 and 3.7\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003eZoneInfo\u003c/code\u003e time zones and deprecated support for pytz time zones\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eCalendarIntervalTrigger\u003c/code\u003e, backported from the 4.x series\u003c/li\u003e\n\u003cli\u003eAdded the ability to export and import jobs via \u003ccode\u003escheduler.export_jobs()\u003c/code\u003e and \u003ccode\u003escheduler.import_jobs()\u003c/code\u003e, respectively\u003c/li\u003e\n\u003cli\u003eRemoved the dependency on \u003ccode\u003esix\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eProcessPoolExecutor\u003c/code\u003e to spawn new subprocesses from scratch instead of forking on all platform\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eAsyncIOScheduler\u003c/code\u003e inadvertently creating a defunct event loop at start, leading to the scheduler not working at all\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eProcessPoolExecutor\u003c/code\u003e not respecting the passed keyword arguments when a broken pool was being replaced\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/4308ec95b94069f5dbdddb6c60fb792dfc8c40a4\"\u003e\u003ccode\u003e4308ec9\u003c/code\u003e\u003c/a\u003e Added the release version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/ff68780d7f66fe0f505c3a32764005cd004996b9\"\u003e\u003ccode\u003eff68780\u003c/code\u003e\u003c/a\u003e Added a note about weekday numbers in CronTrigger.from_crontab()\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/36936e904052e6bfbd03f83e17b03701b7a589fe\"\u003e\u003ccode\u003e36936e9\u003c/code\u003e\u003c/a\u003e Updated actions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/c0ff7e4ccfcc703db44a905b70c1d6568a6f81fa\"\u003e\u003ccode\u003ec0ff7e4\u003c/code\u003e\u003c/a\u003e Fixed Pyside6 tests failing on Python 3.9 and 3.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/1b782c90edeac787deb3106fb3e5c775b3d6b0cd\"\u003e\u003ccode\u003e1b782c9\u003c/code\u003e\u003c/a\u003e Fixed fixture \u003ccode\u003ecoreapp\u003c/code\u003e not found\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/dc3dde4a34c021f215d120d88fe19ddc66bb8a66\"\u003e\u003ccode\u003edc3dde4\u003c/code\u003e\u003c/a\u003e Test against PySide6 on all Python versions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/18a6f6b637e372730f6325786f97936e6eaa9f77\"\u003e\u003ccode\u003e18a6f6b\u003c/code\u003e\u003c/a\u003e Fixed imported jobs missing their scheduler and job store links\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/1693db4d8861bf941d299d79a586797ad0ac6467\"\u003e\u003ccode\u003e1693db4\u003c/code\u003e\u003c/a\u003e Fix interval jobs stalling across DST spring-forward with ZoneInfo (\u003ca href=\"https://redirect.github.com/agronholm/apscheduler/issues/1114\"\u003e#1114\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/0636bf4931fddb706b948b6781ebbd76058f1443\"\u003e\u003ccode\u003e0636bf4\u003c/code\u003e\u003c/a\u003e Added Python 3.14 to the test matrix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/apscheduler/commit/3eb3de8115f1631dc5e2ecce7b00175d34ffbdf9\"\u003e\u003ccode\u003e3eb3de8\u003c/code\u003e\u003c/a\u003e Fixed bad use of pytest.raises()\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/apscheduler/compare/3.10.4...3.11.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `redis` from 5.0.8 to 8.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/redis-py/releases\"\u003eredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.1.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003ch2\u003e✨ Highlights\u003c/h2\u003e\n\u003ch3\u003eAsync maintenance notifications\u003c/h3\u003e\n\u003cp\u003eredis-py now supports server-pushed \u003cstrong\u003emaintenance notifications\u003c/strong\u003e in the asyncio stack for both\nstandalone and cluster clients, bringing the async client to parity with the sync implementation.\nWhen a Redis deployment signals maintenance events (such as node migration or failover windows), the\nasync client reacts through the maintenance-notifications handler (\u003ccode\u003eredis/maint_notifications.py\u003c/code\u003e and\nits async integration under \u003ccode\u003eredis/asyncio/\u003c/code\u003e), allowing applications to adapt connection handling\nduring maintenance without downtime. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4177\"\u003e#4177\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eExpanded command coverage\u003c/h3\u003e\n\u003cp\u003eThis release adds a batch of new command surfaces across core data types and modules:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eLists\u003c/strong\u003e — \u003ccode\u003eLMOVEM\u003c/code\u003e / \u003ccode\u003eBLMOVEM\u003c/code\u003e for moving multiple elements between lists (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4174\"\u003e#4174\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSets\u003c/strong\u003e — \u003ccode\u003eSDIFFCARD\u003c/code\u003e and \u003ccode\u003eSUNIONCARD\u003c/code\u003e cardinality commands (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4171\"\u003e#4171\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eStreams\u003c/strong\u003e — \u003ccode\u003eMAXCOUNT\u003c/code\u003e / \u003ccode\u003eMAXSIZE\u003c/code\u003e options for \u003ccode\u003eXREAD\u003c/code\u003e and \u003ccode\u003eXREADGROUP\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4173\"\u003e#4173\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTime Series\u003c/strong\u003e — \u003ccode\u003eTS.READ\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4170\"\u003e#4170\u003c/a\u003e), \u003ccode\u003eTS.QUERYLABELS\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4197\"\u003e#4197\u003c/a\u003e), \u003ccode\u003eTS.NRANGE\u003c/code\u003e / \u003ccode\u003eTS.NREVRANGE\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4163\"\u003e#4163\u003c/a\u003e),\nand an \u003ccode\u003eexclude_empty\u003c/code\u003e (\u003ccode\u003eEXCLUDEEMPTY\u003c/code\u003e) option for \u003ccode\u003eTS.MRANGE\u003c/code\u003e / \u003ccode\u003eTS.MREVRANGE\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4188\"\u003e#4188\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSearch\u003c/strong\u003e — \u003ccode\u003eFT.ALIASLIST\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4198\"\u003e#4198\u003c/a\u003e) and a \u003ccode\u003eCOLLECT\u003c/code\u003e reducer for aggregations (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4179\"\u003e#4179\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSentinel\u003c/strong\u003e — replica sentinel aliases (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4127\"\u003e#4127\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🚀 New Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd replica sentinel aliases (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4127\"\u003e#4127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd TS.NRANGE and TS.NREVRANGE support to the timeseries command surface (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4163\"\u003e#4163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add TS.READ command support to the timeseries module (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4170\"\u003e#4170\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add SDIFFCARD and SUNIONCARD command support (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4171\"\u003e#4171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add MAXCOUNT/MAXSIZE support to XREAD and XREADGROUP (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4173\"\u003e#4173\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add LMOVEM and BLMOVEM commands for moving multiple list elements (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4174\"\u003e#4174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add async maintenance-notifications support for standalone and cluster clients (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4177\"\u003e#4177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add COLLECT reducer support to search aggregations (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4179\"\u003e#4179\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add exclude_empty (EXCLUDEEMPTY) option to TS.MRANGE and TS.MREVRANGE (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4188\"\u003e#4188\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add TS.QUERYLABELS support to the timeseries command surface (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4197\"\u003e#4197\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add FT.ALIASLIST support (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4198\"\u003e#4198\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e⚠️ Experimental\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: add client-side HIMPORT fieldset support for standalone and cluster clients (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4205\"\u003e#4205\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe feature considered unstable and \u003cstrong\u003epublic API might be changed in the future minor version\u003c/strong\u003e\u003c/p\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: detect closed pooled connection without consuming pending push data (RESP3 + hiredis) (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4156\"\u003e#4156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Sentinel pool capacity loss after failover (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4193\"\u003e#4193\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/e013126df18e476fbb8b8215f040f39bd3242683\"\u003e\u003ccode\u003ee013126\u003c/code\u003e\u003c/a\u003e Testing with 8.10 GA (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4227\"\u003e#4227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/059d1e97d88dd7ed516628e0a9765ab8e0e299f1\"\u003e\u003ccode\u003e059d1e9\u003c/code\u003e\u003c/a\u003e Fixed TS.NRANGE commands to correctly apply aggregators (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4225\"\u003e#4225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/d486a0a982dcdf316006474dc286ca65cbec5a9f\"\u003e\u003ccode\u003ed486a0a\u003c/code\u003e\u003c/a\u003e Fix FIELDNAME alias dropping first character of un-prefixed fields (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4224\"\u003e#4224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/fb931042420baaa5fbb9021955e444f7afa66dc2\"\u003e\u003ccode\u003efb93104\u003c/code\u003e\u003c/a\u003e feat: add client-side HIMPORT fieldset support for standalone and cluster cli...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/9197609f48eb9713411a50534ca48210486a4bf9\"\u003e\u003ccode\u003e9197609\u003c/code\u003e\u003c/a\u003e Fix lat/lon swap in search querystring geo() helper (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4223\"\u003e#4223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/14714a0812d3ff03ad34c89ce6f79e287a04e9fb\"\u003e\u003ccode\u003e14714a0\u003c/code\u003e\u003c/a\u003e fix: Fixed double decoding issue with unquote() (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4222\"\u003e#4222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/227280a939718d09ff9d7c41f9785ffdc21bdc2a\"\u003e\u003ccode\u003e227280a\u003c/code\u003e\u003c/a\u003e Update lib version to 8.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/88d16d0db10c852d1d292628b2c832f1ed117056\"\u003e\u003ccode\u003e88d16d0\u003c/code\u003e\u003c/a\u003e Decode ACL LOG string values on the default RESP3 legacy callback (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4201\"\u003e#4201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/599fd75ca7d0745928280ff3a64ccd224dbf2b76\"\u003e\u003ccode\u003e599fd75\u003c/code\u003e\u003c/a\u003e feat: add FT.ALIASLIST support (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4198\"\u003e#4198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/71e275e6eae94d202b49bccce10ef0d2a59050e7\"\u003e\u003ccode\u003e71e275e\u003c/code\u003e\u003c/a\u003e test: add VectorField RERANK serialization tests for sync and async search (#...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/redis/redis-py/compare/v5.0.8...v8.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bandit` from 1.8.6 to 1.9.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/bandit/releases\"\u003ebandit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: fixed some typos in comments by \u003ca href=\"https://github.com/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/login-action from 3.6.0 to 3.7.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/PyCQA/bandit/pull/1353\"\u003ePyCQA/bandit#1353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.18.0 to 6.19.2 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/PyCQA/bandit/pull/1357\"\u003ePyCQA/bandit#1357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B613 crash when reading from stdin by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude filename in nosec 'no failed test' warning by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e ...\n\n_Description has been truncated_","html_url":"https://github.com/wagnerks1990/LabGoblin/pull/147","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/wagnerks1990%2FLabGoblin/issues/147","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/147/packages"}},{"old_version":"\u003e=1.7.5","new_version":"\u003e=1.9.4","update_type":"minor","path":null,"pr_created_at":"2026-09-10T20:53:28.000Z","version_change":"\u003e=1.7.5 → \u003e=1.9.4","issue":{"uuid":"5417215307","node_id":"PR_kwDOTRlIRs8AAAABDDdQfA","number":8,"state":"closed","title":"Update bandit requirement from \u003e=1.7.5 to \u003e=1.9.4","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-11T07:46:11.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-10T20:53:28.000Z","updated_at":"2026-09-11T07:46:13.000Z","time_to_close":39163,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Update","packages":[{"name":"bandit","old_version":"\u003e=1.7.5","new_version":"\u003e=1.9.4","repository_url":"https://github.com/PyCQA/bandit"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [bandit](https://github.com/PyCQA/bandit) 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/PyCQA/bandit/releases\"\u003ebandit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: fixed some typos in comments by \u003ca href=\"https://github.com/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/login-action from 3.6.0 to 3.7.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/PyCQA/bandit/pull/1353\"\u003ePyCQA/bandit#1353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.18.0 to 6.19.2 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/PyCQA/bandit/pull/1357\"\u003ePyCQA/bandit#1357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B613 crash when reading from stdin by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude filename in nosec 'no failed test' warning by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1363\"\u003ePyCQA/bandit#1363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B615 false positive when revision is set via variable by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1358\"\u003ePyCQA/bandit#1358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLower version guard in check_ast_node to Python 3.12 by \u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B106 reporting wrong line number on multiline function calls by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1360\"\u003ePyCQA/bandit#1360\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/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\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/PyCQA/bandit/commit/92ae8b82fb422a639f0ed8d99e96cea769594e08\"\u003e\u003ccode\u003e92ae8b8\u003c/code\u003e\u003c/a\u003e Fix B106 reporting wrong line number on multiline function calls (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1360\"\u003e#1360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c8c8a55c3307333b8eb46cb2ef46d49b1fad6546\"\u003e\u003ccode\u003ec8c8a55\u003c/code\u003e\u003c/a\u003e Lower version guard in check_ast_node to Python 3.12 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1355\"\u003e#1355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/8f2f9284fca830ca017b2e2cc3ddc2a7b74b7040\"\u003e\u003ccode\u003e8f2f928\u003c/code\u003e\u003c/a\u003e Fix B615 false positive when revision is set via variable (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1358\"\u003e#1358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e27493f71c114e0e5dfc0a475d225d7f9f4a7e2b\"\u003e\u003ccode\u003ee27493f\u003c/code\u003e\u003c/a\u003e Include filename in nosec 'no failed test' warning (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1363\"\u003e#1363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/b69b336450301d424e5ba04c9a58e8d41b7169b6\"\u003e\u003ccode\u003eb69b336\u003c/code\u003e\u003c/a\u003e Fix B613 crash when reading from stdin (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1361\"\u003e#1361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e418b798abcc3f2b00c07fd6315da8fe9aeead00\"\u003e\u003ccode\u003ee418b79\u003c/code\u003e\u003c/a\u003e Bump docker/build-push-action from 6.18.0 to 6.19.2 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1357\"\u003e#1357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/ff646fd7e0e34fb350196fc58448fad17178c27a\"\u003e\u003ccode\u003eff646fd\u003c/code\u003e\u003c/a\u003e Bump docker/login-action from 3.6.0 to 3.7.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1353\"\u003e#1353\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c0def6c7ebab60f98c28ba759d488f4fbe6dae89\"\u003e\u003ccode\u003ec0def6c\u003c/code\u003e\u003c/a\u003e chore: fixed some typos in comments (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1351\"\u003e#1351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/765f00d3f202f83f61d03f882f80a2d5142d81f8\"\u003e\u003ccode\u003e765f00d\u003c/code\u003e\u003c/a\u003e Limit B614 to torch.load deserializers (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1348\"\u003e#1348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/06fbbab0df3374ffa8ef24c6f601b2d5e1d4d429\"\u003e\u003ccode\u003e06fbbab\u003c/code\u003e\u003c/a\u003e Bump docker/setup-buildx-action from 3.11.1 to 3.12.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1347\"\u003e#1347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.7.5...1.9.4\"\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/YATHARTHH/Job-Search-Decision-Assistant/pull/8","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/YATHARTHH%2FJob-Search-Decision-Assistant/issues/8","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/8/packages"}},{"old_version":"1.7.10","new_version":"1.9.4","update_type":"minor","path":null,"pr_created_at":"2026-09-09T23:39:18.000Z","version_change":"1.7.10 → 1.9.4","issue":{"uuid":"5405876896","node_id":"PR_kwDOUE3Vns8AAAABC6U9Bw","number":84,"state":"closed","title":"chore(deps): bump the pip-minor-patch group across 1 directory with 12 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-16T23:40:27.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-09T23:39:18.000Z","updated_at":"2026-09-16T23:40:29.000Z","time_to_close":604869,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"pip-minor-patch","update_count":12,"packages":[{"name":"psycopg","old_version":"3.3.4","new_version":"3.3.5","repository_url":"https://github.com/psycopg/psycopg"},{"name":"langchain-anthropic","old_version":"1.6.1","new_version":"1.7.1","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"fastapi","old_version":"0.139.2","new_version":"0.141.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"pypdf","old_version":"6.16.2","new_version":"6.17.0","repository_url":"https://github.com/py-pdf/pypdf"},{"name":"ruff","old_version":"0.16.5","new_version":"0.16.6","repository_url":"https://github.com/astral-sh/ruff"},{"name":"anyio","old_version":"4.14.2","new_version":"4.15.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"langchain-core","old_version":"1.6.1","new_version":"1.6.2","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langsmith","old_version":"0.11.2","new_version":"0.12.2","repository_url":"https://github.com/langchain-ai/langsmith-sdk"},{"name":"psycopg-binary","old_version":"3.3.4","new_version":"3.3.5","repository_url":"https://github.com/psycopg/psycopg"},{"name":"pydantic-core","old_version":"2.46.5","new_version":"2.48.0","repository_url":"https://github.com/pydantic/pydantic"},{"name":"regex","old_version":"2026.8.31","new_version":"2026.9.3","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"bandit","old_version":"1.7.10","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-minor-patch group with 12 updates in the /caos/server directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [psycopg](https://github.com/psycopg/psycopg) | `3.3.4` | `3.3.5` |\n| [langchain-anthropic](https://github.com/langchain-ai/langchain) | `1.6.1` | `1.7.1` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.139.2` | `0.141.1` |\n| [pypdf](https://github.com/py-pdf/pypdf) | `6.16.2` | `6.17.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.16.5` | `0.16.6` |\n| [anyio](https://github.com/agronholm/anyio) | `4.14.2` | `4.15.1` |\n| [langchain-core](https://github.com/langchain-ai/langchain) | `1.6.1` | `1.6.2` |\n| [langsmith](https://github.com/langchain-ai/langsmith-sdk) | `0.11.2` | `0.12.2` |\n| [psycopg-binary](https://github.com/psycopg/psycopg) | `3.3.4` | `3.3.5` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.46.5` | `2.48.0` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2026.8.31` | `2026.9.3` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.7.10` | `1.9.4` |\n\n\nUpdates `psycopg` from 3.3.4 to 3.3.5\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psycopg/psycopg/blob/master/docs/news.rst\"\u003epsycopg's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e.. currentmodule:: psycopg\u003c/p\u003e\n\u003cp\u003e.. index::\nsingle: Release notes\nsingle: News\u003c/p\u003e\n\u003ch1\u003e\u003ccode\u003epsycopg\u003c/code\u003e release notes\u003c/h1\u003e\n\u003ch2\u003eCurrent release\u003c/h2\u003e\n\u003cp\u003ePsycopg 3.3.5\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDiscard prepared statements upon :sql:\u003ccode\u003eALTER *\u003c/code\u003e or \u003ccode\u003eDISCARD *\u003c/code\u003e\n(:ticket:\u003ccode\u003e[#1307](https://github.com/psycopg/psycopg/issues/1307)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e!ProgrammingError\u003c/code\u003e when dumping non-\u003ccode\u003e!None\u003c/code\u003e values with\nno \u003ccode\u003e!NoneType\u003c/code\u003e dumper registered in python implementation (:ticket:\u003ccode\u003e[#1325](https://github.com/psycopg/psycopg/issues/1325)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e!wait_selector\u003c/code\u003e wait function to not raise \u003ccode\u003e!KeyError\u003c/code\u003e\n(:ticket:\u003ccode\u003e[#1327](https://github.com/psycopg/psycopg/issues/1327)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e!DataError\u003c/code\u003e messages leaking the literal \u003ccode\u003e{...}\u003c/code\u003e placeholder instead\nof the offending value when loading a pre-year-1 :sql:\u003ccode\u003etimestamp\u003c/code\u003e or a\nmalformed binary :sql:\u003ccode\u003ejsonb\u003c/code\u003e value (:ticket:\u003ccode\u003e[#1372](https://github.com/psycopg/psycopg/issues/1372)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003e!DataError\u003c/code\u003e instead of \u003ccode\u003e!ValueError\u003c/code\u003e when \u003ccode\u003e~psycopg.rows.namedtuple_row\u003c/code\u003e\nreceives duplicate column names (:ticket:\u003ccode\u003e[#1348](https://github.com/psycopg/psycopg/issues/1348)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003e!DataError\u003c/code\u003e on inconsistent copy data (:tickets:\u003ccode\u003e[#1359](https://github.com/psycopg/psycopg/issues/1359), [#1360](https://github.com/psycopg/psycopg/issues/1360)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eHandle client encodings aliases (:ticket:\u003ccode\u003e[#1363](https://github.com/psycopg/psycopg/issues/1363)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix building C extension with Cython 3.3.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePsycopg 3.3.4\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix possible spurious connection timeout in systems with very long uptimes\nin C extension (:ticket:\u003ccode\u003e[#1280](https://github.com/psycopg/psycopg/issues/1280)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix client-side adaptation of enums whose name require quotes\n(:ticket:\u003ccode\u003e[#1298](https://github.com/psycopg/psycopg/issues/1298)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eConsistently populate \u003ccode\u003e~Cursor.statusmessage\u003c/code\u003e after \u003ccode\u003e~Cursor.executemany()\u003c/code\u003e\n(:ticket:\u003ccode\u003e[#1302](https://github.com/psycopg/psycopg/issues/1302)\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePsycopg 3.3.3\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRetain \u003ccode\u003eError.pgconn\u003c/code\u003e when raising a single exception for multiple connection\nattempt errors (:ticket:\u003ccode\u003e[#1246](https://github.com/psycopg/psycopg/issues/1246)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eReturn a proper error when server sends \u003ccode\u003eErrorResponse\u003c/code\u003e for a \u003ccode\u003eSync\u003c/code\u003e after\na \u003ccode\u003eParse\u003c/code\u003e (:ticket:\u003ccode\u003e[#1260](https://github.com/psycopg/psycopg/issues/1260)\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/psycopg/commit/ea542c9534cc9841d50450e0c156b549cc6c805a\"\u003e\u003ccode\u003eea542c9\u003c/code\u003e\u003c/a\u003e chore: bump psycopg package version to 3.3.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/8d31e4711c22b206d8863b9397b3b34f5b106e4d\"\u003e\u003ccode\u003e8d31e47\u003c/code\u003e\u003c/a\u003e chore(deps): bump the actions group across 1 directory with 4 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/268f863e0e8dbdbaf4f10616ebd14ff00edaeb51\"\u003e\u003ccode\u003e268f863\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg/issues/1370\"\u003e#1370\u003c/a\u003e from Sanjays2402/fix/truncated-binary-copy-error\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/a412fa4d682f035a9cf3c7886a5c95c15c64ba96\"\u003e\u003ccode\u003ea412fa4\u003c/code\u003e\u003c/a\u003e docs: put together different issues fixed around copy parsing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/f757307068aef06e439cf164915a3781acf483b5\"\u003e\u003ccode\u003ef757307\u003c/code\u003e\u003c/a\u003e fix: clearer error messages according to truncated copy message part\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/b1f17c44096b8fbc90836d9652d083f23c88e28d\"\u003e\u003ccode\u003eb1f17c4\u003c/code\u003e\u003c/a\u003e test: move existing COPY format parsing tests into a single module\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/21eba573f9356276b2a3e0b7c1d86fad03f2872f\"\u003e\u003ccode\u003e21eba57\u003c/code\u003e\u003c/a\u003e test: drop useless parametrization of copy binary parsigh test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/6780e17bcee0b838dedd0aa9c1b6dcc563a50cec\"\u003e\u003ccode\u003e6780e17\u003c/code\u003e\u003c/a\u003e fix(copy): handle truncated binary row headers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/2f2fcfbf35af4b80a4755fff75fe8b8f5e059193\"\u003e\u003ccode\u003e2f2fcfb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg/issues/1364\"\u003e#1364\u003c/a\u003e from DylanYoung/fix_client_encoding_aliases\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/ccc351ec3180969d105199012a017240492a43c0\"\u003e\u003ccode\u003eccc351e\u003c/code\u003e\u003c/a\u003e refactor: don't store the encodings raw table as a dict\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psycopg/psycopg/compare/3.3.4...3.3.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `langchain-anthropic` from 1.6.1 to 1.7.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langchain/releases\"\u003elangchain-anthropic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elangchain-anthropic==1.7.1\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-anthropic==1.7.0\u003c/p\u003e\n\u003cp\u003erelease(anthropic): 1.7.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40181\"\u003e#40181\u003c/a\u003e)\nperf(anthropic,langchain): omit middleware trace inputs (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40098\"\u003e#40098\u003c/a\u003e)\nfeat(anthropic): add Claude Fable 5.1 support (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40106\"\u003e#40106\u003c/a\u003e)\u003c/p\u003e\n\u003ch2\u003elangchain-anthropic==1.7.0\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-anthropic==1.6.1\u003c/p\u003e\n\u003cp\u003erelease(anthropic): 1.7.0 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39963\"\u003e#39963\u003c/a\u003e)\nfeat(anthropic): support top-level param for skills via \u003ccode\u003econtainer\u003c/code\u003e; \u003ccode\u003eupdates\u003c/code\u003e thinking display mode (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39962\"\u003e#39962\u003c/a\u003e)\nfeat(anthropic): support 1.0 sdk (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39938\"\u003e#39938\u003c/a\u003e)\nfix(anthropic): auto-append \u003ccode\u003eadvisor-tool-2026-03-01\u003c/code\u003e beta header for \u003ccode\u003eadvisor_20260301\u003c/code\u003e tool (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39917\"\u003e#39917\u003c/a\u003e)\nfeat(anthropic): surface gateway response metadata (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39809\"\u003e#39809\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/langchain-ai/langchain/commit/79cab2dc7f58be720cac43db3677b4c1fd971f91\"\u003e\u003ccode\u003e79cab2d\u003c/code\u003e\u003c/a\u003e release(anthropic): 1.7.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40181\"\u003e#40181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/1e6a4f0b45b60475f566f3ad49fb32ea99d22233\"\u003e\u003ccode\u003e1e6a4f0\u003c/code\u003e\u003c/a\u003e chore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40171\"\u003e#40171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/8330dfe987988c1bcbbc5e8d9af9a67e5a1c2744\"\u003e\u003ccode\u003e8330dfe\u003c/code\u003e\u003c/a\u003e docs(langchain): runnable \u003ccode\u003elangchain.mcp\u003c/code\u003e examples (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39976\"\u003e#39976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/280442b54c80db2175ced4a20ab59eab86a32dc1\"\u003e\u003ccode\u003e280442b\u003c/code\u003e\u003c/a\u003e feat(langchain): \u003ccode\u003elangchain.mcp\u003c/code\u003e namespace, \u003ccode\u003eMCPAdapter\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39939\"\u003e#39939\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/f5ee2b65f4cf2f1a9fe688bcae6ad2af966582bd\"\u003e\u003ccode\u003ef5ee2b6\u003c/code\u003e\u003c/a\u003e chore(chroma): bump Pygments security constraint (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40162\"\u003e#40162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/234255c1c7427b5ed6dc505abad41ddfa6c9ff8f\"\u003e\u003ccode\u003e234255c\u003c/code\u003e\u003c/a\u003e chore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40009\"\u003e#40009\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/79e0e4adbafc1fda1ca9956e184be8b8819aa7ab\"\u003e\u003ccode\u003e79e0e4a\u003c/code\u003e\u003c/a\u003e chore(deps): bump mistune from 3.3.0 to 3.3.3 in /libs/langchain (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40149\"\u003e#40149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/e90201b7af5cd32762744c974ca9ce3f27efc9d8\"\u003e\u003ccode\u003ee90201b\u003c/code\u003e\u003c/a\u003e chore(deps): bump mistune from 3.3.0 to 3.3.3 in /libs/core (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40150\"\u003e#40150\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/4240248e7b08ed72e85ce0744350c33beddb0ac8\"\u003e\u003ccode\u003e4240248\u003c/code\u003e\u003c/a\u003e chore(deps): bump mistune from 3.3.0 to 3.3.3 in /libs/text-splitters (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40148\"\u003e#40148\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/530290a9d445069d80a68cdcd4d0da768f2aa2b0\"\u003e\u003ccode\u003e530290a\u003c/code\u003e\u003c/a\u003e chore(deps): bump uv to 0.12.8 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40092\"\u003e#40092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langchain/compare/langchain-anthropic==1.6.1...langchain-anthropic==1.7.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.139.2 to 0.141.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.141.1\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix support for background tasks and headers from dependencies in \u003ccode\u003eapp.frontend()\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16105\"\u003e#16105\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Document \u003ccode\u003eFASTAPI_ENV\u003c/code\u003e in FastAPI CLI guide. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16104\"\u003e#16104\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.141.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003eapp.frontend(check_dir=\u0026quot;auto\u0026quot;)\u003c/code\u003e, to make local development more convenient with \u003ccode\u003efastapi dev\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16102\"\u003e#16102\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.140.13\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003estatus_code\u003c/code\u003e being ignored for SSE and JSONL streaming endpoints. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15937\"\u003e#15937\u003c/a\u003e by \u003ca href=\"https://github.com/SAURABHSALVE\"\u003e\u003ccode\u003e@​SAURABHSALVE\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Fix \u003ccode\u003eformat_sse_event\u003c/code\u003e docstring rendering of \u003ccode\u003e\\n\\n\u003c/code\u003e terminator. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15613\"\u003e#15613\u003c/a\u003e by \u003ca href=\"https://github.com/AshNicolus\"\u003e\u003ccode\u003e@​AshNicolus\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Add API reference page for fastapi.sse. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15930\"\u003e#15930\u003c/a\u003e by \u003ca href=\"https://github.com/SAURABHSALVE\"\u003e\u003ccode\u003e@​SAURABHSALVE\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.140.12\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix line splitting in \u003ccode\u003eformat_sse_event\u003c/code\u003e to comply with SSE spec. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15515\"\u003e#15515\u003c/a\u003e by \u003ca href=\"https://github.com/Zawwarsami16\"\u003e\u003ccode\u003e@​Zawwarsami16\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.140.11\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eresponse_model_*\u003c/code\u003e params ignored for non-generator endpoints with \u003ccode\u003eIterable[..]\u003c/code\u003e return type. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15093\"\u003e#15093\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.140.10\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix handling sequences with nested Annotated types. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14874\"\u003e#14874\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\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Accept any base test failure as regression. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16092\"\u003e#16092\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🐛 Preserve pytest exit code in regression check. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16091\"\u003e#16091\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✅ Test PR regressions against base code. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16090\"\u003e#16090\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.140.9\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eexclude_defaults\u003c/code\u003e not propagated to dict keys and values in \u003ccode\u003ejsonable_encoder\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16043\"\u003e#16043\u003c/a\u003e by \u003ca href=\"https://github.com/MBGrao\"\u003e\u003ccode\u003e@​MBGrao\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/95f8322ee1dcda7ceace7b1c4f6c9915b36d748f\"\u003e\u003ccode\u003e95f8322\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.141.1 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16106\"\u003e#16106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f137944c435cff4e4b30ea7d12855ea88ddb868c\"\u003e\u003ccode\u003ef137944\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d62354434b2e508fe89024213b220ca8e67dea5e\"\u003e\u003ccode\u003ed623544\u003c/code\u003e\u003c/a\u003e 🐛 Fix support for background tasks and headers from dependencies in `app.fron...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/1d211b9c1009d577f39fa2b19b10d9a93a72a0ed\"\u003e\u003ccode\u003e1d211b9\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/8a1f8768411e62093e70ce142ea10863a485643c\"\u003e\u003ccode\u003e8a1f876\u003c/code\u003e\u003c/a\u003e 📝 Document \u003ccode\u003eFASTAPI_ENV\u003c/code\u003e in FastAPI CLI guide (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16104\"\u003e#16104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c7e7b651d6946c07cc9f675f39c9501d08319e57\"\u003e\u003ccode\u003ec7e7b65\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.141.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16103\"\u003e#16103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6bceb84053eb2405e9c000aad30ea13367b5ee32\"\u003e\u003ccode\u003e6bceb84\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/5429fed84e84e32672c25a953eca3429b841ce90\"\u003e\u003ccode\u003e5429fed\u003c/code\u003e\u003c/a\u003e ✨ Add \u003ccode\u003eapp.frontend(check_dir=\u0026quot;auto\u0026quot;)\u003c/code\u003e, to make local development more conven...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/628663f4f899c465da423bce681c7adf9a218948\"\u003e\u003ccode\u003e628663f\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.140.13 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16096\"\u003e#16096\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0b54fd00273019034dd30b120ac842e65d80690e\"\u003e\u003ccode\u003e0b54fd0\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.139.2...0.141.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pypdf` from 6.16.2 to 6.17.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/py-pdf/pypdf/releases\"\u003epypdf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.17.0, 2026-09-04\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLimit value for Roman numerals (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4047\"\u003e#4047\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features (ENH)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e_cmap.py: Also parse encoding for embedded CFF Type1 fonts (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4032\"\u003e#4032\u003c/a\u003e) by \u003ca href=\"https://github.com/PJBrs\"\u003e\u003ccode\u003e@​PJBrs\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance Improvements (PI)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCache repeated text extraction character lookups (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4036\"\u003e#4036\u003c/a\u003e) by \u003ca href=\"https://github.com/petermik68-sudo\"\u003e\u003ccode\u003e@​petermik68-sudo\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTreat an empty /Filter array as no filter when extracting images (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4026\"\u003e#4026\u003c/a\u003e) by \u003ca href=\"https://github.com/Anai-Guo\"\u003e\u003ccode\u003e@​Anai-Guo\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDetect a duplicate dictionary key whose first value is falsy (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4024\"\u003e#4024\u003c/a\u003e) by \u003ca href=\"https://github.com/devYRPauli\"\u003e\u003ccode\u003e@​devYRPauli\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake is_open=False collapse outline items (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3998\"\u003e#3998\u003c/a\u003e) by \u003ca href=\"https://github.com/SomSamantray\"\u003e\u003ccode\u003e@​SomSamantray\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRobustness (ROB)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMultiple changes for wrong inputs by \u003ca href=\"https://github.com/RavSinghChandan\"\u003e\u003ccode\u003e@​RavSinghChandan\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSkip trailing duplicate %%EOF markers when locating startxref (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4015\"\u003e#4015\u003c/a\u003e) by \u003ca href=\"https://github.com/Anai-Guo\"\u003e\u003ccode\u003e@​Anai-Guo\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDo not crash on a non-array destination (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3976\"\u003e#3976\u003c/a\u003e) by \u003ca href=\"https://github.com/eeshsaxena\"\u003e\u003ccode\u003e@​eeshsaxena\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle annotations without subtype during merge (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3999\"\u003e#3999\u003c/a\u003e) by \u003ca href=\"https://github.com/Nexlu1\"\u003e\u003ccode\u003e@​Nexlu1\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation (DOC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse AnnotationFlag enum instead of plain integers (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3997\"\u003e#3997\u003c/a\u003e) by \u003ca href=\"https://github.com/RavSinghChandan\"\u003e\u003ccode\u003e@​RavSinghChandan\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCode Style (STY)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMultiple small changes detected from test runs by \u003ca href=\"https://github.com/RavSinghChandan\"\u003e\u003ccode\u003e@​RavSinghChandan\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.16.2...6.17.0\"\u003eFull Changelog\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/py-pdf/pypdf/blob/main/CHANGELOG.md\"\u003epypdf's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.17.0, 2026-09-04\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLimit value for Roman numerals (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4047\"\u003e#4047\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features (ENH)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e_cmap.py: Also parse encoding for embedded CFF Type1 fonts (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4032\"\u003e#4032\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance Improvements (PI)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCache repeated text extraction character lookups (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4036\"\u003e#4036\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTreat an empty /Filter array as no filter when extracting images (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4026\"\u003e#4026\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDetect a duplicate dictionary key whose first value is falsy (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4024\"\u003e#4024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake is_open=False collapse outline items (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3998\"\u003e#3998\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRobustness (ROB)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMultiple changes for wrong inputs\u003c/li\u003e\n\u003cli\u003eSkip trailing duplicate %%EOF markers when locating startxref (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4015\"\u003e#4015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDo not crash on a non-array destination (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3976\"\u003e#3976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle annotations without subtype during merge (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3999\"\u003e#3999\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation (DOC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse AnnotationFlag enum instead of plain integers (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3997\"\u003e#3997\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCode Style (STY)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMultiple small changes detected from test runs\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.16.2...6.17.0\"\u003eFull Changelog\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/py-pdf/pypdf/commit/c76eed7bdd6c6a6f05dbcfea147bd41d6d21e598\"\u003e\u003ccode\u003ec76eed7\u003c/code\u003e\u003c/a\u003e REL: 6.17.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/89db7c4fe9315ecc964bfdf05a4e8c4b94175163\"\u003e\u003ccode\u003e89db7c4\u003c/code\u003e\u003c/a\u003e SEC: Limit value for Roman numerals (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4047\"\u003e#4047\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/a667e9db92b4fba4de03f6b782ba1f3afec4da62\"\u003e\u003ccode\u003ea667e9d\u003c/code\u003e\u003c/a\u003e ROB: Do not crash on a malformed embedded files name tree (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4037\"\u003e#4037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/816b1201e49414799052a948d002c5a3f713f199\"\u003e\u003ccode\u003e816b120\u003c/code\u003e\u003c/a\u003e ROB: Do not crash when a destination tree node entry is not an array (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4039\"\u003e#4039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/3818d66f98e73287bf36664de44dced6612e5f11\"\u003e\u003ccode\u003e3818d66\u003c/code\u003e\u003c/a\u003e ROB: Reject a page box that is not an array (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4041\"\u003e#4041\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/939ae0c0eb2bfae4e7806286f3d5ba70c2baba15\"\u003e\u003ccode\u003e939ae0c\u003c/code\u003e\u003c/a\u003e STY: Type read_object as the PdfObject it always returns (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4038\"\u003e#4038\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/9c308b419930b6e200c62fa59cd1bca5e6826af2\"\u003e\u003ccode\u003e9c308b4\u003c/code\u003e\u003c/a\u003e PI: Cache repeated text extraction character lookups (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4036\"\u003e#4036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/17d57a57cf96ea33c8c5bb23ba19b68aec3ff253\"\u003e\u003ccode\u003e17d57a5\u003c/code\u003e\u003c/a\u003e ROB: Do not crash when the XObject resources are not a dictionary (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4030\"\u003e#4030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/2f3ed6b8952e2fbafd57ca51ec250f3d98e68b79\"\u003e\u003ccode\u003e2f3ed6b\u003c/code\u003e\u003c/a\u003e ROB: Do not crash when the AcroForm entry is not a dictionary (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4029\"\u003e#4029\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/ea6ff22a6fee8504350617579a0754493f1ab334\"\u003e\u003ccode\u003eea6ff22\u003c/code\u003e\u003c/a\u003e ENH: _cmap.py: Also parse encoding for embedded CFF Type1 fonts (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4032\"\u003e#4032\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.16.2...6.17.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.16.5 to 0.16.6\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.16.6\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-09-03.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMove \u003ccode\u003epytest-fixture-autouse\u003c/code\u003e to the \u003ccode\u003erestriction\u003c/code\u003e category (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28219\"\u003e#28219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Add an autofix for \u003ccode\u003ePT020\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27993\"\u003e#27993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-tidy-imports\u003c/code\u003e] Prevent fix loop between \u003ccode\u003eTID254\u003c/code\u003e and \u003ccode\u003eTID255\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28262\"\u003e#28262\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Exclude pragma comments from line length calculation (\u003ccode\u003eI001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27313\"\u003e#27313\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eValidate unary expressions when parsing (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28233\"\u003e#28233\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e, \u003ccode\u003epylint\u003c/code\u003e] Recognize \u003ccode\u003ebuiltins.open\u003c/code\u003e (\u003ccode\u003eASYNC230\u003c/code\u003e, \u003ccode\u003ePLW1514\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28021\"\u003e#28021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Fix panic on \u003ccode\u003ematch\u003c/code\u003e subjects (\u003ccode\u003eB031\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27781\"\u003e#27781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-datetimez\u003c/code\u003e] Reject \u003ccode\u003etzinfo=None\u003c/code\u003e for \u003ccode\u003edatetime\u003c/code\u003e bounds (\u003ccode\u003eDTZ901\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28022\"\u003e#28022\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Avoid duplicate \u003ccode\u003ePT017\u003c/code\u003e diagnostics (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27918\"\u003e#27918\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Remove \u003ccode\u003elint.external\u003c/code\u003e hint for Ruff-specific suppressions (\u003ccode\u003eRUF102\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27923\"\u003e#27923\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-use-pathlib\u003c/code\u003e] Add display-only fix for \u003ccode\u003eos.listdir\u003c/code\u003e (\u003ccode\u003ePTH208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28027\"\u003e#28027\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd another example and glob reference for \u003ccode\u003elint.per-file-ignores\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28106\"\u003e#28106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd duplicate work guidance (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28229\"\u003e#28229\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Document thread offloading (\u003ccode\u003eASYNC240\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28008\"\u003e#28008\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Clarify default \u003ccode\u003eencoding\u003c/code\u003e argument handling (\u003ccode\u003eUP012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27315\"\u003e#27315\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow unary plus in match patterns on Python 3.15 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28231\"\u003e#28231\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/flying-sheep\"\u003e\u003ccode\u003e@​flying-sheep\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pikammmmm\"\u003e\u003ccode\u003e@​pikammmmm\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fly1d\"\u003e\u003ccode\u003e@​fly1d\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/waterWang\"\u003e\u003ccode\u003e@​waterWang\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Pierre-Sassoulas\"\u003e\u003ccode\u003e@​Pierre-Sassoulas\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelle-openai\"\u003e\u003ccode\u003e@​jelle-openai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ericbuehl\"\u003e\u003ccode\u003e@​ericbuehl\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tjkuson\"\u003e\u003ccode\u003e@​tjkuson\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AbhinavMir\"\u003e\u003ccode\u003e@​AbhinavMir\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Whning0513\"\u003e\u003ccode\u003e@​Whning0513\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chirizxc\"\u003e\u003ccode\u003e@​chirizxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- 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.16.6\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-09-03.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMove \u003ccode\u003epytest-fixture-autouse\u003c/code\u003e to the \u003ccode\u003erestriction\u003c/code\u003e category (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28219\"\u003e#28219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Add an autofix for \u003ccode\u003ePT020\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27993\"\u003e#27993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-tidy-imports\u003c/code\u003e] Prevent fix loop between \u003ccode\u003eTID254\u003c/code\u003e and \u003ccode\u003eTID255\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28262\"\u003e#28262\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Exclude pragma comments from line length calculation (\u003ccode\u003eI001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27313\"\u003e#27313\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eValidate unary expressions when parsing (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28233\"\u003e#28233\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e, \u003ccode\u003epylint\u003c/code\u003e] Recognize \u003ccode\u003ebuiltins.open\u003c/code\u003e (\u003ccode\u003eASYNC230\u003c/code\u003e, \u003ccode\u003ePLW1514\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28021\"\u003e#28021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Fix panic on \u003ccode\u003ematch\u003c/code\u003e subjects (\u003ccode\u003eB031\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27781\"\u003e#27781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-datetimez\u003c/code\u003e] Reject \u003ccode\u003etzinfo=None\u003c/code\u003e for \u003ccode\u003edatetime\u003c/code\u003e bounds (\u003ccode\u003eDTZ901\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28022\"\u003e#28022\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Avoid duplicate \u003ccode\u003ePT017\u003c/code\u003e diagnostics (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27918\"\u003e#27918\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Remove \u003ccode\u003elint.external\u003c/code\u003e hint for Ruff-specific suppressions (\u003ccode\u003eRUF102\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27923\"\u003e#27923\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-use-pathlib\u003c/code\u003e] Add display-only fix for \u003ccode\u003eos.listdir\u003c/code\u003e (\u003ccode\u003ePTH208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28027\"\u003e#28027\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd another example and glob reference for \u003ccode\u003elint.per-file-ignores\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28106\"\u003e#28106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd duplicate work guidance (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28229\"\u003e#28229\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Document thread offloading (\u003ccode\u003eASYNC240\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28008\"\u003e#28008\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Clarify default \u003ccode\u003eencoding\u003c/code\u003e argument handling (\u003ccode\u003eUP012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27315\"\u003e#27315\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow unary plus in match patterns on Python 3.15 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28231\"\u003e#28231\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/flying-sheep\"\u003e\u003ccode\u003e@​flying-sheep\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pikammmmm\"\u003e\u003ccode\u003e@​pikammmmm\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fly1d\"\u003e\u003ccode\u003e@​fly1d\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/waterWang\"\u003e\u003ccode\u003e@​waterWang\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Pierre-Sassoulas\"\u003e\u003ccode\u003e@​Pierre-Sassoulas\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelle-openai\"\u003e\u003ccode\u003e@​jelle-openai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ericbuehl\"\u003e\u003ccode\u003e@​ericbuehl\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tjkuson\"\u003e\u003ccode\u003e@​tjkuson\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AbhinavMir\"\u003e\u003ccode\u003e@​AbhinavMir\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Whning0513\"\u003e\u003ccode\u003e@​Whning0513\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chirizxc\"\u003e\u003ccode\u003e@​chirizxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\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/22f65a2ab5052990503985c7c794de37598d531e\"\u003e\u003ccode\u003e22f65a2\u003c/code\u003e\u003c/a\u003e Bump 0.16.6 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28280\"\u003e#28280\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7cc9f1ed53e5ce175f17fde3a75fe792ac41e8cd\"\u003e\u003ccode\u003e7cc9f1e\u003c/code\u003e\u003c/a\u003e [ty] Document \u003ccode\u003eCallableTypeKind\u003c/code\u003e variants (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28277\"\u003e#28277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/056ce07a895c217dab7929a616540c246cf8a078\"\u003e\u003ccode\u003e056ce07\u003c/code\u003e\u003c/a\u003e Add UV_LOCKED to all workflows (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28261\"\u003e#28261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/6d6e35d03a72d23d3b0f23fb348692b03c9b81b6\"\u003e\u003ccode\u003e6d6e35d\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-pytest-style\u003c/code\u003e] Avoid duplicate \u003ccode\u003ePT017\u003c/code\u003e diagnostics (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27918\"\u003e#27918\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/80b4891b64cb916dce080e8fa15af5c2179d776a\"\u003e\u003ccode\u003e80b4891\u003c/code\u003e\u003c/a\u003e [ty] Temporarily disable tuple types in property tests (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28275\"\u003e#28275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/3f7a54d1d7b9480a18d86a8211bf676354a2f8a0\"\u003e\u003ccode\u003e3f7a54d\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-tidy-imports\u003c/code\u003e] Prevent fix loop between \u003ccode\u003eTID254\u003c/code\u003e and \u003ccode\u003eTID255\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28262\"\u003e#28262\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/35656cf37d34f30116d4f4a9cb13853a6ad9fd0d\"\u003e\u003ccode\u003e35656cf\u003c/code\u003e\u003c/a\u003e [ty] Preserve deprecations on decorated callables (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28256\"\u003e#28256\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d2626c866ee08495cfa0da5236e130030d37e0cf\"\u003e\u003ccode\u003ed2626c8\u003c/code\u003e\u003c/a\u003e [ty] Reject missing attributes on \u003ccode\u003etype[]\u003c/code\u003e aliases (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28267\"\u003e#28267\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ee6a6d19aa0707df942febe9768488d39f383c8c\"\u003e\u003ccode\u003eee6a6d1\u003c/code\u003e\u003c/a\u003e [ty] Support ParamSpecs in \u003ccode\u003eConstraintSet\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28028\"\u003e#28028\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7f6a170080dab08f754ef086369a2623c70f753d\"\u003e\u003ccode\u003e7f6a170\u003c/code\u003e\u003c/a\u003e [ty] Move bound APIs to constraint owners (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28094\"\u003e#28094\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.16.5...0.16.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `anyio` from 4.14.2 to 4.15.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.15.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImplemented a compatibility fix for supporting direct access of \u003ccode\u003eanyio.*\u003c/code\u003e submodules from the main package even when those submodules were not directly imported first (\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1311\"\u003e#1311\u003c/a\u003e \u0026lt;\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1311%5C%3E\"\u003eagronholm/anyio#1311\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.15.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support for the newer keyword-only arguments on \u003ccode\u003eanyio.Path\u003c/code\u003e methods to match the standard library \u003ccode\u003epathlib.Path\u003c/code\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eexists()\u003c/code\u003e (Python 3.12+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eis_dir()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eis_file()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eowner()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003egroup()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003enewline\u003c/code\u003e on \u003ccode\u003eread_text()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e(\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1286\"\u003e#1286\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1293\"\u003e#1293\u003c/a\u003e; PR by \u003ca href=\"https://github.com/jaideeppyne\"\u003e\u003ccode\u003e@​jaideeppyne\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003eamap\u003c/code\u003e, \u003ccode\u003egather\u003c/code\u003e, and \u003ccode\u003eas_completed\u003c/code\u003e utility functions to simplify common patterns (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1173\"\u003e#1173\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003e--anyio-mode\u003c/code\u003e command-line option as an alternative to the \u003ccode\u003eanyio_mode\u003c/code\u003e ini setting, and fix the pytest plugin's auto mode detection to recognize the mode when set via either mechanism(e.g: \u003ccode\u003epytest_asyncio\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1242\"\u003e#1242\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003eanyio.Future\u003c/code\u003e synchronization primitive which behaves similar to \u003ccode\u003easyncio.Future\u003c/code\u003e, allowing tasks to wait for a value (or exception) from another task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1146\"\u003e#1146\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded guidance for managing multiple memory object stream producers and consumers with cloned streams (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/330\"\u003e#330\u003c/a\u003e; PR by \u003ca href=\"https://github.com/nightcityblade\"\u003e\u003ccode\u003e@​nightcityblade\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003eStapledObjectStream.send_nowait()\u003c/code\u003e that delegates to the underlying \u003ccode\u003eObjectSendStream\u003c/code\u003e, if it implements it (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1241\"\u003e#1241\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003emove_on_at()\u003c/code\u003e and \u003ccode\u003efail_at()\u003c/code\u003e functions to complement \u003ccode\u003emove_on_after()\u003c/code\u003e and \u003ccode\u003efail_after()\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged the default name for a task spawned with \u003ccode\u003eTaskGroup.create_task(func())\u003c/code\u003e to match the default task name for the analogous task spawned with \u003ccode\u003eTaskGroup.start_soon(func)\u003c/code\u003e or \u003ccode\u003eTaskGroup.start(func)\u003c/code\u003e in more situations. Previously, the default name of a \u003ccode\u003eTaskGroup.create_task\u003c/code\u003e task never included the module name. (The default name for a task spawned with \u003ccode\u003eTaskGroup.start_soon\u003c/code\u003e or \u003ccode\u003eTaskGroup.start\u003c/code\u003e typically includes the module name.) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1234\"\u003e#1234\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged the \u003ccode\u003eanyio\u003c/code\u003e and \u003ccode\u003eanyio.abc\u003c/code\u003e modules to lazily (much like \u003ccode\u003e810\u003c/code\u003e) import the necessary submodules. This is done by parsing the AST of the module and building a lookup table from the \u003ccode\u003eif TYPE_CHECKING:\u003c/code\u003e block. A fallback mode has been provided for installations where the source code is unavailable (e.g. PyInstaller). (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1169\"\u003e#1169\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed free-threading compatibility issues arising from the fact that on Python 3.14 free-threading builds, newly created threads inherit the current context by default, causing AnyIO to behave erroneously in relation to \u003ccode\u003estart_blocking_portal()\u003c/code\u003e and \u003ccode\u003eanyio.to_thread.run_sync()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1224\"\u003e#1224\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eSpooledTemporaryFile.readinto()\u003c/code\u003e and \u003ccode\u003ereadinto1()\u003c/code\u003e reading twice before rollover, so the destination buffer was overwritten by the second read and the file position advanced twice, silently losing data (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1215\"\u003e#1215\u003c/a\u003e; PR by \u003ca href=\"https://github.com/c-tonneslan\"\u003e\u003ccode\u003e@​c-tonneslan\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a \u003ccode\u003ereason\u003c/code\u003e parameter to \u003ccode\u003efail_after\u003c/code\u003e (and the new \u003ccode\u003efail_at\u003c/code\u003e) allowing for added exception context when raising \u003ccode\u003eTimeoutError\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1227\"\u003e#1227\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed the default \u003ccode\u003eTaskHandle.name\u003c/code\u003e missing part of the task name for tasks started with \u003ccode\u003eTaskGroup.start\u003c/code\u003e on Trio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1231\"\u003e#1231\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eanyio.run\u003c/code\u003e leaking, or at least, delaying collection of loop and root_task due to the root task being cached in a \u003ccode\u003eRunVar\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1203\"\u003e#1203\u003c/a\u003e; PR by \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eanyio.Path.with_stem()\u003c/code\u003e silently producing a wrong path (e.g. \u003ccode\u003ePath(\u0026quot;.txt\u0026quot;)\u003c/code\u003e) instead of raising \u003ccode\u003eValueError\u003c/code\u003e when given an empty stem on a path with a non-empty suffix, unlike \u003ccode\u003epathlib.PurePath.with_stem\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1200\"\u003e#1200\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Sanjays2402\"\u003e\u003ccode\u003e@​Sanjays2402\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eUNIXSocketStream.aclose()\u003c/code\u003e raising \u003ccode\u003easyncio.InvalidStateError\u003c/code\u003e when a concurrent receive or send operation had just been cancelled on the asyncio backend (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1267\"\u003e#1267\u003c/a\u003e; PR by \u003ca href=\"https://github.com/alloutflo\"\u003e\u003ccode\u003e@​alloutflo\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed the pytest plugin importing the deprecated \u003ccode\u003e_pytest.python.CallSpec2\u003c/code\u003e alias, which triggers \u003ccode\u003ePytestRemovedIn10Warning\u003c/code\u003e on \u003ccode\u003epytest\u0026gt;=9.2\u003c/code\u003e and crashes pytest at startup when \u003ccode\u003efilterwarnings = error\u003c/code\u003e is configured (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1271\"\u003e#1271\u003c/a\u003e; PR by \u003ca href=\"https://github.com/matthewfeickert\"\u003e\u003ccode\u003e@​matthewfeickert\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed an asyncio worker thread race that could raise \u003ccode\u003eRuntimeError\u003c/code\u003e when the event loop closed between checking its state and scheduling the worker result (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1265\"\u003e#1265\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hansu650\"\u003e\u003ccode\u003e@​hansu650\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eCapacityLimiter\u003c/code\u003e on the asyncio backend over-granting tokens when \u003ccode\u003etotal_tokens\u003c/code\u003e was raised while the limiter was over-subscribed (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1223\"\u003e#1223\u003c/a\u003e; PR by \u003ca href=\"https://github.com/zelinewang\"\u003e\u003ccode\u003e@​zelinewang\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/ffcd1542cd6d127980205f90a0100078849dd703\"\u003e\u003ccode\u003effcd154\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0ecf5ed98d294242509b043ebd1a0843e52d892f\"\u003e\u003ccode\u003e0ecf5ed\u003c/code\u003e\u003c/a\u003e Added a workaround for third party code accessing unimported submodules (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1309\"\u003e#1309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/928366259543412a2deb1e2ba09ea45ffa92ef4f\"\u003e\u003ccode\u003e9283662\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d137692a90f76e4f71605e32ea5ca94cab3a539d\"\u003e\u003ccode\u003ed137692\u003c/code\u003e\u003c/a\u003e Improved the instructions for AI agents\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/033fc52b8fa8e90c5d0ef24b10b3860e974a6265\"\u003e\u003ccode\u003e033fc52\u003c/code\u003e\u003c/a\u003e Shield TemporaryDirectory cleanup from cancellation (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1304\"\u003e#1304\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/942e9a6552cc10b5aaa779d84bfc8e2c3d5fcffc\"\u003e\u003ccode\u003e942e9a6\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1305\"\u003e#1305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b825c3be7cb4ca1a8000b8065d4e147843deb704\"\u003e\u003ccode\u003eb825c3b\u003c/code\u003e\u003c/a\u003e Fixed pyproject.toml changes not triggering the test suite\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9727dc504681e2986b5bc285de9571fb467539af\"\u003e\u003ccode\u003e9727dc5\u003c/code\u003e\u003c/a\u003e Fixed start inconsistencies between trio and asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1198\"\u003e#1198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b05fe6d160a640355c201363cab286a7d2581da8\"\u003e\u003ccode\u003eb05fe6d\u003c/code\u003e\u003c/a\u003e Fixed wrong type in move_on_after (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1297\"\u003e#1297\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/44d0c93cc20079acbf38ba4dbed5ab9df323f153\"\u003e\u003ccode\u003e44d0c93\u003c/code\u003e\u003c/a\u003e Fixed asyncio task group coroutine cleanup (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1275\"\u003e#1275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.14.2...4.15.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `langchain-core` from 1.6.1 to 1.6.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langchain/releases\"\u003elangchain-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003elangchain-core==1.6.2\u003c/h2\u003e\n\u003cp\u003eChanges since langchain-core==1.6.1\u003c/p\u003e\n\u003cp\u003erelease(core): 1.6.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40209\"\u003e#40209\u003c/a\u003e)\nfeat(openai): support async tools (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40208\"\u003e#40208\u003c/a\u003e)\nchore(deps): bump mistune from 3.3.0 to 3.3.3 in /libs/core (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40150\"\u003e#40150\u003c/a\u003e)\nchore(deps): bump tornado from 6.5.7 to 6.5.8 in /libs/core (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40113\"\u003e#40113\u003c/a\u003e)\nfix(core): avoid mutation in google-genai standard content (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40023\"\u003e#40023\u003c/a\u003e)\nfix(core): avoid mutation in bedrock converse standard content (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40022\"\u003e#40022\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/langchain-ai/langchain/commit/8215039dea978372bd3fd95b88663a11b0159043\"\u003e\u003ccode\u003e8215039\u003c/code\u003e\u003c/a\u003e release(core): 1.6.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40209\"\u003e#40209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/3f212e7a88d2acd0d26ac4b5755f5c76c6a88e37\"\u003e\u003ccode\u003e3f212e7\u003c/code\u003e\u003c/a\u003e feat(openai): support async tools (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40208\"\u003e#40208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/1a3d81756fa249e4054f036ca61e6fd56b3f78df\"\u003e\u003ccode\u003e1a3d817\u003c/code\u003e\u003c/a\u003e feat(openai): support \u003ccode\u003econfiguration_update\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40201\"\u003e#40201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/aac7904ff4baea90a24c6615842f0a6c48dd6c93\"\u003e\u003ccode\u003eaac7904\u003c/code\u003e\u003c/a\u003e chore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40198\"\u003e#40198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/0d50cbddd9963ceb28fc48dcacd26f7258f2a05d\"\u003e\u003ccode\u003e0d50cbd\u003c/code\u003e\u003c/a\u003e docs: add openwiki (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40183\"\u003e#40183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/79cab2dc7f58be720cac43db3677b4c1fd971f91\"\u003e\u003ccode\u003e79cab2d\u003c/code\u003e\u003c/a\u003e release(anthropic): 1.7.1 (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40181\"\u003e#40181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/1e6a4f0b45b60475f566f3ad49fb32ea99d22233\"\u003e\u003ccode\u003e1e6a4f0\u003c/code\u003e\u003c/a\u003e chore(model-profiles): refresh model profile data (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40171\"\u003e#40171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/8330dfe987988c1bcbbc5e8d9af9a67e5a1c2744\"\u003e\u003ccode\u003e8330dfe\u003c/code\u003e\u003c/a\u003e docs(langchain): runnable \u003ccode\u003elangchain.mcp\u003c/code\u003e examples (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39976\"\u003e#39976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/280442b54c80db2175ced4a20ab59eab86a32dc1\"\u003e\u003ccode\u003e280442b\u003c/code\u003e\u003c/a\u003e feat(langchain): \u003ccode\u003elangchain.mcp\u003c/code\u003e namespace, \u003ccode\u003eMCPAdapter\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/39939\"\u003e#39939\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langchain/commit/f5ee2b65f4cf2f1a9fe688bcae6ad2af966582bd\"\u003e\u003ccode\u003ef5ee2b6\u003c/code\u003e\u003c/a\u003e chore(chroma): bump Pygments security constraint (\u003ca href=\"https://redirect.github.com/langchain-ai/langchain/issues/40162\"\u003e#40162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langchain/compare/langchain-core==1.6.1...langchain-core==1.6.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `langsmith` from 0.11.2 to 0.12.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/langchain-ai/langsmith-sdk/releases\"\u003elangsmith's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.12.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003erelease(js): 0.10.1 by \u003ca href=\"https://github.com/QuentinBrosse\"\u003e\u003ccode\u003e@​QuentinBrosse\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3477\"\u003elangchain-ai/langsmith-sdk#3477\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump the actions-minor-and-patch 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/langchain-ai/langsmith-sdk/pull/3465\"\u003elangchain-ai/langsmith-sdk#3465\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps-dev): bump types-psutil from 7.2.2.20260518 to 7.2.2.20260827 in /python 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/langchain-ai/langsmith-sdk/pull/3471\"\u003elangchain-ai/langsmith-sdk#3471\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump the py-major group in /python 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/langchain-ai/langsmith-sdk/pull/3468\"\u003elangchain-ai/langsmith-sdk#3468\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps-dev): bump types-tqdm from 4.70.0.20260731 to 4.70.0.20260827 in /python 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/langchain-ai/langsmith-sdk/pull/3469\"\u003elangchain-ai/langsmith-sdk#3469\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps-dev): bump types-pyyaml from 6.0.12.20260724 to 6.0.12.20260815 in /python 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/langchain-ai/langsmith-sdk/pull/3470\"\u003elangchain-ai/langsmith-sdk#3470\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump the py-minor-and-patch group across 1 directory with 21 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/langchain-ai/langsmith-sdk/pull/3473\"\u003elangchain-ai/langsmith-sdk#3473\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump astral-sh/setup-uv from 9.0.0 to 10.0.1 in the actions-major 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/langchain-ai/langsmith-sdk/pull/3466\"\u003elangchain-ai/langsmith-sdk#3466\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(deps): bump nltk from 3.10.0 to 3.10.3 in /python 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/langchain-ai/langsmith-sdk/pull/3481\"\u003elangchain-ai/langsmith-sdk#3481\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(py): add 429 and 500 to status_forcelist in retry configuration by \u003ca href=\"https://github.com/thibautlehmann\"\u003e\u003ccode\u003e@​thibautlehmann\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3480\"\u003elangchain-ai/langsmith-sdk#3480\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(js): patch faker and browserslist advisories by \u003ca href=\"https://github.com/jkennedyvz\"\u003e\u003ccode\u003e@​jkennedyvz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3487\"\u003elangchain-ai/langsmith-sdk#3487\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(js): patch fast-uri advisories by \u003ca href=\"https://github.com/jkennedyvz\"\u003e\u003ccode\u003e@​jkennedyvz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3489\"\u003elangchain-ai/langsmith-sdk#3489\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(sandbox): support snapshot tags in the Python client by \u003ca href=\"https://github.com/ramon-langchain\"\u003e\u003ccode\u003e@​ramon-langchain\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3447\"\u003elangchain-ai/langsmith-sdk#3447\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(py,js): retry rate-limited sandbox websocket connections by \u003ca href=\"https://github.com/langchain-infra\"\u003e\u003ccode\u003e@​langchain-infra\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3493\"\u003elangchain-ai/langsmith-sdk#3493\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erelease(py): 0.12.2 by \u003ca href=\"https://github.com/langchain-infra\"\u003e\u003ccode\u003e@​langchain-infra\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3494\"\u003elangchain-ai/langsmith-sdk#3494\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/thibautlehmann\"\u003e\u003ccode\u003e@​thibautlehmann\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3480\"\u003elangchain-ai/langsmith-sdk#3480\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/langchain-ai/langsmith-sdk/compare/v0.12.1...v0.12.2\"\u003ehttps://github.com/langchain-ai/langsmith-sdk/compare/v0.12.1...v0.12.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.12.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003erelease(js): 0.10.0 by \u003ca href=\"https://github.com/emil-lc\"\u003e\u003ccode\u003e@​emil-lc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3474\"\u003elangchain-ai/langsmith-sdk#3474\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(py,js): drain the anonymizer walk queue in O(1) [LSDK-412] by \u003ca href=\"https://github.com/QuentinBrosse\"\u003e\u003ccode\u003e@​QuentinBrosse\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3475\"\u003elangchain-ai/langsmith-sdk#3475\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erelease(py): 0.12.1 by \u003ca href=\"https://github.com/QuentinBrosse\"\u003e\u003ccode\u003e@​QuentinBrosse\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3478\"\u003elangchain-ai/langsmith-sdk#3478\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/langchain-ai/langsmith-sdk/compare/v0.12.0...v0.12.1\"\u003ehttps://github.com/langchain-ai/langsmith-sdk/compare/v0.12.0...v0.12.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev0.12.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: enable CodSpeed flame graphs and pin the benchmarks to one CPU by \u003ca href=\"https://github.com/emil-lc\"\u003e\u003ccode\u003e@​emil-lc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3449\"\u003elangchain-ai/langsmith-sdk#3449\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(py,js)!: make trace sampling deterministic by \u003ca href=\"https://github.com/emil-lc\"\u003e\u003ccode\u003e@​emil-lc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3183\"\u003elangchain-ai/langsmith-sdk#3183\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(py): suppress import-untyped on the optional langsmith_pyo3 import by \u003ca href=\"https://github.com/QuentinBrosse\"\u003e\u003ccode\u003e@​QuentinBrosse\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3462\"\u003elangchain-ai/langsmith-sdk#3462\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(py)!: swtich to httpx2 dependency while keeping httpx as a fallback by \u003ca href=\"https://github.com/emil-lc\"\u003e\u003ccode\u003e@​emil-lc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3406\"\u003elangchain-ai/langsmith-sdk#3406\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix!: fail-closed when per-function anonymization callables fail by \u003ca href=\"https://github.com/emil-lc\"\u003e\u003ccode\u003e@​emil-lc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3328\"\u003elangchain-ai/langsmith-sdk#3328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(py): compress replica writes that carry their own credentials by \u003ca href=\"https://github.com/emil-lc\"\u003e\u003ccode\u003e@​emil-lc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3448\"\u003elangchain-ai/langsmith-sdk#3448\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eperf(py): serialize identical replicas once, into one frame by \u003ca href=\"https://github.com/emil-lc\"\u003e\u003ccode\u003e@​emil-lc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3450\"\u003elangchain-ai/langsmith-sdk#3450\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erelease(py): 0.12.0 by \u003ca href=\"https://github.com/emil-lc\"\u003e\u003ccode\u003e@​emil-lc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/pull/3472\"\u003elangchain-ai/langsmith-sdk#3472\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/langchain-ai/langsmith-sdk/compare/v0.11.2...v0.12.0\"\u003ehttps://github.com/langchain-ai/langsmith-sdk/compare/v0.11.2...v0.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/langchain-ai/langsmith-sdk/commit/aadfe00ed2cf31808d14a32646e73030a9eeb0b5\"\u003e\u003ccode\u003eaadfe00\u003c/code\u003e\u003c/a\u003e release(py): 0.12.2 (\u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/issues/3494\"\u003e#3494\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langsmith-sdk/commit/457bda3d1ade7200b136f3e81db96901042bae54\"\u003e\u003ccode\u003e457bda3\u003c/code\u003e\u003c/a\u003e fix(py,js): retry rate-limited sandbox websocket connections (\u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/issues/3493\"\u003e#3493\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langsmith-sdk/commit/9d1dff7ed3c1c34d314f14016473aebe772a17ea\"\u003e\u003ccode\u003e9d1dff7\u003c/code\u003e\u003c/a\u003e feat(sandbox): support snapshot tags in the Python client (\u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/issues/3447\"\u003e#3447\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langsmith-sdk/commit/6c387811c4bc82691281a3e5d354214203b32bdb\"\u003e\u003ccode\u003e6c38781\u003c/code\u003e\u003c/a\u003e fix(js): patch fast-uri advisories (\u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/issues/3489\"\u003e#3489\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langsmith-sdk/commit/abf10e88ee851a268d2cc801999272bbe2fb803f\"\u003e\u003ccode\u003eabf10e8\u003c/code\u003e\u003c/a\u003e fix(js): patch faker and browserslist advisories (\u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/issues/3487\"\u003e#3487\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langsmith-sdk/commit/ac1b337a7f63d5c9d8a8686f7234da9d986ddbcb\"\u003e\u003ccode\u003eac1b337\u003c/code\u003e\u003c/a\u003e fix(py): add 429 and 500 to status_forcelist in retry configuration (\u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/issues/3480\"\u003e#3480\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langsmith-sdk/commit/0ef5047728e3ca7ba6f684b27b59df7ef91188d0\"\u003e\u003ccode\u003e0ef5047\u003c/code\u003e\u003c/a\u003e chore(deps): bump nltk from 3.10.0 to 3.10.3 in /python (\u003ca href=\"https://redirect.github.com/langchain-ai/langsmith-sdk/issues/3481\"\u003e#3481\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langsmith-sdk/commit/4a6e78e5c6d697c338636b1efae1e19537a0dfd1\"\u003e\u003ccode\u003e4a6e78e\u003c/code\u003e\u003c/a\u003e chore(deps): bump astral-sh/setup-uv from 9.0.0 to 10.0.1 in the actions-majo...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langsmith-sdk/commit/f60630496d48d42645f0b0b57ac6cebcc665990b\"\u003e\u003ccode\u003ef606304\u003c/code\u003e\u003c/a\u003e chore(deps): bump the py-minor-and-patch group across 1 directory with 21 upd...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/langchain-ai/langsmith-sdk/commit/7d969c5ed53291d6f892531e8b1edb68627e377d\"\u003e\u003ccode\u003e7d969c5\u003c/code\u003e\u003c/a\u003e chore(deps-dev): bump types-pyyaml from 6.0.12.20260724 to 6.0.12.20260815 in...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/langchain-ai/langsmith-sdk/compare/v0.11.2...v0.12.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psycopg-binary` from 3.3.4 to 3.3.5\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psycopg/psycopg/blob/master/docs/news.rst\"\u003epsycopg-binary's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e.. currentmodule:: psycopg\u003c/p\u003e\n\u003cp\u003e.. index::\nsingle: Release notes\nsingle: News\u003c/p\u003e\n\u003ch1\u003e\u003ccode\u003epsycopg\u003c/code\u003e release notes\u003c/h1\u003e\n\u003ch2\u003eCurrent release\u003c/h2\u003e\n\u003cp\u003ePsycopg 3.3.5\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDiscard prepared statements upon :sql:\u003ccode\u003eALTER *\u003c/code\u003e or \u003ccode\u003eDISCARD *\u003c/code\u003e\n(:ticket:\u003ccode\u003e[#1307](https://github.com/psycopg/psycopg/issues/1307)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e!ProgrammingError\u003c/code\u003e when dumping non-\u003ccode\u003e!None\u003c/code\u003e values with\nno \u003ccode\u003e!NoneType\u003c/code\u003e dumper registered in python implementation (:ticket:\u003ccode\u003e[#1325](https://github.com/psycopg/psycopg/issues/1325)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e!wait_selector\u003c/code\u003e wait function to not raise \u003ccode\u003e!KeyError\u003c/code\u003e\n(:ticket:\u003ccode\u003e[#1327](https://github.com/psycopg/psycopg/issues/1327)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e!DataError\u003c/code\u003e messages leaking the literal \u003ccode\u003e{...}\u003c/code\u003e placeholder instead\nof the offending value when loading a pre-year-1 :sql:\u003ccode\u003etimestamp\u003c/code\u003e or a\nmalformed binary :sql:\u003ccode\u003ejsonb\u003c/code\u003e value (:ticket:\u003ccode\u003e[#1372](https://github.com/psycopg/psycopg/issues/1372)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003e!DataError\u003c/code\u003e instead of \u003ccode\u003e!ValueError\u003c/code\u003e when \u003ccode\u003e~psycopg.rows.namedtuple_row\u003c/code\u003e\nreceives duplicate column names (:ticket:\u003ccode\u003e[#1348](https://github.com/psycopg/psycopg/issues/1348)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003e!DataError\u003c/code\u003e on inconsistent copy data (:tickets:\u003ccode\u003e[#1359](https://github.com/psycopg/psycopg/issues/1359), [#1360](https://github.com/psycopg/psycopg/issues/1360)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eHandle client encodings aliases (:ticket:\u003ccode\u003e[#1363](https://github.com/psycopg/psycopg/issues/1363)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix building C extension with Cython 3.3.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePsycopg 3.3.4\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix possible spurious connection timeout in systems with very long uptimes\nin C extension (:ticket:\u003ccode\u003e[#1280](https://github.com/psycopg/psycopg/issues/1280)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix client-side adaptation of enums whose name require quotes\n(:ticket:\u003ccode\u003e[#1298](https://github.com/psycopg/psycopg/issues/1298)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eConsistently populate \u003ccode\u003e~Cursor.statusmessage\u003c/code\u003e after \u003ccode\u003e~Cursor.executemany()\u003c/code\u003e\n(:ticket:\u003ccode\u003e[#1302](https://github.com/psycopg/psycopg/issues/1302)\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePsycopg 3.3.3\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRetain \u003ccode\u003eError.pgconn\u003c/code\u003e when raising a single exception for multiple connection\nattempt errors (:ticket:\u003ccode\u003e[#1246](https://github.com/psycopg/psycopg/issues/1246)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eReturn a proper error when server sends \u003ccode\u003eErrorResponse\u003c/code\u003e for a \u003ccode\u003eSync\u003c/code\u003e after\na \u003ccode\u003eParse\u003c/code\u003e (:ticket:\u003ccode\u003e[#1260](https://github.com/psycopg/psycopg/issues/1260)\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/psycopg/commit/ea542c9534cc9841d50450e0c156b549cc6c805a\"\u003e\u003ccode\u003eea542c9\u003c/code\u003e\u003c/a\u003e chore: bump psycopg package version to 3.3.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/8d31e4711c22b206d8863b9397b3b34f5b106e4d\"\u003e\u003ccode\u003e8d31e47\u003c/code\u003e\u003c/a\u003e chore(deps): bump the actions group across 1 directory with 4 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/268f863e0e8dbdbaf4f10616ebd14ff00edaeb51\"\u003e\u003ccode\u003e268f863\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg/issues/1370\"\u003e#1370\u003c/a\u003e from Sanjays2402/fix/truncated-binary-copy-error\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/a412fa4d682f035a9cf3c7886a5c95c15c64ba96\"\u003e\u003ccode\u003ea412fa4\u003c/code\u003e\u003c/a\u003e docs: put together different issues fixed around copy parsing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/f757307068aef06e439cf164915a3781acf483b5\"\u003e\u003ccode\u003ef757307\u003c/code\u003e\u003c/a\u003e fix: clearer error messages according to truncated copy message part\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/b1f17c44096b8fbc90836d9652d083f23c88e28d\"\u003e\u003ccode\u003eb1f17c4\u003c/code\u003e\u003c/a\u003e test: move existing COPY format parsing tests into a single module\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/21eba573f9356276b2a3e0b7c1d86fad03f2872f\"\u003e\u003ccode\u003e21eba57\u003c/code\u003e\u003c/a\u003e test: drop usel...\n\n_Description has been truncated_","html_url":"https://github.com/EricMG13/CAOS-LangMVP/pull/84","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/EricMG13%2FCAOS-LangMVP/issues/84","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/84/packages"}},{"old_version":"1.7.5","new_version":"1.7.10","update_type":"patch","path":null,"pr_created_at":"2026-09-07T12:35:59.000Z","version_change":"1.7.5 → 1.7.10","issue":{"uuid":"5374759189","node_id":"PR_kwDOHfpFZM8AAAABChaFPg","number":268,"state":"closed","title":"Bump the python-updates group with 15 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-07T14:08:58.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-07T12:35:59.000Z","updated_at":"2026-09-07T14:09:01.000Z","time_to_close":5579,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python-updates","update_count":15,"packages":[{"name":"hvac","old_version":"1.2.1","new_version":"2.4.0","repository_url":"https://github.com/hvac/hvac"},{"name":"prometheus-client","old_version":"0.15.0","new_version":"0.21.1","repository_url":"https://github.com/prometheus/client_python"},{"name":"requests","old_version":"2.31.0","new_version":"2.32.4","repository_url":"https://github.com/psf/requests"},{"name":"pyyaml","old_version":"6.0.1","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"cerberus","old_version":"1.3.5","new_version":"1.3.8","repository_url":"https://github.com/pyeve/cerberus"},{"name":"black","old_version":"23.10.0","new_version":"24.8.0","repository_url":"https://github.com/psf/black"},{"name":"pylint","old_version":"2.17.7","new_version":"3.2.7","repository_url":"https://github.com/pylint-dev/pylint"},{"name":"pytest","old_version":"7.4.2","new_version":"8.3.5","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"4.1.0","new_version":"5.0.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"types-requests","old_version":"2.31.0.10","new_version":"2.32.0.20241016","repository_url":"https://github.com/python/typeshed"},{"name":"types-pyyaml","old_version":"6.0.12.12","new_version":"6.0.12.20241230","repository_url":"https://github.com/python/typeshed"},{"name":"bandit","old_version":"1.7.5","new_version":"1.7.10","repository_url":"https://github.com/PyCQA/bandit"},{"name":"pytest-mock","old_version":"3.12.0","new_version":"3.14.1","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"mock","old_version":"4.0.3","new_version":"5.2.0","repository_url":"https://github.com/testing-cabal/mock"},{"name":"mypy","old_version":"1.6.1","new_version":"1.14.1","repository_url":"https://github.com/python/mypy"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-updates group with 15 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [hvac](https://github.com/hvac/hvac) | `1.2.1` | `2.4.0` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.15.0` | `0.21.1` |\n| [requests](https://github.com/psf/requests) | `2.31.0` | `2.32.4` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.1` | `6.0.3` |\n| [cerberus](https://github.com/pyeve/cerberus) | `1.3.5` | `1.3.8` |\n| [black](https://github.com/psf/black) | `23.10.0` | `24.8.0` |\n| [pylint](https://github.com/pylint-dev/pylint) | `2.17.7` | `3.2.7` |\n| [pytest](https://github.com/pytest-dev/pytest) | `7.4.2` | `8.3.5` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `4.1.0` | `5.0.0` |\n| [types-requests](https://github.com/python/typeshed) | `2.31.0.10` | `2.32.0.20241016` |\n| [types-pyyaml](https://github.com/python/typeshed) | `6.0.12.12` | `6.0.12.20241230` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.7.5` | `1.7.10` |\n| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.12.0` | `3.14.1` |\n| [mock](https://github.com/testing-cabal/mock) | `4.0.3` | `5.2.0` |\n| [mypy](https://github.com/python/mypy) | `1.6.1` | `1.14.1` |\n\nUpdates `hvac` from 1.2.1 to 2.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/hvac/hvac/releases\"\u003ehvac's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.4.0\u003c/h2\u003e\n\u003ch2\u003e🚀 Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eadd audience param to kubernetes role creation (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1224\"\u003eGH-1224\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e📚 Documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003edocs: fix AppRole.login docstring (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1182\"\u003eGH-1182\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧰 Miscellaneous\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix a typo in read_secret_version warning message (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1219\"\u003eGH-1219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePin consul version in CI (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1210\"\u003eGH-1210\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to \u003ca href=\"https://github.com/EmFl\"\u003e\u003ccode\u003e@​EmFl\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/briantist\"\u003e\u003ccode\u003e@​briantist\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/deamen\"\u003e\u003ccode\u003e@​deamen\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot], \u003ca href=\"https://github.com/evan-cohen\"\u003e\u003ccode\u003e@​evan-cohen\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/roshan-baladhanvi\"\u003e\u003ccode\u003e@​roshan-baladhanvi\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/apps/dependabot\"\u003edependabot[bot]\u003c/a\u003e for their lovely contributions.\u003c/p\u003e\n\u003ch2\u003ev2.3.0\u003c/h2\u003e\n\u003ch2\u003e🚀 Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImplement the /sys/wrapping/wrap endpoint (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1172\"\u003eGH-1172\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd support for Vault Raft auto-snapshot endpoints. (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1169\"\u003eGH-1169\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧰 Miscellaneous\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDependencies/security updates (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1174\"\u003eGH-1174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate artifact actions to v4 (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1173\"\u003eGH-1173\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to \u003ca href=\"https://github.com/briantist\"\u003e\u003ccode\u003e@​briantist\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/clealb\"\u003e\u003ccode\u003e@​clealb\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] and \u003ca href=\"https://github.com/tot19\"\u003e\u003ccode\u003e@​tot19\u003c/code\u003e\u003c/a\u003e for their lovely contributions.\u003c/p\u003e\n\u003ch2\u003ev2.2.0\u003c/h2\u003e\n\u003ch2\u003e📢 Deprecations / Announcements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd new exception types for HTTP status 405 and 412 (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1148\"\u003eGH-1148\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🚀 Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eLDAP secrets engine enhancements (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1163\"\u003eGH-1163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLDAP secret engine support (\u003ca href=\"https://redirect.github.com/hvac/hvac/issues/1032\"\u003e#1032\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1033\"\u003eGH-1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd new exception types for HTTP status 405 and 412 (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1148\"\u003eGH-1148\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd sts_region parameter to auth.aws.configure (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1136\"\u003eGH-1136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdding namespace_in_state to jwt (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1144\"\u003eGH-1144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd associated_data to encrypt/decrypt transit endpoints (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1108\"\u003eGH-1108\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eaws auth - add support for \u003ccode\u003eiam_metadata\u003c/code\u003e and \u003ccode\u003eec2_metadata\u003c/code\u003e params (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1125\"\u003eGH-1125\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🧰 Miscellaneous\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump idna from 3.6 to 3.7 (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1160\"\u003eGH-1160\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump jwcrypto from 1.5.1 to 1.5.6 (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1158\"\u003eGH-1158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump cryptography from 41.0.7 to 42.0.4 (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1157\"\u003eGH-1157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd Vault 1.16.x to CI matrix (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1155\"\u003eGH-1155\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/hvac/hvac/blob/main/CHANGELOG.md\"\u003ehvac's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.0\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd audience param to kubernetes role creation (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1224\"\u003eGH-1224\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📚 Documentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edocs: fix AppRole.login docstring (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1182\"\u003eGH-1182\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧰 Miscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a typo in read_secret_version warning message (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1219\"\u003eGH-1219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePin consul version in CI (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1210\"\u003eGH-1210\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.3.0\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement the /sys/wrapping/wrap endpoint (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1172\"\u003eGH-1172\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd support for Vault Raft auto-snapshot endpoints. (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1169\"\u003eGH-1169\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧰 Miscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDependencies/security updates (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1174\"\u003eGH-1174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate artifact actions to v4 (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1173\"\u003eGH-1173\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.2.0\u003c/h2\u003e\n\u003ch3\u003e📢 Deprecations / Announcements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd new exception types for HTTP status 405 and 412 (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1148\"\u003eGH-1148\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLDAP secrets engine enhancements (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1163\"\u003eGH-1163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLDAP secret engine support (\u003ca href=\"https://redirect.github.com/hvac/hvac/issues/1032\"\u003e#1032\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1033\"\u003eGH-1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd new exception types for HTTP status 405 and 412 (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1148\"\u003eGH-1148\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd sts_region parameter to auth.aws.configure (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1136\"\u003eGH-1136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdding namespace_in_state to jwt (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1144\"\u003eGH-1144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd associated_data to encrypt/decrypt transit endpoints (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1108\"\u003eGH-1108\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eaws auth - add support for \u003ccode\u003eiam_metadata\u003c/code\u003e and \u003ccode\u003eec2_metadata\u003c/code\u003e params (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1125\"\u003eGH-1125\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧰 Miscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump idna from 3.6 to 3.7 (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1160\"\u003eGH-1160\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump jwcrypto from 1.5.1 to 1.5.6 (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1158\"\u003eGH-1158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump cryptography from 41.0.7 to 42.0.4 (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1157\"\u003eGH-1157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eadd Vault 1.16.x to CI matrix (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1155\"\u003eGH-1155\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMake integration tests more reliable (\u003ca href=\"https://redirect.github.com/hvac/hvac/pull/1153\"\u003eGH-1153\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/hvac/hvac/commit/2f1a58f754526b6baeee43d8763917d308ca2997\"\u003e\u003ccode\u003e2f1a58f\u003c/code\u003e\u003c/a\u003e fix pypi release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hvac/hvac/commit/fd769362047d4c05f3260b5b508e2b92db043d27\"\u003e\u003ccode\u003efd76936\u003c/code\u003e\u003c/a\u003e use ls instead (\u003ca href=\"https://redirect.github.com/hvac/hvac/issues/1233\"\u003e#1233\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hvac/hvac/commit/7ae23dfe283f43ca6b355080494e6110cc46da8d\"\u003e\u003ccode\u003e7ae23df\u003c/code\u003e\u003c/a\u003e remove tree command from release workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hvac/hvac/commit/bba486c05642ed04fb89abb3543c7641333346f1\"\u003e\u003ccode\u003ebba486c\u003c/code\u003e\u003c/a\u003e Release/v2.4.0 (\u003ca href=\"https://redirect.github.com/hvac/hvac/issues/1232\"\u003e#1232\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hvac/hvac/commit/531b9df740819d8961d1eab3623ab642c6188524\"\u003e\u003ccode\u003e531b9df\u003c/code\u003e\u003c/a\u003e coverage: skip on schedule, try slim runner (\u003ca href=\"https://redirect.github.com/hvac/hvac/issues/1231\"\u003e#1231\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hvac/hvac/commit/b8167a7545bbf541200f6acef949b28d888faca2\"\u003e\u003ccode\u003eb8167a7\u003c/code\u003e\u003c/a\u003e add audience param to kubernetes role creation (\u003ca href=\"https://redirect.github.com/hvac/hvac/issues/1224\"\u003e#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hvac/hvac/commit/590537d15b389946eb0d34081f2bb3275f33ece6\"\u003e\u003ccode\u003e590537d\u003c/code\u003e\u003c/a\u003e Fix tests and CI - certs, schedule, etc. (\u003ca href=\"https://redirect.github.com/hvac/hvac/issues/1230\"\u003e#1230\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hvac/hvac/commit/4c0b650c2adbf4f8af72372e0b33ea60259c7397\"\u003e\u003ccode\u003e4c0b650\u003c/code\u003e\u003c/a\u003e fix: Fixing a typo in read_secret_version (\u003ca href=\"https://redirect.github.com/hvac/hvac/issues/1219\"\u003e#1219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hvac/hvac/commit/ea3a6520cc08f69470494cce0ac26a2ab025f91d\"\u003e\u003ccode\u003eea3a652\u003c/code\u003e\u003c/a\u003e Pin consul version in CI (\u003ca href=\"https://redirect.github.com/hvac/hvac/issues/1210\"\u003e#1210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hvac/hvac/commit/2d2c80e296f2983c00486ee2a2ea000a3cc15604\"\u003e\u003ccode\u003e2d2c80e\u003c/code\u003e\u003c/a\u003e docs: fix AppRole.login docstring (\u003ca href=\"https://redirect.github.com/hvac/hvac/issues/1182\"\u003e#1182\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/hvac/hvac/compare/v1.2.1...v2.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `prometheus-client` from 0.15.0 to 0.21.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/prometheus/client_python/releases\"\u003eprometheus-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.21.1 / 2024-12-03\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003e[BUGFIX] Revert incorrect use of reentrant locks. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1076\"\u003e#1076\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e0.21.0 / 2024-09-20\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003e[CHANGE] Reject invalid (not GET or OPTION) HTTP methods. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1019\"\u003e#1019\u003c/a\u003e\n[ENHANCEMENT] Allow writing metrics when holding a lock for the metric in the same thread. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1014\"\u003e#1014\u003c/a\u003e\n[BUGFIX] Check for and error on None label values. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1012\"\u003e#1012\u003c/a\u003e\n[BUGFIX] Fix timestamp comparison. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1038\"\u003e#1038\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e0.20.0 / 2024-02-14\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[CHANGE/BUGFIX] Update OpenMetrics Content Type to 1.0.0. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/997\"\u003e#997\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[FEATURE] Enable graceful shutdown for start_{http,wsgi}_server by returning the server and thread. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/999\"\u003e#999\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[FEATURE] Allow resetting counter metrics. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1005\"\u003e#1005\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[BUGFIX] wsgi server: address family discovery is not quite right. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1006\"\u003e#1006\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.19.0 / 2023-11-20\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003e[FEATURE] support HTTPS/TLS in start_http_server. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/946\"\u003e#946\u003c/a\u003e\n[BUGFIX] fix: error in determining timestamp less than. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/979\"\u003e#979\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e0.18.0 / 2023-10-30\u003c/h2\u003e\n\u003cp\u003e[CHANGE] Remove support for Python versions \u0026lt; 3.8. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/936\"\u003e#936\u003c/a\u003e\n[FEATURE] Add \u003ccode\u003emostrecent\u003c/code\u003e aggregation to Gauge. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/967\"\u003e#967\u003c/a\u003e\n[ENHANCEMENT] Typing improvements. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/935\"\u003e#935\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/970\"\u003e#970\u003c/a\u003e\n[ENHANCEMENT] Allow enabling or disabling \u003ccode\u003e_created\u003c/code\u003e metrics from code. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/973\"\u003e#973\u003c/a\u003e\n[BUGFIX] Change #!/usr/bin/python to #!/usr/bin/env python in remaining places. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/945\"\u003e#945\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e0.17.1 / 2023-07-19\u003c/h2\u003e\n\u003cp\u003e[BUGFIX] Use #!/usr/bin/env python instead of #!usr/bin/python in bridge/graphite.py. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/928\"\u003e#928\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e0.17.0 / 2023-05-24\u003c/h2\u003e\n\u003cp\u003e[ENHANCEMENT] Add additional typing. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/887\"\u003e#887\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/903\"\u003e#903\u003c/a\u003e\n[BUGFIX] Fix typo in python_gc_objects_collected metadata. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/894\"\u003e#894\u003c/a\u003e\n[BUGFIX] Do not include .pyc files in the build wheel. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/906\"\u003e#906\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e0.16.0 / 2023-01-23\u003c/h2\u003e\n\u003cp\u003e[FEATURE] Support HELP text in multiprocess mode. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/804\"\u003e#804\u003c/a\u003e\n[ENHANCEMENT] Reduce the mmap minimum size. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/853\"\u003e#853\u003c/a\u003e\n[BUGFIX] Use the correct OpenMetrics encoder when \u003ccode\u003eapplication/openmetrics-text\u003c/code\u003e is requested in ASGI apps. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/864\"\u003e#864\u003c/a\u003e\n[BUGFIX] Allow Prometheus format parser to handle a missing space after labels. \u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/872\"\u003e#872\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/prometheus/client_python/commit/b3f61b3ccf237424f03cc5aa3ac6ecc81c82455f\"\u003e\u003ccode\u003eb3f61b3\u003c/code\u003e\u003c/a\u003e Release 0.21.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/591e91f4752d1cab70027ac7ab07166ab05adec2\"\u003e\u003ccode\u003e591e91f\u003c/code\u003e\u003c/a\u003e Drop incorrect use of reentrant locks (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1076\"\u003e#1076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/3b183b44994454be226c208037e1fe4b9a89dfc5\"\u003e\u003ccode\u003e3b183b4\u003c/code\u003e\u003c/a\u003e Release 0.21.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/0014e9776350a252930671ed170edee464f9b428\"\u003e\u003ccode\u003e0014e97\u003c/code\u003e\u003c/a\u003e Use re-entrant lock. (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1014\"\u003e#1014\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/7c45f84e5e3d2e0a75b3946408fec1a4d5c72841\"\u003e\u003ccode\u003e7c45f84\u003c/code\u003e\u003c/a\u003e Reject invalid HTTP methods and resources (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1019\"\u003e#1019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/09a5ae30602a7a81f6174dae4ba08b93ee7feed2\"\u003e\u003ccode\u003e09a5ae3\u003c/code\u003e\u003c/a\u003e Fix timestamp comparison (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1038\"\u003e#1038\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/e364a96f506bbb70ae744e0b3307e4b693e28258\"\u003e\u003ccode\u003ee364a96\u003c/code\u003e\u003c/a\u003e Fix a typo in ASGI docs (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1036\"\u003e#1036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/eeec421b2f489d2c465bb8ca419b772829b7b16c\"\u003e\u003ccode\u003eeeec421\u003c/code\u003e\u003c/a\u003e Pin python 3.8 and 3.9 at patch level (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1024\"\u003e#1024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/7bc8cddfbbc9b72c98725a879d9b94a675a6c7da\"\u003e\u003ccode\u003e7bc8cdd\u003c/code\u003e\u003c/a\u003e docs: correct link to multiprocessing docs (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1023\"\u003e#1023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prometheus/client_python/commit/4535ce0f43097aa48e44a65747d82064f2aadaf5\"\u003e\u003ccode\u003e4535ce0\u003c/code\u003e\u003c/a\u003e Add sanity check for label value (\u003ca href=\"https://redirect.github.com/prometheus/client_python/issues/1012\"\u003e#1012\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/prometheus/client_python/compare/v0.15.0...v0.21.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.31.0 to 2.32.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.32.4\u003c/h2\u003e\n\u003ch2\u003e2.32.4 (2025-06-10)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2024-47081 Fixed an issue where a maliciously crafted URL and trusted\nenvironment will retrieve credentials for the wrong hostname/machine from a\nnetrc file. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6965\"\u003e#6965\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNumerous documentation improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for pypy 3.11 for Linux and macOS. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6926\"\u003e#6926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDropped support for pypy 3.9 following its end of support. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6926\"\u003e#6926\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.32.3\u003c/h2\u003e\n\u003ch2\u003e2.32.3 (2024-05-29)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed bug breaking the ability to specify custom SSLContexts in sub-classes of\nHTTPAdapter. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6716\"\u003e#6716\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed issue where Requests started failing to run on Python versions compiled\nwithout the \u003ccode\u003essl\u003c/code\u003e module. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6724\"\u003e#6724\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.32.2\u003c/h2\u003e\n\u003ch2\u003e2.32.2 (2024-05-21)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eTo provide a more stable migration for custom HTTPAdapters impacted\nby the CVE changes in 2.32.0, we've renamed \u003ccode\u003e_get_connection\u003c/code\u003e to\na new public API, \u003ccode\u003eget_connection_with_tls_context\u003c/code\u003e. Existing custom\nHTTPAdapters will need to migrate their code to use this new API.\n\u003ccode\u003eget_connection\u003c/code\u003e is considered deprecated in all versions of Requests\u0026gt;=2.32.0.\u003c/p\u003e\n\u003cp\u003eA minimal (2-line) example has been provided in the linked PR to ease\nmigration, but we strongly urge users to evaluate if their custom adapter\nis subject to the same issue described in CVE-2024-35195. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6710\"\u003e#6710\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.32.1\u003c/h2\u003e\n\u003ch2\u003e2.32.1 (2024-05-20)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd missing test certs to the sdist distributed on PyPI.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.32.0\u003c/h2\u003e\n\u003cp\u003e2.32.0 (2024-05-20)\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.32.4 (2025-06-10)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCVE-2024-47081 Fixed an issue where a maliciously crafted URL and trusted\nenvironment will retrieve credentials for the wrong hostname/machine from a\nnetrc file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNumerous documentation improvements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for pypy 3.11 for Linux and macOS.\u003c/li\u003e\n\u003cli\u003eDropped support for pypy 3.9 following its end of support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.32.3 (2024-05-29)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed bug breaking the ability to specify custom SSLContexts in sub-classes of\nHTTPAdapter. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6716\"\u003e#6716\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed issue where Requests started failing to run on Python versions compiled\nwithout the \u003ccode\u003essl\u003c/code\u003e module. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6724\"\u003e#6724\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.32.2 (2024-05-21)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eTo provide a more stable migration for custom HTTPAdapters impacted\nby the CVE changes in 2.32.0, we've renamed \u003ccode\u003e_get_connection\u003c/code\u003e to\na new public API, \u003ccode\u003eget_connection_with_tls_context\u003c/code\u003e. Existing custom\nHTTPAdapters will need to migrate their code to use this new API.\n\u003ccode\u003eget_connection\u003c/code\u003e is considered deprecated in all versions of Requests\u0026gt;=2.32.0.\u003c/p\u003e\n\u003cp\u003eA minimal (2-line) example has been provided in the linked PR to ease\nmigration, but we strongly urge users to evaluate if their custom adapter\nis subject to the same issue described in CVE-2024-35195. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6710\"\u003e#6710\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.32.1 (2024-05-20)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd missing test certs to the sdist distributed on PyPI.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.32.0 (2024-05-20)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eSecurity\u003c/strong\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/021dc729f0b71a3030cefdbec7fb57a0e80a6cfd\"\u003e\u003ccode\u003e021dc72\u003c/code\u003e\u003c/a\u003e Polish up release tooling for last manual release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/821770e822a20a21b207b3907ea83878bda1d396\"\u003e\u003ccode\u003e821770e\u003c/code\u003e\u003c/a\u003e Bump version and add release notes for v2.32.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/59f8aa2adf1d3d06bcbf7ce6b13743a1639a5401\"\u003e\u003ccode\u003e59f8aa2\u003c/code\u003e\u003c/a\u003e Add netrc file search information to authentication documentation (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6876\"\u003e#6876\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/5b4b64c3467fd7a3c03f91ee641aaa348b6bed3b\"\u003e\u003ccode\u003e5b4b64c\u003c/code\u003e\u003c/a\u003e Add more tests to prevent regression of CVE 2024 47081\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/7bc45877a86192af77645e156eb3744f95b47dae\"\u003e\u003ccode\u003e7bc4587\u003c/code\u003e\u003c/a\u003e Add new test to check netrc auth leak (\u003ca href=\"https://redirect.github.com/psf/requests/issues/6962\"\u003e#6962\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/96ba401c1296ab1dda74a2365ef36d88f7d144ef\"\u003e\u003ccode\u003e96ba401\u003c/code\u003e\u003c/a\u003e Only use hostname to do netrc lookup instead of netloc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/7341690e842a23cf18ded0abd9229765fa88c4e2\"\u003e\u003ccode\u003e7341690\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psf/requests/issues/6951\"\u003e#6951\u003c/a\u003e from tswast/patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6716d7c9f29df636643fa2489f98890216525cb0\"\u003e\u003ccode\u003e6716d7c\u003c/code\u003e\u003c/a\u003e remove links\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/a7e1c745dc23c18e836febd672416ed0c5d8d8ae\"\u003e\u003ccode\u003ea7e1c74\u003c/code\u003e\u003c/a\u003e Update docs/conf.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/c799b8167a13416833ad3b4f3298261a477e826f\"\u003e\u003ccode\u003ec799b81\u003c/code\u003e\u003c/a\u003e docs: fix dead links to kenreitz.org\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.31.0...v2.32.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyyaml` from 6.0.1 to 6.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/yaml/pyyaml/releases\"\u003epyyaml's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.0.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14 and free-threading (experimental).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\"\u003ehttps://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Cython 3.x and Python 3.13.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.1...6.0.2\"\u003ehttps://github.com/yaml/pyyaml/compare/6.0.1...6.0.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.2rc1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for extension build with Cython 3.x\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.13\u003c/li\u003e\n\u003cli\u003eAdded PyPI wheels for musllinux on aarch64\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/yaml/pyyaml/blob/6.0.3/CHANGES\"\u003epyyaml's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e6.0.3 (2025-09-25)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/yaml/pyyaml/pull/864\"\u003eyaml/pyyaml#864\u003c/a\u003e -- Support for Python 3.14 and free-threading (experimental)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e6.0.2 (2024-08-06)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/yaml/pyyaml/pull/808\"\u003eyaml/pyyaml#808\u003c/a\u003e -- Support for Cython 3.x and Python 3.13\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/49790e73684bebad1df05ef8d828fa12f685bffb\"\u003e\u003ccode\u003e49790e7\u003c/code\u003e\u003c/a\u003e Release 6.0.3 (\u003ca href=\"https://redirect.github.com/yaml/pyyaml/issues/889\"\u003e#889\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/41309b0bcb4559edb1d691d47199035ef539d785\"\u003e\u003ccode\u003e41309b0\u003c/code\u003e\u003c/a\u003e Release 6.0.2 (\u003ca href=\"https://redirect.github.com/yaml/pyyaml/issues/819\"\u003e#819\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/dd9f0e1236775dcce682c91823e009556ce2a271\"\u003e\u003ccode\u003edd9f0e1\u003c/code\u003e\u003c/a\u003e 6.0.2rc1 (\u003ca href=\"https://redirect.github.com/yaml/pyyaml/issues/809\"\u003e#809\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/f5527a26d518b3e9c66f9211e0af00c83f09a97e\"\u003e\u003ccode\u003ef5527a2\u003c/code\u003e\u003c/a\u003e disable CI trigger on PR edits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/b4d80a742142004490d2da7691d534923820b81c\"\u003e\u003ccode\u003eb4d80a7\u003c/code\u003e\u003c/a\u003e Python 3.12 + musllinux_1_1_x86_64 wheel support\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.1...6.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cerberus` from 1.3.5 to 1.3.8\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyeve/cerberus/blob/1.3.x/CHANGES.rst\"\u003ecerberus's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.3.8\u003c/h2\u003e\n\u003cp\u003eReleased on November 6, 2025.\u003c/p\u003e\n\u003cp\u003eNew\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n- Support for Python 3.14\n\u003ch2\u003eVersion 1.3.7\u003c/h2\u003e\n\u003cp\u003eReleased on December 31, 2024.\u003c/p\u003e\n\u003cp\u003eFixed\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAmends missing changelog\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.3.6\u003c/h2\u003e\n\u003cp\u003eReleased on December 23, 2024.\u003c/p\u003e\n\u003cp\u003eNew\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n- Support for Python 3.12 \u0026amp; 3.13\n\u003cp\u003eFixed\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eEscaping in docstrings (\u003ccode\u003e[#608](https://github.com/pyeve/cerberus/issues/608)\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _\u003ccode\u003e[#608](https://github.com/pyeve/cerberus/issues/608)\u003c/code\u003e: \u003ca href=\"https://redirect.github.com/pyeve/cerberus/issues/608\"\u003epyeve/cerberus#608\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/pyeve/cerberus/commit/f2221c5a901bbf8618efb694ef9364bd0882ac9a\"\u003e\u003ccode\u003ef2221c5\u003c/code\u003e\u003c/a\u003e Bumps version to 1.3.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyeve/cerberus/commit/e7c995709e9fcdb2036ade9f5bf8f608e8ddf2c3\"\u003e\u003ccode\u003ee7c9957\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action from 2 to 4 (\u003ca href=\"https://redirect.github.com/pyeve/cerberus/issues/626\"\u003e#626\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyeve/cerberus/commit/665562663c367ef4115725087096e9dd059d42cd\"\u003e\u003ccode\u003e6655626\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 3 to 5 (\u003ca href=\"https://redirect.github.com/pyeve/cerberus/issues/625\"\u003e#625\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyeve/cerberus/commit/4db1211eb2a6fdfc899e9231731c54f60745db92\"\u003e\u003ccode\u003e4db1211\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 4 to 6 (\u003ca href=\"https://redirect.github.com/pyeve/cerberus/issues/627\"\u003e#627\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyeve/cerberus/commit/3f86cf410618dc646e0bbd8e7eb89161f0f171b2\"\u003e\u003ccode\u003e3f86cf4\u003c/code\u003e\u003c/a\u003e Adds a dependabot configuration to keep GH Actions up-to-date\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyeve/cerberus/commit/b46f8816b3ba339eb0016d5632cde711ad8c6f5c\"\u003e\u003ccode\u003eb46f881\u003c/code\u003e\u003c/a\u003e Adds support for Python 3.14 (\u003ca href=\"https://redirect.github.com/pyeve/cerberus/issues/624\"\u003e#624\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyeve/cerberus/commit/7878e60204a4b05d566e5b9a9db0c6bcc9062fe9\"\u003e\u003ccode\u003e7878e60\u003c/code\u003e\u003c/a\u003e GH Actions: Removes Python 3.7 from the test matrix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyeve/cerberus/commit/7c9c454bf10fe2a7008220c052c88a425a723ca6\"\u003e\u003ccode\u003e7c9c454\u003c/code\u003e\u003c/a\u003e Updates black config and applies its style\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyeve/cerberus/commit/1295e100dbaff3d989e7f5c6052419ae68980271\"\u003e\u003ccode\u003e1295e10\u003c/code\u003e\u003c/a\u003e doclinks: Ignores URLs with the stackoverflow.com authority\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyeve/cerberus/commit/c07c2f942873bd90d333347cb679850a85680aa6\"\u003e\u003ccode\u003ec07c2f9\u003c/code\u003e\u003c/a\u003e Amends CHANGES.rst and bumos to version to 1.3.7\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyeve/cerberus/compare/1.3.5...1.3.8\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `black` from 23.10.0 to 24.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/black/releases\"\u003eblack's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e24.8.0\u003c/h2\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix crash when \u003ccode\u003e# fmt: off\u003c/code\u003e is used before a closing parenthesis or bracket. (\u003ca href=\"https://redirect.github.com/psf/black/issues/4363\"\u003e#4363\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePackaging metadata updated: docs are explictly linked, the issue tracker is now also\nlinked. This improves the PyPI listing for Black. (\u003ca href=\"https://redirect.github.com/psf/black/issues/4345\"\u003e#4345\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eParser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression where Black failed to parse a multiline f-string containing another\nmultiline string (\u003ca href=\"https://redirect.github.com/psf/black/issues/4339\"\u003e#4339\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix regression where Black failed to parse an escaped single quote inside an f-string\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4401\"\u003e#4401\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix bug with Black incorrectly parsing empty lines with a backslash (\u003ca href=\"https://redirect.github.com/psf/black/issues/4343\"\u003e#4343\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix bugs with Black's tokenizer not handling \u003ccode\u003e\\{\u003c/code\u003e inside f-strings very well (\u003ca href=\"https://redirect.github.com/psf/black/issues/4422\"\u003e#4422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix incorrect line numbers in the tokenizer for certain tokens within f-strings\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4423\"\u003e#4423\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove performance when a large directory is listed in \u003ccode\u003e.gitignore\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/psf/black/issues/4415\"\u003e#4415\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003cem\u003eBlackd\u003c/em\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix blackd (and all extras installs) for docker container (\u003ca href=\"https://redirect.github.com/psf/black/issues/4357\"\u003e#4357\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e24.4.2\u003c/h2\u003e\n\u003cp\u003eThis is a bugfix release to fix two regressions in the new f-string parser introduced in\n24.4.1.\u003c/p\u003e\n\u003ch3\u003eParser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression where certain complex f-strings failed to parse (\u003ca href=\"https://redirect.github.com/psf/black/issues/4332\"\u003e#4332\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix bad performance on certain complex string literals (\u003ca href=\"https://redirect.github.com/psf/black/issues/4331\"\u003e#4331\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e24.4.1\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for the new Python 3.12 f-string syntax introduced by PEP 701 (\u003ca href=\"https://redirect.github.com/psf/black/issues/3822\"\u003e#3822\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix crash involving indented dummy functions containing newlines (\u003ca href=\"https://redirect.github.com/psf/black/issues/4318\"\u003e#4318\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/black/blob/main/CHANGES.md\"\u003eblack's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 24.8.0\u003c/h2\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix crash when \u003ccode\u003e# fmt: off\u003c/code\u003e is used before a closing parenthesis or bracket. (\u003ca href=\"https://redirect.github.com/psf/black/issues/4363\"\u003e#4363\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePackaging metadata updated: docs are explicitly linked, the issue tracker is now also\nlinked. This improves the PyPI listing for Black. (\u003ca href=\"https://redirect.github.com/psf/black/issues/4345\"\u003e#4345\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eParser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression where Black failed to parse a multiline f-string containing another\nmultiline string (\u003ca href=\"https://redirect.github.com/psf/black/issues/4339\"\u003e#4339\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix regression where Black failed to parse an escaped single quote inside an f-string\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4401\"\u003e#4401\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix bug with Black incorrectly parsing empty lines with a backslash (\u003ca href=\"https://redirect.github.com/psf/black/issues/4343\"\u003e#4343\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix bugs with Black's tokenizer not handling \u003ccode\u003e\\{\u003c/code\u003e inside f-strings very well (\u003ca href=\"https://redirect.github.com/psf/black/issues/4422\"\u003e#4422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix incorrect line numbers in the tokenizer for certain tokens within f-strings\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4423\"\u003e#4423\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove performance when a large directory is listed in \u003ccode\u003e.gitignore\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/psf/black/issues/4415\"\u003e#4415\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003cem\u003eBlackd\u003c/em\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix blackd (and all extras installs) for docker container (\u003ca href=\"https://redirect.github.com/psf/black/issues/4357\"\u003e#4357\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 24.4.2\u003c/h2\u003e\n\u003cp\u003eThis is a bugfix release to fix two regressions in the new f-string parser introduced in\n24.4.1.\u003c/p\u003e\n\u003ch3\u003eParser\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression where certain complex f-strings failed to parse (\u003ca href=\"https://redirect.github.com/psf/black/issues/4332\"\u003e#4332\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix bad performance on certain complex string literals (\u003ca href=\"https://redirect.github.com/psf/black/issues/4331\"\u003e#4331\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 24.4.1\u003c/h2\u003e\n\u003ch3\u003eHighlights\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for the new Python 3.12 f-string syntax introduced by PEP 701 (\u003ca href=\"https://redirect.github.com/psf/black/issues/3822\"\u003e#3822\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eStable style\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/psf/black/commit/b965c2a5026f8ba399283ba3e01898b012853c79\"\u003e\u003ccode\u003eb965c2a\u003c/code\u003e\u003c/a\u003e Prepare release 24.8.0 (\u003ca href=\"https://redirect.github.com/psf/black/issues/4426\"\u003e#4426\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/9ccf279a17ff19cc51f62c60fc88ba46e615d202\"\u003e\u003ccode\u003e9ccf279\u003c/code\u003e\u003c/a\u003e Document \u003ccode\u003efind_project_root\u003c/code\u003e ignoring \u003ccode\u003epyproject.toml\u003c/code\u003e without \u003ccode\u003e[tool.black]\u003c/code\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/14b6e619704e6d81749f0a23060750ee0a5fcc40\"\u003e\u003ccode\u003e14b6e61\u003c/code\u003e\u003c/a\u003e fix: Enhace black efficiently to  skip directories listed in .gitignore (\u003ca href=\"https://redirect.github.com/psf/black/issues/4415\"\u003e#4415\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/b1c4dd96d769cb3ac3c8fc057e8dc60907b84c17\"\u003e\u003ccode\u003eb1c4dd9\u003c/code\u003e\u003c/a\u003e fix: respect braces better in f-string parsing (\u003ca href=\"https://redirect.github.com/psf/black/issues/4422\"\u003e#4422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/4b4ae43e8b66a2eab2d41a73364745c2a4570287\"\u003e\u003ccode\u003e4b4ae43\u003c/code\u003e\u003c/a\u003e Fix incorrect linenos on fstring tokens with escaped newlines (\u003ca href=\"https://redirect.github.com/psf/black/issues/4423\"\u003e#4423\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/7fa1faf83af513e09c44e029da573c6b0b2bd570\"\u003e\u003ccode\u003e7fa1faf\u003c/code\u003e\u003c/a\u003e docs: fix the installation command of extra for blackd (\u003ca href=\"https://redirect.github.com/psf/black/issues/4413\"\u003e#4413\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/8827accf560c7be418000962565f1fd6fa7b01cb\"\u003e\u003ccode\u003e8827acc\u003c/code\u003e\u003c/a\u003e Bump sphinx from 7.3.7 to 7.4.0 in /docs (\u003ca href=\"https://redirect.github.com/psf/black/issues/4404\"\u003e#4404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/b0da11d370adb5730fd45594cc89b1dc816786ea\"\u003e\u003ccode\u003eb0da11d\u003c/code\u003e\u003c/a\u003e Bump furo from 2024.5.6 to 2024.7.18 in /docs (\u003ca href=\"https://redirect.github.com/psf/black/issues/4409\"\u003e#4409\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/721dff549362f54930ecc038218dcc40e599a875\"\u003e\u003ccode\u003e721dff5\u003c/code\u003e\u003c/a\u003e fix: avoid formatting backslash strings inside f-strings (\u003ca href=\"https://redirect.github.com/psf/black/issues/4401\"\u003e#4401\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/7e2afc9bfdc4ec4bc3297aaa16a62d575249a5e0\"\u003e\u003ccode\u003e7e2afc9\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003eactions/checkout\u003c/code\u003e to v4 to stop node deprecation warnings (\u003ca href=\"https://redirect.github.com/psf/black/issues/4379\"\u003e#4379\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/black/compare/23.10.0...24.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pylint` from 2.17.7 to 3.2.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pylint-dev/pylint/releases\"\u003epylint's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.2.7\u003c/h2\u003e\n\u003ch2\u003eWhat's new in Pylint 3.2.7?\u003c/h2\u003e\n\u003cp\u003eRelease date: 2024-08-31\u003c/p\u003e\n\u003ch2\u003eFalse Positives Fixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed a false positive \u003ccode\u003eunreachable\u003c/code\u003e for \u003ccode\u003eNoReturn\u003c/code\u003e coroutine functions.\u003c/p\u003e\n\u003cp\u003eCloses \u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/9840\"\u003e#9840\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eOther Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix crash in refactoring checker when calling a lambda bound as a method.\u003c/p\u003e\n\u003cp\u003eCloses \u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/9865\"\u003e#9865\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix a crash in \u003ccode\u003eundefined-loop-variable\u003c/code\u003e when providing the \u003ccode\u003eiterable\u003c/code\u003e argument to \u003ccode\u003eenumerate()\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eCloses \u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/9875\"\u003e#9875\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix to address indeterminacy of error message in case a module name is same as another in a separate namespace.\u003c/p\u003e\n\u003cp\u003eRefs \u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/9883\"\u003e#9883\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev3.2.6\u003c/h2\u003e\n\u003ch2\u003eWhat's new in Pylint 3.2.6?\u003c/h2\u003e\n\u003cp\u003eRelease date: 2024-07-21\u003c/p\u003e\n\u003ch2\u003eFalse Positives Fixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eQuiet false positives for \u003ccode\u003eunexpected-keyword-arg\u003c/code\u003e when pylint cannot\ndetermine which of two or more dynamically defined classes is being instantiated.\u003c/p\u003e\n\u003cp\u003eCloses \u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/9672\"\u003e#9672\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix a false positive for \u003ccode\u003emissing-param-doc\u003c/code\u003e where a method which is decorated with \u003ccode\u003etyping.overload\u003c/code\u003e was expected to have a docstring specifying its parameters.\u003c/p\u003e\n\u003cp\u003eCloses \u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/9739\"\u003e#9739\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix a regression that raised \u003ccode\u003einvalid-name\u003c/code\u003e on class attributes merely\noverriding invalid names from an ancestor.\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/pylint-dev/pylint/commit/a98215b8c6a6203dd56366bcfe1cd946fb41282a\"\u003e\u003ccode\u003ea98215b\u003c/code\u003e\u003c/a\u003e Bump pylint to 3.2.7, update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/1deaffababe77e8a025e3b2e5d564d4feb8d987f\"\u003e\u003ccode\u003e1deaffa\u003c/code\u003e\u003c/a\u003e Fix to maintain order of package paths (\u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/9887\"\u003e#9887\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/9897\"\u003e#9897\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/b4c2951e62c6ba8e061d4c001192efdedcb6f498\"\u003e\u003ccode\u003eb4c2951\u003c/code\u003e\u003c/a\u003e [Backport maintenance/3.2.x] Fix a crash in \u003ccode\u003eundefined-loop-variable\u003c/code\u003e with `e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/f1925f46ff4c93e7d191d24746b601cfeb0b4e3c\"\u003e\u003ccode\u003ef1925f4\u003c/code\u003e\u003c/a\u003e Fix crash in refactoring checker when calling bound lambda (\u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/9867\"\u003e#9867\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/7d1626cf869dab1365150265bad45da7e4221bc1\"\u003e\u003ccode\u003e7d1626c\u003c/code\u003e\u003c/a\u003e Fix a false positive \u003ccode\u003eunreachable\u003c/code\u003e for \u003ccode\u003eNoReturn\u003c/code\u003e coroutine functions (\u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/9844\"\u003e#9844\u003c/a\u003e)...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/da1956664d6be3d008a90ad3f72bdd9d8a7ecfaa\"\u003e\u003ccode\u003eda19566\u003c/code\u003e\u003c/a\u003e Bump pylint to 3.2.6, update changelog (\u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/9825\"\u003e#9825\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/810c59ce17a46fb83d5938b591420b906c7c84b5\"\u003e\u003ccode\u003e810c59c\u003c/code\u003e\u003c/a\u003e Update setuptools to \u0026gt;=71.0.4 (\u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/9812\"\u003e#9812\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/9824\"\u003e#9824\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/5f19cd5a12c25c6f0e02566ccfcde19c6fee3674\"\u003e\u003ccode\u003e5f19cd5\u003c/code\u003e\u003c/a\u003e Fix a crash when a subclass extends \u003ccode\u003e__slots__\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/9817\"\u003e#9817\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/9822\"\u003e#9822\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/c0b1d2228b47e90f80cfb258ade9e23a5f36d153\"\u003e\u003ccode\u003ec0b1d22\u003c/code\u003e\u003c/a\u003e Bump astroid to 3.2.4 (\u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/9816\"\u003e#9816\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/9821\"\u003e#9821\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/1d877de1f0f9889841d7e2a780ff2aad2f823213\"\u003e\u003ccode\u003e1d877de\u003c/code\u003e\u003c/a\u003e Fix consider-using-min-max-builtin (\u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/9802\"\u003e#9802\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/9803\"\u003e#9803\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pylint-dev/pylint/compare/v2.17.7...v3.2.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest` from 7.4.2 to 8.3.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest/releases\"\u003epytest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.3.5\u003c/h2\u003e\n\u003ch1\u003epytest 8.3.5 (2025-03-02)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/11777\"\u003e#11777\u003c/a\u003e: Fixed issue where sequences were still being shortened even with \u003ccode\u003e-vv\u003c/code\u003e verbosity.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12888\"\u003e#12888\u003c/a\u003e: Fixed broken input when using Python 3.13+ and a \u003ccode\u003elibedit\u003c/code\u003e build of Python, such as on macOS or with uv-managed Python binaries from the \u003ccode\u003epython-build-standalone\u003c/code\u003e project. This could manifest e.g. by a broken prompt when using \u003ccode\u003ePdb\u003c/code\u003e, or seeing empty inputs with manual usage of \u003ccode\u003einput()\u003c/code\u003e and suspended capturing.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13026\"\u003e#13026\u003c/a\u003e: Fixed \u003ccode\u003eAttributeError\u003c/code\u003e{.interpreted-text role=\u0026quot;class\u0026quot;} crash when using \u003ccode\u003e--import-mode=importlib\u003c/code\u003e when top-level directory same name as another module of the standard library.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13053\"\u003e#13053\u003c/a\u003e: Fixed a regression in pytest 8.3.4 where, when using \u003ccode\u003e--import-mode=importlib\u003c/code\u003e, a directory containing py file with the same name would cause an \u003ccode\u003eImportError\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13083\"\u003e#13083\u003c/a\u003e: Fixed issue where pytest could crash if one of the collected directories got removed during collection.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImproved documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12842\"\u003e#12842\u003c/a\u003e: Added dedicated page about using types with pytest.\u003c/p\u003e\n\u003cp\u003eSee \u003ccode\u003etypes\u003c/code\u003e{.interpreted-text role=\u0026quot;ref\u0026quot;} for detailed usage.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributor-facing changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13112\"\u003e#13112\u003c/a\u003e: Fixed selftest failures in \u003ccode\u003etest_terminal.py\u003c/code\u003e with Pygments \u0026gt;= 2.19.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13256\"\u003e#13256\u003c/a\u003e: Support for Towncrier versions released in 2024 has been re-enabled\nwhen building Sphinx docs -- by \u003ccode\u003ewebknjaz\u003c/code\u003e{.interpreted-text role=\u0026quot;user\u0026quot;}.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.3.4\u003c/h2\u003e\n\u003ch1\u003epytest 8.3.4 (2024-12-01)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12592\"\u003e#12592\u003c/a\u003e: Fixed \u003ccode\u003eKeyError\u003c/code\u003e{.interpreted-text role=\u0026quot;class\u0026quot;} crash when using \u003ccode\u003e--import-mode=importlib\u003c/code\u003e in a directory layout where a directory contains a child directory with the same name.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12818\"\u003e#12818\u003c/a\u003e: Assertion rewriting now preserves the source ranges of the original instructions, making it play well with tools that deal with the \u003ccode\u003eAST\u003c/code\u003e, like \u003ca href=\"https://github.com/alexmojaki/executing\"\u003eexecuting\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12849\"\u003e#12849\u003c/a\u003e: ANSI escape codes for colored output now handled correctly in \u003ccode\u003epytest.fail\u003c/code\u003e{.interpreted-text role=\u0026quot;func\u0026quot;} with [pytrace=False]{.title-ref}.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/9353\"\u003e#9353\u003c/a\u003e: \u003ccode\u003epytest.approx\u003c/code\u003e{.interpreted-text role=\u0026quot;func\u0026quot;} now uses strict equality when given booleans.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImproved documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/10558\"\u003e#10558\u003c/a\u003e: Fix ambiguous docstring of \u003ccode\u003epytest.Config.getoption\u003c/code\u003e{.interpreted-text role=\u0026quot;func\u0026quot;}.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/10829\"\u003e#10829\u003c/a\u003e: Improve documentation on the current handling of the \u003ccode\u003e--basetemp\u003c/code\u003e option and its lack of retention functionality (\u003ccode\u003etemporary directory location and retention\u003c/code\u003e{.interpreted-text role=\u0026quot;ref\u0026quot;}).\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/pytest-dev/pytest/commit/b55ab2aabb68c0ce94c3903139b062d0c2790152\"\u003e\u003ccode\u003eb55ab2a\u003c/code\u003e\u003c/a\u003e Prepare release version 8.3.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/e217726d2a0edfaf58eae95bf835b85834b96da3\"\u003e\u003ccode\u003ee217726\u003c/code\u003e\u003c/a\u003e Added dedicated page about using types with pytest \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12842\"\u003e#12842\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12963\"\u003e#12963\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13260\"\u003e#13260\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/2fa3f8306c3da4aad7f7349a4947ac37ba6c652f\"\u003e\u003ccode\u003e2fa3f83\u003c/code\u003e\u003c/a\u003e Add more resources and studies to flaky tests page in docs (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13250\"\u003e#13250\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13259\"\u003e#13259\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/e5c2efe3c36199731b41fd68bbf4df5e21404a8b\"\u003e\u003ccode\u003ee5c2efe\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13256\"\u003e#13256\u003c/a\u003e from webknjaz/maintenance/towncrier-bump (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13258\"\u003e#13258\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/3419674225a3a7b7d6f93650d75f6de52fe637d5\"\u003e\u003ccode\u003e3419674\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13187\"\u003e#13187\u003c/a\u003e from pytest-dev/patchback/backports/8.3.x/b4009b319...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/b75cfb162dbb927739698effa3fbcf279655da49\"\u003e\u003ccode\u003eb75cfb1\u003c/code\u003e\u003c/a\u003e Add readline workaround for libedit (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13176\"\u003e#13176\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/edbfff72a4051ed9c5f3d9b5d6f316b407cb6961\"\u003e\u003ccode\u003eedbfff7\u003c/code\u003e\u003c/a\u003e doc: Clarify capturing .readouterr() return value (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13222\"\u003e#13222\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13225\"\u003e#13225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/2ebba0063c66b77a7bd171221de059f3b3e47b86\"\u003e\u003ccode\u003e2ebba00\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13199\"\u003e#13199\u003c/a\u003e from jakkdl/tox_docs_no_fetch (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13200\"\u003e#13200\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/eb6496b79759f9acde581ed9d7a0777a49b5f820\"\u003e\u003ccode\u003eeb6496b\u003c/code\u003e\u003c/a\u003e doc: Change training to remote only (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13196\"\u003e#13196\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13197\"\u003e#13197\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/78cf1f67f707fc07372a89775fd10d2065b5f17a\"\u003e\u003ccode\u003e78cf1f6\u003c/code\u003e\u003c/a\u003e ci: Bump build-and-inspect-python-package (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13188\"\u003e#13188\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest/compare/7.4.2...8.3.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-cov` from 4.1.0 to 5.0.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst\"\u003epytest-cov's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.0.0 (2024-03-24)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved support for xdist rsync (now deprecated).\nContributed by Matthias Reichenbach in \u003ccode\u003e[#623](https://github.com/pytest-dev/pytest-cov/issues/623) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/623\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eSwitched docs theme to Furo.\u003c/li\u003e\n\u003cli\u003eVarious legacy Python cleanup and CI improvements.\nContributed by Christian Clauss and Hugo van Kemenade in\n\u003ccode\u003e[#630](https://github.com/pytest-dev/pytest-cov/issues/630) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/630\u0026gt;\u003c/code\u003e\u003cem\u003e,\n\u003ccode\u003e[#631](https://github.com/pytest-dev/pytest-cov/issues/631) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/631\u0026gt;\u003c/code\u003e\u003c/em\u003e,\n\u003ccode\u003e[#632](https://github.com/pytest-dev/pytest-cov/issues/632) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/632\u0026gt;\u003c/code\u003e_ and\n\u003ccode\u003e[#633](https://github.com/pytest-dev/pytest-cov/issues/633) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/633\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003epyproject.toml\u003c/code\u003e example in the docs.\nContributed by Dawn James in \u003ccode\u003e[#626](https://github.com/pytest-dev/pytest-cov/issues/626) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/626\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eModernized project's pre-commit hooks to use ruff. Initial POC contributed by\nChristian Clauss in \u003ccode\u003e[#584](https://github.com/pytest-dev/pytest-cov/issues/584) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/584\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.7.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/5295ce01c84262cec88f31255e9ac538718f3047\"\u003e\u003ccode\u003e5295ce0\u003c/code\u003e\u003c/a\u003e Bump version: 4.1.0 → 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/1181b067972bf94569f8011f3b18f271690f9ab1\"\u003e\u003ccode\u003e1181b06\u003c/code\u003e\u003c/a\u003e Update changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/9757222e2e044361e70125ebdd96e5eb87395983\"\u003e\u003ccode\u003e9757222\u003c/code\u003e\u003c/a\u003e Fix a minor grammar error (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-cov/issues/636\"\u003e#636\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/9f5cd81a0dbe3fe41681efdbef516c08988fe8ff\"\u003e\u003ccode\u003e9f5cd81\u003c/code\u003e\u003c/a\u003e Cleanup releasing instructions. Closes \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-cov/issues/616\"\u003e#616\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/93b5047ec5050d63c10a6fe16a09b671a7a03df8\"\u003e\u003ccode\u003e93b5047\u003c/code\u003e\u003c/a\u003e Add test for pyproject.toml loading without explicit --cov-config. Ref \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-cov/issues/508\"\u003e#508\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/ff50860d7c67b920503745d92a3f0944cf41f982\"\u003e\u003ccode\u003eff50860\u003c/code\u003e\u003c/a\u003e docs: add config instructions for pyproject.toml.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/4a5a4b5fa4b1c63ddcab5cbc1813798c9b6f1d36\"\u003e\u003ccode\u003e4a5a4b5\u003c/code\u003e\u003c/a\u003e Keep GitHub Actions up to date with GitHub's Dependabot\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/1d7f55963d5138f41c452a946f7cca7e0b6ee8b2\"\u003e\u003ccode\u003e1d7f559\u003c/code\u003e\u003c/a\u003e Fix or remove URLs that are causing docs tests to fail\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/6a5af8e85b8242ac815f33e26adf9068f5f0ebc3\"\u003e\u003ccode\u003e6a5af8e\u003c/code\u003e\u003c/a\u003e Update changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/d9fe8dfed15023d3410dd299c5092e755b8981c2\"\u003e\u003ccode\u003ed9fe8df\u003c/code\u003e\u003c/a\u003e Switch to furo. Closes \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-cov/issues/618\"\u003e#618\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-cov/compare/v4.1.0...v5.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-requests` from 2.31.0.10 to 2.32.0.20241016\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-pyyaml` from 6.0.12.12 to 6.0.12.20241230\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bandit` from 1.7.5 to 1.7.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/bandit/releases\"\u003ebandit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.7.10\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump docker/build-push-action from 5.4.0 to 6.0.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1147\"\u003ePyCQA/bandit#1147\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSuggested small refactors in assignments by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1150\"\u003ePyCQA/bandit#1150\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePerformance improvement in blacklist function by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1148\"\u003ePyCQA/bandit#1148\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd test for usage of FTP_TLS by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1149\"\u003ePyCQA/bandit#1149\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eNew check: B113: TrojanSource - Bidirectional control characters by \u003ca href=\"https://github.com/Lucas-C\"\u003e\u003ccode\u003e@​Lucas-C\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/757\"\u003ePyCQA/bandit#757\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.0.0 to 6.1.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1152\"\u003ePyCQA/bandit#1152\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(plugins): add support for \u003ccode\u003ehttpx\u003c/code\u003e in \u003ccode\u003eB113\u003c/code\u003e by \u003ca href=\"https://github.com/mkniewallner\"\u003e\u003ccode\u003e@​mkniewallner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1060\"\u003ePyCQA/bandit#1060\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eNit: remove unused variable by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1153\"\u003ePyCQA/bandit#1153\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd recent releases to version choice in bug report by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1151\"\u003ePyCQA/bandit#1151\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.1.0 to 6.2.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1155\"\u003ePyCQA/bandit#1155\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.2.0 to 6.3.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1157\"\u003ePyCQA/bandit#1157\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/setup-buildx-action from 3.3.0 to 3.4.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1156\"\u003ePyCQA/bandit#1156\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/setup-buildx-action from 3.4.0 to 3.5.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1158\"\u003ePyCQA/bandit#1158\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/login-action from 3.2.0 to 3.3.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1159\"\u003ePyCQA/bandit#1159\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.3.0 to 6.5.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1160\"\u003ePyCQA/bandit#1160\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/setup-buildx-action from 3.5.0 to 3.6.1 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1163\"\u003ePyCQA/bandit#1163\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.5.0 to 6.6.1 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1166\"\u003ePyCQA/bandit#1166\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump sigstore/cosign-installer from 3.5.0 to 3.6.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1165\"\u003ePyCQA/bandit#1165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.6.1 to 6.7.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1168\"\u003ePyCQA/bandit#1168\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse consistent file naming of docs by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1170\"\u003ePyCQA/bandit#1170\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePytorch Load / Save Plugin by \u003ca href=\"https://github.com/lukehinds\"\u003e\u003ccode\u003e@​lukehinds\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1114\"\u003ePyCQA/bandit#1114\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/Lucas-C\"\u003e\u003ccode\u003e@​Lucas-C\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/757\"\u003ePyCQA/bandit#757\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.7.9...1.7.10\"\u003ehttps://github.com/PyCQA/bandit/compare/1.7.9...1.7.10\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.7.9\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump docker/build-push-action from 5.1.0 to 5.2.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1117\"\u003ePyCQA/bandit#1117\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 in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1119\"\u003ePyCQA/bandit#1119\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eNew logo for Bandit based on raccoon by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1121\"\u003ePyCQA/bandit#1121\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStart testing on Python 3.13 by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1122\"\u003ePyCQA/bandit#1122\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 5.2.0 to 5.3.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1123\"\u003ePyCQA/bandit#1123\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/setup-buildx-action from 3.1.0 to 3.2.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1124\"\u003ePyCQA/bandit#1124\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/login-action from 3.0.0 to 3.1.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1125\"\u003ePyCQA/bandit#1125\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 in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1126\"\u003ePyCQA/bandit#1126\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 in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1127\"\u003ePyCQA/bandit#1127\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/setup-buildx-action from 3.2.0 to 3.3.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1130\"\u003ePyCQA/bandit#1130\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 in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1131\"\u003ePyCQA/bandit#1131\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump sigstore/cosign-installer from 3.4.0 to 3.5.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1132\"\u003ePyCQA/bandit#1132\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 in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1133\"\u003ePyCQA/bandit#1133\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdates banner logo so it renders well in dark mode by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1134\"\u003ePyCQA/bandit#1134\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 in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1135\"\u003ePyCQA/bandit#1135\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd a sponsor section to README by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1137\"\u003ePyCQA/bandit#1137\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnsure sarif extra is included as part of doc build by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1139\"\u003ePyCQA/bandit#1139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/login-action from 3.1.0 to 3.2.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1142\"\u003ePyCQA/bandit#1142\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 in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1143\"\u003ePyCQA/bandit#1143\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/PyCQA/bandit/commit/36fd65054fc8864b4037d0918904f9331512feb5\"\u003e\u003ccode\u003e36fd650\u003c/code\u003e\u003c/a\u003e Pytorch Load / Save Plugin (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1114\"\u003e#1114\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/4ac55dfaaacf2083497831294b2dcd7e679f8428\"\u003e\u003ccode\u003e4ac55df\u003c/code\u003e\u003c/a\u003e Use consistent file naming of docs (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1170\"\u003e#1170\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/68022aa1d626a7702e3154987f4be278484033fb\"\u003e\u003ccode\u003e68022aa\u003c/code\u003e\u003c/a\u003e Bump docker/build-push-action from 6.6.1 to 6.7.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1168\"\u003e#1168\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/77566a00b6c2486049247acdf6dab327dc03845b\"\u003e\u003ccode\u003e77566a0\u003c/code\u003e\u003c/a\u003e Bump sigstore/cosign-installer from 3.5.0 to 3.6.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1165\"\u003e#1165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com...\n\n_Description has been truncated_","html_url":"https://github.com/eugene-davis/vault-assessment-prometheus-exporter/pull/268","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/eugene-davis%2Fvault-assessment-prometheus-exporter/issues/268","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/268/packages"}},{"old_version":"1.8.6","new_version":"1.9.4","update_type":"minor","path":null,"pr_created_at":"2026-09-07T01:13:52.000Z","version_change":"1.8.6 → 1.9.4","issue":{"uuid":"5368878562","node_id":"PR_kwDOT_qCsc8AAAABCcqM2Q","number":4,"state":"open","title":"chore(deps-dev): bump bandit from 1.8.6 to 1.9.4","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-07T01:13:52.000Z","updated_at":"2026-09-07T01:13:53.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"bandit","old_version":"1.8.6","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"}],"path":null,"ecosystem":"pip"},"body":"Bumps [bandit](https://github.com/PyCQA/bandit) from 1.8.6 to 1.9.4.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/bandit/releases\"\u003ebandit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: fixed some typos in comments by \u003ca href=\"https://github.com/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/login-action from 3.6.0 to 3.7.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/PyCQA/bandit/pull/1353\"\u003ePyCQA/bandit#1353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.18.0 to 6.19.2 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/PyCQA/bandit/pull/1357\"\u003ePyCQA/bandit#1357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B613 crash when reading from stdin by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude filename in nosec 'no failed test' warning by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1363\"\u003ePyCQA/bandit#1363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B615 false positive when revision is set via variable by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1358\"\u003ePyCQA/bandit#1358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLower version guard in check_ast_node to Python 3.12 by \u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B106 reporting wrong line number on multiline function calls by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1360\"\u003ePyCQA/bandit#1360\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/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1334\"\u003ePyCQA/bandit#1334\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/PyCQA/bandit/pull/1335\"\u003ePyCQA/bandit#1335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B608 to detect \u003ccode\u003eVALUES(\u003c/code\u003e without space by \u003ca href=\"https://github.com/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd check for hardcoded passwords in dicts. by \u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\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/PyCQA/bandit/pull/1341\"\u003ePyCQA/bandit#1341\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate tox tests for Python 3.10 by \u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/setup-buildx-action from 3.11.1 to 3.12.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/PyCQA/bandit/pull/1347\"\u003ePyCQA/bandit#1347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimit B614 to torch.load deserializers by \u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\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/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eArgparse Python 3.14 enhancements by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1331\"\u003ePyCQA/bandit#1331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCheck whether Constant value is str by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1333\"\u003ePyCQA/bandit#1333\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.1...1.9.2\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.1...1.9.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMore Python version related fixes by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1327\"\u003ePyCQA/bandit#1327\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/PyCQA/bandit/commit/92ae8b82fb422a639f0ed8d99e96cea769594e08\"\u003e\u003ccode\u003e92ae8b8\u003c/code\u003e\u003c/a\u003e Fix B106 reporting wrong line number on multiline function calls (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1360\"\u003e#1360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c8c8a55c3307333b8eb46cb2ef46d49b1fad6546\"\u003e\u003ccode\u003ec8c8a55\u003c/code\u003e\u003c/a\u003e Lower version guard in check_ast_node to Python 3.12 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1355\"\u003e#1355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/8f2f9284fca830ca017b2e2cc3ddc2a7b74b7040\"\u003e\u003ccode\u003e8f2f928\u003c/code\u003e\u003c/a\u003e Fix B615 false positive when revision is set via variable (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1358\"\u003e#1358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e27493f71c114e0e5dfc0a475d225d7f9f4a7e2b\"\u003e\u003ccode\u003ee27493f\u003c/code\u003e\u003c/a\u003e Include filename in nosec 'no failed test' warning (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1363\"\u003e#1363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/b69b336450301d424e5ba04c9a58e8d41b7169b6\"\u003e\u003ccode\u003eb69b336\u003c/code\u003e\u003c/a\u003e Fix B613 crash when reading from stdin (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1361\"\u003e#1361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e418b798abcc3f2b00c07fd6315da8fe9aeead00\"\u003e\u003ccode\u003ee418b79\u003c/code\u003e\u003c/a\u003e Bump docker/build-push-action from 6.18.0 to 6.19.2 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1357\"\u003e#1357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/ff646fd7e0e34fb350196fc58448fad17178c27a\"\u003e\u003ccode\u003eff646fd\u003c/code\u003e\u003c/a\u003e Bump docker/login-action from 3.6.0 to 3.7.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1353\"\u003e#1353\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c0def6c7ebab60f98c28ba759d488f4fbe6dae89\"\u003e\u003ccode\u003ec0def6c\u003c/code\u003e\u003c/a\u003e chore: fixed some typos in comments (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1351\"\u003e#1351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/765f00d3f202f83f61d03f882f80a2d5142d81f8\"\u003e\u003ccode\u003e765f00d\u003c/code\u003e\u003c/a\u003e Limit B614 to torch.load deserializers (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1348\"\u003e#1348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/06fbbab0df3374ffa8ef24c6f601b2d5e1d4d429\"\u003e\u003ccode\u003e06fbbab\u003c/code\u003e\u003c/a\u003e Bump docker/setup-buildx-action from 3.11.1 to 3.12.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1347\"\u003e#1347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.8.6...1.9.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=bandit\u0026package-manager=pip\u0026previous-version=1.8.6\u0026new-version=1.9.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/luoshitianchen/SM-API-Gateway/pull/4","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/luoshitianchen%2FSM-API-Gateway/issues/4","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/4/packages"}},{"old_version":"1.8.6","new_version":"1.9.4","update_type":"minor","path":null,"pr_created_at":"2026-09-07T01:12:33.000Z","version_change":"1.8.6 → 1.9.4","issue":{"uuid":"5368870595","node_id":"PR_kwDOUApU-s8AAAABCcpylA","number":5,"state":"open","title":"chore(deps-dev): bump bandit from 1.8.6 to 1.9.4","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-07T01:12:33.000Z","updated_at":"2026-09-07T01:12:33.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"bandit","old_version":"1.8.6","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"}],"path":null,"ecosystem":"pip"},"body":"Bumps [bandit](https://github.com/PyCQA/bandit) from 1.8.6 to 1.9.4.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/bandit/releases\"\u003ebandit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: fixed some typos in comments by \u003ca href=\"https://github.com/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/login-action from 3.6.0 to 3.7.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/PyCQA/bandit/pull/1353\"\u003ePyCQA/bandit#1353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.18.0 to 6.19.2 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/PyCQA/bandit/pull/1357\"\u003ePyCQA/bandit#1357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B613 crash when reading from stdin by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude filename in nosec 'no failed test' warning by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1363\"\u003ePyCQA/bandit#1363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B615 false positive when revision is set via variable by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1358\"\u003ePyCQA/bandit#1358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLower version guard in check_ast_node to Python 3.12 by \u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B106 reporting wrong line number on multiline function calls by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1360\"\u003ePyCQA/bandit#1360\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/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1334\"\u003ePyCQA/bandit#1334\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/PyCQA/bandit/pull/1335\"\u003ePyCQA/bandit#1335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B608 to detect \u003ccode\u003eVALUES(\u003c/code\u003e without space by \u003ca href=\"https://github.com/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd check for hardcoded passwords in dicts. by \u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\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/PyCQA/bandit/pull/1341\"\u003ePyCQA/bandit#1341\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate tox tests for Python 3.10 by \u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/setup-buildx-action from 3.11.1 to 3.12.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/PyCQA/bandit/pull/1347\"\u003ePyCQA/bandit#1347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimit B614 to torch.load deserializers by \u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\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/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eArgparse Python 3.14 enhancements by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1331\"\u003ePyCQA/bandit#1331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCheck whether Constant value is str by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1333\"\u003ePyCQA/bandit#1333\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.1...1.9.2\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.1...1.9.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMore Python version related fixes by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1327\"\u003ePyCQA/bandit#1327\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/PyCQA/bandit/commit/92ae8b82fb422a639f0ed8d99e96cea769594e08\"\u003e\u003ccode\u003e92ae8b8\u003c/code\u003e\u003c/a\u003e Fix B106 reporting wrong line number on multiline function calls (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1360\"\u003e#1360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c8c8a55c3307333b8eb46cb2ef46d49b1fad6546\"\u003e\u003ccode\u003ec8c8a55\u003c/code\u003e\u003c/a\u003e Lower version guard in check_ast_node to Python 3.12 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1355\"\u003e#1355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/8f2f9284fca830ca017b2e2cc3ddc2a7b74b7040\"\u003e\u003ccode\u003e8f2f928\u003c/code\u003e\u003c/a\u003e Fix B615 false positive when revision is set via variable (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1358\"\u003e#1358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e27493f71c114e0e5dfc0a475d225d7f9f4a7e2b\"\u003e\u003ccode\u003ee27493f\u003c/code\u003e\u003c/a\u003e Include filename in nosec 'no failed test' warning (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1363\"\u003e#1363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/b69b336450301d424e5ba04c9a58e8d41b7169b6\"\u003e\u003ccode\u003eb69b336\u003c/code\u003e\u003c/a\u003e Fix B613 crash when reading from stdin (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1361\"\u003e#1361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e418b798abcc3f2b00c07fd6315da8fe9aeead00\"\u003e\u003ccode\u003ee418b79\u003c/code\u003e\u003c/a\u003e Bump docker/build-push-action from 6.18.0 to 6.19.2 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1357\"\u003e#1357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/ff646fd7e0e34fb350196fc58448fad17178c27a\"\u003e\u003ccode\u003eff646fd\u003c/code\u003e\u003c/a\u003e Bump docker/login-action from 3.6.0 to 3.7.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1353\"\u003e#1353\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c0def6c7ebab60f98c28ba759d488f4fbe6dae89\"\u003e\u003ccode\u003ec0def6c\u003c/code\u003e\u003c/a\u003e chore: fixed some typos in comments (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1351\"\u003e#1351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/765f00d3f202f83f61d03f882f80a2d5142d81f8\"\u003e\u003ccode\u003e765f00d\u003c/code\u003e\u003c/a\u003e Limit B614 to torch.load deserializers (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1348\"\u003e#1348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/06fbbab0df3374ffa8ef24c6f601b2d5e1d4d429\"\u003e\u003ccode\u003e06fbbab\u003c/code\u003e\u003c/a\u003e Bump docker/setup-buildx-action from 3.11.1 to 3.12.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1347\"\u003e#1347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.8.6...1.9.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=bandit\u0026package-manager=pip\u0026previous-version=1.8.6\u0026new-version=1.9.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/luoshitianchen/SM-CRM/pull/5","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/luoshitianchen%2FSM-CRM/issues/5","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/5/packages"}},{"old_version":"1.9.2","new_version":"1.9.4","update_type":"patch","path":null,"pr_created_at":"2026-09-06T11:52:35.000Z","version_change":"1.9.2 → 1.9.4","issue":{"uuid":"5364774833","node_id":"PR_kwDOQd8Gdc8AAAABCZkGIA","number":523,"state":"open","title":"chore(deps): Bump the minor-and-patch group across 1 directory with 51 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-06T11:52:35.000Z","updated_at":"2026-09-06T11:52:48.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":51,"packages":[{"name":"aenum","old_version":"3.1.16","new_version":"3.1.17","repository_url":"https://github.com/ethanfurman/aenum"},{"name":"aiohappyeyeballs","old_version":"2.6.1","new_version":"2.7.1","repository_url":"https://github.com/aio-libs/aiohappyeyeballs"},{"name":"altair","old_version":"6.0.0","new_version":"6.2.2","repository_url":"https://github.com/vega/altair"},{"name":"annotated-doc","old_version":"0.0.4","new_version":"0.0.5","repository_url":"https://github.com/fastapi/annotated-doc"},{"name":"annotated-types","old_version":"0.7.0","new_version":"0.8.0","repository_url":"https://github.com/annotated-types/annotated-types"},{"name":"anyio","old_version":"4.12.0","new_version":"4.15.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"beautifulsoup4","old_version":"4.14.3","new_version":"4.15.0"},{"name":"cffi","old_version":"2.0.0","new_version":"2.1.1","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.4.4","new_version":"3.5.1","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.3.3","new_version":"8.5.0","repository_url":"https://github.com/pallets/click"},{"name":"cryptography","old_version":"50.0.0","new_version":"50.0.1","repository_url":"https://github.com/pyca/cryptography"},{"name":"fonttools","old_version":"4.61.0","new_version":"4.64.0","repository_url":"https://github.com/fonttools/fonttools"},{"name":"google-api-python-client","old_version":"2.187.0","new_version":"2.200.0","repository_url":"https://github.com/googleapis/google-api-python-client"},{"name":"google-auth","old_version":"2.41.1","new_version":"2.57.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"google-auth-httplib2","old_version":"0.2.1","new_version":"0.4.2","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"google-auth-oauthlib","old_version":"1.2.3","new_version":"1.4.1","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"idna","old_version":"3.18","new_version":"3.19","repository_url":"https://github.com/kjd/idna"},{"name":"jsonschema","old_version":"4.25.1","new_version":"4.26.0","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"kiwisolver","old_version":"1.4.9","new_version":"1.5.1","repository_url":"https://github.com/nucleic/kiwi"},{"name":"line-bot-sdk","old_version":"3.21.0","new_version":"3.25.0","repository_url":"https://github.com/line/line-bot-sdk-python"},{"name":"lxml","old_version":"6.1.0","new_version":"6.1.3","repository_url":"https://github.com/lxml/lxml"},{"name":"multidict","old_version":"6.7.0","new_version":"6.7.1","repository_url":"https://github.com/aio-libs/multidict"},{"name":"narwhals","old_version":"2.13.0","new_version":"2.25.0","repository_url":"https://github.com/narwhals-dev/narwhals"},{"name":"numpy","old_version":"2.2.6","new_version":"2.4.6","repository_url":"https://github.com/numpy/numpy"},{"name":"platformdirs","old_version":"4.5.0","new_version":"4.11.7","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"propcache","old_version":"0.4.1","new_version":"0.5.2","repository_url":"https://github.com/aio-libs/propcache"},{"name":"pydantic","old_version":"2.12.5","new_version":"2.13.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-core","old_version":"2.41.5","new_version":"2.48.0","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydeck","old_version":"0.9.1","new_version":"0.9.3","repository_url":"https://github.com/visgl/deck.gl"},{"name":"pygments","old_version":"2.20.0","new_version":"2.21.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pyparsing","old_version":"3.2.5","new_version":"3.3.2","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"pypdfium2","old_version":"5.1.0","new_version":"5.13.0","repository_url":"https://github.com/pypdfium2-team/pypdfium2"},{"name":"python-dotenv","old_version":"1.2.2","new_version":"1.2.3","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"requests","old_version":"2.33.0","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"soupsieve","old_version":"2.8.4","new_version":"2.9.2","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"streamlit","old_version":"1.54.0","new_version":"1.63.0","repository_url":"https://github.com/streamlit/streamlit"},{"name":"tenacity","old_version":"9.1.2","new_version":"9.1.4","repository_url":"https://github.com/jd/tenacity"},{"name":"tqdm","old_version":"4.67.1","new_version":"4.70.0","repository_url":"https://github.com/tqdm/tqdm"},{"name":"typing-inspection","old_version":"0.4.2","new_version":"0.4.4","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"typing-extensions","old_version":"4.15.0","new_version":"4.16.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"uvicorn","old_version":"0.38.0","new_version":"0.52.4","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"wrapt","old_version":"2.0.1","new_version":"2.4.0","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"yarl","old_version":"1.22.0","new_version":"1.24.5","repository_url":"https://github.com/aio-libs/yarl"},{"name":"pytest","old_version":"9.0.3","new_version":"9.1.1","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-asyncio","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/pytest-dev/pytest-asyncio"},{"name":"httpx2","old_version":"2.10.0","new_version":"2.12.0","repository_url":"https://github.com/pydantic/httpx2"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"hypothesis","old_version":"6.145.1","new_version":"6.167.1","repository_url":"https://github.com/HypothesisWorks/hypothesis"},{"name":"ruff","old_version":"0.14.4","new_version":"0.16.5","repository_url":"https://github.com/astral-sh/ruff"},{"name":"bandit","old_version":"1.9.2","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"},{"name":"pip-audit","old_version":"2.9.0","new_version":"2.10.1","repository_url":"https://github.com/pypa/pip-audit"}],"path":null,"ecosystem":"pip"},"body":"Bumps the minor-and-patch group with 51 updates in the /MY_HOME_SYSTEM directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [aenum](https://github.com/ethanfurman/aenum) | `3.1.16` | `3.1.17` |\n| [aiohappyeyeballs](https://github.com/aio-libs/aiohappyeyeballs) | `2.6.1` | `2.7.1` |\n| [altair](https://github.com/vega/altair) | `6.0.0` | `6.2.2` |\n| [annotated-doc](https://github.com/fastapi/annotated-doc) | `0.0.4` | `0.0.5` |\n| [annotated-types](https://github.com/annotated-types/annotated-types) | `0.7.0` | `0.8.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.12.0` | `4.15.0` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.14.3` | `4.15.0` |\n| [cffi](https://github.com/python-cffi/cffi) | `2.0.0` | `2.1.1` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.4` | `3.5.1` |\n| [click](https://github.com/pallets/click) | `8.3.3` | `8.5.0` |\n| [cryptography](https://github.com/pyca/cryptography) | `50.0.0` | `50.0.1` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.61.0` | `4.64.0` |\n| [google-api-python-client](https://github.com/googleapis/google-api-python-client) | `2.187.0` | `2.200.0` |\n| [google-auth](https://github.com/googleapis/google-cloud-python) | `2.41.1` | `2.57.0` |\n| [google-auth-httplib2](https://github.com/googleapis/google-cloud-python) | `0.2.1` | `0.4.2` |\n| [google-auth-oauthlib](https://github.com/googleapis/google-cloud-python) | `1.2.3` | `1.4.1` |\n| [idna](https://github.com/kjd/idna) | `3.18` | `3.19` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.25.1` | `4.26.0` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.4.9` | `1.5.1` |\n| [line-bot-sdk](https://github.com/line/line-bot-sdk-python) | `3.21.0` | `3.25.0` |\n| [lxml](https://github.com/lxml/lxml) | `6.1.0` | `6.1.3` |\n| [multidict](https://github.com/aio-libs/multidict) | `6.7.0` | `6.7.1` |\n| [narwhals](https://github.com/narwhals-dev/narwhals) | `2.13.0` | `2.25.0` |\n| [numpy](https://github.com/numpy/numpy) | `2.2.6` | `2.4.6` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.5.0` | `4.11.7` |\n| [propcache](https://github.com/aio-libs/propcache) | `0.4.1` | `0.5.2` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.12.5` | `2.13.5` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.41.5` | `2.48.0` |\n| [pydeck](https://github.com/visgl/deck.gl) | `0.9.1` | `0.9.3` |\n| [pygments](https://github.com/pygments/pygments) | `2.20.0` | `2.21.0` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.5` | `3.3.2` |\n| [pypdfium2](https://github.com/pypdfium2-team/pypdfium2) | `5.1.0` | `5.13.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.2` | `1.2.3` |\n| [requests](https://github.com/psf/requests) | `2.33.0` | `2.34.2` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.8.4` | `2.9.2` |\n| [streamlit](https://github.com/streamlit/streamlit) | `1.54.0` | `1.63.0` |\n| [tenacity](https://github.com/jd/tenacity) | `9.1.2` | `9.1.4` |\n| [tqdm](https://github.com/tqdm/tqdm) | `4.67.1` | `4.70.0` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.2` | `0.4.4` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.15.0` | `4.16.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.38.0` | `0.52.4` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `2.0.1` | `2.4.0` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.22.0` | `1.24.5` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.3` | `9.1.1` |\n| [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) | `1.3.0` | `1.4.0` |\n| [httpx2](https://github.com/pydantic/httpx2) | `2.10.0` | `2.12.0` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` |\n| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.145.1` | `6.167.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.4` | `0.16.5` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [pip-audit](https://github.com/pypa/pip-audit) | `2.9.0` | `2.10.1` |\n\n\nUpdates `aenum` from 3.1.16 to 3.1.17\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ethanfurman/aenum/commit/f0f6fd8e2ac0bb379eb11f6029023d2bad88732a\"\u003e\u003ccode\u003ef0f6fd8\u003c/code\u003e\u003c/a\u003e version 3.1.17\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ethanfurman/aenum/commit/60c5641a7c0525ae812c9674330c3634bd852e69\"\u003e\u003ccode\u003e60c5641\u003c/code\u003e\u003c/a\u003e remove duplicate function\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ethanfurman/aenum/commit/e463496bd4a485f92f34eec37b7b73aedef10405\"\u003e\u003ccode\u003ee463496\u003c/code\u003e\u003c/a\u003e fix global_flag_repr\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ethanfurman/aenum/commit/f6510625e7cf7e7291d3b1b12e0bb341467e6f27\"\u003e\u003ccode\u003ef651062\u003c/code\u003e\u003c/a\u003e bump version\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/ethanfurman/aenum/compare/3.1.16...3.1.17\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `aiohappyeyeballs` from 2.6.1 to 2.7.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/releases\"\u003eaiohappyeyeballs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.7.1 (2026-07-01)\u003c/h2\u003e\n\u003ch3\u003ePerformance Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse defaultdict to help with performance (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/239\"\u003e#239\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/e10f335ad9630122832e967428ac138992a50bca\"\u003e\u003ccode\u003ee10f335\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eCollapse collect-then-remove pattern in utils helpers (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/227\"\u003e#227\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/0dd3fd16fe394eb8493000dc9b9894fad3ca3190\"\u003e\u003ccode\u003e0dd3fd1\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMerge identical except blocks in _connect_sock cleanup (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/229\"\u003e#229\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/b7c186e3242eb4d6eaf0918857a99c263b3186fb\"\u003e\u003ccode\u003eb7c186e\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSimplify _interleave_addrinfos family grouping (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/226\"\u003e#226\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/fdf6548a5f8b38e45ad7cee8add3c3a7e34e2805\"\u003e\u003ccode\u003efdf6548\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eDetailed Changes\u003c/strong\u003e: \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.7.0...v2.7.1\"\u003ev2.7.0...v2.7.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.7.0 (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/224\"\u003e#224\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/10e7d4341666605de295dd00da716e30002e78c2\"\u003e\u003ccode\u003e10e7d43\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eDetailed Changes\u003c/strong\u003e: \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.6.2...v2.7.0\"\u003ev2.6.2...v2.7.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.6.2 (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClear error on empty addr_infos in start_connection (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/222\"\u003e#222\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/55dd76aee978ca47a38899b9caf69d058bf41fb3\"\u003e\u003ccode\u003e55dd76a\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptimize obtaining event-loop down to 1 line (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/185\"\u003e#185\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/02a70296210125b45952c3221db0dfb76d8ea911\"\u003e\u003ccode\u003e02a7029\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTesting\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStop verify_no_lingering_tasks from leaking an event loop (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/221\"\u003e#221\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/ce43beb0242007dc57be6e2f4e3bf0b9f4f239d1\"\u003e\u003ccode\u003ece43beb\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eDetailed Changes\u003c/strong\u003e: \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.6.1...v2.6.2\"\u003ev2.6.1...v2.6.2\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/aio-libs/aiohappyeyeballs/blob/main/CHANGELOG.md\"\u003eaiohappyeyeballs's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.7.1 (2026-07-01)\u003c/h2\u003e\n\u003ch3\u003ePerformance improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse defaultdict to help with performance (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/e10f335ad9630122832e967428ac138992a50bca\"\u003e\u003ccode\u003ee10f335\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSimplify _interleave_addrinfos family grouping (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/fdf6548a5f8b38e45ad7cee8add3c3a7e34e2805\"\u003e\u003ccode\u003efdf6548\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCollapse collect-then-remove pattern in utils helpers (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/0dd3fd16fe394eb8493000dc9b9894fad3ca3190\"\u003e\u003ccode\u003e0dd3fd1\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMerge identical except blocks in _connect_sock cleanup (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/b7c186e3242eb4d6eaf0918857a99c263b3186fb\"\u003e\u003ccode\u003eb7c186e\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.7.0 (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd python 3.14 support (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/10e7d4341666605de295dd00da716e30002e78c2\"\u003e\u003ccode\u003e10e7d43\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.6.2 (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClear error on empty addr_infos in start_connection (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/55dd76aee978ca47a38899b9caf69d058bf41fb3\"\u003e\u003ccode\u003e55dd76a\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTesting\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStop verify_no_lingering_tasks from leaking an event loop (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/ce43beb0242007dc57be6e2f4e3bf0b9f4f239d1\"\u003e\u003ccode\u003ece43beb\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptimize obtaining event-loop down to 1 line (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/02a70296210125b45952c3221db0dfb76d8ea911\"\u003e\u003ccode\u003e02a7029\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/4dfc926e30eea8d24c1a71602d73c0e9a895c191\"\u003e\u003ccode\u003e4dfc926\u003c/code\u003e\u003c/a\u003e 2.7.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/e10f335ad9630122832e967428ac138992a50bca\"\u003e\u003ccode\u003ee10f335\u003c/code\u003e\u003c/a\u003e perf: use defaultdict to help with performance (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/239\"\u003e#239\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/338277badfb25fc38759ce38ab9ea2c20ec1bfff\"\u003e\u003ccode\u003e338277b\u003c/code\u003e\u003c/a\u003e chore: stop tracking .DS_Store files (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/251\"\u003e#251\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/16978694944ed7fb5e7b49a173160144ccac45bc\"\u003e\u003ccode\u003e1697869\u003c/code\u003e\u003c/a\u003e ci: add codspeed benchmark suite for addrinfo reordering hot paths (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/250\"\u003e#250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/d40a848cd2262b435242646fa8e220300bcd6952\"\u003e\u003ccode\u003ed40a848\u003c/code\u003e\u003c/a\u003e chore(deps-dev): bump starlette from 1.0.1 to 1.3.1 (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/242\"\u003e#242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/51d42669b2b94a78c6d4bd059e449b8ef51c6646\"\u003e\u003ccode\u003e51d4266\u003c/code\u003e\u003c/a\u003e chore(deps-dev): bump cryptography from 46.0.7 to 48.0.1 (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/243\"\u003e#243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/2df44b3987d3c887a8493ba19259c63588226d6c\"\u003e\u003ccode\u003e2df44b3\u003c/code\u003e\u003c/a\u003e chore(pre-commit.ci): pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/241\"\u003e#241\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/3e3cb615f00bfb4d29c30e0c86c897f4de8fb02d\"\u003e\u003ccode\u003e3e3cb61\u003c/code\u003e\u003c/a\u003e chore(deps-dev): bump pytest from 9.0.3 to 9.1.1 (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/922dcd79a66d67fdd98a5f9b7587c4f8cda44653\"\u003e\u003ccode\u003e922dcd7\u003c/code\u003e\u003c/a\u003e chore(deps-ci): bump the github-actions group with 4 updates (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/245\"\u003e#245\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/70461c583a8cf3c6fa85b8c48b8e4b576cee8083\"\u003e\u003ccode\u003e70461c5\u003c/code\u003e\u003c/a\u003e ci: drop .github/FUNDING.yml to inherit org-wide config (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/247\"\u003e#247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.6.1...v2.7.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `altair` from 6.0.0 to 6.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/vega/altair/releases\"\u003ealtair's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.2.2\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: Avoid layered concat view name collisions by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4066\"\u003evega/altair#4066\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: Include layered concat views in selection params by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4069\"\u003evega/altair#4069\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edocs: Add an Andrews curves example to the gallery by \u003ca href=\"https://github.com/kyo5uke\"\u003e\u003ccode\u003e@​kyo5uke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4049\"\u003evega/altair#4049\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Add an interactive bin-size example to the gallery by \u003ca href=\"https://github.com/kyo5uke\"\u003e\u003ccode\u003e@​kyo5uke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4050\"\u003evega/altair#4050\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Validate docs publish clone by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4064\"\u003evega/altair#4064\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Fix broken example and sync with VL by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4010\"\u003evega/altair#4010\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eci: Make warning for doc preview page more prominent by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4048\"\u003evega/altair#4048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Check uv lockfile by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4052\"\u003evega/altair#4052\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Run docs build only for docs-related changes and don't duplicate builds on PRs by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4053\"\u003evega/altair#4053\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebuild: Update dependencies from dependabot alerts by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4055\"\u003evega/altair#4055\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Upload docs build artifact for PR preview by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4056\"\u003evega/altair#4056\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebuild: Reduce dependabot PRs by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4028\"\u003evega/altair#4028\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Correctly resolve docbuild worflow number from PR number by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4060\"\u003evega/altair#4060\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Group major GitHub Actions updates by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4061\"\u003evega/altair#4061\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Rename docbuild job from 'build' to 'docbuild' by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4062\"\u003evega/altair#4062\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Schedule release drafts twice monthly by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4057\"\u003evega/altair#4057\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Publish official docs after release is published by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4054\"\u003evega/altair#4054\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Document how local versioning works and add base tag by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4051\"\u003evega/altair#4051\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Disambiguate workflow naming by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4063\"\u003evega/altair#4063\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: enable partial Python 3.14t coverage by \u003ca href=\"https://github.com/axelray-dev\"\u003e\u003ccode\u003e@​axelray-dev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4038\"\u003evega/altair#4038\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/kyo5uke\"\u003e\u003ccode\u003e@​kyo5uke\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4049\"\u003evega/altair#4049\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/vega/altair/compare/v6.2.1...v6.2.2\"\u003ehttps://github.com/vega/altair/compare/v6.2.1...v6.2.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.2.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: Write dataset cache files atomically by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4034\"\u003evega/altair#4034\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eci: Prevent uv from dirtying worktree during publish by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4045\"\u003evega/altair#4045\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Clarify release review instructions by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4046\"\u003evega/altair#4046\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/vega/altair/compare/v6.2.0...v6.2.1\"\u003ehttps://github.com/vega/altair/compare/v6.2.0...v6.2.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.2.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003eThis is the first release in an effort to have smaller, more frequent releases going forward. By making the release process more convenient, we aim to more quickly push out fixes and features that already landed on the main branch to a released version of Altair.\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/vega/altair/commit/a9765713566095349cb1cfbbe85d6ad258c84245\"\u003e\u003ccode\u003ea976571\u003c/code\u003e\u003c/a\u003e fix: Include layered concat views in selection params (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4069\"\u003e#4069\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/432157b2304e0e30d89167ab26d1f7987f615a31\"\u003e\u003ccode\u003e432157b\u003c/code\u003e\u003c/a\u003e fix: Avoid layered concat view name collisions (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4066\"\u003e#4066\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/b875b95a24ee20f8e5665a730ee6d80cb6d55348\"\u003e\u003ccode\u003eb875b95\u003c/code\u003e\u003c/a\u003e docs: Fix a broken example and sync another one with VL (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4010\"\u003e#4010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/7b289f9adf07d960f94620ef02c33b8f400f4948\"\u003e\u003ccode\u003e7b289f9\u003c/code\u003e\u003c/a\u003e ci: Enable partial Python 3.14t coverage (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4038\"\u003e#4038\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/105ff2b4957651bf4cf55e4e2586705fa02ddfe7\"\u003e\u003ccode\u003e105ff2b\u003c/code\u003e\u003c/a\u003e docs: Validate docs publish clone (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4064\"\u003e#4064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/c82dd2e4af3bcd06ee4909cc38135d1b7f92c3dd\"\u003e\u003ccode\u003ec82dd2e\u003c/code\u003e\u003c/a\u003e ci: Disambiguate workflow naming (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4063\"\u003e#4063\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/624bee9705b345961c9b225d39562a10068461af\"\u003e\u003ccode\u003e624bee9\u003c/code\u003e\u003c/a\u003e docs: Add an interactive bin-size example to the gallery (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4050\"\u003e#4050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/3b1acf676a1a61d9df8d1ded2393dfde49587cae\"\u003e\u003ccode\u003e3b1acf6\u003c/code\u003e\u003c/a\u003e docs: Add an Andrews curves example to the gallery (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4049\"\u003e#4049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/edea5f64e7e893315e2050672058f86657b28201\"\u003e\u003ccode\u003eedea5f6\u003c/code\u003e\u003c/a\u003e ci: Document how local versioning works and add base tag (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4051\"\u003e#4051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/f8b4337e1355ca229d1e2e9645e89b6ec1a7a41c\"\u003e\u003ccode\u003ef8b4337\u003c/code\u003e\u003c/a\u003e ci: Publish official docs after release is published (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4054\"\u003e#4054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/vega/altair/compare/v6.0.0...v6.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `annotated-doc` from 0.0.4 to 0.0.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/annotated-doc/releases\"\u003eannotated-doc's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.5\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e➖ Drop support for Python 3.8. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/36\"\u003e#36\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\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ Bump ruff from 0.14.3 to 0.14.10. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/31\"\u003e#31\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\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Update security policy. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/63\"\u003e#63\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Upgrade latest-changes to 0.7.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/92\"\u003e#92\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⬆ Bump the github-actions group across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/91\"\u003e#91\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 the python-packages group across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/90\"\u003e#90\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 pre-commit hooks. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/89\"\u003e#89\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 GH workflow to bump pre-commit hook versions. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/81\"\u003e#81\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🔧 Set Dependabot schedule interval to \u0026quot;monthly\u0026quot;. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/82\"\u003e#82\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👷 Fix latest-changes checkout target. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/85\"\u003e#85\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 issue-manager to 0.8.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/84\"\u003e#84\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 latest-changes to 0.6.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/83\"\u003e#83\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⬆ Bump the python-packages group across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/72\"\u003e#72\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 the github-actions group across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/80\"\u003e#80\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 \u003ca href=\"https://github.com/crate-ci/typos\"\u003ehttps://github.com/crate-ci/typos\u003c/a\u003e from v1.46.0 to 1.47.2 in the pre-commit group across 1 directory. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/76\"\u003e#76\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👷 Simplify pull request workflow triggers. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/79\"\u003e#79\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 issue-manager to 0.7.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/78\"\u003e#78\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 issue-manager to 0.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/77\"\u003e#77\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 zizmor workflow security checks. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/75\"\u003e#75\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Fix alls-green test dependency. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/74\"\u003e#74\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 pre-commit hook to catch typos. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/68\"\u003e#68\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 the python-packages group with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/70\"\u003e#70\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 the github-actions group with 2 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/71\"\u003e#71\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👷 Automate release preparation. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/69\"\u003e#69\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👷 Configure Dependabot to group updates and update weekly. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/62\"\u003e#62\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔥 Remove config files now in central GitHub repo. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/65\"\u003e#65\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Fix branch name in \u003ccode\u003eguard-dependencies.yml\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/61\"\u003e#61\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Only allow team members to modify dependencies. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/60\"\u003e#60\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump ty from 0.0.33 to 0.0.34. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/58\"\u003e#58\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 prek from 0.3.11 to 0.3.13. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/59\"\u003e#59\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 zizmor and fix audit findings. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/50\"\u003e#50\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 the lower bound of \u003ccode\u003ety\u003c/code\u003e to 0.0.25. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/57\"\u003e#57\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Configure \u003ccode\u003ety\u003c/code\u003e to exit with error code on warnings. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/56\"\u003e#56\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/add-to-project from 1.0.2 to 2.0.0. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/54\"\u003e#54\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/labeler from 6.0.1 to 6.1.0. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/55\"\u003e#55\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 ruff from 0.15.8 to 0.15.12. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/51\"\u003e#51\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 prek from 0.3.8 to 0.3.11. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/53\"\u003e#53\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 ty from 0.0.27 to 0.0.33. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/52\"\u003e#52\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\u003c/ul\u003e\n\u003c!-- 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/fastapi/annotated-doc/blob/main/release-notes.md\"\u003eannotated-doc's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.5 (2026-07-28)\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e➖ Drop support for Python 3.8. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/36\"\u003e#36\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\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ Bump ruff from 0.14.3 to 0.14.10. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/31\"\u003e#31\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\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Update security policy. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/63\"\u003e#63\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Upgrade latest-changes to 0.7.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/92\"\u003e#92\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⬆ Bump the github-actions group across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/91\"\u003e#91\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 the python-packages group across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/90\"\u003e#90\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 pre-commit hooks. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/89\"\u003e#89\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 GH workflow to bump pre-commit hook versions. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/81\"\u003e#81\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🔧 Set Dependabot schedule interval to \u0026quot;monthly\u0026quot;. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/82\"\u003e#82\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👷 Fix latest-changes checkout target. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/85\"\u003e#85\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 issue-manager to 0.8.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/84\"\u003e#84\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 latest-changes to 0.6.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/83\"\u003e#83\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⬆ Bump the python-packages group across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/72\"\u003e#72\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 the github-actions group across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/80\"\u003e#80\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 \u003ca href=\"https://github.com/crate-ci/typos\"\u003ehttps://github.com/crate-ci/typos\u003c/a\u003e from v1.46.0 to 1.47.2 in the pre-commit group across 1 directory. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/76\"\u003e#76\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👷 Simplify pull request workflow triggers. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/79\"\u003e#79\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 issue-manager to 0.7.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/78\"\u003e#78\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 issue-manager to 0.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/77\"\u003e#77\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 zizmor workflow security checks. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/75\"\u003e#75\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Fix alls-green test dependency. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/74\"\u003e#74\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 pre-commit hook to catch typos. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/68\"\u003e#68\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 the python-packages group with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/70\"\u003e#70\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 the github-actions group with 2 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/71\"\u003e#71\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👷 Automate release preparation. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/69\"\u003e#69\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👷 Configure Dependabot to group updates and update weekly. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/62\"\u003e#62\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔥 Remove config files now in central GitHub repo. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/65\"\u003e#65\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Fix branch name in \u003ccode\u003eguard-dependencies.yml\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/61\"\u003e#61\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Only allow team members to modify dependencies. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/60\"\u003e#60\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump ty from 0.0.33 to 0.0.34. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/58\"\u003e#58\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 prek from 0.3.11 to 0.3.13. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/59\"\u003e#59\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 zizmor and fix audit findings. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/50\"\u003e#50\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 the lower bound of \u003ccode\u003ety\u003c/code\u003e to 0.0.25. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/57\"\u003e#57\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Configure \u003ccode\u003ety\u003c/code\u003e to exit with error code on warnings. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/56\"\u003e#56\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/add-to-project from 1.0.2 to 2.0.0. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/54\"\u003e#54\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/labeler from 6.0.1 to 6.1.0. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/55\"\u003e#55\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 ruff from 0.15.8 to 0.15.12. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/51\"\u003e#51\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 prek from 0.3.8 to 0.3.11. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/53\"\u003e#53\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\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/annotated-doc/commit/ef48d6ad51d226f772fd9c5284f55199afe4007c\"\u003e\u003ccode\u003eef48d6a\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.0.5 (\u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/issues/93\"\u003e#93\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/c628000835a26f6bc8c776f90bcbcf95211f233b\"\u003e\u003ccode\u003ec628000\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/e0b4579d2ad8d62a304c9f30a1c2c084f0d372e5\"\u003e\u003ccode\u003ee0b4579\u003c/code\u003e\u003c/a\u003e ➖ Drop support for Python 3.8 (\u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/issues/36\"\u003e#36\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/ef956b4e9f2c0e2bead1cba7a6888e1ed8c2c237\"\u003e\u003ccode\u003eef956b4\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/84bf1e5402c5e0cfd1462c5d3c8bae22fb717bd8\"\u003e\u003ccode\u003e84bf1e5\u003c/code\u003e\u003c/a\u003e ⬆️ Upgrade latest-changes to 0.7.1 (\u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/issues/92\"\u003e#92\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/cf773e138b1dc5608ce0f0d11e1939c410ef6228\"\u003e\u003ccode\u003ecf773e1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/1375d6eb8147cb2352d080ef09f356dfc18e0d29\"\u003e\u003ccode\u003e1375d6e\u003c/code\u003e\u003c/a\u003e ⬆ Bump the github-actions group across 1 directory with 3 updates (\u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/issues/91\"\u003e#91\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/cd373656cbf40e5fd4cc28680ca5e05bf12709cb\"\u003e\u003ccode\u003ecd37365\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/f9f3b695cbacc4ffc37d9cebff6e05bd1751f68a\"\u003e\u003ccode\u003ef9f3b69\u003c/code\u003e\u003c/a\u003e ⬆ Bump the python-packages group across 1 directory with 3 updates (\u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/issues/90\"\u003e#90\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/842084457f0a7739fb91d2a4ea602b2bc4e15767\"\u003e\u003ccode\u003e8420844\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/annotated-doc/compare/0.0.4...0.0.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `annotated-types` from 0.7.0 to 0.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/annotated-types/annotated-types/releases\"\u003eannotated-types's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.8.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRename DocInfo to Doc by \u003ca href=\"https://github.com/zen-xu\"\u003e\u003ccode\u003e@​zen-xu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/80\"\u003eannotated-types/annotated-types#80\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/83\"\u003eannotated-types/annotated-types#83\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix docstring of \u003ccode\u003eTimezone\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/annotated-types/annotated-types/pull/84\"\u003eannotated-types/annotated-types#84\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate license-files to be PEP-639 compliant (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/85\"\u003e#85\u003c/a\u003e) by \u003ca href=\"https://github.com/shoeffner\"\u003e\u003ccode\u003e@​shoeffner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/86\"\u003eannotated-types/annotated-types#86\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: typo in README.md by \u003ca href=\"https://github.com/camiloaz\"\u003e\u003ccode\u003e@​camiloaz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/87\"\u003eannotated-types/annotated-types#87\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd CI for PyPy3.11 and fix test (issue 71) by \u003ca href=\"https://github.com/mattip\"\u003e\u003ccode\u003e@​mattip\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/88\"\u003eannotated-types/annotated-types#88\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix string predicate names in doc by \u003ca href=\"https://github.com/leogermond\"\u003e\u003ccode\u003e@​leogermond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/90\"\u003eannotated-types/annotated-types#90\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SPDX license expression by \u003ca href=\"https://github.com/wichert\"\u003e\u003ccode\u003e@​wichert\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/92\"\u003eannotated-types/annotated-types#92\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded Python 3.14 to the test matrix by \u003ca href=\"https://github.com/imtoopunkforyou\"\u003e\u003ccode\u003e@​imtoopunkforyou\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/96\"\u003eannotated-types/annotated-types#96\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 and drop EOL 3.8-3.9 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/97\"\u003eannotated-types/annotated-types#97\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typo in \u003ccode\u003eLen\u003c/code\u003e docstring by \u003ca href=\"https://github.com/Dutcho\"\u003e\u003ccode\u003e@​Dutcho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/100\"\u003eannotated-types/annotated-types#100\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for 0.8.0 release by \u003ca href=\"https://github.com/adriangb\"\u003e\u003ccode\u003e@​adriangb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/103\"\u003eannotated-types/annotated-types#103\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/zen-xu\"\u003e\u003ccode\u003e@​zen-xu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/80\"\u003eannotated-types/annotated-types#80\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/83\"\u003eannotated-types/annotated-types#83\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shoeffner\"\u003e\u003ccode\u003e@​shoeffner\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/86\"\u003eannotated-types/annotated-types#86\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/camiloaz\"\u003e\u003ccode\u003e@​camiloaz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/87\"\u003eannotated-types/annotated-types#87\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mattip\"\u003e\u003ccode\u003e@​mattip\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/88\"\u003eannotated-types/annotated-types#88\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/leogermond\"\u003e\u003ccode\u003e@​leogermond\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/90\"\u003eannotated-types/annotated-types#90\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/wichert\"\u003e\u003ccode\u003e@​wichert\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/92\"\u003eannotated-types/annotated-types#92\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/imtoopunkforyou\"\u003e\u003ccode\u003e@​imtoopunkforyou\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/96\"\u003eannotated-types/annotated-types#96\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dutcho\"\u003e\u003ccode\u003e@​Dutcho\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/100\"\u003eannotated-types/annotated-types#100\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/annotated-types/annotated-types/compare/v0.7.0...v0.8.0\"\u003ehttps://github.com/annotated-types/annotated-types/compare/v0.7.0...v0.8.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/annotated-types/annotated-types/commit/9eb96680138269811a39d838d720abc3dce33954\"\u003e\u003ccode\u003e9eb9668\u003c/code\u003e\u003c/a\u003e Prepare for 0.8.0 release (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/103\"\u003e#103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/10b77644f88b385357653730a1ab23748ca3ae2e\"\u003e\u003ccode\u003e10b7764\u003c/code\u003e\u003c/a\u003e Fix typo in \u003ccode\u003eLen\u003c/code\u003e docstring (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/100\"\u003e#100\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/955f7576d616feb6e9407c74498517787c38afd4\"\u003e\u003ccode\u003e955f757\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 and drop EOL 3.8-3.9 (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/97\"\u003e#97\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/bd280fea7983550d266f993d868b8dd7ff822bf1\"\u003e\u003ccode\u003ebd280fe\u003c/code\u003e\u003c/a\u003e Added Python 3.14 to the test matrix (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/96\"\u003e#96\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/a471bb757663452459893e6f593118ec21eb1b9e\"\u003e\u003ccode\u003ea471bb7\u003c/code\u003e\u003c/a\u003e Add SPDX license expression (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/92\"\u003e#92\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/eab91d9a8c0d3f73661fc4b0794a1fe76c94fa84\"\u003e\u003ccode\u003eeab91d9\u003c/code\u003e\u003c/a\u003e Fix string predicate names in doc (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/90\"\u003e#90\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/03ad9c3c7b4d4dfe9e33c09075a3a2766c0820e1\"\u003e\u003ccode\u003e03ad9c3\u003c/code\u003e\u003c/a\u003e add CI for PyPy3.11 and fix test (issue 71) (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/88\"\u003e#88\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/5ae60437f0ab493cedd27311bc6ce6d2188e8d8b\"\u003e\u003ccode\u003e5ae6043\u003c/code\u003e\u003c/a\u003e fix: typo in README.md (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/87\"\u003e#87\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/b60ad7bff90019c7de3547df1c8e3586eb328423\"\u003e\u003ccode\u003eb60ad7b\u003c/code\u003e\u003c/a\u003e Update license-files to be PEP-639 compliant (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/85\"\u003e#85\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/86\"\u003e#86\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/3fbeb6d129760ae48d7a0372fb9301764acc95ae\"\u003e\u003ccode\u003e3fbeb6d\u003c/code\u003e\u003c/a\u003e Fix docstring of \u003ccode\u003eTimezone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/84\"\u003e#84\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/annotated-types/annotated-types/compare/v0.7.0...v0.8.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.0 to 4.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.15.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support for the newer keyword-only arguments on \u003ccode\u003eanyio.Path\u003c/code\u003e methods to match the standard library \u003ccode\u003epathlib.Path\u003c/code\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eexists()\u003c/code\u003e (Python 3.12+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eis_dir()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eis_file()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eowner()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003egroup()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003enewline\u003c/code\u003e on \u003ccode\u003eread_text()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e(\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1286\"\u003e#1286\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1293\"\u003e#1293\u003c/a\u003e; PR by \u003ca href=\"https://github.com/jaideeppyne\"\u003e\u003ccode\u003e@​jaideeppyne\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003eamap\u003c/code\u003e, \u003ccode\u003egather\u003c/code\u003e, and \u003ccode\u003eas_completed\u003c/code\u003e utility functions to simplify common patterns (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1173\"\u003e#1173\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003e--anyio-mode\u003c/code\u003e command-line option as an alternative to the \u003ccode\u003eanyio_mode\u003c/code\u003e ini setting, and fix the pytest plugin's auto mode detection to recognize the mode when set via either mechanism(e.g: \u003ccode\u003epytest_asyncio\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1242\"\u003e#1242\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003eanyio.Future\u003c/code\u003e synchronization primitive which behaves similar to \u003ccode\u003easyncio.Future\u003c/code\u003e, allowing tasks to wait for a value (or exception) from another task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1146\"\u003e#1146\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded guidance for managing multiple memory object stream producers and consumers with cloned streams (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/330\"\u003e#330\u003c/a\u003e; PR by \u003ca href=\"https://github.com/nightcityblade\"\u003e\u003ccode\u003e@​nightcityblade\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003eStapledObjectStream.send_nowait()\u003c/code\u003e that delegates to the underlying \u003ccode\u003eObjectSendStream\u003c/code\u003e, if it implements it (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1241\"\u003e#1241\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003emove_on_at()\u003c/code\u003e and \u003ccode\u003efail_at()\u003c/code\u003e functions to complement \u003ccode\u003emove_on_after()\u003c/code\u003e and \u003ccode\u003efail_after()\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged the default name for a task spawned with \u003ccode\u003eTaskGroup.create_task(func())\u003c/code\u003e to match the default task name for the analogous task spawned with \u003ccode\u003eTaskGroup.start_soon(func)\u003c/code\u003e or \u003ccode\u003eTaskGroup.start(func)\u003c/code\u003e in more situations. Previously, the default name of a \u003ccode\u003eTaskGroup.create_task\u003c/code\u003e task never included the module name. (The default name for a task spawned with \u003ccode\u003eTaskGroup.start_soon\u003c/code\u003e or \u003ccode\u003eTaskGroup.start\u003c/code\u003e typically includes the module name.) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1234\"\u003e#1234\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged the \u003ccode\u003eanyio\u003c/code\u003e and \u003ccode\u003eanyio.abc\u003c/code\u003e modules to lazily (much like \u003ccode\u003e810\u003c/code\u003e) import the necessary submodules. This is done by parsing the AST of the module and building a lookup table from the \u003ccode\u003eif TYPE_CHECKING:\u003c/code\u003e block. A fallback mode has been provided for installations where the source code is unavailable (e.g. PyInstaller). (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1169\"\u003e#1169\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed free-threading compatibility issues arising from the fact that on Python 3.14 free-threading builds, newly created threads inherit the current context by default, causing AnyIO to behave erroneously in relation to \u003ccode\u003estart_blocking_portal()\u003c/code\u003e and \u003ccode\u003eanyio.to_thread.run_sync()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1224\"\u003e#1224\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eSpooledTemporaryFile.readinto()\u003c/code\u003e and \u003ccode\u003ereadinto1()\u003c/code\u003e reading twice before rollover, so the destination buffer was overwritten by the second read and the file position advanced twice, silently losing data (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1215\"\u003e#1215\u003c/a\u003e; PR by \u003ca href=\"https://github.com/c-tonneslan\"\u003e\u003ccode\u003e@​c-tonneslan\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a \u003ccode\u003ereason\u003c/code\u003e parameter to \u003ccode\u003efail_after\u003c/code\u003e (and the new \u003ccode\u003efail_at\u003c/code\u003e) allowing for added exception context when raising \u003ccode\u003eTimeoutError\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1227\"\u003e#1227\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed the default \u003ccode\u003eTaskHandle.name\u003c/code\u003e missing part of the task name for tasks started with \u003ccode\u003eTaskGroup.start\u003c/code\u003e on Trio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1231\"\u003e#1231\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eanyio.run\u003c/code\u003e leaking, or at least, delaying collection of loop and root_task due to the root task being cached in a \u003ccode\u003eRunVar\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1203\"\u003e#1203\u003c/a\u003e; PR by \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eanyio.Path.with_stem()\u003c/code\u003e silently producing a wrong path (e.g. \u003ccode\u003ePath(\u0026quot;.txt\u0026quot;)\u003c/code\u003e) instead of raising \u003ccode\u003eValueError\u003c/code\u003e when given an empty stem on a path with a non-empty suffix, unlike \u003ccode\u003epathlib.PurePath.with_stem\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1200\"\u003e#1200\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Sanjays2402\"\u003e\u003ccode\u003e@​Sanjays2402\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eUNIXSocketStream.aclose()\u003c/code\u003e raising \u003ccode\u003easyncio.InvalidStateError\u003c/code\u003e when a concurrent receive or send operation had just been cancelled on the asyncio backend (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1267\"\u003e#1267\u003c/a\u003e; PR by \u003ca href=\"https://github.com/alloutflo\"\u003e\u003ccode\u003e@​alloutflo\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed the pytest plugin importing the deprecated \u003ccode\u003e_pytest.python.CallSpec2\u003c/code\u003e alias, which triggers \u003ccode\u003ePytestRemovedIn10Warning\u003c/code\u003e on \u003ccode\u003epytest\u0026gt;=9.2\u003c/code\u003e and crashes pytest at startup when \u003ccode\u003efilterwarnings = error\u003c/code\u003e is configured (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1271\"\u003e#1271\u003c/a\u003e; PR by \u003ca href=\"https://github.com/matthewfeickert\"\u003e\u003ccode\u003e@​matthewfeickert\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed an asyncio worker thread race that could raise \u003ccode\u003eRuntimeError\u003c/code\u003e when the event loop closed between checking its state and scheduling the worker result (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1265\"\u003e#1265\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hansu650\"\u003e\u003ccode\u003e@​hansu650\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eCapacityLimiter\u003c/code\u003e on the asyncio backend over-granting tokens when \u003ccode\u003etotal_tokens\u003c/code\u003e was raised while the limiter was over-subscribed (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1223\"\u003e#1223\u003c/a\u003e; PR by \u003ca href=\"https://github.com/zelinewang\"\u003e\u003ccode\u003e@​zelinewang\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed asyncio task groups leaking unawaited coroutines when a custom task constructor fails; default task creation is unaffected (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1274\"\u003e#1274\u003c/a\u003e; PR by \u003ca href=\"https://github.com/dsfaccini\"\u003e\u003ccode\u003e@​dsfaccini\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/928366259543412a2deb1e2ba09ea45ffa92ef4f\"\u003e\u003ccode\u003e9283662\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d137692a90f76e4f71605e32ea5ca94cab3a539d\"\u003e\u003ccode\u003ed137692\u003c/code\u003e\u003c/a\u003e Improved the instructions for AI agents\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/033fc52b8fa8e90c5d0ef24b10b3860e974a6265\"\u003e\u003ccode\u003e033fc52\u003c/code\u003e\u003c/a\u003e Shield TemporaryDirectory cleanup from cancellation (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1304\"\u003e#1304\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/942e9a6552cc10b5aaa779d84bfc8e2c3d5fcffc\"\u003e\u003ccode\u003e942e9a6\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1305\"\u003e#1305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b825c3be7cb4ca1a8000b8065d4e147843deb704\"\u003e\u003ccode\u003eb825c3b\u003c/code\u003e\u003c/a\u003e Fixed pyproject.toml changes not triggering the test suite\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9727dc504681e2986b5bc285de9571fb467539af\"\u003e\u003ccode\u003e9727dc5\u003c/code\u003e\u003c/a\u003e Fixed start inconsistencies between trio and asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1198\"\u003e#1198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b05fe6d160a640355c201363cab286a7d2581da8\"\u003e\u003ccode\u003eb05fe6d\u003c/code\u003e\u003c/a\u003e Fixed wrong type in move_on_after (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1297\"\u003e#1297\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/44d0c93cc20079acbf38ba4dbed5ab9df323f153\"\u003e\u003ccode\u003e44d0c93\u003c/code\u003e\u003c/a\u003e Fixed asyncio task group coroutine cleanup (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1275\"\u003e#1275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/ae250440c90020b030ba4e83cccc37e9a84512c5\"\u003e\u003ccode\u003eae25044\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1290\"\u003e#1290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6d3a30d264637374b1b642d2e97217c816151cfe\"\u003e\u003ccode\u003e6d3a30d\u003c/code\u003e\u003c/a\u003e Add follow_symlinks argument to anyio.Path.owner() and group() (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1293\"\u003e#1293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.12.0...4.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `beautifulsoup4` from 4.14.3 to 4.15.0\n\nUpdates `cffi` from 2.0.0 to 2.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMinimize internal Python API usage for interpreter and thread state sampling where possible. Avoids breaking ABI change in Python \u0026gt;= 3.15.0b4 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/pull/269\"\u003epython-cffi/cffi#269\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v2.1.0...v2.1.1\"\u003ehttps://github.com/python-cffi/cffi/compare/v2.1.0...v2.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.1.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.15 and support for C extensions generated by CFFI\nto target the new \u003ccode\u003eabi3t\u003c/code\u003e free-threaded ABI.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.9.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ecffi-gen-src\u003c/code\u003e CLI to generate CFFI C extension source for alternate build backend support.\u003c/li\u003e\n\u003cli\u003eFixed crashes inside \u003ccode\u003e__delitem__\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eFixed \u0026quot;string too big\u0026quot; error under MSVC.\u003c/li\u003e\n\u003cli\u003eFixed mingw builds.\u003c/li\u003e\n\u003cli\u003eAdded support for arm64 iOS wheels.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/fd33e7700f0ebafe6f30bd5053f13327221b77a2\"\u003e\u003ccode\u003efd33e77\u003c/code\u003e\u003c/a\u003e New release 2.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/56a7876b8cd3b2d8148233a90e0121d74cd83852\"\u003e\u003ccode\u003e56a7876\u003c/code\u003e\u003c/a\u003e Use PyGILState_Ensure to avoid accessing CPython internals (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/269\"\u003e#269\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/270\"\u003e#270\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/d9f6f70adac5ca9f260abf5405cf4d0373767b65\"\u003e\u003ccode\u003ed9f6f70\u003c/code\u003e\u003c/a\u003e New release 2.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/02a7b0e32db93964b9756537110119d74aa23425\"\u003e\u003ccode\u003e02a7b0e\u003c/code\u003e\u003c/a\u003e Misc pre-2.1 release/packaging cleanup (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/253\"\u003e#253\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/1362e5ddc5417f1350200d4d6183c3eb3da9cc8d\"\u003e\u003ccode\u003e1362e5d\u003c/code\u003e\u003c/a\u003e Move cffi-gen-src release note to 2.1.0 notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/a797055125e049fd79483d0dcdf8cff59c64c6e4\"\u003e\u003ccode\u003ea797055\u003c/code\u003e\u003c/a\u003e Make error message when embedding version test fails more friendly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/f1f40a8e1667b9ef6cf8fe3c451829408feab018\"\u003e\u003ccode\u003ef1f40a8\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/dc62c93af7be7c535dc17f621de2bfc99490d3bd\"\u003e\u003ccode\u003edc62c93\u003c/code\u003e\u003c/a\u003e Delete missed cp39 Windows builds\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/a34118009e64a7fed8ea49bdbad4d6a07494bb4f\"\u003e\u003ccode\u003ea341180\u003c/code\u003e\u003c/a\u003e Update version numbers to prepare for v2.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/9f04d8506a6c7186dc3be7316f21aab042e075cb\"\u003e\u003ccode\u003e9f04d85\u003c/code\u003e\u003c/a\u003e Mark test using inet_ntoa as thread-unsafe\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v2.0.0...v2.1.1\"\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.5.1\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.5.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.5.0...3.5.1\"\u003e3.5.1\u003c/a\u003e (2026-08-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised upper bound of setuptools to v84 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache performance access optimization for our CharInfo struct (prebuilt only).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer decoding large content when the noise detector output give a high entropy.\nOnly impacted large content input \u0026gt;1M bytes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.5.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.9...3.5.0\"\u003e3.5.0\u003c/a\u003e (2026-08-12)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExplicit support for Python 3.15\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComparing a CharsetMatch to a non-alias encoding strings (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReturn 0.0 CharsetMatch.multi_byte_usage for empty payloads instead of crashing (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA file with both a charset declaration and BOM/SIG did not verify first the BOM/SIG charset.\u003c/li\u003e\n\u003cli\u003eiso2022* cases misdetected due to a flaw in our multibyte chunking logic.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReplaced the optional mypyc build with Cython extensions while retaining the\npure Python fallback. The previous engine (mypyc) started to hit rough limit around\nthe optimization of our noise/coherence detector while Cython allows us to\nsteer the engine toward the right generated optimized sources.\nThis change SHOULD not impact bundler (e.g. Pyinstaller) as the module are\nimmediately discoverable (i.e. not hidden import like mypyc did).\nMoreover, a long wished distribution is the abi3 wheels, this will allow us\nto no longer rush each year when a new Python interpreter is released.\nWe still distribute the interpre...\n\n_Description has been truncated_","html_url":"https://github.com/mmtigers/my_python_project/pull/523","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmtigers%2Fmy_python_project/issues/523","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/523/packages"}},{"old_version":"1.9.2","new_version":"1.9.4","update_type":"patch","path":"/MY_HOME_SYSTEM","pr_created_at":"2026-09-06T00:28:59.000Z","version_change":"1.9.2 → 1.9.4","issue":{"uuid":"5361865955","node_id":"PR_kwDOQd8Gdc8AAAABCXaeCQ","number":503,"state":"open","title":"chore(deps): Bump the minor-and-patch group in /MY_HOME_SYSTEM with 58 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":4,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-06T00:28:59.000Z","updated_at":"2026-09-06T12:21:11.831Z","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":58,"packages":[{"name":"aenum","old_version":"3.1.16","new_version":"3.1.17","repository_url":"https://github.com/ethanfurman/aenum"},{"name":"aiohappyeyeballs","old_version":"2.6.1","new_version":"2.7.1","repository_url":"https://github.com/aio-libs/aiohappyeyeballs"},{"name":"altair","old_version":"6.0.0","new_version":"6.2.2","repository_url":"https://github.com/vega/altair"},{"name":"annotated-doc","old_version":"0.0.4","new_version":"0.0.5","repository_url":"https://github.com/fastapi/annotated-doc"},{"name":"annotated-types","old_version":"0.7.0","new_version":"0.8.0","repository_url":"https://github.com/annotated-types/annotated-types"},{"name":"anyio","old_version":"4.12.0","new_version":"4.15.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"beautifulsoup4","old_version":"4.14.3","new_version":"4.15.0"},{"name":"cffi","old_version":"2.0.0","new_version":"2.1.1","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.4.4","new_version":"3.5.1","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.3.3","new_version":"8.5.0","repository_url":"https://github.com/pallets/click"},{"name":"cryptography","old_version":"50.0.0","new_version":"50.0.1","repository_url":"https://github.com/pyca/cryptography"},{"name":"fonttools","old_version":"4.61.0","new_version":"4.64.0","repository_url":"https://github.com/fonttools/fonttools"},{"name":"google-ai-generativelanguage","old_version":"0.6.15","new_version":"0.12.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"google-api-core","old_version":"2.28.1","new_version":"2.34.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"google-api-python-client","old_version":"2.187.0","new_version":"2.200.0","repository_url":"https://github.com/googleapis/google-api-python-client"},{"name":"google-auth","old_version":"2.41.1","new_version":"2.57.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"google-auth-httplib2","old_version":"0.2.1","new_version":"0.4.2","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"google-auth-oauthlib","old_version":"1.2.3","new_version":"1.4.1","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"google-generativeai","old_version":"0.8.5","new_version":"0.8.6","repository_url":"https://github.com/google/generative-ai-python"},{"name":"googleapis-common-protos","old_version":"1.72.0","new_version":"1.75.2","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"grpcio","old_version":"1.76.0","new_version":"1.83.1","repository_url":"https://github.com/grpc/grpc"},{"name":"grpcio-status","old_version":"1.71.2","new_version":"1.83.1"},{"name":"idna","old_version":"3.18","new_version":"3.19","repository_url":"https://github.com/kjd/idna"},{"name":"jsonschema","old_version":"4.25.1","new_version":"4.26.0","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"kiwisolver","old_version":"1.4.9","new_version":"1.5.1","repository_url":"https://github.com/nucleic/kiwi"},{"name":"line-bot-sdk","old_version":"3.21.0","new_version":"3.25.0","repository_url":"https://github.com/line/line-bot-sdk-python"},{"name":"lxml","old_version":"6.1.0","new_version":"6.1.3","repository_url":"https://github.com/lxml/lxml"},{"name":"multidict","old_version":"6.7.0","new_version":"6.7.1","repository_url":"https://github.com/aio-libs/multidict"},{"name":"narwhals","old_version":"2.13.0","new_version":"2.25.0","repository_url":"https://github.com/narwhals-dev/narwhals"},{"name":"numpy","old_version":"2.2.6","new_version":"2.4.6","repository_url":"https://github.com/numpy/numpy"},{"name":"platformdirs","old_version":"4.5.0","new_version":"4.11.7","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"propcache","old_version":"0.4.1","new_version":"0.5.2","repository_url":"https://github.com/aio-libs/propcache"},{"name":"proto-plus","old_version":"1.26.1","new_version":"1.28.4","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"pydantic","old_version":"2.12.5","new_version":"2.13.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-core","old_version":"2.41.5","new_version":"2.48.0","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydeck","old_version":"0.9.1","new_version":"0.9.3","repository_url":"https://github.com/visgl/deck.gl"},{"name":"pygments","old_version":"2.20.0","new_version":"2.21.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pyparsing","old_version":"3.2.5","new_version":"3.3.2","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"pypdfium2","old_version":"5.1.0","new_version":"5.13.0","repository_url":"https://github.com/pypdfium2-team/pypdfium2"},{"name":"python-dotenv","old_version":"1.2.2","new_version":"1.2.3","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"requests","old_version":"2.33.0","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"soupsieve","old_version":"2.8.4","new_version":"2.9.2","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"streamlit","old_version":"1.54.0","new_version":"1.63.0","repository_url":"https://github.com/streamlit/streamlit"},{"name":"tenacity","old_version":"9.1.2","new_version":"9.1.4","repository_url":"https://github.com/jd/tenacity"},{"name":"tqdm","old_version":"4.67.1","new_version":"4.70.0","repository_url":"https://github.com/tqdm/tqdm"},{"name":"typing-inspection","old_version":"0.4.2","new_version":"0.4.4","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"typing-extensions","old_version":"4.15.0","new_version":"4.16.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"uvicorn","old_version":"0.38.0","new_version":"0.52.4","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"wrapt","old_version":"2.0.1","new_version":"2.4.0","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"yarl","old_version":"1.22.0","new_version":"1.24.5","repository_url":"https://github.com/aio-libs/yarl"},{"name":"pytest","old_version":"9.0.3","new_version":"9.1.1","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-asyncio","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/pytest-dev/pytest-asyncio"},{"name":"httpx2","old_version":"2.10.0","new_version":"2.12.0","repository_url":"https://github.com/pydantic/httpx2"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"hypothesis","old_version":"6.145.1","new_version":"6.167.1","repository_url":"https://github.com/HypothesisWorks/hypothesis"},{"name":"ruff","old_version":"0.14.4","new_version":"0.16.5","repository_url":"https://github.com/astral-sh/ruff"},{"name":"bandit","old_version":"1.9.2","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"},{"name":"pip-audit","old_version":"2.9.0","new_version":"2.10.1","repository_url":"https://github.com/pypa/pip-audit"}],"path":"/MY_HOME_SYSTEM","ecosystem":"pip"},"body":"[//]: # (dependabot-start)\n⚠️  **Dependabot is rebasing this PR** ⚠️ \n\nRebasing might not happen immediately, so don't worry if this takes some time.\n\nNote: if you make any changes to this PR yourself, they will take precedence over the rebase.\n\n---\n\n[//]: # (dependabot-end)\n\nBumps the minor-and-patch group in /MY_HOME_SYSTEM with 58 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [aenum](https://github.com/ethanfurman/aenum) | `3.1.16` | `3.1.17` |\n| [aiohappyeyeballs](https://github.com/aio-libs/aiohappyeyeballs) | `2.6.1` | `2.7.1` |\n| [altair](https://github.com/vega/altair) | `6.0.0` | `6.2.2` |\n| [annotated-doc](https://github.com/fastapi/annotated-doc) | `0.0.4` | `0.0.5` |\n| [annotated-types](https://github.com/annotated-types/annotated-types) | `0.7.0` | `0.8.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.12.0` | `4.15.0` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.14.3` | `4.15.0` |\n| [cffi](https://github.com/python-cffi/cffi) | `2.0.0` | `2.1.1` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.4` | `3.5.1` |\n| [click](https://github.com/pallets/click) | `8.3.3` | `8.5.0` |\n| [cryptography](https://github.com/pyca/cryptography) | `50.0.0` | `50.0.1` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.61.0` | `4.64.0` |\n| [google-ai-generativelanguage](https://github.com/googleapis/google-cloud-python) | `0.6.15` | `0.12.0` |\n| [google-api-core](https://github.com/googleapis/google-cloud-python) | `2.28.1` | `2.34.0` |\n| [google-api-python-client](https://github.com/googleapis/google-api-python-client) | `2.187.0` | `2.200.0` |\n| [google-auth](https://github.com/googleapis/google-cloud-python) | `2.41.1` | `2.57.0` |\n| [google-auth-httplib2](https://github.com/googleapis/google-cloud-python) | `0.2.1` | `0.4.2` |\n| [google-auth-oauthlib](https://github.com/googleapis/google-cloud-python) | `1.2.3` | `1.4.1` |\n| [google-generativeai](https://github.com/google/generative-ai-python) | `0.8.5` | `0.8.6` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.72.0` | `1.75.2` |\n| [grpcio](https://github.com/grpc/grpc) | `1.76.0` | `1.83.1` |\n| [grpcio-status](https://grpc.io) | `1.71.2` | `1.83.1` |\n| [idna](https://github.com/kjd/idna) | `3.18` | `3.19` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.25.1` | `4.26.0` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.4.9` | `1.5.1` |\n| [line-bot-sdk](https://github.com/line/line-bot-sdk-python) | `3.21.0` | `3.25.0` |\n| [lxml](https://github.com/lxml/lxml) | `6.1.0` | `6.1.3` |\n| [multidict](https://github.com/aio-libs/multidict) | `6.7.0` | `6.7.1` |\n| [narwhals](https://github.com/narwhals-dev/narwhals) | `2.13.0` | `2.25.0` |\n| [numpy](https://github.com/numpy/numpy) | `2.2.6` | `2.4.6` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.5.0` | `4.11.7` |\n| [propcache](https://github.com/aio-libs/propcache) | `0.4.1` | `0.5.2` |\n| [proto-plus](https://github.com/googleapis/google-cloud-python) | `1.26.1` | `1.28.4` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.12.5` | `2.13.5` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.41.5` | `2.48.0` |\n| [pydeck](https://github.com/visgl/deck.gl) | `0.9.1` | `0.9.3` |\n| [pygments](https://github.com/pygments/pygments) | `2.20.0` | `2.21.0` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.5` | `3.3.2` |\n| [pypdfium2](https://github.com/pypdfium2-team/pypdfium2) | `5.1.0` | `5.13.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.2` | `1.2.3` |\n| [requests](https://github.com/psf/requests) | `2.33.0` | `2.34.2` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.8.4` | `2.9.2` |\n| [streamlit](https://github.com/streamlit/streamlit) | `1.54.0` | `1.63.0` |\n| [tenacity](https://github.com/jd/tenacity) | `9.1.2` | `9.1.4` |\n| [tqdm](https://github.com/tqdm/tqdm) | `4.67.1` | `4.70.0` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.2` | `0.4.4` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.15.0` | `4.16.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.38.0` | `0.52.4` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `2.0.1` | `2.4.0` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.22.0` | `1.24.5` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.3` | `9.1.1` |\n| [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) | `1.3.0` | `1.4.0` |\n| [httpx2](https://github.com/pydantic/httpx2) | `2.10.0` | `2.12.0` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` |\n| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.145.1` | `6.167.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.4` | `0.16.5` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [pip-audit](https://github.com/pypa/pip-audit) | `2.9.0` | `2.10.1` |\n\nUpdates `aenum` from 3.1.16 to 3.1.17\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ethanfurman/aenum/commit/f0f6fd8e2ac0bb379eb11f6029023d2bad88732a\"\u003e\u003ccode\u003ef0f6fd8\u003c/code\u003e\u003c/a\u003e version 3.1.17\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ethanfurman/aenum/commit/60c5641a7c0525ae812c9674330c3634bd852e69\"\u003e\u003ccode\u003e60c5641\u003c/code\u003e\u003c/a\u003e remove duplicate function\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ethanfurman/aenum/commit/e463496bd4a485f92f34eec37b7b73aedef10405\"\u003e\u003ccode\u003ee463496\u003c/code\u003e\u003c/a\u003e fix global_flag_repr\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ethanfurman/aenum/commit/f6510625e7cf7e7291d3b1b12e0bb341467e6f27\"\u003e\u003ccode\u003ef651062\u003c/code\u003e\u003c/a\u003e bump version\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/ethanfurman/aenum/compare/3.1.16...3.1.17\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `aiohappyeyeballs` from 2.6.1 to 2.7.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/releases\"\u003eaiohappyeyeballs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.7.1 (2026-07-01)\u003c/h2\u003e\n\u003ch3\u003ePerformance Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse defaultdict to help with performance (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/239\"\u003e#239\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/e10f335ad9630122832e967428ac138992a50bca\"\u003e\u003ccode\u003ee10f335\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eCollapse collect-then-remove pattern in utils helpers (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/227\"\u003e#227\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/0dd3fd16fe394eb8493000dc9b9894fad3ca3190\"\u003e\u003ccode\u003e0dd3fd1\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMerge identical except blocks in _connect_sock cleanup (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/229\"\u003e#229\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/b7c186e3242eb4d6eaf0918857a99c263b3186fb\"\u003e\u003ccode\u003eb7c186e\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSimplify _interleave_addrinfos family grouping (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/226\"\u003e#226\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/fdf6548a5f8b38e45ad7cee8add3c3a7e34e2805\"\u003e\u003ccode\u003efdf6548\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eDetailed Changes\u003c/strong\u003e: \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.7.0...v2.7.1\"\u003ev2.7.0...v2.7.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.7.0 (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/224\"\u003e#224\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/10e7d4341666605de295dd00da716e30002e78c2\"\u003e\u003ccode\u003e10e7d43\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eDetailed Changes\u003c/strong\u003e: \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.6.2...v2.7.0\"\u003ev2.6.2...v2.7.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.6.2 (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClear error on empty addr_infos in start_connection (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/222\"\u003e#222\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/55dd76aee978ca47a38899b9caf69d058bf41fb3\"\u003e\u003ccode\u003e55dd76a\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptimize obtaining event-loop down to 1 line (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/185\"\u003e#185\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/02a70296210125b45952c3221db0dfb76d8ea911\"\u003e\u003ccode\u003e02a7029\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTesting\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStop verify_no_lingering_tasks from leaking an event loop (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/pull/221\"\u003e#221\u003c/a\u003e, \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/ce43beb0242007dc57be6e2f4e3bf0b9f4f239d1\"\u003e\u003ccode\u003ece43beb\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eDetailed Changes\u003c/strong\u003e: \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.6.1...v2.6.2\"\u003ev2.6.1...v2.6.2\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/aio-libs/aiohappyeyeballs/blob/main/CHANGELOG.md\"\u003eaiohappyeyeballs's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.7.1 (2026-07-01)\u003c/h2\u003e\n\u003ch3\u003ePerformance improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse defaultdict to help with performance (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/e10f335ad9630122832e967428ac138992a50bca\"\u003e\u003ccode\u003ee10f335\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSimplify _interleave_addrinfos family grouping (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/fdf6548a5f8b38e45ad7cee8add3c3a7e34e2805\"\u003e\u003ccode\u003efdf6548\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCollapse collect-then-remove pattern in utils helpers (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/0dd3fd16fe394eb8493000dc9b9894fad3ca3190\"\u003e\u003ccode\u003e0dd3fd1\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMerge identical except blocks in _connect_sock cleanup (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/b7c186e3242eb4d6eaf0918857a99c263b3186fb\"\u003e\u003ccode\u003eb7c186e\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.7.0 (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd python 3.14 support (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/10e7d4341666605de295dd00da716e30002e78c2\"\u003e\u003ccode\u003e10e7d43\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.6.2 (2026-05-20)\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClear error on empty addr_infos in start_connection (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/55dd76aee978ca47a38899b9caf69d058bf41fb3\"\u003e\u003ccode\u003e55dd76a\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTesting\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStop verify_no_lingering_tasks from leaking an event loop (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/ce43beb0242007dc57be6e2f4e3bf0b9f4f239d1\"\u003e\u003ccode\u003ece43beb\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactoring\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eOptimize obtaining event-loop down to 1 line (\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/02a70296210125b45952c3221db0dfb76d8ea911\"\u003e\u003ccode\u003e02a7029\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/4dfc926e30eea8d24c1a71602d73c0e9a895c191\"\u003e\u003ccode\u003e4dfc926\u003c/code\u003e\u003c/a\u003e 2.7.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/e10f335ad9630122832e967428ac138992a50bca\"\u003e\u003ccode\u003ee10f335\u003c/code\u003e\u003c/a\u003e perf: use defaultdict to help with performance (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/239\"\u003e#239\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/338277badfb25fc38759ce38ab9ea2c20ec1bfff\"\u003e\u003ccode\u003e338277b\u003c/code\u003e\u003c/a\u003e chore: stop tracking .DS_Store files (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/251\"\u003e#251\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/16978694944ed7fb5e7b49a173160144ccac45bc\"\u003e\u003ccode\u003e1697869\u003c/code\u003e\u003c/a\u003e ci: add codspeed benchmark suite for addrinfo reordering hot paths (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/250\"\u003e#250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/d40a848cd2262b435242646fa8e220300bcd6952\"\u003e\u003ccode\u003ed40a848\u003c/code\u003e\u003c/a\u003e chore(deps-dev): bump starlette from 1.0.1 to 1.3.1 (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/242\"\u003e#242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/51d42669b2b94a78c6d4bd059e449b8ef51c6646\"\u003e\u003ccode\u003e51d4266\u003c/code\u003e\u003c/a\u003e chore(deps-dev): bump cryptography from 46.0.7 to 48.0.1 (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/243\"\u003e#243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/2df44b3987d3c887a8493ba19259c63588226d6c\"\u003e\u003ccode\u003e2df44b3\u003c/code\u003e\u003c/a\u003e chore(pre-commit.ci): pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/241\"\u003e#241\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/3e3cb615f00bfb4d29c30e0c86c897f4de8fb02d\"\u003e\u003ccode\u003e3e3cb61\u003c/code\u003e\u003c/a\u003e chore(deps-dev): bump pytest from 9.0.3 to 9.1.1 (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/922dcd79a66d67fdd98a5f9b7587c4f8cda44653\"\u003e\u003ccode\u003e922dcd7\u003c/code\u003e\u003c/a\u003e chore(deps-ci): bump the github-actions group with 4 updates (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/245\"\u003e#245\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/commit/70461c583a8cf3c6fa85b8c48b8e4b576cee8083\"\u003e\u003ccode\u003e70461c5\u003c/code\u003e\u003c/a\u003e ci: drop .github/FUNDING.yml to inherit org-wide config (\u003ca href=\"https://redirect.github.com/aio-libs/aiohappyeyeballs/issues/247\"\u003e#247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/aio-libs/aiohappyeyeballs/compare/v2.6.1...v2.7.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `altair` from 6.0.0 to 6.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/vega/altair/releases\"\u003ealtair's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.2.2\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: Avoid layered concat view name collisions by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4066\"\u003evega/altair#4066\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: Include layered concat views in selection params by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4069\"\u003evega/altair#4069\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edocs: Add an Andrews curves example to the gallery by \u003ca href=\"https://github.com/kyo5uke\"\u003e\u003ccode\u003e@​kyo5uke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4049\"\u003evega/altair#4049\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Add an interactive bin-size example to the gallery by \u003ca href=\"https://github.com/kyo5uke\"\u003e\u003ccode\u003e@​kyo5uke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4050\"\u003evega/altair#4050\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Validate docs publish clone by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4064\"\u003evega/altair#4064\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Fix broken example and sync with VL by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4010\"\u003evega/altair#4010\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eci: Make warning for doc preview page more prominent by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4048\"\u003evega/altair#4048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Check uv lockfile by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4052\"\u003evega/altair#4052\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Run docs build only for docs-related changes and don't duplicate builds on PRs by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4053\"\u003evega/altair#4053\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebuild: Update dependencies from dependabot alerts by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4055\"\u003evega/altair#4055\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Upload docs build artifact for PR preview by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4056\"\u003evega/altair#4056\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebuild: Reduce dependabot PRs by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4028\"\u003evega/altair#4028\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Correctly resolve docbuild worflow number from PR number by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4060\"\u003evega/altair#4060\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Group major GitHub Actions updates by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4061\"\u003evega/altair#4061\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Rename docbuild job from 'build' to 'docbuild' by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4062\"\u003evega/altair#4062\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Schedule release drafts twice monthly by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4057\"\u003evega/altair#4057\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Publish official docs after release is published by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4054\"\u003evega/altair#4054\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Document how local versioning works and add base tag by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4051\"\u003evega/altair#4051\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Disambiguate workflow naming by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4063\"\u003evega/altair#4063\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: enable partial Python 3.14t coverage by \u003ca href=\"https://github.com/axelray-dev\"\u003e\u003ccode\u003e@​axelray-dev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4038\"\u003evega/altair#4038\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/kyo5uke\"\u003e\u003ccode\u003e@​kyo5uke\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4049\"\u003evega/altair#4049\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/vega/altair/compare/v6.2.1...v6.2.2\"\u003ehttps://github.com/vega/altair/compare/v6.2.1...v6.2.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.2.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: Write dataset cache files atomically by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4034\"\u003evega/altair#4034\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eci: Prevent uv from dirtying worktree during publish by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4045\"\u003evega/altair#4045\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Clarify release review instructions by \u003ca href=\"https://github.com/joelostblom\"\u003e\u003ccode\u003e@​joelostblom\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4046\"\u003evega/altair#4046\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/vega/altair/compare/v6.2.0...v6.2.1\"\u003ehttps://github.com/vega/altair/compare/v6.2.0...v6.2.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.2.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003eThis is the first release in an effort to have smaller, more frequent releases going forward. By making the release process more convenient, we aim to more quickly push out fixes and features that already landed on the main branch to a released version of Altair.\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/vega/altair/commit/a9765713566095349cb1cfbbe85d6ad258c84245\"\u003e\u003ccode\u003ea976571\u003c/code\u003e\u003c/a\u003e fix: Include layered concat views in selection params (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4069\"\u003e#4069\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/432157b2304e0e30d89167ab26d1f7987f615a31\"\u003e\u003ccode\u003e432157b\u003c/code\u003e\u003c/a\u003e fix: Avoid layered concat view name collisions (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4066\"\u003e#4066\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/b875b95a24ee20f8e5665a730ee6d80cb6d55348\"\u003e\u003ccode\u003eb875b95\u003c/code\u003e\u003c/a\u003e docs: Fix a broken example and sync another one with VL (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4010\"\u003e#4010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/7b289f9adf07d960f94620ef02c33b8f400f4948\"\u003e\u003ccode\u003e7b289f9\u003c/code\u003e\u003c/a\u003e ci: Enable partial Python 3.14t coverage (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4038\"\u003e#4038\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/105ff2b4957651bf4cf55e4e2586705fa02ddfe7\"\u003e\u003ccode\u003e105ff2b\u003c/code\u003e\u003c/a\u003e docs: Validate docs publish clone (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4064\"\u003e#4064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/c82dd2e4af3bcd06ee4909cc38135d1b7f92c3dd\"\u003e\u003ccode\u003ec82dd2e\u003c/code\u003e\u003c/a\u003e ci: Disambiguate workflow naming (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4063\"\u003e#4063\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/624bee9705b345961c9b225d39562a10068461af\"\u003e\u003ccode\u003e624bee9\u003c/code\u003e\u003c/a\u003e docs: Add an interactive bin-size example to the gallery (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4050\"\u003e#4050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/3b1acf676a1a61d9df8d1ded2393dfde49587cae\"\u003e\u003ccode\u003e3b1acf6\u003c/code\u003e\u003c/a\u003e docs: Add an Andrews curves example to the gallery (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4049\"\u003e#4049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/edea5f64e7e893315e2050672058f86657b28201\"\u003e\u003ccode\u003eedea5f6\u003c/code\u003e\u003c/a\u003e ci: Document how local versioning works and add base tag (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4051\"\u003e#4051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/f8b4337e1355ca229d1e2e9645e89b6ec1a7a41c\"\u003e\u003ccode\u003ef8b4337\u003c/code\u003e\u003c/a\u003e ci: Publish official docs after release is published (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4054\"\u003e#4054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/vega/altair/compare/v6.0.0...v6.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `annotated-doc` from 0.0.4 to 0.0.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/annotated-doc/releases\"\u003eannotated-doc's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.5\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e➖ Drop support for Python 3.8. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/36\"\u003e#36\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\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ Bump ruff from 0.14.3 to 0.14.10. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/31\"\u003e#31\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\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Update security policy. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/63\"\u003e#63\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Upgrade latest-changes to 0.7.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/92\"\u003e#92\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⬆ Bump the github-actions group across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/91\"\u003e#91\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 the python-packages group across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/90\"\u003e#90\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 pre-commit hooks. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/89\"\u003e#89\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 GH workflow to bump pre-commit hook versions. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/81\"\u003e#81\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🔧 Set Dependabot schedule interval to \u0026quot;monthly\u0026quot;. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/82\"\u003e#82\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👷 Fix latest-changes checkout target. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/85\"\u003e#85\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 issue-manager to 0.8.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/84\"\u003e#84\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 latest-changes to 0.6.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/83\"\u003e#83\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⬆ Bump the python-packages group across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/72\"\u003e#72\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 the github-actions group across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/80\"\u003e#80\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 \u003ca href=\"https://github.com/crate-ci/typos\"\u003ehttps://github.com/crate-ci/typos\u003c/a\u003e from v1.46.0 to 1.47.2 in the pre-commit group across 1 directory. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/76\"\u003e#76\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👷 Simplify pull request workflow triggers. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/79\"\u003e#79\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 issue-manager to 0.7.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/78\"\u003e#78\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 issue-manager to 0.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/77\"\u003e#77\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 zizmor workflow security checks. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/75\"\u003e#75\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Fix alls-green test dependency. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/74\"\u003e#74\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 pre-commit hook to catch typos. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/68\"\u003e#68\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 the python-packages group with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/70\"\u003e#70\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 the github-actions group with 2 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/71\"\u003e#71\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👷 Automate release preparation. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/69\"\u003e#69\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👷 Configure Dependabot to group updates and update weekly. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/62\"\u003e#62\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔥 Remove config files now in central GitHub repo. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/65\"\u003e#65\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Fix branch name in \u003ccode\u003eguard-dependencies.yml\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/61\"\u003e#61\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Only allow team members to modify dependencies. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/60\"\u003e#60\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump ty from 0.0.33 to 0.0.34. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/58\"\u003e#58\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 prek from 0.3.11 to 0.3.13. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/59\"\u003e#59\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 zizmor and fix audit findings. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/50\"\u003e#50\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 the lower bound of \u003ccode\u003ety\u003c/code\u003e to 0.0.25. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/57\"\u003e#57\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Configure \u003ccode\u003ety\u003c/code\u003e to exit with error code on warnings. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/56\"\u003e#56\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/add-to-project from 1.0.2 to 2.0.0. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/54\"\u003e#54\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/labeler from 6.0.1 to 6.1.0. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/55\"\u003e#55\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 ruff from 0.15.8 to 0.15.12. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/51\"\u003e#51\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 prek from 0.3.8 to 0.3.11. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/53\"\u003e#53\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 ty from 0.0.27 to 0.0.33. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/52\"\u003e#52\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\u003c/ul\u003e\n\u003c!-- 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/fastapi/annotated-doc/blob/main/release-notes.md\"\u003eannotated-doc's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.5 (2026-07-28)\u003c/h2\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e➖ Drop support for Python 3.8. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/36\"\u003e#36\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\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ Bump ruff from 0.14.3 to 0.14.10. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/31\"\u003e#31\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\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Update security policy. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/63\"\u003e#63\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Upgrade latest-changes to 0.7.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/92\"\u003e#92\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⬆ Bump the github-actions group across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/91\"\u003e#91\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 the python-packages group across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/90\"\u003e#90\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 pre-commit hooks. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/89\"\u003e#89\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 GH workflow to bump pre-commit hook versions. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/81\"\u003e#81\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🔧 Set Dependabot schedule interval to \u0026quot;monthly\u0026quot;. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/82\"\u003e#82\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👷 Fix latest-changes checkout target. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/85\"\u003e#85\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 issue-manager to 0.8.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/84\"\u003e#84\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 latest-changes to 0.6.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/83\"\u003e#83\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⬆ Bump the python-packages group across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/72\"\u003e#72\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 the github-actions group across 1 directory with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/80\"\u003e#80\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 \u003ca href=\"https://github.com/crate-ci/typos\"\u003ehttps://github.com/crate-ci/typos\u003c/a\u003e from v1.46.0 to 1.47.2 in the pre-commit group across 1 directory. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/76\"\u003e#76\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👷 Simplify pull request workflow triggers. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/79\"\u003e#79\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 issue-manager to 0.7.1. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/78\"\u003e#78\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 issue-manager to 0.7.0. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/77\"\u003e#77\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 zizmor workflow security checks. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/75\"\u003e#75\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Fix alls-green test dependency. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/74\"\u003e#74\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 pre-commit hook to catch typos. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/68\"\u003e#68\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 the python-packages group with 3 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/70\"\u003e#70\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 the github-actions group with 2 updates. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/71\"\u003e#71\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👷 Automate release preparation. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/69\"\u003e#69\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👷 Configure Dependabot to group updates and update weekly. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/62\"\u003e#62\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔥 Remove config files now in central GitHub repo. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/65\"\u003e#65\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Fix branch name in \u003ccode\u003eguard-dependencies.yml\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/61\"\u003e#61\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔒️ Only allow team members to modify dependencies. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/60\"\u003e#60\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump ty from 0.0.33 to 0.0.34. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/58\"\u003e#58\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 prek from 0.3.11 to 0.3.13. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/59\"\u003e#59\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 zizmor and fix audit findings. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/50\"\u003e#50\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 the lower bound of \u003ccode\u003ety\u003c/code\u003e to 0.0.25. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/57\"\u003e#57\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Configure \u003ccode\u003ety\u003c/code\u003e to exit with error code on warnings. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/56\"\u003e#56\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/add-to-project from 1.0.2 to 2.0.0. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/54\"\u003e#54\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/labeler from 6.0.1 to 6.1.0. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/55\"\u003e#55\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 ruff from 0.15.8 to 0.15.12. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/51\"\u003e#51\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 prek from 0.3.8 to 0.3.11. PR \u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/pull/53\"\u003e#53\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\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/annotated-doc/commit/ef48d6ad51d226f772fd9c5284f55199afe4007c\"\u003e\u003ccode\u003eef48d6a\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.0.5 (\u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/issues/93\"\u003e#93\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/c628000835a26f6bc8c776f90bcbcf95211f233b\"\u003e\u003ccode\u003ec628000\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/e0b4579d2ad8d62a304c9f30a1c2c084f0d372e5\"\u003e\u003ccode\u003ee0b4579\u003c/code\u003e\u003c/a\u003e ➖ Drop support for Python 3.8 (\u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/issues/36\"\u003e#36\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/ef956b4e9f2c0e2bead1cba7a6888e1ed8c2c237\"\u003e\u003ccode\u003eef956b4\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/84bf1e5402c5e0cfd1462c5d3c8bae22fb717bd8\"\u003e\u003ccode\u003e84bf1e5\u003c/code\u003e\u003c/a\u003e ⬆️ Upgrade latest-changes to 0.7.1 (\u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/issues/92\"\u003e#92\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/cf773e138b1dc5608ce0f0d11e1939c410ef6228\"\u003e\u003ccode\u003ecf773e1\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/1375d6eb8147cb2352d080ef09f356dfc18e0d29\"\u003e\u003ccode\u003e1375d6e\u003c/code\u003e\u003c/a\u003e ⬆ Bump the github-actions group across 1 directory with 3 updates (\u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/issues/91\"\u003e#91\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/cd373656cbf40e5fd4cc28680ca5e05bf12709cb\"\u003e\u003ccode\u003ecd37365\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/f9f3b695cbacc4ffc37d9cebff6e05bd1751f68a\"\u003e\u003ccode\u003ef9f3b69\u003c/code\u003e\u003c/a\u003e ⬆ Bump the python-packages group across 1 directory with 3 updates (\u003ca href=\"https://redirect.github.com/fastapi/annotated-doc/issues/90\"\u003e#90\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/annotated-doc/commit/842084457f0a7739fb91d2a4ea602b2bc4e15767\"\u003e\u003ccode\u003e8420844\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/annotated-doc/compare/0.0.4...0.0.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `annotated-types` from 0.7.0 to 0.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/annotated-types/annotated-types/releases\"\u003eannotated-types's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.8.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRename DocInfo to Doc by \u003ca href=\"https://github.com/zen-xu\"\u003e\u003ccode\u003e@​zen-xu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/80\"\u003eannotated-types/annotated-types#80\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.13 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/83\"\u003eannotated-types/annotated-types#83\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix docstring of \u003ccode\u003eTimezone\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/annotated-types/annotated-types/pull/84\"\u003eannotated-types/annotated-types#84\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate license-files to be PEP-639 compliant (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/85\"\u003e#85\u003c/a\u003e) by \u003ca href=\"https://github.com/shoeffner\"\u003e\u003ccode\u003e@​shoeffner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/86\"\u003eannotated-types/annotated-types#86\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: typo in README.md by \u003ca href=\"https://github.com/camiloaz\"\u003e\u003ccode\u003e@​camiloaz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/87\"\u003eannotated-types/annotated-types#87\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd CI for PyPy3.11 and fix test (issue 71) by \u003ca href=\"https://github.com/mattip\"\u003e\u003ccode\u003e@​mattip\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/88\"\u003eannotated-types/annotated-types#88\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix string predicate names in doc by \u003ca href=\"https://github.com/leogermond\"\u003e\u003ccode\u003e@​leogermond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/90\"\u003eannotated-types/annotated-types#90\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SPDX license expression by \u003ca href=\"https://github.com/wichert\"\u003e\u003ccode\u003e@​wichert\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/92\"\u003eannotated-types/annotated-types#92\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded Python 3.14 to the test matrix by \u003ca href=\"https://github.com/imtoopunkforyou\"\u003e\u003ccode\u003e@​imtoopunkforyou\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/96\"\u003eannotated-types/annotated-types#96\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 and drop EOL 3.8-3.9 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/97\"\u003eannotated-types/annotated-types#97\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typo in \u003ccode\u003eLen\u003c/code\u003e docstring by \u003ca href=\"https://github.com/Dutcho\"\u003e\u003ccode\u003e@​Dutcho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/100\"\u003eannotated-types/annotated-types#100\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare for 0.8.0 release by \u003ca href=\"https://github.com/adriangb\"\u003e\u003ccode\u003e@​adriangb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/103\"\u003eannotated-types/annotated-types#103\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/zen-xu\"\u003e\u003ccode\u003e@​zen-xu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/80\"\u003eannotated-types/annotated-types#80\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/83\"\u003eannotated-types/annotated-types#83\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shoeffner\"\u003e\u003ccode\u003e@​shoeffner\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/86\"\u003eannotated-types/annotated-types#86\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/camiloaz\"\u003e\u003ccode\u003e@​camiloaz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/87\"\u003eannotated-types/annotated-types#87\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mattip\"\u003e\u003ccode\u003e@​mattip\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/88\"\u003eannotated-types/annotated-types#88\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/leogermond\"\u003e\u003ccode\u003e@​leogermond\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/90\"\u003eannotated-types/annotated-types#90\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/wichert\"\u003e\u003ccode\u003e@​wichert\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/92\"\u003eannotated-types/annotated-types#92\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/imtoopunkforyou\"\u003e\u003ccode\u003e@​imtoopunkforyou\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/96\"\u003eannotated-types/annotated-types#96\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Dutcho\"\u003e\u003ccode\u003e@​Dutcho\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/pull/100\"\u003eannotated-types/annotated-types#100\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/annotated-types/annotated-types/compare/v0.7.0...v0.8.0\"\u003ehttps://github.com/annotated-types/annotated-types/compare/v0.7.0...v0.8.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/annotated-types/annotated-types/commit/9eb96680138269811a39d838d720abc3dce33954\"\u003e\u003ccode\u003e9eb9668\u003c/code\u003e\u003c/a\u003e Prepare for 0.8.0 release (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/103\"\u003e#103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/10b77644f88b385357653730a1ab23748ca3ae2e\"\u003e\u003ccode\u003e10b7764\u003c/code\u003e\u003c/a\u003e Fix typo in \u003ccode\u003eLen\u003c/code\u003e docstring (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/100\"\u003e#100\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/955f7576d616feb6e9407c74498517787c38afd4\"\u003e\u003ccode\u003e955f757\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 and drop EOL 3.8-3.9 (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/97\"\u003e#97\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/bd280fea7983550d266f993d868b8dd7ff822bf1\"\u003e\u003ccode\u003ebd280fe\u003c/code\u003e\u003c/a\u003e Added Python 3.14 to the test matrix (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/96\"\u003e#96\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/a471bb757663452459893e6f593118ec21eb1b9e\"\u003e\u003ccode\u003ea471bb7\u003c/code\u003e\u003c/a\u003e Add SPDX license expression (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/92\"\u003e#92\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/eab91d9a8c0d3f73661fc4b0794a1fe76c94fa84\"\u003e\u003ccode\u003eeab91d9\u003c/code\u003e\u003c/a\u003e Fix string predicate names in doc (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/90\"\u003e#90\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/03ad9c3c7b4d4dfe9e33c09075a3a2766c0820e1\"\u003e\u003ccode\u003e03ad9c3\u003c/code\u003e\u003c/a\u003e add CI for PyPy3.11 and fix test (issue 71) (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/88\"\u003e#88\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/5ae60437f0ab493cedd27311bc6ce6d2188e8d8b\"\u003e\u003ccode\u003e5ae6043\u003c/code\u003e\u003c/a\u003e fix: typo in README.md (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/87\"\u003e#87\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/b60ad7bff90019c7de3547df1c8e3586eb328423\"\u003e\u003ccode\u003eb60ad7b\u003c/code\u003e\u003c/a\u003e Update license-files to be PEP-639 compliant (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/85\"\u003e#85\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/86\"\u003e#86\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/annotated-types/annotated-types/commit/3fbeb6d129760ae48d7a0372fb9301764acc95ae\"\u003e\u003ccode\u003e3fbeb6d\u003c/code\u003e\u003c/a\u003e Fix docstring of \u003ccode\u003eTimezone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/annotated-types/annotated-types/issues/84\"\u003e#84\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/annotated-types/annotated-types/compare/v0.7.0...v0.8.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.0 to 4.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.15.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support for the newer keyword-only arguments on \u003ccode\u003eanyio.Path\u003c/code\u003e methods to match the standard library \u003ccode\u003epathlib.Path\u003c/code\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eexists()\u003c/code\u003e (Python 3.12+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eis_dir()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eis_file()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003eowner()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efollow_symlinks\u003c/code\u003e on \u003ccode\u003egroup()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003enewline\u003c/code\u003e on \u003ccode\u003eread_text()\u003c/code\u003e (Python 3.13+)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e(\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1286\"\u003e#1286\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1293\"\u003e#1293\u003c/a\u003e; PR by \u003ca href=\"https://github.com/jaideeppyne\"\u003e\u003ccode\u003e@​jaideeppyne\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003eamap\u003c/code\u003e, \u003ccode\u003egather\u003c/code\u003e, and \u003ccode\u003eas_completed\u003c/code\u003e utility functions to simplify common patterns (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1173\"\u003e#1173\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003e--anyio-mode\u003c/code\u003e command-line option as an alternative to the \u003ccode\u003eanyio_mode\u003c/code\u003e ini setting, and fix the pytest plugin's auto mode detection to recognize the mode when set via either mechanism(e.g: \u003ccode\u003epytest_asyncio\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1242\"\u003e#1242\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003eanyio.Future\u003c/code\u003e synchronization primitive which behaves similar to \u003ccode\u003easyncio.Future\u003c/code\u003e, allowing tasks to wait for a value (or exception) from another task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1146\"\u003e#1146\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded guidance for managing multiple memory object stream producers and consumers with cloned streams (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/330\"\u003e#330\u003c/a\u003e; PR by \u003ca href=\"https://github.com/nightcityblade\"\u003e\u003ccode\u003e@​nightcityblade\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003eStapledObjectStream.send_nowait()\u003c/code\u003e that delegates to the underlying \u003ccode\u003eObjectSendStream\u003c/code\u003e, if it implements it (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1241\"\u003e#1241\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003emove_on_at()\u003c/code\u003e and \u003ccode\u003efail_at()\u003c/code\u003e functions to complement \u003ccode\u003emove_on_after()\u003c/code\u003e and \u003ccode\u003efail_after()\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged the default name for a task spawned with \u003ccode\u003eTaskGroup.create_task(func())\u003c/code\u003e to match the default task name for the analogous task spawned with \u003ccode\u003eTaskGroup.start_soon(func)\u003c/code\u003e or \u003ccode\u003eTaskGroup.start(func)\u003c/code\u003e in more situations. Previously, the default name of a \u003ccode\u003eTaskGroup.create_task\u003c/code\u003e task never included the module name. (The default name for a task spawned with \u003ccode\u003eTaskGroup.start_soon\u003c/code\u003e or \u003ccode\u003eTaskGroup.start\u003c/code\u003e typically includes the module name.) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1234\"\u003e#1234\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged the \u003ccode\u003eanyio\u003c/code\u003e and \u003ccode\u003eanyio.abc\u003c/code\u003e modules to lazily (much like \u003ccode\u003e810\u003c/code\u003e) import the necessary submodules. This is done by parsing the AST of the module and building a lookup table from the \u003ccode\u003eif TYPE_CHECKING:\u003c/code\u003e block. A fallback mode has been provided for installations where the source code is unavailable (e.g. PyInstaller). (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1169\"\u003e#1169\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed free-threading compatibility issues arising from the fact that on Python 3.14 free-threading builds, newly created threads inherit the current context by default, causing AnyIO to behave erroneously in relation to \u003ccode\u003estart_blocking_portal()\u003c/code\u003e and \u003ccode\u003eanyio.to_thread.run_sync()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1224\"\u003e#1224\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eSpooledTemporaryFile.readinto()\u003c/code\u003e and \u003ccode\u003ereadinto1()\u003c/code\u003e reading twice before rollover, so the destination buffer was overwritten by the second read and the file position advanced twice, silently losing data (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1215\"\u003e#1215\u003c/a\u003e; PR by \u003ca href=\"https://github.com/c-tonneslan\"\u003e\u003ccode\u003e@​c-tonneslan\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded a \u003ccode\u003ereason\u003c/code\u003e parameter to \u003ccode\u003efail_after\u003c/code\u003e (and the new \u003ccode\u003efail_at\u003c/code\u003e) allowing for added exception context when raising \u003ccode\u003eTimeoutError\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1227\"\u003e#1227\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed the default \u003ccode\u003eTaskHandle.name\u003c/code\u003e missing part of the task name for tasks started with \u003ccode\u003eTaskGroup.start\u003c/code\u003e on Trio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1231\"\u003e#1231\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eanyio.run\u003c/code\u003e leaking, or at least, delaying collection of loop and root_task due to the root task being cached in a \u003ccode\u003eRunVar\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1203\"\u003e#1203\u003c/a\u003e; PR by \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eanyio.Path.with_stem()\u003c/code\u003e silently producing a wrong path (e.g. \u003ccode\u003ePath(\u0026quot;.txt\u0026quot;)\u003c/code\u003e) instead of raising \u003ccode\u003eValueError\u003c/code\u003e when given an empty stem on a path with a non-empty suffix, unlike \u003ccode\u003epathlib.PurePath.with_stem\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1200\"\u003e#1200\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Sanjays2402\"\u003e\u003ccode\u003e@​Sanjays2402\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eUNIXSocketStream.aclose()\u003c/code\u003e raising \u003ccode\u003easyncio.InvalidStateError\u003c/code\u003e when a concurrent receive or send operation had just been cancelled on the asyncio backend (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1267\"\u003e#1267\u003c/a\u003e; PR by \u003ca href=\"https://github.com/alloutflo\"\u003e\u003ccode\u003e@​alloutflo\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed the pytest plugin importing the deprecated \u003ccode\u003e_pytest.python.CallSpec2\u003c/code\u003e alias, which triggers \u003ccode\u003ePytestRemovedIn10Warning\u003c/code\u003e on \u003ccode\u003epytest\u0026gt;=9.2\u003c/code\u003e and crashes pytest at startup when \u003ccode\u003efilterwarnings = error\u003c/code\u003e is configured (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1271\"\u003e#1271\u003c/a\u003e; PR by \u003ca href=\"https://github.com/matthewfeickert\"\u003e\u003ccode\u003e@​matthewfeickert\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed an asyncio worker thread race that could raise \u003ccode\u003eRuntimeError\u003c/code\u003e when the event loop closed between checking its state and scheduling the worker result (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1265\"\u003e#1265\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hansu650\"\u003e\u003ccode\u003e@​hansu650\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed \u003ccode\u003eCapacityLimiter\u003c/code\u003e on the asyncio backend over-granting tokens when \u003ccode\u003etotal_tokens\u003c/code\u003e was raised while the limiter was over-subscribed (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1223\"\u003e#1223\u003c/a\u003e; PR by \u003ca href=\"https://github.com/zelinewang\"\u003e\u003ccode\u003e@​zelinewang\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed asyncio task groups leaking unawaited coroutines when a custom task constructor fails; default task creation is unaffected (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1274\"\u003e#1274\u003c/a\u003e; PR by \u003ca href=\"https://github.com/dsfaccini\"\u003e\u003ccode\u003e@​dsfaccini\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/928366259543412a2deb1e2ba09ea45ffa92ef4f\"\u003e\u003ccode\u003e9283662\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d137692a90f76e4f71605e32ea5ca94cab3a539d\"\u003e\u003ccode\u003ed137692\u003c/code\u003e\u003c/a\u003e Improved the instructions for AI agents\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/033fc52b8fa8e90c5d0ef24b10b3860e974a6265\"\u003e\u003ccode\u003e033fc52\u003c/code\u003e\u003c/a\u003e Shield TemporaryDirectory cleanup from cancellation (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1304\"\u003e#1304\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/942e9a6552cc10b5aaa779d84bfc8e2c3d5fcffc\"\u003e\u003ccode\u003e942e9a6\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1305\"\u003e#1305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b825c3be7cb4ca1a8000b8065d4e147843deb704\"\u003e\u003ccode\u003eb825c3b\u003c/code\u003e\u003c/a\u003e Fixed pyproject.toml changes not triggering the test suite\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9727dc504681e2986b5bc285de9571fb467539af\"\u003e\u003ccode\u003e9727dc5\u003c/code\u003e\u003c/a\u003e Fixed start inconsistencies between trio and asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1198\"\u003e#1198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b05fe6d160a640355c201363cab286a7d2581da8\"\u003e\u003ccode\u003eb05fe6d\u003c/code\u003e\u003c/a\u003e Fixed wrong type in move_on_after (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1297\"\u003e#1297\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/44d0c93cc20079acbf38ba4dbed5ab9df323f153\"\u003e\u003ccode\u003e44d0c93\u003c/code\u003e\u003c/a\u003e Fixed asyncio task group coroutine cleanup (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1275\"\u003e#1275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/ae250440c90020b030ba4e83cccc37e9a84512c5\"\u003e\u003ccode\u003eae25044\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1290\"\u003e#1290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6d3a30d264637374b1b642d2e97217c816151cfe\"\u003e\u003ccode\u003e6d3a30d\u003c/code\u003e\u003c/a\u003e Add follow_symlinks argument to anyio.Path.owner() and group() (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1293\"\u003e#1293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.12.0...4.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `beautifulsoup4` from 4.14.3 to 4.15.0\n\nUpdates `cffi` from 2.0.0 to 2.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMinimize internal Python API usage for interpreter and thread state sampling where possible. Avoids breaking ABI change in Python \u0026gt;= 3.15.0b4 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/pull/269\"\u003epython-cffi/cffi#269\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v2.1.0...v2.1.1\"\u003ehttps://github.com/python-cffi/cffi/compare/v2.1.0...v2.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.1.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Python 3.15 and support for C extensions generated by CFFI\nto target the new \u003ccode\u003eabi3t\u003c/code\u003e free-threaded ABI.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.9.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ecffi-gen-src\u003c/code\u003e CLI to generate CFFI C extension source for alternate build backend support.\u003c/li\u003e\n\u003cli\u003eFixed crashes inside \u003ccode\u003e__delitem__\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eFixed \u0026quot;string too big\u0026quot; error under MSVC.\u003c/li\u003e\n\u003cli\u003eFixed mingw builds.\u003c/li\u003e\n\u003cli\u003eAdded support for arm64 iOS wheels.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/fd33e7700f0ebafe6f30bd5053f13327221b77a2\"\u003e\u003ccode\u003efd33e77\u003c/code\u003e\u003c/a\u003e New release 2.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/56a7876b8cd3b2d8148233a90e0121d74cd83852\"\u003e\u003ccode\u003e56a7876\u003c/code\u003e\u003c/a\u003e Use PyGILState_Ensure to avoid accessing CPython internals (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/269\"\u003e#269\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/270\"\u003e#270\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/d9f6f70adac5ca9f260abf5405cf4d0373767b65\"\u003e\u003ccode\u003ed9f6f70\u003c/code\u003e\u003c/a\u003e New release 2.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/02a7b0e32db93964b9756537110119d74aa23425\"\u003e\u003ccode\u003e02a7b0e\u003c/code\u003e\u003c/a\u003e Misc pre-2.1 release/packaging cleanup (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/253\"\u003e#253\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/1362e5ddc5417f1350200d4d6183c3eb3da9cc8d\"\u003e\u003ccode\u003e1362e5d\u003c/code\u003e\u003c/a\u003e Move cffi-gen-src release note to 2.1.0 notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/a797055125e049fd79483d0dcdf8cff59c64c6e4\"\u003e\u003ccode\u003ea797055\u003c/code\u003e\u003c/a\u003e Make error message when embedding version test fails more friendly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/f1f40a8e1667b9ef6cf8fe3c451829408feab018\"\u003e\u003ccode\u003ef1f40a8\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/dc62c93af7be7c535dc17f621de2bfc99490d3bd\"\u003e\u003ccode\u003edc62c93\u003c/code\u003e\u003c/a\u003e Delete missed cp39 Windows builds\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/a34118009e64a7fed8ea49bdbad4d6a07494bb4f\"\u003e\u003ccode\u003ea341180\u003c/code\u003e\u003c/a\u003e Update version numbers to prepare for v2.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/9f04d8506a6c7186dc3be7316f21aab042e075cb\"\u003e\u003ccode\u003e9f04d85\u003c/code\u003e\u003c/a\u003e Mark test using inet_ntoa as thread-unsafe\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v2.0.0...v2.1.1\"\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.5.1\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.5.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.5.0...3.5.1\"\u003e3.5.1\u003c/a\u003e (2026-08-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised upper bound of setuptools to v84 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache performance access optimization for our CharInfo struct (prebuilt only).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer decoding large content when the noise detector output give a high entropy.\nOnly impacted large content input \u0026gt;1M bytes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.5.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.9...3.5.0\"\u003e3.5.0\u003c/a\u003e (2026-08-12)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExplicit support for Python 3.15\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComparing a CharsetMatch to a non-alias encoding strings (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReturn 0.0 CharsetMatch.multi_byte_usage for empty payloads instead of crashing (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA file with both a charset declaration and BOM/SIG did not verify first the BOM/SIG charset.\u003c/li\u003e\n\u003cli\u003eiso2022* cases misdetected due to a flaw in our multibyte chunking logic.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReplaced the option...\n\n_Description has been truncated_","html_url":"https://github.com/mmtigers/my_python_project/pull/503","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/mmtigers%2Fmy_python_project/issues/503","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/503/packages"}},{"old_version":"\u003c2.0,\u003e=1.7","new_version":"\u003e=1.9.4,\u003c2.0","update_type":"minor","path":null,"pr_created_at":"2026-09-05T17:44:07.000Z","version_change":"\u003c2.0,\u003e=1.7 → \u003e=1.9.4,\u003c2.0","issue":{"uuid":"5359796673","node_id":"PR_kwDOUHR0pc8AAAABCV1xug","number":9,"state":"open","title":"chore(deps-dev): update bandit requirement from \u003c2.0,\u003e=1.7 to \u003e=1.9.4,\u003c2.0","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-05T17:44:07.000Z","updated_at":"2026-09-05T17:44:08.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev): update","packages":[{"name":"bandit","old_version":"\u003c2.0,\u003e=1.7","new_version":"\u003e=1.9.4,\u003c2.0","repository_url":"https://github.com/PyCQA/bandit"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [bandit](https://github.com/PyCQA/bandit) 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/PyCQA/bandit/releases\"\u003ebandit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: fixed some typos in comments by \u003ca href=\"https://github.com/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/login-action from 3.6.0 to 3.7.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/PyCQA/bandit/pull/1353\"\u003ePyCQA/bandit#1353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.18.0 to 6.19.2 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/PyCQA/bandit/pull/1357\"\u003ePyCQA/bandit#1357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B613 crash when reading from stdin by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude filename in nosec 'no failed test' warning by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1363\"\u003ePyCQA/bandit#1363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B615 false positive when revision is set via variable by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1358\"\u003ePyCQA/bandit#1358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLower version guard in check_ast_node to Python 3.12 by \u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B106 reporting wrong line number on multiline function calls by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1360\"\u003ePyCQA/bandit#1360\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/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\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/PyCQA/bandit/commit/92ae8b82fb422a639f0ed8d99e96cea769594e08\"\u003e\u003ccode\u003e92ae8b8\u003c/code\u003e\u003c/a\u003e Fix B106 reporting wrong line number on multiline function calls (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1360\"\u003e#1360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c8c8a55c3307333b8eb46cb2ef46d49b1fad6546\"\u003e\u003ccode\u003ec8c8a55\u003c/code\u003e\u003c/a\u003e Lower version guard in check_ast_node to Python 3.12 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1355\"\u003e#1355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/8f2f9284fca830ca017b2e2cc3ddc2a7b74b7040\"\u003e\u003ccode\u003e8f2f928\u003c/code\u003e\u003c/a\u003e Fix B615 false positive when revision is set via variable (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1358\"\u003e#1358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e27493f71c114e0e5dfc0a475d225d7f9f4a7e2b\"\u003e\u003ccode\u003ee27493f\u003c/code\u003e\u003c/a\u003e Include filename in nosec 'no failed test' warning (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1363\"\u003e#1363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/b69b336450301d424e5ba04c9a58e8d41b7169b6\"\u003e\u003ccode\u003eb69b336\u003c/code\u003e\u003c/a\u003e Fix B613 crash when reading from stdin (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1361\"\u003e#1361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e418b798abcc3f2b00c07fd6315da8fe9aeead00\"\u003e\u003ccode\u003ee418b79\u003c/code\u003e\u003c/a\u003e Bump docker/build-push-action from 6.18.0 to 6.19.2 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1357\"\u003e#1357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/ff646fd7e0e34fb350196fc58448fad17178c27a\"\u003e\u003ccode\u003eff646fd\u003c/code\u003e\u003c/a\u003e Bump docker/login-action from 3.6.0 to 3.7.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1353\"\u003e#1353\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c0def6c7ebab60f98c28ba759d488f4fbe6dae89\"\u003e\u003ccode\u003ec0def6c\u003c/code\u003e\u003c/a\u003e chore: fixed some typos in comments (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1351\"\u003e#1351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/765f00d3f202f83f61d03f882f80a2d5142d81f8\"\u003e\u003ccode\u003e765f00d\u003c/code\u003e\u003c/a\u003e Limit B614 to torch.load deserializers (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1348\"\u003e#1348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/06fbbab0df3374ffa8ef24c6f601b2d5e1d4d429\"\u003e\u003ccode\u003e06fbbab\u003c/code\u003e\u003c/a\u003e Bump docker/setup-buildx-action from 3.11.1 to 3.12.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1347\"\u003e#1347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.7.0...1.9.4\"\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/fallen020/comic-dl/pull/9","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/fallen020%2Fcomic-dl/issues/9","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/9/packages"}},{"old_version":"1.8.6","new_version":"1.9.4","update_type":"minor","path":null,"pr_created_at":"2026-09-05T17:33:20.000Z","version_change":"1.8.6 → 1.9.4","issue":{"uuid":"5359719805","node_id":"PR_kwDOR9i09M8AAAABCVx5cA","number":517,"state":"open","title":"chore(deps): bump the patch-and-minor group with 189 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-05T17:33:20.000Z","updated_at":"2026-09-05T17:33:21.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"patch-and-minor","update_count":189,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.14.2","repository_url":"https://github.com/agronholm/anyio"},{"name":"charset-normalizer","old_version":"3.4.2","new_version":"3.5.1","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"httpx","old_version":"0.26.0","new_version":"0.28.1","repository_url":"https://github.com/encode/httpx"},{"name":"idna","old_version":"3.10","new_version":"3.19","repository_url":"https://github.com/kjd/idna"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"requests","old_version":"2.32.5","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"ruff","old_version":"0.2.1","new_version":"0.16.5","repository_url":"https://github.com/astral-sh/ruff"},{"name":"urllib3","old_version":"2.6.3","new_version":"2.7.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"prometheus-client","old_version":"0.22.1","new_version":"0.26.0","repository_url":"https://github.com/prometheus/client_python"},{"name":"aiohttp","old_version":"3.13.3","new_version":"3.14.3","repository_url":"https://github.com/aio-libs/aiohttp"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.3","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"wheel","old_version":"0.46.2","new_version":"0.48.0","repository_url":"https://github.com/pypa/wheel"},{"name":"authlib","old_version":"1.6.9","new_version":"1.8.0","repository_url":"https://github.com/authlib/authlib"},{"name":"nltk","old_version":"3.9.1","new_version":"3.10.3","repository_url":"https://github.com/nltk/nltk"},{"name":"pyjwt","old_version":"2.12.0","new_version":"2.13.0","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"python-multipart","old_version":"0.0.22","new_version":"0.0.32","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"tornado","old_version":"6.5.5","new_version":"6.5.8","repository_url":"https://github.com/tornadoweb/tornado"},{"name":"fastapi","old_version":"0.111.0","new_version":"0.141.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"aiohappyeyeballs","old_version":"2.6.1","new_version":"2.7.1","repository_url":"https://github.com/aio-libs/aiohappyeyeballs"},{"name":"alembic","old_version":"1.18.4","new_version":"1.19.1","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"annotated-doc","old_version":"0.0.4","new_version":"0.0.5","repository_url":"https://github.com/fastapi/annotated-doc"},{"name":"annotated-types","old_version":"0.7.0","new_version":"0.8.0","repository_url":"https://github.com/annotated-types/annotated-types"},{"name":"apscheduler","old_version":"3.11.2","new_version":"3.11.3","repository_url":"https://github.com/agronholm/apscheduler"},{"name":"arq","old_version":"0.27.0","new_version":"0.28.0","repository_url":"https://github.com/python-arq/arq"},{"name":"asgiref","old_version":"3.11.1","new_version":"3.12.1","repository_url":"https://github.com/django/asgiref"},{"name":"astroid","old_version":"4.0.4","new_version":"4.3.1","repository_url":"https://github.com/pylint-dev/astroid"},{"name":"asyncpg","old_version":"0.30.0","new_version":"0.31.0","repository_url":"https://github.com/MagicStack/asyncpg"},{"name":"bandit","old_version":"1.8.6","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.15.0"},{"name":"bidict","old_version":"0.23.1","new_version":"0.24.1","repository_url":"https://github.com/jab/bidict"},{"name":"boto3","old_version":"1.42.64","new_version":"1.43.86","repository_url":"https://github.com/boto/boto3"},{"name":"botocore","old_version":"1.42.64","new_version":"1.43.86","repository_url":"https://github.com/boto/botocore"},{"name":"build","old_version":"1.3.0","new_version":"1.6.0","repository_url":"https://github.com/pypa/build"},{"name":"celery","old_version":"5.6.2","new_version":"5.6.3","repository_url":"https://github.com/celery/celery"},{"name":"cffi","old_version":"2.0.0","new_version":"2.1.1","repository_url":"https://github.com/python-cffi/cffi"},{"name":"chromadb","old_version":"1.0.15","new_version":"1.5.9","repository_url":"https://github.com/chroma-core/chroma"},{"name":"click","old_version":"8.2.1","new_version":"8.5.0","repository_url":"https://github.com/pallets/click"},{"name":"colorlog","old_version":"6.9.0","new_version":"6.12.0","repository_url":"https://github.com/borntyping/python-colorlog"},{"name":"coverage","old_version":"7.13.4","new_version":"7.16.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cross-web","old_version":"0.4.1","new_version":"0.7.0","repository_url":"https://github.com/usecross/cross-web"},{"name":"decorator","old_version":"5.2.1","new_version":"5.3.1","repository_url":"https://github.com/micheles/decorator"},{"name":"deprecated","old_version":"1.2.18","new_version":"1.3.1","repository_url":"https://github.com/laurent-laporte-pro/deprecated"},{"name":"discord-py","old_version":"2.5.2","new_version":"2.7.1","repository_url":"https://github.com/Rapptz/discord.py"},{"name":"docker","old_version":"7.1.0","new_version":"7.2.0","repository_url":"https://github.com/docker/docker-py"},{"name":"docstring-parser","old_version":"0.17.0","new_version":"0.18.0","repository_url":"https://github.com/rr-/docstring_parser"},{"name":"durationpy","old_version":"0.10","new_version":"0.11","repository_url":"https://github.com/icholy/durationpy"},{"name":"fabric","old_version":"3.2.2","new_version":"3.2.3","repository_url":"https://github.com/fabric/fabric"},{"name":"fakeredis","old_version":"2.33.0","new_version":"2.37.1","repository_url":"https://github.com/cunla/fakeredis-py"},{"name":"feedparser","old_version":"6.0.11","new_version":"6.0.14","repository_url":"https://github.com/kurtmckee/feedparser"},{"name":"filelock","old_version":"3.20.3","new_version":"3.32.5","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"flask-cors","old_version":"6.0.1","new_version":"6.0.5","repository_url":"https://github.com/corydolphin/flask-cors"},{"name":"flask-socketio","old_version":"5.5.1","new_version":"5.6.1","repository_url":"https://github.com/miguelgrinberg/flask-socketio"},{"name":"flatbuffers","old_version":"25.2.10","new_version":"25.12.19","repository_url":"https://github.com/google/flatbuffers"},{"name":"fonttools","old_version":"4.60.2","new_version":"4.64.0","repository_url":"https://github.com/fonttools/fonttools"},{"name":"frozenlist","old_version":"1.7.0","new_version":"1.8.0","repository_url":"https://github.com/aio-libs/frozenlist"},{"name":"fsspec","old_version":"2026.3.0","new_version":"2026.7.0","repository_url":"https://github.com/fsspec/filesystem_spec"},{"name":"geographiclib","old_version":"2.0","new_version":"2.1","repository_url":"https://github.com/geographiclib/geographiclib-python"},{"name":"geopy","old_version":"2.4.1","new_version":"2.5.0","repository_url":"https://github.com/geopy/geopy"},{"name":"gitpython","old_version":"3.1.50","new_version":"3.1.61","repository_url":"https://github.com/gitpython-developers/GitPython"},{"name":"google-auth","old_version":"2.40.3","new_version":"2.57.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"googleapis-common-protos","old_version":"1.70.0","new_version":"1.75.2","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"graphql-core","old_version":"3.2.8","new_version":"3.2.12","repository_url":"https://github.com/graphql-python/graphql-core"},{"name":"greenlet","old_version":"3.3.2","new_version":"3.5.5","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"grpcio","old_version":"1.74.0","new_version":"1.83.1","repository_url":"https://github.com/grpc/grpc"},{"name":"hiredis","old_version":"3.3.0","new_version":"3.4.1","repository_url":"https://github.com/redis/hiredis-py"},{"name":"httptools","old_version":"0.6.4","new_version":"0.8.0","repository_url":"https://github.com/MagicStack/httptools"},{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"jaraco-context","old_version":"6.1.0","new_version":"6.1.2","repository_url":"https://github.com/jaraco/jaraco.context"},{"name":"jiter","old_version":"0.10.0","new_version":"0.16.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"joblib","old_version":"1.5.1","new_version":"1.6.0","repository_url":"https://github.com/joblib/joblib"},{"name":"jsonpointer","old_version":"3.0.0","new_version":"3.1.1","repository_url":"https://github.com/stefankoegl/python-json-pointer"},{"name":"jsonschema","old_version":"4.25.0","new_version":"4.26.0","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"jsonschema-specifications","old_version":"2025.4.1","new_version":"2025.9.1","repository_url":"https://github.com/python-jsonschema/jsonschema-specifications"},{"name":"kiwisolver","old_version":"1.4.8","new_version":"1.5.1","repository_url":"https://github.com/nucleic/kiwi"},{"name":"langgraph","old_version":"1.1.0","new_version":"1.2.11","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langgraph-checkpoint","old_version":"4.0.1","new_version":"4.2.0","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langgraph-prebuilt","old_version":"1.0.8","new_version":"1.1.0","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"langgraph-sdk","old_version":"0.3.13","new_version":"0.4.4","repository_url":"https://github.com/langchain-ai/langgraph"},{"name":"levenshtein","old_version":"0.27.3","new_version":"0.27.4","repository_url":"https://github.com/rapidfuzz/Levenshtein"},{"name":"lxml","old_version":"6.1.0","new_version":"6.1.3","repository_url":"https://github.com/lxml/lxml"},{"name":"mako","old_version":"1.3.12","new_version":"1.4.1","repository_url":"https://github.com/sqlalchemy/mako"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"matplotlib","old_version":"3.10.5","new_version":"3.11.1","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"mmh3","old_version":"5.2.0","new_version":"5.3.0","repository_url":"https://github.com/hajimes/mmh3"},{"name":"mpmath","old_version":"1.3.0","new_version":"1.4.1","repository_url":"https://github.com/mpmath/mpmath"},{"name":"msgpack","old_version":"1.1.2","new_version":"1.2.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"multidict","old_version":"6.6.3","new_version":"6.7.1","repository_url":"https://github.com/aio-libs/multidict"},{"name":"narwhals","old_version":"2.0.1","new_version":"2.25.0","repository_url":"https://github.com/narwhals-dev/narwhals"},{"name":"networkx","old_version":"3.5","new_version":"3.6.1","repository_url":"https://github.com/networkx/networkx"},{"name":"numpy","old_version":"2.3.2","new_version":"2.5.2","repository_url":"https://github.com/numpy/numpy"},{"name":"onnxruntime","old_version":"1.22.1","new_version":"1.29.0","repository_url":"https://github.com/microsoft/onnxruntime"},{"name":"openai","old_version":"1.98.0","new_version":"1.109.1","repository_url":"https://github.com/openai/openai-python"},{"name":"opentelemetry-api","old_version":"1.40.0","new_version":"1.44.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-distro","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-exporter-otlp","old_version":"1.40.0","new_version":"1.44.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-common","old_version":"1.40.0","new_version":"1.44.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.40.0","new_version":"1.44.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-exporter-otlp-proto-http","old_version":"1.40.0","new_version":"1.44.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-asgi","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-fastapi","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-httpx","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-logging","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-redis","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-sqlalchemy","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-system-metrics","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.40.0","new_version":"1.44.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.40.0","new_version":"1.44.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"orjson","old_version":"3.11.7","new_version":"3.12.0","repository_url":"https://github.com/ijl/orjson"},{"name":"pathspec","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/cpburnz/python-pathspec"},{"name":"pip-tools","old_version":"7.5.3","new_version":"7.6.1","repository_url":"https://github.com/jazzband/pip-tools"},{"name":"pip-audit","old_version":"2.8.0","new_version":"2.10.1","repository_url":"https://github.com/pypa/pip-audit"},{"name":"platformdirs","old_version":"4.9.4","new_version":"4.11.7","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"prompt-toolkit","old_version":"3.0.52","new_version":"3.0.53","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"propcache","old_version":"0.3.2","new_version":"0.5.2","repository_url":"https://github.com/aio-libs/propcache"},{"name":"psycopg2-binary","old_version":"2.9.10","new_version":"2.9.12","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"py-cord","old_version":"2.6.1","new_version":"2.8.1","repository_url":"https://github.com/Pycord-Development/pycord"},{"name":"pyasn1","old_version":"0.6.3","new_version":"0.6.4","repository_url":"https://github.com/pyasn1/pyasn1"},{"name":"pybase64","old_version":"1.4.2","new_version":"1.5.0","repository_url":"https://github.com/mayeut/pybase64"},{"name":"pydantic-settings","old_version":"2.13.1","new_version":"2.15.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"pydeck","old_version":"0.9.1","new_version":"0.9.3","repository_url":"https://github.com/visgl/deck.gl"},{"name":"pygithub","old_version":"2.9.0","new_version":"2.10.0","repository_url":"https://github.com/pygithub/pygithub"},{"name":"pygments","old_version":"2.20.0","new_version":"2.21.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pylint","old_version":"4.0.5","new_version":"4.0.8","repository_url":"https://github.com/pylint-dev/pylint"},{"name":"pyparsing","old_version":"3.2.3","new_version":"3.3.2","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"pypika","old_version":"0.48.9","new_version":"0.51.1","repository_url":"https://github.com/kayak/pypika"},{"name":"pyreadline3","old_version":"3.5.4","new_version":"3.5.6","repository_url":"https://github.com/pyreadline3/pyreadline3"},{"name":"python-engineio","old_version":"4.12.2","new_version":"4.14.0","repository_url":"https://github.com/miguelgrinberg/python-engineio"},{"name":"python-levenshtein","old_version":"0.27.3","new_version":"0.27.4","repository_url":"https://github.com/rapidfuzz/python-Levenshtein"},{"name":"python-socketio","old_version":"5.14.0","new_version":"5.16.4","repository_url":"https://github.com/miguelgrinberg/python-socketio"},{"name":"qiskit","old_version":"2.3.1","new_version":"2.5.2","repository_url":"https://github.com/Qiskit/qiskit"},{"name":"rapidfuzz","old_version":"3.14.3","new_version":"3.14.6","repository_url":"https://github.com/rapidfuzz/RapidFuzz"},{"name":"referencing","old_version":"0.36.2","new_version":"0.37.0","repository_url":"https://github.com/python-jsonschema/referencing"},{"name":"ruamel-yaml","old_version":"0.18.14","new_version":"0.19.1"},{"name":"ruamel-yaml-clib","old_version":"0.2.12","new_version":"0.2.15"},{"name":"rustworkx","old_version":"0.17.1","new_version":"0.18.1","repository_url":"https://github.com/Qiskit/rustworkx"},{"name":"s3transfer","old_version":"0.16.0","new_version":"0.19.2","repository_url":"https://github.com/boto/s3transfer"},{"name":"safehttpx","old_version":"0.1.6","new_version":"0.1.7","repository_url":"https://github.com/gradio-app/safehttpx"},{"name":"scikit-learn","old_version":"1.7.1","new_version":"1.9.0","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"scipy","old_version":"1.12.0","new_version":"1.18.1","repository_url":"https://github.com/scipy/scipy"},{"name":"slowapi","old_version":"0.1.9","new_version":"0.1.10","repository_url":"https://github.com/laurents/slowapi"},{"name":"smmap","old_version":"5.0.2","new_version":"5.0.3","repository_url":"https://github.com/gitpython-developers/smmap"},{"name":"soupsieve","old_version":"2.7","new_version":"2.9.2","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"sqlalchemy","old_version":"2.0.48","new_version":"2.0.52","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"stevedore","old_version":"5.4.1","new_version":"5.9.1"},{"name":"strawberry-graphql","old_version":"0.312.3","new_version":"0.327.1","repository_url":"https://github.com/sponsors/strawberry-graphql"},{"name":"tomlkit","old_version":"0.13.3","new_version":"0.15.1","repository_url":"https://github.com/python-poetry/tomlkit"},{"name":"tqdm","old_version":"4.66.1","new_version":"4.70.0","repository_url":"https://github.com/tqdm/tqdm"},{"name":"typer","old_version":"0.16.0","new_version":"0.27.2","repository_url":"https://github.com/fastapi/typer"},{"name":"types-requests","old_version":"2.32.4.20260107","new_version":"2.33.0.20260712","repository_url":"https://github.com/python/typeshed"},{"name":"typing-inspection","old_version":"0.4.2","new_version":"0.4.4","repository_url":"https://github.com/pydantic/typing-inspection"},{"name":"typing-extensions","old_version":"4.14.1","new_version":"4.16.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"tzlocal","old_version":"5.3.1","new_version":"5.4.4","repository_url":"https://github.com/regebro/tzlocal"},{"name":"uuid-utils","old_version":"0.14.1","new_version":"0.17.0","repository_url":"https://github.com/aminalaee/uuid-utils"},{"name":"uvicorn","old_version":"0.27.1","new_version":"0.52.4","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"watchfiles","old_version":"1.1.0","new_version":"1.2.0","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"wcwidth","old_version":"0.5.3","new_version":"0.8.3","repository_url":"https://github.com/jquast/wcwidth"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.2","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"werkzeug","old_version":"3.1.6","new_version":"3.1.8","repository_url":"https://github.com/pallets/werkzeug"},{"name":"wsproto","old_version":"1.2.0","new_version":"1.3.2","repository_url":"https://github.com/python-hyper/wsproto"},{"name":"yarl","old_version":"1.20.1","new_version":"1.24.5","repository_url":"https://github.com/aio-libs/yarl"},{"name":"safety","old_version":"3.2.0","new_version":"3.8.1","repository_url":"https://github.com/pyupio/safety"},{"name":"opentelemetry-instrumentation-celery","old_version":"0.61b0","new_version":"0.65b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"langchain-community","old_version":"0.3.5","new_version":"0.4.2","repository_url":"https://github.com/langchain-ai/langchain-community"},{"name":"langserve","old_version":"0.2.1","new_version":"0.3.3","repository_url":"https://github.com/langchain-ai/langserve"},{"name":"autogen","old_version":"0.5.0","new_version":"0.14.1","repository_url":"https://github.com/ag2ai/ag2classic"},{"name":"eth-account","old_version":"0.13.0","new_version":"0.14.0","repository_url":"https://github.com/ApeWorX/eth-account"},{"name":"eth-keys","old_version":"0.7.1","new_version":"0.8.0","repository_url":"https://github.com/ApeWorX/eth-keys"},{"name":"semgrep","old_version":"1.92.0","new_version":"1.176.0","repository_url":"https://github.com/semgrep/semgrep"},{"name":"pytest-benchmark","old_version":"5.1.0","new_version":"5.3.0","repository_url":"https://github.com/ionelmc/pytest-benchmark"},{"name":"hypothesis","old_version":"6.131.0","new_version":"6.167.1","repository_url":"https://github.com/HypothesisWorks/hypothesis"},{"name":"accelerate","old_version":"1.10.0","new_version":"1.14.0","repository_url":"https://github.com/huggingface/accelerate"},{"name":"bitsandbytes","old_version":"0.46.1","new_version":"0.50.2","repository_url":"https://github.com/bitsandbytes-foundation/bitsandbytes"},{"name":"langchain-text-splitters","old_version":"1.1.1","new_version":"1.1.2","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"langsmith","old_version":"0.7.16","new_version":"0.12.1","repository_url":"https://github.com/langchain-ai/langsmith-sdk"},{"name":"safetensors","old_version":"0.5.3","new_version":"0.8.0","repository_url":"https://github.com/huggingface/safetensors"},{"name":"streamlit","old_version":"1.54.0","new_version":"1.63.0","repository_url":"https://github.com/streamlit/streamlit"},{"name":"tokenizers","old_version":"0.21.4","new_version":"0.23.1","repository_url":"https://github.com/huggingface/tokenizers"},{"name":"torch","old_version":"2.2.0","new_version":"2.14.0","repository_url":"https://github.com/pytorch/pytorch"},{"name":"torchvision","old_version":"0.17.0","new_version":"0.29.0","repository_url":"https://github.com/pytorch/vision"},{"name":"torchaudio","old_version":"2.2.0","new_version":"2.11.0","repository_url":"https://github.com/pytorch/audio"},{"name":"scikit-image","old_version":"0.22.0","new_version":"0.26.0","repository_url":"https://github.com/scikit-image/scikit-image"},{"name":"soundfile","old_version":"0.12.1","new_version":"0.14.0","repository_url":"https://github.com/bastibe/python-soundfile"},{"name":"wyn-wav2lip","old_version":"0.1.0","new_version":"0.2.3"},{"name":"face-alignment","old_version":"1.4.1","new_version":"1.5.0","repository_url":"https://github.com/1adrianb/face-alignment"},{"name":"azure-cognitiveservices-speech","old_version":"1.35.0","new_version":"1.51.2"},{"name":"supabase","old_version":"2.3.4","new_version":"2.31.0","repository_url":"https://github.com/supabase/supabase-py"}],"path":null,"ecosystem":"pip"},"body":"Bumps the patch-and-minor group with 189 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.14.2` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.5.1` |\n| [httpx](https://github.com/encode/httpx) | `0.26.0` | `0.28.1` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.19` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [requests](https://github.com/psf/requests) | `2.32.5` | `2.34.2` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.2.1` | `0.16.5` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.6.3` | `2.7.0` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.22.1` | `0.26.0` |\n| [aiohttp](https://github.com/aio-libs/aiohttp) | `3.13.3` | `3.14.3` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.3` |\n| [wheel](https://github.com/pypa/wheel) | `0.46.2` | `0.48.0` |\n| [authlib](https://github.com/authlib/authlib) | `1.6.9` | `1.8.0` |\n| [nltk](https://github.com/nltk/nltk) | `3.9.1` | `3.10.3` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.12.0` | `2.13.0` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.22` | `0.0.32` |\n| [tornado](https://github.com/tornadoweb/tornado) | `6.5.5` | `6.5.8` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.111.0` | `0.141.1` |\n| [aiohappyeyeballs](https://github.com/aio-libs/aiohappyeyeballs) | `2.6.1` | `2.7.1` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.18.4` | `1.19.1` |\n| [annotated-doc](https://github.com/fastapi/annotated-doc) | `0.0.4` | `0.0.5` |\n| [annotated-types](https://github.com/annotated-types/annotated-types) | `0.7.0` | `0.8.0` |\n| [apscheduler](https://github.com/agronholm/apscheduler) | `3.11.2` | `3.11.3` |\n| [arq](https://github.com/python-arq/arq) | `0.27.0` | `0.28.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.11.1` | `3.12.1` |\n| [astroid](https://github.com/pylint-dev/astroid) | `4.0.4` | `4.3.1` |\n| [asyncpg](https://github.com/MagicStack/asyncpg) | `0.30.0` | `0.31.0` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.8.6` | `1.9.4` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.15.0` |\n| [bidict](https://github.com/jab/bidict) | `0.23.1` | `0.24.1` |\n| [boto3](https://github.com/boto/boto3) | `1.42.64` | `1.43.86` |\n| [botocore](https://github.com/boto/botocore) | `1.42.64` | `1.43.86` |\n| [build](https://github.com/pypa/build) | `1.3.0` | `1.6.0` |\n| [celery](https://github.com/celery/celery) | `5.6.2` | `5.6.3` |\n| [cffi](https://github.com/python-cffi/cffi) | `2.0.0` | `2.1.1` |\n| [chromadb](https://github.com/chroma-core/chroma) | `1.0.15` | `1.5.9` |\n| [click](https://github.com/pallets/click) | `8.2.1` | `8.5.0` |\n| [colorlog](https://github.com/borntyping/python-colorlog) | `6.9.0` | `6.12.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.4` | `7.16.0` |\n| [cross-web](https://github.com/usecross/cross-web) | `0.4.1` | `0.7.0` |\n| [decorator](https://github.com/micheles/decorator) | `5.2.1` | `5.3.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [discord-py](https://github.com/Rapptz/discord.py) | `2.5.2` | `2.7.1` |\n| [docker](https://github.com/docker/docker-py) | `7.1.0` | `7.2.0` |\n| [docstring-parser](https://github.com/rr-/docstring_parser) | `0.17.0` | `0.18.0` |\n| [durationpy](https://github.com/icholy/durationpy) | `0.10` | `0.11` |\n| [fabric](https://github.com/fabric/fabric) | `3.2.2` | `3.2.3` |\n| [fakeredis](https://github.com/cunla/fakeredis-py) | `2.33.0` | `2.37.1` |\n| [feedparser](https://github.com/kurtmckee/feedparser) | `6.0.11` | `6.0.14` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.20.3` | `3.32.5` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `6.0.1` | `6.0.5` |\n| [flask-socketio](https://github.com/miguelgrinberg/flask-socketio) | `5.5.1` | `5.6.1` |\n| [flatbuffers](https://github.com/google/flatbuffers) | `25.2.10` | `25.12.19` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.60.2` | `4.64.0` |\n| [frozenlist](https://github.com/aio-libs/frozenlist) | `1.7.0` | `1.8.0` |\n| [fsspec](https://github.com/fsspec/filesystem_spec) | `2026.3.0` | `2026.7.0` |\n| [geographiclib](https://github.com/geographiclib/geographiclib-python) | `2.0` | `2.1` |\n| [geopy](https://github.com/geopy/geopy) | `2.4.1` | `2.5.0` |\n| [gitpython](https://github.com/gitpython-developers/GitPython) | `3.1.50` | `3.1.61` |\n| [google-auth](https://github.com/googleapis/google-cloud-python) | `2.40.3` | `2.57.0` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.70.0` | `1.75.2` |\n| [graphql-core](https://github.com/graphql-python/graphql-core) | `3.2.8` | `3.2.12` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.3.2` | `3.5.5` |\n| [grpcio](https://github.com/grpc/grpc) | `1.74.0` | `1.83.1` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.3.0` | `3.4.1` |\n| [httptools](https://github.com/MagicStack/httptools) | `0.6.4` | `0.8.0` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.0` |\n| [jaraco-context](https://github.com/jaraco/jaraco.context) | `6.1.0` | `6.1.2` |\n| [jiter](https://github.com/pydantic/jiter) | `0.10.0` | `0.16.0` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.1` | `1.6.0` |\n| [jsonpointer](https://github.com/stefankoegl/python-json-pointer) | `3.0.0` | `3.1.1` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.25.0` | `4.26.0` |\n| [jsonschema-specifications](https://github.com/python-jsonschema/jsonschema-specifications) | `2025.4.1` | `2025.9.1` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.4.8` | `1.5.1` |\n| [langgraph](https://github.com/langchain-ai/langgraph) | `1.1.0` | `1.2.11` |\n| [langgraph-checkpoint](https://github.com/langchain-ai/langgraph) | `4.0.1` | `4.2.0` |\n| [langgraph-prebuilt](https://github.com/langchain-ai/langgraph) | `1.0.8` | `1.1.0` |\n| [langgraph-sdk](https://github.com/langchain-ai/langgraph) | `0.3.13` | `0.4.4` |\n| [levenshtein](https://github.com/rapidfuzz/Levenshtein) | `0.27.3` | `0.27.4` |\n| [lxml](https://github.com/lxml/lxml) | `6.1.0` | `6.1.3` |\n| [mako](https://github.com/sqlalchemy/mako) | `1.3.12` | `1.4.1` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.5` | `3.11.1` |\n| [mmh3](https://github.com/hajimes/mmh3) | `5.2.0` | `5.3.0` |\n| [mpmath](https://github.com/mpmath/mpmath) | `1.3.0` | `1.4.1` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.2` | `1.2.2` |\n| [multidict](https://github.com/aio-libs/multidict) | `6.6.3` | `6.7.1` |\n| [narwhals](https://github.com/narwhals-dev/narwhals) | `2.0.1` | `2.25.0` |\n| [networkx](https://github.com/networkx/networkx) | `3.5` | `3.6.1` |\n| [numpy](https://github.com/numpy/numpy) | `2.3.2` | `2.5.2` |\n| [onnxruntime](https://github.com/microsoft/onnxruntime) | `1.22.1` | `1.29.0` |\n| [openai](https://github.com/openai/openai-python) | `1.98.0` | `1.109.1` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.44.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.65b0` |\n| [opentelemetry-exporter-otlp](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.44.0` |\n| [opentelemetry-exporter-otlp-proto-common](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.44.0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.44.0` |\n| [opentelemetry-exporter-otlp-proto-http](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.44.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.65b0` |\n| [opentelemetry-instrumentation-asgi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.65b0` |\n| [opentelemetry-instrumentation-fastapi](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.65b0` |\n| [opentelemetry-instrumentation-httpx](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.65b0` |\n| [opentelemetry-instrumentation-logging](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.65b0` |\n| [opentelemetry-instrumentation-redis](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.65b0` |\n| [opentelemetry-instrumentation-sqlalchemy](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.65b0` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.65b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.44.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.40.0` | `1.44.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.61b0` | `0.65b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.65b0` |\n| [orjson](https://github.com/ijl/orjson) | `3.11.7` | `3.12.0` |\n| [pathspec](https://github.com/cpburnz/python-pathspec) | `1.1.0` | `1.1.1` |\n| [pip-tools](https://github.com/jazzband/pip-tools) | `7.5.3` | `7.6.1` |\n| [pip-audit](https://github.com/pypa/pip-audit) | `2.8.0` | `2.10.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.9.4` | `4.11.7` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.52` | `3.0.53` |\n| [propcache](https://github.com/aio-libs/propcache) | `0.3.2` | `0.5.2` |\n| [psycopg2-binary](https://github.com/psycopg/psycopg2) | `2.9.10` | `2.9.12` |\n| [py-cord](https://github.com/Pycord-Development/pycord) | `2.6.1` | `2.8.1` |\n| [pyasn1](https://github.com/pyasn1/pyasn1) | `0.6.3` | `0.6.4` |\n| [pybase64](https://github.com/mayeut/pybase64) | `1.4.2` | `1.5.0` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.13.1` | `2.15.0` |\n| [pydeck](https://github.com/visgl/deck.gl) | `0.9.1` | `0.9.3` |\n| [pygithub](https://github.com/pygithub/pygithub) | `2.9.0` | `2.10.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.20.0` | `2.21.0` |\n| [pylint](https://github.com/pylint-dev/pylint) | `4.0.5` | `4.0.8` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.3` | `3.3.2` |\n| [pypika](https://github.com/kayak/pypika) | `0.48.9` | `0.51.1` |\n| [pyreadline3](https://github.com/pyreadline3/pyreadline3) | `3.5.4` | `3.5.6` |\n| [python-engineio](https://github.com/miguelgrinberg/python-engineio) | `4.12.2` | `4.14.0` |\n| [python-levenshtein](https://github.com/rapidfuzz/python-Levenshtein) | `0.27.3` | `0.27.4` |\n| [python-socketio](https://github.com/miguelgrinberg/python-socketio) | `5.14.0` | `5.16.4` |\n| [qiskit](https://github.com/Qiskit/qiskit) | `2.3.1` | `2.5.2` |\n| [rapidfuzz](https://github.com/rapidfuzz/RapidFuzz) | `3.14.3` | `3.14.6` |\n| [referencing](https://github.com/python-jsonschema/referencing) | `0.36.2` | `0.37.0` |\n| ruamel-yaml | `0.18.14` | `0.19.1` |\n| ruamel-yaml-clib | `0.2.12` | `0.2.15` |\n| [rustworkx](https://github.com/Qiskit/rustworkx) | `0.17.1` | `0.18.1` |\n| [s3transfer](https://github.com/boto/s3transfer) | `0.16.0` | `0.19.2` |\n| [safehttpx](https://github.com/gradio-app/safehttpx) | `0.1.6` | `0.1.7` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.7.1` | `1.9.0` |\n| [scipy](https://github.com/scipy/scipy) | `1.12.0` | `1.18.1` |\n| [slowapi](https://github.com/laurents/slowapi) | `0.1.9` | `0.1.10` |\n| [smmap](https://github.com/gitpython-developers/smmap) | `5.0.2` | `5.0.3` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.9.2` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.48` | `2.0.52` |\n| [stevedore](https://docs.openstack.org/stevedore) | `5.4.1` | `5.9.1` |\n| [strawberry-graphql](https://github.com/sponsors/strawberry-graphql) | `0.312.3` | `0.327.1` |\n| [tomlkit](https://github.com/python-poetry/tomlkit) | `0.13.3` | `0.15.1` |\n| [tqdm](https://github.com/tqdm/tqdm) | `4.66.1` | `4.70.0` |\n| [typer](https://github.com/fastapi/typer) | `0.16.0` | `0.27.2` |\n| [types-requests](https://github.com/python/typeshed) | `2.32.4.20260107` | `2.33.0.20260712` |\n| [typing-inspection](https://github.com/pydantic/typing-inspection) | `0.4.2` | `0.4.4` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.14.1` | `4.16.0` |\n| [tzlocal](https://github.com/regebro/tzlocal) | `5.3.1` | `5.4.4` |\n| [uuid-utils](https://github.com/aminalaee/uuid-utils) | `0.14.1` | `0.17.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.27.1` | `0.52.4` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.0` | `1.2.0` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.5.3` | `0.8.3` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.2` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.6` | `3.1.8` |\n| [wsproto](https://github.com/python-hyper/wsproto) | `1.2.0` | `1.3.2` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.20.1` | `1.24.5` |\n| [safety](https://github.com/pyupio/safety) | `3.2.0` | `3.8.1` |\n| [opentelemetry-instrumentation-celery](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.61b0` | `0.65b0` |\n| [langchain-community](https://github.com/langchain-ai/langchain-community) | `0.3.5` | `0.4.2` |\n| [langserve](https://github.com/langchain-ai/langserve) | `0.2.1` | `0.3.3` |\n| [autogen](https://github.com/ag2ai/ag2classic) | `0.5.0` | `0.14.1` |\n| [eth-account](https://github.com/ApeWorX/eth-account) | `0.13.0` | `0.14.0` |\n| [eth-keys](https://github.com/ApeWorX/eth-keys) | `0.7.1` | `0.8.0` |\n| [semgrep](https://github.com/semgrep/semgrep) | `1.92.0` | `1.176.0` |\n| [pytest-benchmark](https://github.com/ionelmc/pytest-benchmark) | `5.1.0` | `5.3.0` |\n| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.131.0` | `6.167.1` |\n| [accelerate](https://github.com/huggingface/accelerate) | `1.10.0` | `1.14.0` |\n| [bitsandbytes](https://github.com/bitsandbytes-foundation/bitsandbytes) | `0.46.1` | `0.50.2` |\n| [langchain-text-splitters](https://github.com/langchain-ai/langchain) | `1.1.1` | `1.1.2` |\n| [langsmith](https://github.com/langchain-ai/langsmith-sdk) | `0.7.16` | `0.12.1` |\n| [safetensors](https://github.com/huggingface/safetensors) | `0.5.3` | `0.8.0` |\n| [streamlit](https://github.com/streamlit/streamlit) | `1.54.0` | `1.63.0` |\n| [tokenizers](https://github.com/huggingface/tokenizers) | `0.21.4` | `0.23.1` |\n| [torch](https://github.com/pytorch/pytorch) | `2.2.0` | `2.14.0` |\n| [torchvision](https://github.com/pytorch/vision) | `0.17.0` | `0.29.0` |\n| [torchaudio](https://github.com/pytorch/audio) | `2.2.0` | `2.11.0` |\n| [scikit-image](https://github.com/scikit-image/scikit-image) | `0.22.0` | `0.26.0` |\n| [soundfile](https://github.com/bastibe/python-soundfile) | `0.12.1` | `0.14.0` |\n| wyn-wav2lip | `0.1.0` | `0.2.3` |\n| [face-alignment](https://github.com/1adrianb/face-alignment) | `1.4.1` | `1.5.0` |\n| azure-cognitiveservices-speech | `1.35.0` | `1.51.2` |\n| [supabase](https://github.com/supabase/supabase-py) | `2.3.4` | `2.31.0` |\n\nUpdates `anyio` from 4.9.0 to 4.14.2\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.14.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eChanged \u003ccode\u003eByteReceiveStream.receive()\u003c/code\u003e implementations to raise a \u003ccode\u003eValueError\u003c/code\u003e when \u003ccode\u003emax_bytes\u003c/code\u003e is not a positive integer (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1191\"\u003e#1191\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCapacityLimiter.total_tokens\u003c/code\u003e rejecting \u003ccode\u003efloat(\u0026quot;inf\u0026quot;)\u003c/code\u003e when the limiter was instantiated outside of an event loop. The adapter setter checked for infinity by identity (\u003ccode\u003evalue is math.inf\u003c/code\u003e), so only the exact \u003ccode\u003emath.inf\u003c/code\u003e singleton was accepted, while every backend setter (using \u003ccode\u003emath.isinf()\u003c/code\u003e) accepts any positive infinity (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1189\"\u003e#1189\u003c/a\u003e; PR by \u003ca href=\"https://github.com/greymoth-jp\"\u003e\u003ccode\u003e@​greymoth-jp\u003c/code\u003e\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eto_process.run_sync()\u003c/code\u003e deadlocking when the worker function writes enough data to \u003ccode\u003esys.stderr\u003c/code\u003e to fill the (undrained) pipe buffer. The worker process now redirects \u003ccode\u003esys.stderr\u003c/code\u003e to \u003ccode\u003eos.devnull\u003c/code\u003e as well, matching the documented behavior\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eTLSStream.wrap()\u003c/code\u003e matching an internationalized (unicode) host name against the peer certificate using IDNA 2003 (via the standard library) instead of IDNA 2008, which could cause the host name to be matched against the wrong certificate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1208\"\u003e#1208\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.open_process()\u003c/code\u003e (and \u003ccode\u003erun_process()\u003c/code\u003e) ignoring the \u003ccode\u003eextra_groups\u003c/code\u003e argument, as it mistakenly passed the value of the \u003ccode\u003egroup\u003c/code\u003e argument instead (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1209\"\u003e#1209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCapacityLimiter.acquire_nowait()\u003c/code\u003e and \u003ccode\u003eCapacityLimiter.acquire_nowait_on_behalf_of()\u003c/code\u003e raising \u003ccode\u003etrio.WouldBlock\u003c/code\u003e instead of \u003ccode\u003eanyio.WouldBlock\u003c/code\u003e on the \u003ccode\u003etrio\u003c/code\u003e backend when there are no tokens available (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1218\"\u003e#1218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCapacityLimiter\u003c/code\u003e on the asyncio backend over-granting tokens (\u003ccode\u003eborrowed_tokens\u003c/code\u003e exceeding \u003ccode\u003etotal_tokens\u003c/code\u003e and \u003ccode\u003eavailable_tokens\u003c/code\u003e going negative) when a non-blocking acquire was made in the window between a token being released and the notified waiter resuming. The freed token is now reserved for the woken waiter right away, so the non-blocking acquire correctly raises \u003ccode\u003eWouldBlock\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1170\"\u003e#1170\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gaoflow\"\u003e\u003ccode\u003e@​gaoflow\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed unnecessary CPU spin when delivering cancellation from \u003ccode\u003eCancelScope\u003c/code\u003e on asyncio under certain conditions, including improper cancel scope nesting (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1111\"\u003e#1111\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.14.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed teardown of higher-scoped async fixtures failing on asyncio with \u003ccode\u003eRuntimeError: Attempted to exit cancel scope in a different task than it was entered in\u003c/code\u003e when an async test raise an outcome exception (e.g., \u003ccode\u003epytest.skip()\u003c/code\u003e, \u003ccode\u003epytest.xfail()\u003c/code\u003e, or \u003ccode\u003epytest.fail()\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1179\"\u003e#1179\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCapacityLimiter.total_tokens\u003c/code\u003e rejecting a value of \u003ccode\u003e0\u003c/code\u003e when the limiter was instantiated outside of an event loop, contradicting the documented behavior of allowing 0 total tokens (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1183\"\u003e#1183\u003c/a\u003e; PR by \u003ca href=\"https://github.com/nyxst4ck\"\u003e\u003ccode\u003e@​nyxst4ck\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.14.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support for Python 3.15\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded an asynchronous implementation of the \u003ccode\u003eitertools\u003c/code\u003e module (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/998\"\u003e#998\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003elocal_port\u003c/code\u003e parameter to \u003ccode\u003econnect_tcp()\u003c/code\u003e to allow binding to a specific local port before connecting (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1067\"\u003e#1067\u003c/a\u003e; PR by \u003ca href=\"https://github.com/nullwiz\"\u003e\u003ccode\u003e@​nullwiz\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support for custom capacity limiters in async path and file I/O functions and classes\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003ecreate_task()\u003c/code\u003e task group method for easier asyncio migration (returns a \u003ccode\u003eTaskHandle\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1098\"\u003e#1098\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged \u003ccode\u003eTaskGroup.start_soon()\u003c/code\u003e to return a \u003ccode\u003eTaskHandle\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded an option for \u003ccode\u003eTaskGroup.start()\u003c/code\u003e to return a \u003ccode\u003eTaskHandle\u003c/code\u003e (which then contains the start value in the \u003ccode\u003estart_value\u003c/code\u003e property)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003ecancel()\u003c/code\u003e convenience method to \u003ccode\u003eTaskGroup\u003c/code\u003e as a shortcut for cancelling the task group's cancel scope\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImproved the error message when a known backend is not installed to suggest the install command (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1115\"\u003e#1115\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImproved \u003ccode\u003eanyio.Path\u003c/code\u003e to preserve subclass types by returning \u003ccode\u003eSelf\u003c/code\u003e in methods that return path objects (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1130\"\u003e#1130\u003c/a\u003e; PR by \u003ca href=\"https://github.com/EmmanuelNiyonshuti\"\u003e\u003ccode\u003e@​EmmanuelNiyonshuti\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged the parameter type annotation in \u003ccode\u003eanyio.Path.write_bytes()\u003c/code\u003e to accept any \u003ccode\u003eReadableBuffer\u003c/code\u003e, thus allowing it to accept \u003ccode\u003ebytearray\u003c/code\u003e and \u003ccode\u003ememoryview\u003c/code\u003e to match \u003ccode\u003epathlib.Path.write_bytes()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1135\"\u003e#1135\u003c/a\u003e; PR by \u003ca href=\"https://github.com/SAY-5\"\u003e\u003ccode\u003e@​SAY-5\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged several type annotations to only accept callables returning coroutine-like objects instead of arbitrary awaitables:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eTaskGroup.start_soon()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eTaskGroup.start()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanyio.from_thread.run()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThis reverts an earlier change from v3.7.0 which was made in error. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1153\"\u003e#1153\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged \u003ccode\u003eanyio.run\u003c/code\u003e to support callables returning arbitrary awaitables at runtime on all backends. Previously, this only worked on asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1171\"\u003e#1171\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eChanged several classes (and their subclasses) to have \u003ccode\u003e__slots__\u003c/code\u003e (with \u003ccode\u003e__weakref__\u003c/code\u003e):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eanyio.CancelScope\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/c384f99687c64c59ed8a11c3a0f11a2d57daff71\"\u003e\u003ccode\u003ec384f99\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/dbba29d1ade7936f18fb71ba24aa92978673482a\"\u003e\u003ccode\u003edbba29d\u003c/code\u003e\u003c/a\u003e Fixed 100% CPU spin on cancel scope misuse (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1217\"\u003e#1217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6bbc6c33caabc13af5bc4256f745027cf8d5d7b8\"\u003e\u003ccode\u003e6bbc6c3\u003c/code\u003e\u003c/a\u003e Fix CapacityLimiter over-granting tokens on asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1172\"\u003e#1172\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6f82b2537cbbe98f3df3f295499056ab7de0b15b\"\u003e\u003ccode\u003e6f82b25\u003c/code\u003e\u003c/a\u003e Refactored TestTLSStream.test_receive_invalid_max_bytes() to be less flaky\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/be24b0414f67f604bcbdd5ea3bcc56ab920d872e\"\u003e\u003ccode\u003ebe24b04\u003c/code\u003e\u003c/a\u003e Relaxed timeouts to fix test flakiness\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/81135065749b4f60c06619b9caaf0a11871c1ddf\"\u003e\u003ccode\u003e8113506\u003c/code\u003e\u003c/a\u003e Fix test flakiness caused by slow callback duration logging\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/1e988b617b69588e33fecb75e36a9837245f562f\"\u003e\u003ccode\u003e1e988b6\u003c/code\u003e\u003c/a\u003e Fixed CapacityLimiter raising trio.WouldBlock instead of anyio.WouldBlock (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1\"\u003e#1\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/44713f345cd29dd4e7d76553c134543a1296cc62\"\u003e\u003ccode\u003e44713f3\u003c/code\u003e\u003c/a\u003e Pin setup-uv to a commit sha across downstream jobs (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1213\"\u003e#1213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/f1b7301c8264b0d2e8d24a5788fd29e93dea4040\"\u003e\u003ccode\u003ef1b7301\u003c/code\u003e\u003c/a\u003e Fixed stderr writes in a worker subprocess causing a deadlock (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1207\"\u003e#1207\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/212be93c2cf2c841e753e95e5e2c543ee7feca90\"\u003e\u003ccode\u003e212be93\u003c/code\u003e\u003c/a\u003e Fix flaky test_tcp_listener_same_port using a hardcoded port (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1206\"\u003e#1206\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.14.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.2 to 3.5.1\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.5.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.5.0...3.5.1\"\u003e3.5.1\u003c/a\u003e (2026-08-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised upper bound of setuptools to v84 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache performance access optimization for our CharInfo struct (prebuilt only).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer decoding large content when the noise detector output give a high entropy.\nOnly impacted large content input \u0026gt;1M bytes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.5.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.9...3.5.0\"\u003e3.5.0\u003c/a\u003e (2026-08-12)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExplicit support for Python 3.15\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComparing a CharsetMatch to a non-alias encoding strings (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReturn 0.0 CharsetMatch.multi_byte_usage for empty payloads instead of crashing (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA file with both a charset declaration and BOM/SIG did not verify first the BOM/SIG charset.\u003c/li\u003e\n\u003cli\u003eiso2022* cases misdetected due to a flaw in our multibyte chunking logic.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReplaced the optional mypyc build with Cython extensions while retaining the\npure Python fallback. The previous engine (mypyc) started to hit rough limit around\nthe optimization of our noise/coherence detector while Cython allows us to\nsteer the engine toward the right generated optimized sources.\nThis change SHOULD not impact bundler (e.g. Pyinstaller) as the module are\nimmediately discoverable (i.e. not hidden import like mypyc did).\nMoreover, a long wished distribution is the abi3 wheels, this will allow us\nto no longer rush each year when a new Python interpreter is released.\nWe still distribute the interpreter specific wheels for faster performance.\u003c/li\u003e\n\u003cli\u003eApplied micro-optimization on several utils.\u003c/li\u003e\n\u003cli\u003eCharsetMatches no longer sort on each match insertion.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved an old performance optimization attempt in apy.py (success_fast_tracked+payload_result_cache).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.9\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.8...3.4.9\"\u003e3.4.9\u003c/a\u003e (2026-07-07)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRegression in our fallback path leading to a decode error. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/771\"\u003e#771\u003c/a\u003e)\nWe've yanked 3.4.8 as a result of that bug.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.8\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.7...3.4.8\"\u003e3.4.8\u003c/a\u003e (2026-07-06)\u003c/h2\u003e\n\u003ch3\u003eFixed\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.5.0...3.5.1\"\u003e3.5.1\u003c/a\u003e (2026-08-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRaised upper bound of setuptools to v84 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache performance access optimization for our CharInfo struct (prebuilt only).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNo longer decoding large content when the noise detector output give a high entropy.\nOnly impacted large content input \u0026gt;1M bytes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.9...3.5.0\"\u003e3.5.0\u003c/a\u003e (2026-08-12)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExplicit support for Python 3.15\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComparing a CharsetMatch to a non-alias encoding strings (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReturn 0.0 CharsetMatch.multi_byte_usage for empty payloads instead of crashing (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/774\"\u003e#774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA file with both a charset declaration and BOM/SIG did not verify first the BOM/SIG charset.\u003c/li\u003e\n\u003cli\u003eiso2022* cases misdetected due to a flaw in our multibyte chunking logic.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReplaced the optional mypyc build with Cython extensions while retaining the\npure Python fallback. The previous engine (mypyc) started to hit rough limit around\nthe optimization of our noise/coherence detector while Cython allows us to\nsteer the engine toward the right generated optimized sources.\nThis change SHOULD not impact bundler (e.g. Pyinstaller) as the module are\nimmediately discoverable (i.e. not hidden import like mypyc did).\nMoreover, a long wished distribution is the abi3 wheels, this will allow us\nto no longer rush each year when a new Python interpreter is released.\nWe still distribute the interpreter specific wheels for faster performance.\u003c/li\u003e\n\u003cli\u003eApplied micro-optimization on several utils.\u003c/li\u003e\n\u003cli\u003eCharsetMatches no longer sort on each match insertion.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved an old performance optimization attempt in apy.py (success_fast_tracked+payload_result_cache).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.8...3.4.9\"\u003e3.4.9\u003c/a\u003e (2026-07-07)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRegression in our fallback path leading to a decode error. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/771\"\u003e#771\u003c/a\u003e)\nWe've yanked 3.4.8 as a result of that bug.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.7...3.4.8\"\u003e3.4.8\u003c/a\u003e (2026-07-06)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eWall import time due to cascade codec imports for our multibyte first sort of iana supported codecs (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/742\"\u003e#742\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUnnecessary json import at runtime (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/753\"\u003e#753\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eInverse capitalization not seen by noise detector (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/731\"\u003e#731\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/e239bdc5cc1eb1f0db08d4046ad531f805dbea71\"\u003e\u003ccode\u003ee239bdc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/795\"\u003e#795\u003c/a\u003e from jawah/release-3.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/648ad776db64a00aa7efd70a94656ac43784abb3\"\u003e\u003ccode\u003e648ad77\u003c/code\u003e\u003c/a\u003e docs: update faq\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/fab27492c39baa61aca12826022e266781108570\"\u003e\u003ccode\u003efab2749\u003c/code\u003e\u003c/a\u003e docs: write changelog for 3.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/7d32774e75d16cccd3d22c758a77fca135952787\"\u003e\u003ccode\u003e7d32774\u003c/code\u003e\u003c/a\u003e chore: bump version to 3.5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9a69f609f254ba4bfe9d0cbf375728e43360cdf2\"\u003e\u003ccode\u003e9a69f60\u003c/code\u003e\u003c/a\u003e docs: update data/info\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/5dcc6dd81a8a0a4bd525f8d6f508da8285caf402\"\u003e\u003ccode\u003e5dcc6dd\u003c/code\u003e\u003c/a\u003e perf: charinfo cache access optimization in cython\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ea3b4479270762be1228562c590e5a212727f208\"\u003e\u003ccode\u003eea3b447\u003c/code\u003e\u003c/a\u003e fix: do not validate-decode large payload when md says it's noise\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/a05917f87b5f71d6022d8abe2b0af239f65c1111\"\u003e\u003ccode\u003ea05917f\u003c/code\u003e\u003c/a\u003e chore: allow setuptools 84 builds (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/794\"\u003e#794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/3325d87c3c73fa1a8746947151faaf9a41177543\"\u003e\u003ccode\u003e3325d87\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/792\"\u003e#792\u003c/a\u003e from jawah/update-cibuildwheel-action\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/77203b104216a6d578a682b5ac0514750aa988f7\"\u003e\u003ccode\u003e77203b1\u003c/code\u003e\u003c/a\u003e chore: reformat noxfile.py\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.2...3.5.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `httpx` from 0.26.0 to 0.28.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/httpx/releases\"\u003ehttpx's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.28.1\u003c/h2\u003e\n\u003ch2\u003e0.28.1 (6th December, 2024)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix SSL case where \u003ccode\u003everify=False\u003c/code\u003e together with client side certificates.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 0.28.0\u003c/h2\u003e\n\u003ch2\u003e0.28.0 (28th November, 2024)\u003c/h2\u003e\n\u003cp\u003eThe 0.28 release includes a limited set of deprecations.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e:\u003c/p\u003e\n\u003cp\u003eWe are working towards a simplified SSL configuration API.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eFor users of the standard \u003ccode\u003everify=True\u003c/code\u003e or \u003ccode\u003everify=False\u003c/code\u003e cases, or \u003ccode\u003everify=\u0026lt;ssl_context\u0026gt;\u003c/code\u003e case this should require no changes. The following cases have been deprecated...\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003everify\u003c/code\u003e argument as a string argument is now deprecated and will raise warnings.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ecert\u003c/code\u003e argument is now deprecated and will raise warnings.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOur revised \u003ca href=\"https://github.com/encode/httpx/blob/HEAD/docs/advanced/ssl.md\"\u003eSSL documentation\u003c/a\u003e covers how to implement the same behaviour with a more constrained API.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eThe following changes are also included\u003c/strong\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003eproxies\u003c/code\u003e argument has now been removed.\u003c/li\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003eapp\u003c/code\u003e argument has now been removed.\u003c/li\u003e\n\u003cli\u003eJSON request bodies use a compact representation. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3363\"\u003e#3363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReview URL percent escape sets, based on WHATWG spec. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3371\"\u003e#3371\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/encode/httpx/issues/3373\"\u003e#3373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure \u003ccode\u003ecertifi\u003c/code\u003e and \u003ccode\u003ehttpcore\u003c/code\u003e are only imported if required. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003esocks5h\u003c/code\u003e as a valid proxy scheme. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3178\"\u003e#3178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCleanup \u003ccode\u003eRequest()\u003c/code\u003e method signature in line with \u003ccode\u003eclient.request()\u003c/code\u003e and \u003ccode\u003ehttpx.request()\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3378\"\u003e#3378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBugfix: When passing \u003ccode\u003eparams={}\u003c/code\u003e, always strictly update rather than merge with an existing querystring. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3364\"\u003e#3364\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 0.27.2\u003c/h2\u003e\n\u003ch2\u003e0.27.2 (27th August, 2024)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReintroduced supposedly-private \u003ccode\u003eURLTypes\u003c/code\u003e shortcut. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/2673\"\u003e#2673\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 0.27.1\u003c/h2\u003e\n\u003ch2\u003e0.27.1 (27th August, 2024)\u003c/h2\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for \u003ccode\u003ezstd\u003c/code\u003e content decoding using the python \u003ccode\u003ezstandard\u003c/code\u003e package is added. Installable using \u003ccode\u003ehttpx[zstd]\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3139\"\u003e#3139\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved error messaging for \u003ccode\u003eInvalidURL\u003c/code\u003e exceptions. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3250\"\u003e#3250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eapp\u003c/code\u003e type signature in \u003ccode\u003eASGITransport\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3109\"\u003e#3109\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/httpx/blob/master/CHANGELOG.md\"\u003ehttpx's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.28.1 (6th December, 2024)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix SSL case where \u003ccode\u003everify=False\u003c/code\u003e together with client side certificates.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.28.0 (28th November, 2024)\u003c/h2\u003e\n\u003cp\u003eBe aware that the default \u003cem\u003eJSON request bodies now use a more compact representation\u003c/em\u003e. This is generally considered a prefered style, tho may require updates to test suites.\u003c/p\u003e\n\u003cp\u003eThe 0.28 release includes a limited set of deprecations...\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecations\u003c/strong\u003e:\u003c/p\u003e\n\u003cp\u003eWe are working towards a simplified SSL configuration API.\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eFor users of the standard \u003ccode\u003everify=True\u003c/code\u003e or \u003ccode\u003everify=False\u003c/code\u003e cases, or \u003ccode\u003everify=\u0026lt;ssl_context\u0026gt;\u003c/code\u003e case this should require no changes. The following cases have been deprecated...\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003everify\u003c/code\u003e argument as a string argument is now deprecated and will raise warnings.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003ecert\u003c/code\u003e argument is now deprecated and will raise warnings.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOur revised \u003ca href=\"https://github.com/encode/httpx/blob/master/docs/advanced/ssl.md\"\u003eSSL documentation\u003c/a\u003e covers how to implement the same behaviour with a more constrained API.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eThe following changes are also included\u003c/strong\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003eproxies\u003c/code\u003e argument has now been removed.\u003c/li\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003eapp\u003c/code\u003e argument has now been removed.\u003c/li\u003e\n\u003cli\u003eJSON request bodies use a compact representation. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3363\"\u003e#3363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReview URL percent escape sets, based on WHATWG spec. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3371\"\u003e#3371\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/encode/httpx/issues/3373\"\u003e#3373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure \u003ccode\u003ecertifi\u003c/code\u003e and \u003ccode\u003ehttpcore\u003c/code\u003e are only imported if required. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3377\"\u003e#3377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003esocks5h\u003c/code\u003e as a valid proxy scheme. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3178\"\u003e#3178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCleanup \u003ccode\u003eRequest()\u003c/code\u003e method signature in line with \u003ccode\u003eclient.request()\u003c/code\u003e and \u003ccode\u003ehttpx.request()\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3378\"\u003e#3378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBugfix: When passing \u003ccode\u003eparams={}\u003c/code\u003e, always strictly update rather than merge with an existing querystring. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3364\"\u003e#3364\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.27.2 (27th August, 2024)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReintroduced supposedly-private \u003ccode\u003eURLTypes\u003c/code\u003e shortcut. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/2673\"\u003e#2673\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.27.1 (27th August, 2024)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for \u003ccode\u003ezstd\u003c/code\u003e content decoding using the python \u003ccode\u003ezstandard\u003c/code\u003e package is added. Installable using \u003ccode\u003ehttpx[zstd]\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3139\"\u003e#3139\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved error messaging for \u003ccode\u003eInvalidURL\u003c/code\u003e exceptions. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3250\"\u003e#3250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eapp\u003c/code\u003e type signature in \u003ccode\u003eASGITransport\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3109\"\u003e#3109\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.27.0 (21st February, 2024)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/26d48e0634e6ee9cdc0533996db289ce4b430177\"\u003e\u003ccode\u003e26d48e0\u003c/code\u003e\u003c/a\u003e Version 0.28.1 (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3445\"\u003e#3445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/89599a9541af14bcf906fc4ed58ccbdf403802ba\"\u003e\u003ccode\u003e89599a9\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003everify=False\u003c/code\u003e, \u003ccode\u003ecert=...\u003c/code\u003e case. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3442\"\u003e#3442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/8ecb86f0d74ffc52d4663214fae9526bee89358d\"\u003e\u003ccode\u003e8ecb86f\u003c/code\u003e\u003c/a\u003e Add test for request params behavior changes (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3364\"\u003e#3364\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3440\"\u003e#3440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/0cb7e5a2e736628e2f506d259fcf0d48cd2bde82\"\u003e\u003ccode\u003e0cb7e5a\u003c/code\u003e\u003c/a\u003e Bump the python-packages group with 11 updates (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3434\"\u003e#3434\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/15e21e9ea3cad4f06e22a7e704aabefdf43d2e29\"\u003e\u003ccode\u003e15e21e9\u003c/code\u003e\u003c/a\u003e Updating deprecated docstring Client() class (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3426\"\u003e#3426\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/80960fa31918d7663c3f4c3ad61661cf0e80628f\"\u003e\u003ccode\u003e80960fa\u003c/code\u003e\u003c/a\u003e Version 0.28.0. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3419\"\u003e#3419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/a33c87852b8a0dddc65e5f739af1e0a6fca4b91f\"\u003e\u003ccode\u003ea33c878\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eextensions\u003c/code\u003e type annotation. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3380\"\u003e#3380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/ce7e14da27abba6574be9b3ea7cd5990556a9343\"\u003e\u003ccode\u003ece7e14d\u003c/code\u003e\u003c/a\u003e Error on verify as str. (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3418\"\u003e#3418\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/47f4a96ffaaaa07dca1614409549b5d7a6e7af49\"\u003e\u003ccode\u003e47f4a96\u003c/code\u003e\u003c/a\u003e Handle empty zstd responses (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3412\"\u003e#3412\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/httpx/commit/189fc4bcbe5f314128775dec66a616ac9a31ad48\"\u003e\u003ccode\u003e189fc4b\u003c/code\u003e\u003c/a\u003e Update CHANGELOG.md, fix typo(s) (\u003ca href=\"https://redirect.github.com/encode/httpx/issues/3406\"\u003e#3406\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/httpx/compare/0.26.0...0.28.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `idna` from 3.10 to 3.19\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/kjd/idna/releases\"\u003eidna's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.19\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRestore the \u003ccode\u003estd3_rules\u003c/code\u003e option, which had no effect since changes\nto UTS \u003ca href=\"https://redirect.github.com/kjd/idna/issues/46\"\u003e#46\u003c/a\u003e processing in Unicode 16. Note that \u003ccode\u003euts46_remap()\u003c/code\u003e\ndefaults to enabling STD3 rules, so direct callers will see input\ncontaining non-LDH ASCII characters rejected again.\u003c/li\u003e\n\u003cli\u003ePerformance improvements to UTS \u003ca href=\"https://redirect.github.com/kjd/idna/issues/46\"\u003e#46\u003c/a\u003e mapping, particularly for\nASCII-only domains.\u003c/li\u003e\n\u003cli\u003eTest on free-threaded CPython with the GIL disabled and document\nthread safety.\u003c/li\u003e\n\u003cli\u003eExpose the Unicode version of the generated tables as\n\u003ccode\u003eidna.unicode_version\u003c/code\u003e, and show it in \u003ccode\u003eidna --version\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ecode\u003c/code\u003e, \u003ccode\u003etext\u003c/code\u003e, \u003ccode\u003ecodepoint\u003c/code\u003e and \u003ccode\u003eposition\u003c/code\u003e attributes to\n\u003ccode\u003eIDNAError\u003c/code\u003e so that the failed rule and the offending character can\nbe identified without parsing the exception message.\u003c/li\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003etransitional\u003c/code\u003e argument to \u003ccode\u003eencode()\u003c/code\u003e and\n\u003ccode\u003euts46_remap()\u003c/code\u003e is now completely ignored, and gives a deprecation warning\nfor the latter.\u003c/li\u003e\n\u003cli\u003eReject A-labels that are not the canonical Punycode encoding of\ntheir U-label.\u003c/li\u003e\n\u003cli\u003eFix CONTEXTJ violations raising \u003ccode\u003eIDNAError\u003c/code\u003e instead of\n\u003ccode\u003eInvalidCodepointContext\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eConsistently raise \u003ccode\u003eIDNAError\u003c/code\u003e for empty labels and non-ASCII bytes\npassed to label helper functions and the incremental codec.\u003c/li\u003e\n\u003cli\u003eAdd property-based tests, extended fuzzing targets, coverage\nmeasurement, and CI checks that the data tables match the generator\noutput.\u003c/li\u003e\n\u003cli\u003eVarious code quality and tooling improvements.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to stefan6419846, LouieLuNZ, and Salvatore Corvaglia for\ncontributions to this release.\u003c/p\u003e\n\u003ch2\u003ev3.18\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.17\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.16\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.15\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.14\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.13\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003ev3.12\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/kjd/idna/blob/master/HISTORY.md\"\u003eidna's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.19 (2026-08-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRestore the \u003ccode\u003estd3_rules\u003c/code\u003e option, which had no effect since changes\nto UTS \u003ca href=\"https://redirect.github.com/kjd/idna/issues/46\"\u003e#46\u003c/a\u003e processing in Unicode 16. Note that \u003ccode\u003euts46_remap()\u003c/code\u003e\ndefaults to enabling STD3 rules, so direct callers will see input\ncontaining non-LDH ASCII characters rejected again.\u003c/li\u003e\n\u003cli\u003ePerformance improvements to UTS \u003ca href=\"https://redirect.github.com/kjd/idna/issues/46\"\u003e#46\u003c/a\u003e mapping, particularly for\nASCII-only domains.\u003c/li\u003e\n\u003cli\u003eTest on free-threaded CPython with the GIL disabled and document\nthread safety.\u003c/li\u003e\n\u003cli\u003eExpose the Unicode version of the generated tables as\n\u003ccode\u003eidna.unicode_version\u003c/code\u003e, and show it in \u003ccode\u003eidna --version\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003ecode\u003c/code\u003e, \u003ccode\u003etext\u003c/code\u003e, \u003ccode\u003ecodepoint\u003c/code\u003e and \u003ccode\u003eposition\u003c/code\u003e attributes to\n\u003ccode\u003eIDNAError\u003c/code\u003e so that the failed rule and the offending character can\nbe identified without parsing the exception message.\u003c/li\u003e\n\u003cli\u003eThe deprecated \u003ccode\u003etransitional\u003c/code\u003e argument to \u003ccode\u003eencode()\u003c/code\u003e and\n\u003ccode\u003euts46_remap()\u003c/code\u003e is now completely ignored, and gives a deprecation warning\nfor the latter.\u003c/li\u003e\n\u003cli\u003eReject A-labels that are not the canonical Punycode encoding of\ntheir U-label.\u003c/li\u003e\n\u003cli\u003eFix CONTEXTJ violations raising \u003ccode\u003eIDNAError\u003c/code\u003e instead of\n\u003ccode\u003eInvalidCodepointContext\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eConsistently raise \u003ccode\u003eIDNAError\u003c/code\u003e for empty labels and non-ASCII bytes\npassed to label helper functions and the incremental codec.\u003c/li\u003e\n\u003cli\u003eAdd property-based tests, extended fuzzing targets, coverage\nmeasurement, and CI checks that the data tables match the generator\noutput.\u003c/li\u003e\n\u003cli\u003eVarious code quality and tooling improvements.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to stefan6419846, LouieLuNZ, and Salvatore Corvaglia for\ncontributions to this release.\u003c/p\u003e\n\u003ch2\u003e3.18 (2026-06-02)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eWhen decoding a domain, add a \u003ccode\u003edisplay\u003c/code\u003e argument that will pass\nthrough invalid labels rather than raising an exception.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.17 (2026-05-28)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSubstantial 75% reduction in memory usage through new data\nstructures and some optimization in processing speed.\u003c/li\u003e\n\u003cli\u003eAdded a general 1024-character input length cap to the public\nvalidation, conversion, and codec entry points. This is well above\nany legitimate domain or label and guards against pathological\ninputs.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e3.16 (2026-05-22)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a command-line interface (\u003ccode\u003epython -m idna\u003c/code\u003e, also available as\nthe \u003ccode\u003eidna\u003c/code\u003e script). Encodes or decodes one or more domains supplied\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/03a9a11dd8aecd4fea742cabe20f4d3d9ed82abb\"\u003e\u003ccode\u003e03a9a11\u003c/code\u003e\u003c/a\u003e Release 3.19\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/2d2a7ef0c59210a48407b3dde6d884933cecf093\"\u003e\u003ccode\u003e2d2a7ef\u003c/code\u003e\u003c/a\u003e Pre-release 3.19rc0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/5cce1308d148019c5fa0febceafa13e99cdacfe7\"\u003e\u003ccode\u003e5cce130\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/268\"\u003e#268\u003c/a\u003e from kjd/fix-std3-regex-alert\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/3914b75f3e4cbc11e59f92eeecdb16d10871e57f\"\u003e\u003ccode\u003e3914b75\u003c/code\u003e\u003c/a\u003e Split the STD3 disallowed-character range so uppercase is explicit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/ce9fd98ac4073866db276e93834b259f2a5a4ac4\"\u003e\u003ccode\u003ece9fd98\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/kjd/idna/issues/267\"\u003e#267\u003c/a\u003e from kjd/housekeeping\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/809240c3cc9358c9c9c79b2d12ffe39e75ccfb0f\"\u003e\u003ccode\u003e809240c\u003c/code\u003e\u003c/a\u003e Fail CI when the license copyright year is behind the current year\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/d9e16c523d7d25dcc14100fa80f3e303404e09be\"\u003e\u003ccode\u003ed9e16c5\u003c/code\u003e\u003c/a\u003e Consolidate test fixtures, prune stale gitignore entries, and fix doc typos\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/ef30feeed3a758e96286fdab0315a551f7f5e7d6\"\u003e\u003ccode\u003eef30fee\u003c/code\u003e\u003c/a\u003e Remove dead code and pare back superfluous comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/b907913f854d26cc714f721c6c2cb626d41ac468\"\u003e\u003ccode\u003eb907913\u003c/code\u003e\u003c/a\u003e Tighten the version support and Unicode notes in the README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kjd/idna/commit/6204cbe343ef438df7c58bc80b94d0f960991d90\"\u003e\u003ccode\u003e6204cbe\u003c/code\u003e\u003c/a\u003e Ignore local build artifacts and stop packaging stray tooling config\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/kjd/idna/compare/v3.10...v3.19\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyyaml` from 6.0.2 to 6.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/yaml/pyyaml/releases\"\u003epyyaml's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.0.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14 and free-threading (experimental).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\"\u003ehttps://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/yaml/pyyaml/blob/6.0.3/CHANGES\"\u003epyyaml's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e6.0.3 (2025-09-25)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/yaml/pyyaml/pull/864\"\u003eyaml/pyyaml#864\u003c/a\u003e -- Support for Python 3.14 and free-threading (experimental)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yaml/pyyaml/commit/49790e73684bebad1df05ef8d828fa12f685bffb\"\u003e\u003ccode\u003e49790e7\u003c/code\u003e\u003c/a\u003e Release 6.0.3 (\u003ca href=\"https://redirect.github.com/yaml/pyyaml/issues/889\"\u003e#889\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/yaml/pyyaml/compare/6.0.2...6.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.32.5 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!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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.32.5...v2.34.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.2.1 to 0.16.5\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.16.5\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-27.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow rules without codes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28049\"\u003e#28049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIntroduce category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27666\"\u003e#27666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate preview default rules and categories (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27877\"\u003e#27877\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Detect blocking generic HTTP requests (\u003ccode\u003eASYNC210\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28024\"\u003e#28024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-datetimez\u003c/code\u003e] Allow timezone-safe \u003ccode\u003estrptime\u003c/code\u003e chains (\u003ccode\u003eDTZ007\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28023\"\u003e#28023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Respect side effects in \u003ccode\u003elambda\u003c/code\u003e defaults (\u003ccode\u003eSIM401\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28000\"\u003e#28000\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix duplicated \u0026quot;of\u0026quot; in \u003ccode\u003eClientOptions\u003c/code\u003e doc comment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27978\"\u003e#27978\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument rule acceptance guidelines (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27910\"\u003e#27910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument the new category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27906\"\u003e#27906\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/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sharkdp\"\u003e\u003ccode\u003e@​sharkdp\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelle-openai\"\u003e\u003ccode\u003e@​jelle-openai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aarushkandukoori\"\u003e\u003ccode\u003e@​aarushkandukoori\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.16.5\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.16.5/ruff-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eInstall prebuilt binaries via powershell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003epowershell -ExecutionPolicy Bypass -c \u0026quot;irm https://releases.astral.sh/github/ruff/releases/download/0.16.5/ruff-installer.ps1 | iex\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eDownload ruff 0.16.5\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/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.16.5\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-27.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow rules without codes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28049\"\u003e#28049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIntroduce category selectors (\u003ca href=\"https://red...\n\n_Description has been truncated_","html_url":"https://github.com/welshDog/HyperCode-V2.4/pull/517","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/welshDog%2FHyperCode-V2.4/issues/517","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/517/packages"}},{"old_version":"1.7.6","new_version":"1.9.4","update_type":"minor","path":null,"pr_created_at":"2026-09-05T04:36:34.000Z","version_change":"1.7.6 → 1.9.4","issue":{"uuid":"5355588084","node_id":"PR_kwDOUO7Awc8AAAABCSomMA","number":1,"state":"closed","title":"deps(backend): Bump the security-tools group across 1 directory with 2 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-09-05T16:11:32.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-05T04:36:34.000Z","updated_at":"2026-09-05T16:11:34.000Z","time_to_close":41698,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(backend): Bump","group_name":"security-tools","update_count":2,"packages":[{"name":"bandit","old_version":"1.7.6","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [semgrep](https://github.com/semgrep/semgrep) and [bandit](https://github.com/PyCQA/bandit) to permit the latest version.\nUpdates `semgrep` to 1.176.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/semgrep/semgrep/releases\"\u003esemgrep's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.176.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/semgrep/semgrep/releases/tag/v1.176.0\"\u003e1.176.0\u003c/a\u003e - 2026-09-01\u003c/h2\u003e\n\u003ch3\u003e### Changed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHomebrew installs of Semgrep are no longer supported on Intel Macs. (ENGINE-2951)\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/semgrep/semgrep/blob/develop/CHANGELOG.md\"\u003esemgrep's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/semgrep/semgrep/releases/tag/v1.176.0\"\u003e1.176.0\u003c/a\u003e - 2026-09-01\u003c/h2\u003e\n\u003ch3\u003e### Changed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHomebrew installs of Semgrep are no longer supported on Intel Macs. (ENGINE-2951)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/semgrep/semgrep/releases/tag/v1.175.0\"\u003e1.175.0\u003c/a\u003e - 2026-08-26\u003c/h2\u003e\n\u003ch3\u003e### Changed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSemgrep is now built with OCaml 5.4 instead of OCaml 5.3. End users should notice no change. (ocaml-5.4)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/semgrep/semgrep/releases/tag/v1.174.0\"\u003e1.174.0\u003c/a\u003e - 2026-08-20\u003c/h2\u003e\n\u003ch3\u003e### Added\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDiff scans now report which dependency source files were added or modified relative to the merge base. (changed-dependency-sources)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e### Changed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePartial scans (\u003ccode\u003e--x-partial-scan-rule-id\u003c/code\u003e) now resolve dependencies only for\nsubprojects whose ecosystem is evaluated by the rules being run. Subprojects in\nany other ecosystem are skipped and reported to semgrep-app as skipped\nsubprojects. (SC-3830)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/semgrep/semgrep/releases/tag/v1.173.0\"\u003e1.173.0\u003c/a\u003e - 2026-08-12\u003c/h2\u003e\n\u003ch3\u003e### Added\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esemgrep-core -version\u003c/code\u003e now reports the git commit that the binary was built\nfrom. (core-version-git-sha)\u003c/li\u003e\n\u003cli\u003ePro: Added a \u003ccode\u003eno_disk_cache\u003c/code\u003e memory policy (\u003ccode\u003e--x-mem-policy no_disk_cache\u003c/code\u003e) to trade higher memory usage for not caching intermediary scan data structures on disk. (no-disk-cache-memory-policy)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e### Changed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFile targeting now submits path-filtering work to worker domains in batches\nremoving multithreaded synchronization overhead for very large repos. (ENGINE-2854)\u003c/li\u003e\n\u003cli\u003eParallel rule parsing for large rulesets now shards rules into files sized by\nbytes rather than by worker count, stabilizing memory allocations at parse-time\nand improving parsing throughput. (ENGINE-2920)\u003c/li\u003e\n\u003cli\u003eUpdated the Solidity parser for newer language features (transient storage, named mapping parameters, \u003ccode\u003elayout at\u003c/code\u003e, assembly flags, \u003ccode\u003eglobal\u003c/code\u003e using-directives, EVM Cancun builtins) and corrected ternary/\u003ccode\u003e?:\u003c/code\u003e vs member-access precedence. (LANG-207)\u003c/li\u003e\n\u003cli\u003ePro: Unsupported patterns in case expressions are now handled more\nrobustly, with improved error recovery during taint analysis — branch\nbodies are no longer dropped from the dataflow intermediate language when\na pattern can't be compiled. Pattern matching in statement position also\nnow benefits from the same compilation as expression position. (LANG-598)\u003c/li\u003e\n\u003cli\u003eImproved performance in highly parallel scans with many target files, running\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/semgrep/semgrep/commit/5bdaec16e18e33c520426dc1e4417161219daf35\"\u003e\u003ccode\u003e5bdaec1\u003c/code\u003e\u003c/a\u003e chore: release 1.176.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/semgrep/semgrep/commit/7e4ac398b9f642f7d91d3b1d88368cbd2e121210\"\u003e\u003ccode\u003e7e4ac39\u003c/code\u003e\u003c/a\u003e chore: drop Homebrew Intel Mac smoke test (ENGINE-2951) (semgrep/semgrep-prop...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/semgrep/semgrep/commit/e1bb0c2a77213d4ba004ab571963638fe3ae1fbf\"\u003e\u003ccode\u003ee1bb0c2\u003c/code\u003e\u003c/a\u003e\u003ccode\u003esemgrep/semgrep-proprietary#6998\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/semgrep/semgrep/commit/01870906955216aa946e4538cc5b38d819ad4d82\"\u003e\u003ccode\u003e0187090\u003c/code\u003e\u003c/a\u003e\u003ccode\u003esemgrep/semgrep-proprietary#6885\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/semgrep/semgrep/commit/704ebe6515813eb61bc9f8f6661594290695aab0\"\u003e\u003ccode\u003e704ebe6\u003c/code\u003e\u003c/a\u003e fix: make core match ordering independent of hash iteration order (semgrep/se...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/semgrep/semgrep/commit/0744a17ba93177e92fe8a82a99366cf59fd61432\"\u003e\u003ccode\u003e0744a17\u003c/code\u003e\u003c/a\u003e fix: drop duplicate hash-table bindings (add -\u0026gt; replace) (semgrep/semgrep-pro...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/semgrep/semgrep/commit/089569eb45881134a0fc1a2fccf8d125a75c9844\"\u003e\u003ccode\u003e089569e\u003c/code\u003e\u003c/a\u003e\u003ccode\u003esemgrep/semgrep-proprietary#6938\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/semgrep/semgrep/commit/5fcf5c71278f7d93b2d114799da8e64c547ed459\"\u003e\u003ccode\u003e5fcf5c7\u003c/code\u003e\u003c/a\u003e chore: restructure hashtbl multi-binding call sites (semgrep/semgrep-propriet...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/semgrep/semgrep/commit/cc4080625d064b2f39ffe8dff35a0a23d656cb8c\"\u003e\u003ccode\u003ecc40806\u003c/code\u003e\u003c/a\u003e chore: update slack action to v2+ chat.postMessage API (semgrep/semgrep-propr...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/semgrep/semgrep/commit/cb3a4ae9b2b3af81bdada48d52e939168d1f6431\"\u003e\u003ccode\u003ecb3a4ae\u003c/code\u003e\u003c/a\u003e\u003ccode\u003esemgrep/semgrep-proprietary#6921\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/semgrep/semgrep/compare/v1.60.0...v1.176.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bandit` from 1.7.6 to 1.9.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/bandit/releases\"\u003ebandit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: fixed some typos in comments by \u003ca href=\"https://github.com/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/login-action from 3.6.0 to 3.7.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/PyCQA/bandit/pull/1353\"\u003ePyCQA/bandit#1353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.18.0 to 6.19.2 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/PyCQA/bandit/pull/1357\"\u003ePyCQA/bandit#1357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B613 crash when reading from stdin by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude filename in nosec 'no failed test' warning by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1363\"\u003ePyCQA/bandit#1363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B615 false positive when revision is set via variable by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1358\"\u003ePyCQA/bandit#1358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLower version guard in check_ast_node to Python 3.12 by \u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B106 reporting wrong line number on multiline function calls by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1360\"\u003ePyCQA/bandit#1360\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/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1334\"\u003ePyCQA/bandit#1334\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/PyCQA/bandit/pull/1335\"\u003ePyCQA/bandit#1335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B608 to detect \u003ccode\u003eVALUES(\u003c/code\u003e without space by \u003ca href=\"https://github.com/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd check for hardcoded passwords in dicts. by \u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\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/PyCQA/bandit/pull/1341\"\u003ePyCQA/bandit#1341\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate tox tests for Python 3.10 by \u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/setup-buildx-action from 3.11.1 to 3.12.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/PyCQA/bandit/pull/1347\"\u003ePyCQA/bandit#1347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimit B614 to torch.load deserializers by \u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\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/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eArgparse Python 3.14 enhancements by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1331\"\u003ePyCQA/bandit#1331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCheck whether Constant value is str by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1333\"\u003ePyCQA/bandit#1333\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.1...1.9.2\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.1...1.9.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMore Python version related fixes by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1327\"\u003ePyCQA/bandit#1327\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/PyCQA/bandit/commit/92ae8b82fb422a639f0ed8d99e96cea769594e08\"\u003e\u003ccode\u003e92ae8b8\u003c/code\u003e\u003c/a\u003e Fix B106 reporting wrong line number on multiline function calls (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1360\"\u003e#1360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c8c8a55c3307333b8eb46cb2ef46d49b1fad6546\"\u003e\u003ccode\u003ec8c8a55\u003c/code\u003e\u003c/a\u003e Lower version guard in check_ast_node to Python 3.12 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1355\"\u003e#1355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/8f2f9284fca830ca017b2e2cc3ddc2a7b74b7040\"\u003e\u003ccode\u003e8f2f928\u003c/code\u003e\u003c/a\u003e Fix B615 false positive when revision is set via variable (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1358\"\u003e#1358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e27493f71c114e0e5dfc0a475d225d7f9f4a7e2b\"\u003e\u003ccode\u003ee27493f\u003c/code\u003e\u003c/a\u003e Include filename in nosec 'no failed test' warning (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1363\"\u003e#1363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/b69b336450301d424e5ba04c9a58e8d41b7169b6\"\u003e\u003ccode\u003eb69b336\u003c/code\u003e\u003c/a\u003e Fix B613 crash when reading from stdin (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1361\"\u003e#1361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e418b798abcc3f2b00c07fd6315da8fe9aeead00\"\u003e\u003ccode\u003ee418b79\u003c/code\u003e\u003c/a\u003e Bump docker/build-push-action from 6.18.0 to 6.19.2 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1357\"\u003e#1357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/ff646fd7e0e34fb350196fc58448fad17178c27a\"\u003e\u003ccode\u003eff646fd\u003c/code\u003e\u003c/a\u003e Bump docker/login-action from 3.6.0 to 3.7.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1353\"\u003e#1353\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c0def6c7ebab60f98c28ba759d488f4fbe6dae89\"\u003e\u003ccode\u003ec0def6c\u003c/code\u003e\u003c/a\u003e chore: fixed some typos in comments (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1351\"\u003e#1351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/765f00d3f202f83f61d03f882f80a2d5142d81f8\"\u003e\u003ccode\u003e765f00d\u003c/code\u003e\u003c/a\u003e Limit B614 to torch.load deserializers (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1348\"\u003e#1348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/06fbbab0df3374ffa8ef24c6f601b2d5e1d4d429\"\u003e\u003ccode\u003e06fbbab\u003c/code\u003e\u003c/a\u003e Bump docker/setup-buildx-action from 3.11.1 to 3.12.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1347\"\u003e#1347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.7.6...1.9.4\"\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/kamakshi18-sketch/ai-secure-code-reviewer/pull/1","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/kamakshi18-sketch%2Fai-secure-code-reviewer/issues/1","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1/packages"}},{"old_version":"1.9.2","new_version":"1.9.4","update_type":"patch","path":null,"pr_created_at":"2026-09-04T16:46:05.000Z","version_change":"1.9.2 → 1.9.4","issue":{"uuid":"5350736909","node_id":"PR_kwDOTiCLEM8AAAABCOyeZw","number":12,"state":"open","title":"deps: bump the python-dependencies group across 19 directories with 25 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-04T16:46:05.000Z","updated_at":"2026-09-11T16:58:30.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps: bump","group_name":"python-dependencies","update_count":25,"packages":[{"name":"fastapi","old_version":"0.136.3","new_version":"0.141.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"starlette","old_version":"1.3.1","new_version":"1.6.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"uvicorn","old_version":"0.37.0","new_version":"0.52.4","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"azure-identity","old_version":"1.23.0","new_version":"1.25.3","repository_url":"https://github.com/Azure/azure-sdk-for-python"},{"name":"websocket-client","old_version":"1.9.0","new_version":"1.9.2","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"ruff","old_version":"0.14.9","new_version":"0.16.5","repository_url":"https://github.com/astral-sh/ruff"},{"name":"mypy","old_version":"1.18.2","new_version":"2.3.1","repository_url":"https://github.com/python/mypy"},{"name":"bandit","old_version":"1.9.2","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 8 updates in the /buswatch directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.136.3` | `0.141.1` |\n| [starlette](https://github.com/Kludex/starlette) | `1.3.1` | `1.6.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.37.0` | `0.52.4` |\n| [azure-identity](https://github.com/Azure/azure-sdk-for-python) | `1.23.0` | `1.25.3` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.9.0` | `1.9.2` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n\nBumps the python-dependencies group with 9 updates in the /dashboard directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [azure-mgmt-appcontainers](https://github.com/Azure/azure-sdk-for-python) | `4.0.0` | `5.0.0` |\n| [azure-mgmt-servicebus](https://github.com/Azure/azure-sdk-for-python) | `9.0.0` | `10.0.0` |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `25.3.0` | `26.2.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.2` | `1.2.3` |\n| [tzdata](https://github.com/python/tzdata) | `2026.2` | `2026.3` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.3` | `9.1.1` |\n\nBumps the python-dependencies group with 5 updates in the /hl7_chemo_transformer directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [setuptools](https://github.com/pypa/setuptools) | `82.0.1` | `84.0.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.0` | `1.41.0` |\n\nBumps the python-dependencies group with 5 updates in the /hl7_mock_receiver directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [setuptools](https://github.com/pypa/setuptools) | `82.0.1` | `84.0.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.0` | `1.41.0` |\n\nBumps the python-dependencies group with 5 updates in the /hl7_phw_transformer directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [setuptools](https://github.com/pypa/setuptools) | `82.0.1` | `84.0.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.0` | `1.41.0` |\n\nBumps the python-dependencies group with 5 updates in the /hl7_pims_transformer directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [setuptools](https://github.com/pypa/setuptools) | `82.0.1` | `84.0.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.0` | `1.41.0` |\n\nBumps the python-dependencies group with 5 updates in the /hl7_sender directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [setuptools](https://github.com/pypa/setuptools) | `82.0.1` | `84.0.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.0` | `1.41.0` |\n\nBumps the python-dependencies group with 9 updates in the /hl7_server directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [setuptools](https://github.com/pypa/setuptools) | `82.0.1` | `84.0.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.0` | `1.41.0` |\n| [hishel](https://github.com/karpetrosyan/hishel) | `1.1.8` | `1.3.1` |\n| [idna](https://github.com/kjd/idna) | `3.16` | `3.19` |\n| [pygments](https://github.com/pygments/pygments) | `2.20.0` | `2.21.0` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.2.1` | `1.2.2` |\n\nBumps the python-dependencies group with 5 updates in the /hl7_subscription_sender directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [setuptools](https://github.com/pypa/setuptools) | `82.0.1` | `84.0.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.2` | `1.41.0` |\n\nBumps the python-dependencies group with 5 updates in the /message_replay_job directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.1` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.19.1` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.3` | `1.9.4` |\n| [setuptools](https://github.com/pypa/setuptools) | `82.0.1` | `84.0.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.2` | `1.41.0` |\n\nBumps the python-dependencies group with 5 updates in the /message_store_service directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.1` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.19.1` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.3` | `1.9.4` |\n| [setuptools](https://github.com/pypa/setuptools) | `82.0.1` | `84.0.0` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.1` | `1.41.0` |\n\nBumps the python-dependencies group with 2 updates in the /shared_libs directory: [xmlschema](https://github.com/sissaschool/xmlschema) and [elementpath](https://github.com/sissaschool/elementpath).\nBumps the python-dependencies group with 3 updates in the /shared_libs/event_logger_lib directory: [azure-identity](https://github.com/Azure/azure-sdk-for-python), [azure-core](https://github.com/Azure/azure-sdk-for-python) and [azure-monitor-opentelemetry](https://github.com/Azure/azure-sdk-for-python).\nBumps the python-dependencies group with 3 updates in the /shared_libs/field_utils_lib directory: [ruff](https://github.com/astral-sh/ruff), [mypy](https://github.com/python/mypy) and [bandit](https://github.com/PyCQA/bandit).\nBumps the python-dependencies group with 5 updates in the /shared_libs/hl7_validation directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [xmlschema](https://github.com/sissaschool/xmlschema) | `3.4.3` | `4.3.2` |\n| [elementpath](https://github.com/sissaschool/elementpath) | `4.8.0` | `5.1.4` |\n\nBumps the python-dependencies group with 4 updates in the /shared_libs/message_bus_lib directory: [ruff](https://github.com/astral-sh/ruff), [mypy](https://github.com/python/mypy), [bandit](https://github.com/PyCQA/bandit) and [azure-core](https://github.com/Azure/azure-sdk-for-python).\nBumps the python-dependencies group with 7 updates in the /shared_libs/metric_sender_lib directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [azure-identity](https://github.com/Azure/azure-sdk-for-python) | `1.23.0` | `1.25.3` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.9` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.1` | `1.9.4` |\n| [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.38.0` | `1.41.0` |\n| [idna](https://github.com/kjd/idna) | `3.18` | `3.19` |\n| [azure-monitor-opentelemetry](https://github.com/Azure/azure-sdk-for-python) | `1.6.13` | `1.8.9` |\n\nBumps the python-dependencies group with 5 updates in the /shared_libs/otel_lib directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.0` | `0.16.5` |\n| [mypy](https://github.com/python/mypy) | `1.18.2` | `2.3.1` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.2` | `1.9.4` |\n| [idna](https://github.com/kjd/idna) | `3.18` | `3.19` |\n| [azure-monitor-opentelemetry](https://github.com/Azure/azure-sdk-for-python) | `1.6.13` | `1.8.9` |\n\nBumps the python-dependencies group with 4 updates in the /shared_libs/transformer_base_lib directory: [ruff](https://github.com/astral-sh/ruff), [mypy](https://github.com/python/mypy), [bandit](https://github.com/PyCQA/bandit) and [azure-core](https://github.com/Azure/azure-sdk-for-python).\n\nUpdates `fastapi` from 0.136.3 to 0.141.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.141.1\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix support for background tasks and headers from dependencies in \u003ccode\u003eapp.frontend()\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16105\"\u003e#16105\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Document \u003ccode\u003eFASTAPI_ENV\u003c/code\u003e in FastAPI CLI guide. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16104\"\u003e#16104\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.141.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003eapp.frontend(check_dir=\u0026quot;auto\u0026quot;)\u003c/code\u003e, to make local development more convenient with \u003ccode\u003efastapi dev\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16102\"\u003e#16102\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.140.13\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003estatus_code\u003c/code\u003e being ignored for SSE and JSONL streaming endpoints. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15937\"\u003e#15937\u003c/a\u003e by \u003ca href=\"https://github.com/SAURABHSALVE\"\u003e\u003ccode\u003e@​SAURABHSALVE\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Fix \u003ccode\u003eformat_sse_event\u003c/code\u003e docstring rendering of \u003ccode\u003e\\n\\n\u003c/code\u003e terminator. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15613\"\u003e#15613\u003c/a\u003e by \u003ca href=\"https://github.com/AshNicolus\"\u003e\u003ccode\u003e@​AshNicolus\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Add API reference page for fastapi.sse. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15930\"\u003e#15930\u003c/a\u003e by \u003ca href=\"https://github.com/SAURABHSALVE\"\u003e\u003ccode\u003e@​SAURABHSALVE\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.140.12\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix line splitting in \u003ccode\u003eformat_sse_event\u003c/code\u003e to comply with SSE spec. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15515\"\u003e#15515\u003c/a\u003e by \u003ca href=\"https://github.com/Zawwarsami16\"\u003e\u003ccode\u003e@​Zawwarsami16\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.140.11\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eresponse_model_*\u003c/code\u003e params ignored for non-generator endpoints with \u003ccode\u003eIterable[..]\u003c/code\u003e return type. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15093\"\u003e#15093\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.140.10\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix handling sequences with nested Annotated types. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14874\"\u003e#14874\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\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Accept any base test failure as regression. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16092\"\u003e#16092\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🐛 Preserve pytest exit code in regression check. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16091\"\u003e#16091\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✅ Test PR regressions against base code. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16090\"\u003e#16090\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.140.9\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix \u003ccode\u003eexclude_defaults\u003c/code\u003e not propagated to dict keys and values in \u003ccode\u003ejsonable_encoder\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/16043\"\u003e#16043\u003c/a\u003e by \u003ca href=\"https://github.com/MBGrao\"\u003e\u003ccode\u003e@​MBGrao\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/95f8322ee1dcda7ceace7b1c4f6c9915b36d748f\"\u003e\u003ccode\u003e95f8322\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.141.1 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16106\"\u003e#16106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/f137944c435cff4e4b30ea7d12855ea88ddb868c\"\u003e\u003ccode\u003ef137944\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d62354434b2e508fe89024213b220ca8e67dea5e\"\u003e\u003ccode\u003ed623544\u003c/code\u003e\u003c/a\u003e 🐛 Fix support for background tasks and headers from dependencies in `app.fron...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/1d211b9c1009d577f39fa2b19b10d9a93a72a0ed\"\u003e\u003ccode\u003e1d211b9\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/8a1f8768411e62093e70ce142ea10863a485643c\"\u003e\u003ccode\u003e8a1f876\u003c/code\u003e\u003c/a\u003e 📝 Document \u003ccode\u003eFASTAPI_ENV\u003c/code\u003e in FastAPI CLI guide (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16104\"\u003e#16104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c7e7b651d6946c07cc9f675f39c9501d08319e57\"\u003e\u003ccode\u003ec7e7b65\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.141.0 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16103\"\u003e#16103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6bceb84053eb2405e9c000aad30ea13367b5ee32\"\u003e\u003ccode\u003e6bceb84\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/5429fed84e84e32672c25a953eca3429b841ce90\"\u003e\u003ccode\u003e5429fed\u003c/code\u003e\u003c/a\u003e ✨ Add \u003ccode\u003eapp.frontend(check_dir=\u0026quot;auto\u0026quot;)\u003c/code\u003e, to make local development more conven...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/628663f4f899c465da423bce681c7adf9a218948\"\u003e\u003ccode\u003e628663f\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.140.13 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/16096\"\u003e#16096\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/0b54fd00273019034dd30b120ac842e65d80690e\"\u003e\u003ccode\u003e0b54fd0\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.136.3...0.141.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `starlette` from 1.3.1 to 1.6.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/starlette/releases\"\u003estarlette's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.6.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003emax_body_size\u003c/code\u003e to \u003ccode\u003eStarlette\u003c/code\u003e and route classes 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/starlette/pull/3431\"\u003eKludex/starlette#3431\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpose \u003ccode\u003ehttp.response.debug\u003c/code\u003e info via response extensions by \u003ca href=\"https://github.com/y2kbugger\"\u003e\u003ccode\u003e@​y2kbugger\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3130\"\u003eKludex/starlette#3130\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/y2kbugger\"\u003e\u003ccode\u003e@​y2kbugger\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3130\"\u003eKludex/starlette#3130\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/starlette/compare/1.5.1...1.6.0\"\u003ehttps://github.com/Kludex/starlette/compare/1.5.1...1.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 1.5.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eReject inverted single-byte Range like \u003ccode\u003ebytes=5-4\u003c/code\u003e by \u003ca href=\"https://github.com/nikolauspschuetz\"\u003e\u003ccode\u003e@​nikolauspschuetz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3389\"\u003eencode/starlette#3389\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimit \u003ccode\u003eFileResponse\u003c/code\u003e to 100 ranges by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3430\"\u003eencode/starlette#3430\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/encode/starlette/compare/1.5.0...1.5.1\"\u003ehttps://github.com/encode/starlette/compare/1.5.0...1.5.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 1.5.0\u003c/h2\u003e\n\u003cp\u003eThis release is all about giving \u003ccode\u003eGZipMiddleware\u003c/code\u003e some love. 🗜️\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eexclude_content_types\u003c/code\u003e parameter to \u003ccode\u003eGZipMiddleware\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/encode/starlette/pull/3418\"\u003eencode/starlette#3418\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFlush GZip output for each streamed chunk by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3419\"\u003eencode/starlette#3419\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSkip compression of partial responses in \u003ccode\u003eGZipMiddleware\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/encode/starlette/pull/3420\"\u003eencode/starlette#3420\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpand default excluded content types in \u003ccode\u003eGZipMiddleware\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/encode/starlette/pull/3421\"\u003eencode/starlette#3421\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/encode/starlette/compare/1.4.1...1.5.0\"\u003ehttps://github.com/encode/starlette/compare/1.4.1...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 1.4.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDefault \u003ccode\u003ethread_minimum_size\u003c/code\u003e in \u003ccode\u003eGZipResponder\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/starlette/pull/3415\"\u003eKludex/starlette#3415\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/starlette/compare/1.4.0...1.4.1\"\u003ehttps://github.com/Kludex/starlette/compare/1.4.0...1.4.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 1.4.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eLazily allocate GZipMiddleware compression resources 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/starlette/pull/3407\"\u003eKludex/starlette#3407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ezlib.compressobj\u003c/code\u003e instead of \u003ccode\u003eGzipFile\u003c/code\u003e in \u003ccode\u003eGZipMiddleware\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/starlette/pull/3411\"\u003eKludex/starlette#3411\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOffload large GZip compression 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/starlette/pull/3410\"\u003eKludex/starlette#3410\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/benberryallwood\"\u003e\u003ccode\u003e@​benberryallwood\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3334\"\u003eKludex/starlette#3334\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lkk7\"\u003e\u003ccode\u003e@​lkk7\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/starlette/pull/3359\"\u003eKludex/starlette#3359\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/starlette/compare/1.3.1...1.4.0\"\u003ehttps://github.com/Kludex/starlette/compare/1.3.1...1.4.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/Kludex/starlette/blob/main/docs/release-notes.md\"\u003estarlette's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.0 (August 8, 2026)\u003c/h2\u003e\n\u003ch4\u003eAdded\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003emax_body_size\u003c/code\u003e to \u003ccode\u003eStarlette\u003c/code\u003e and route classes \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3431\"\u003e#3431\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eExpose \u003ccode\u003ehttp.response.debug\u003c/code\u003e information via response extensions \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3130\"\u003e#3130\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.5.1 (August 8, 2026)\u003c/h2\u003e\n\u003ch4\u003eFixed\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eReject inverted single-byte ranges in \u003ccode\u003eFileResponse\u003c/code\u003e \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3389\"\u003e#3389\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eLimit \u003ccode\u003eFileResponse\u003c/code\u003e to 100 ranges \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3430\"\u003e#3430\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.5.0 (August 8, 2026)\u003c/h2\u003e\n\u003ch4\u003eAdded\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eexclude_content_types\u003c/code\u003e parameter to \u003ccode\u003eGZipMiddleware\u003c/code\u003e \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3418\"\u003e#3418\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanged\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eExpand default excluded content types in \u003ccode\u003eGZipMiddleware\u003c/code\u003e \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3421\"\u003e#3421\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixed\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFlush GZip output for each streamed chunk \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3419\"\u003e#3419\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eSkip compression of partial responses in \u003ccode\u003eGZipMiddleware\u003c/code\u003e \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3420\"\u003e#3420\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.4.1 (August 5, 2026)\u003c/h2\u003e\n\u003ch4\u003eFixed\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eDefault \u003ccode\u003ethread_minimum_size\u003c/code\u003e to 128 KiB in \u003ccode\u003eGZipResponder\u003c/code\u003e, keeping it usable without the new keyword argument \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3415\"\u003e#3415\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.4.0 (August 5, 2026)\u003c/h2\u003e\n\u003ch4\u003eAdded\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eOffload large GZip compression to a worker thread, keeping the event loop responsive. \u003ccode\u003eGZipMiddleware\u003c/code\u003e accepts a new \u003ccode\u003ethread_minimum_size\u003c/code\u003e parameter (default 128 KiB) controlling the minimum body chunk size compressed in a thread \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3410\"\u003e#3410\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanged\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003ezlib.compressobj\u003c/code\u003e instead of \u003ccode\u003eGzipFile\u003c/code\u003e in \u003ccode\u003eGZipMiddleware\u003c/code\u003e, reducing memory usage during compression \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3411\"\u003e#3411\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eLazily allocate \u003ccode\u003eGZipMiddleware\u003c/code\u003e compression resources, avoiding compressor allocation for responses that are never compressed \u003ca href=\"https://redirect.github.com/encode/starlette/pull/3407\"\u003e#3407\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/Kludex/starlette/commit/4f250d6b814587e20c5365f0a5f0c4d42bcb929f\"\u003e\u003ccode\u003e4f250d6\u003c/code\u003e\u003c/a\u003e Version 1.6.0 (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3434\"\u003e#3434\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/9eea41ad3c26ad21b9bdfe4578c1cdad6c9b9ac2\"\u003e\u003ccode\u003e9eea41a\u003c/code\u003e\u003c/a\u003e Expose \u003ccode\u003ehttp.response.debug\u003c/code\u003e info via response extensions (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3130\"\u003e#3130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/38f8999a229610b36f39d11f67d80515a15c6330\"\u003e\u003ccode\u003e38f8999\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003emax_body_size\u003c/code\u003e to \u003ccode\u003eStarlette\u003c/code\u003e and route classes (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3431\"\u003e#3431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/c41236c03868fb3779a64101f4ea88cd47877e23\"\u003e\u003ccode\u003ec41236c\u003c/code\u003e\u003c/a\u003e Version 1.5.1 (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3432\"\u003e#3432\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/9c500db197859dba4a8db13fa8e7d2c55de8152c\"\u003e\u003ccode\u003e9c500db\u003c/code\u003e\u003c/a\u003e Limit \u003ccode\u003eFileResponse\u003c/code\u003e to 100 ranges (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3430\"\u003e#3430\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/78ae82cad482fe66a73fb1217f0a6609b3f998f6\"\u003e\u003ccode\u003e78ae82c\u003c/code\u003e\u003c/a\u003e Reject inverted single-byte Range like bytes=5-4 (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3389\"\u003e#3389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/c1d6edaf43920104d4389e983c3e0314f6af14cf\"\u003e\u003ccode\u003ec1d6eda\u003c/code\u003e\u003c/a\u003e chore(deps): bump pymdown-extensions from 11.0 to 11.0.1 (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3429\"\u003e#3429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/ee66ca48418780d6415d231851b31464febc32de\"\u003e\u003ccode\u003eee66ca4\u003c/code\u003e\u003c/a\u003e chore(deps): bump the python-packages group across 1 directory with 8 updates...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/00d10167523f819d39d5ca36732348d58645a447\"\u003e\u003ccode\u003e00d1016\u003c/code\u003e\u003c/a\u003e fix(tests): skip test_staticfiles_filename_too_long on Windows where os.pathc...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/starlette/commit/d96887ea7b49db3d1d15994be6438c7fe99936f4\"\u003e\u003ccode\u003ed96887e\u003c/code\u003e\u003c/a\u003e Add Pydantic Logfire banner to the docs (\u003ca href=\"https://redirect.github.com/Kludex/starlette/issues/3428\"\u003e#3428\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/starlette/compare/1.3.1...1.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn` from 0.37.0 to 0.52.4\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.52.4\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\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.52.3...0.52.4\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.3\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.24 and use its combined receive path, improving HTTP/1.1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3067\"\u003e#3067\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.52.2...0.52.3\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.2...0.52.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.2\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.22, fixing bodyless request receives and improving HTTP/1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3063\"\u003e#3063\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.52.1...0.52.2\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.1...0.52.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.1\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComplete the closing handshake on server-initiated WebSocket closes in the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e and \u003ccode\u003ewsproto\u003c/code\u003e implementations, waiting for the client's close reply with a 10 second timeout instead of resetting the connection (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing write flow control to the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, preventing data truncation on server-initiated closes with large in-flight payloads (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3048\"\u003e#3048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle connection loss while a WebSocket write is waiting on backpressure (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3050\"\u003e#3050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eContent-Type\u003c/code\u003e and \u003ccode\u003eContent-Length\u003c/code\u003e headers from WebSocket denial responses on the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, and deliver non-UTF-8 denial bodies intact (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3041\"\u003e#3041\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.52.0...0.52.1\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.0...0.52.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.52.0\u003c/h2\u003e\n\u003cp\u003eThis release adds an experimental HTTP/1.1 implementation backed by \u003ca href=\"https://zttp.marcelotryle.com/\"\u003ezttp\u003c/a\u003e, a sans-IO HTTP parser I've been developing on the side: a core written in Zig, with bindings to Python. It has been running under a fuzzer for some weeks now, and has been through multiple rounds of security auditing.\u003c/p\u003e\n\u003cp\u003eIt is still \u003cstrong\u003eexperimental\u003c/strong\u003e, so don't put it in front of production traffic yet. Try it with \u003ccode\u003e--http zttp\u003c/code\u003e, and please send any feedback to the \u003ca href=\"https://github.com/Kludex/uvicorn/issues\"\u003eissue tracker\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an experimental \u003ccode\u003ezttp\u003c/code\u003e HTTP/1.1 implementation, selectable with \u003ccode\u003e--http zttp\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2979\"\u003e#2979\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKeep non-ASCII WebSocket request headers intact with websockets 17.0, which encodes them with ISO-8859-1 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3036\"\u003e#3036\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.51.0...0.52.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.51.0...0.52.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.51.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRestart workers with overlap on SIGHUP for near-zero-downtime reloads 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/3025\"\u003eKludex/uvicorn#3025\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.52.4 (August 18, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.3 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.24 and use its combined receive path, improving HTTP/1.1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3067\"\u003e#3067\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.2 (August 13, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003ezttp\u003c/code\u003e to 0.0.22, fixing bodyless request receives and improving HTTP/1 request parsing performance (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3063\"\u003e#3063\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.1 (August 1, 2026)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eComplete the closing handshake on server-initiated WebSocket closes in the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e and \u003ccode\u003ewsproto\u003c/code\u003e implementations, waiting for the client's close reply with a 10 second timeout instead of resetting the connection (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3053\"\u003e#3053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd missing write flow control to the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, preventing data truncation on server-initiated closes with large in-flight payloads (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3048\"\u003e#3048\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eHandle connection loss while a WebSocket write is waiting on backpressure (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3050\"\u003e#3050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eContent-Type\u003c/code\u003e and \u003ccode\u003eContent-Length\u003c/code\u003e headers from WebSocket denial responses on the \u003ccode\u003ewebsockets-sansio\u003c/code\u003e implementation, and deliver non-UTF-8 denial bodies intact (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3041\"\u003e#3041\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.52.0 (July 29, 2026)\u003c/h2\u003e\n\u003cp\u003eThis release adds an experimental HTTP/1.1 implementation backed by \u003ca href=\"https://zttp.marcelotryle.com/\"\u003ezttp\u003c/a\u003e, a sans-IO HTTP parser I've been developing on the side: a core written in Zig, with bindings to Python. It has been running under a fuzzer for some weeks now, and has been through multiple rounds of security auditing.\u003c/p\u003e\n\u003cp\u003eIt is still \u003cstrong\u003eexperimental\u003c/strong\u003e, so don't put it in front of production traffic yet. Try it with \u003ccode\u003e--http zttp\u003c/code\u003e, and please send any feedback to the \u003ca href=\"https://github.com/Kludex/uvicorn/issues\"\u003eissue tracker\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd an experimental \u003ccode\u003ezttp\u003c/code\u003e HTTP/1.1 implementation, selectable with \u003ccode\u003e--http zttp\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2979\"\u003e#2979\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eKeep non-ASCII WebSocket request headers intact with websockets 17.0, which encodes them with ISO-8859-1 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3036\"\u003e#3036\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.51.0 (July 8, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRestart workers one at a time on \u003ccode\u003eSIGHUP\u003c/code\u003e, bringing each replacement up before retiring the old worker, so reloads no longer drop requests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3025\"\u003e#3025\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u003ccode\u003ecolorama\u003c/code\u003e from the \u003ccode\u003estandard\u003c/code\u003e extra (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3027\"\u003e#3027\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/8988c23704fc373c9206cca53ec57dd8ad7f44a5\"\u003e\u003ccode\u003e8988c23\u003c/code\u003e\u003c/a\u003e Stabilize macOS Python 3.13 signal shutdown tests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3084\"\u003e#3084\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/898ddca9254b53c5bf7a6ee509756704caaa949f\"\u003e\u003ccode\u003e898ddca\u003c/code\u003e\u003c/a\u003e Update PyPI publish action to version 1.14.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3083\"\u003e#3083\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3869f8aac2bdd040fa3fbe564e1dad67e2637641\"\u003e\u003ccode\u003e3869f8a\u003c/code\u003e\u003c/a\u003e Restore Mermaid diagram rendering (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3080\"\u003e#3080\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/64148a9c574e1eb87d3d09b3ce4c256606f8d973\"\u003e\u003ccode\u003e64148a9\u003c/code\u003e\u003c/a\u003e Version 0.52.4 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3079\"\u003e#3079\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9e9e5691bd14d5c4cd66d9bd76c7730bc48461a2\"\u003e\u003ccode\u003e9e9e569\u003c/code\u003e\u003c/a\u003e docs: correct release example PR number (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3072\"\u003e#3072\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/b783dacab50b9d6767b0cf65826b2dc3aae21909\"\u003e\u003ccode\u003eb783dac\u003c/code\u003e\u003c/a\u003e Remove duplicate Date header from SansIO WebSocket handshakes (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/27019b2a4b1fa6d68a289fcf7d738fbdc6ee4e5d\"\u003e\u003ccode\u003e27019b2\u003c/code\u003e\u003c/a\u003e chore(deps): bump the python-packages group across 1 directory with 11 update...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/1b6427311bb84a15addee688f6d41d96e33f8b0a\"\u003e\u003ccode\u003e1b64273\u003c/code\u003e\u003c/a\u003e Fix a typo in index.md (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3006\"\u003e#3006\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/a68da608147c5f79d962352dce11de8f6e32d972\"\u003e\u003ccode\u003ea68da60\u003c/code\u003e\u003c/a\u003e Version 0.52.3 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3068\"\u003e#3068\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/6e3bb4c5c22531c16d341f2da49f2653307f412f\"\u003e\u003ccode\u003e6e3bb4c\u003c/code\u003e\u003c/a\u003e Use zttp 0.0.24 fast receive path (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3067\"\u003e#3067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.37.0...0.52.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `azure-identity` from 1.23.0 to 1.25.3\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/a989ea467731265fdf097b622ba254703187746b\"\u003e\u003ccode\u003ea989ea4\u003c/code\u003e\u003c/a\u003e [Identity] Prep patch release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/79728834e7f38018d372860cf9117bf51d9ed417\"\u003e\u003ccode\u003e7972883\u003c/code\u003e\u003c/a\u003e [Identity] Adjust refresh logic (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/45496\"\u003e#45496\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/04764a9a8a0cb59aab6421b41152246853dfcfe8\"\u003e\u003ccode\u003e04764a9\u003c/code\u003e\u003c/a\u003e add psscript to convert apiview json files to md (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/45589\"\u003e#45589\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/50e01659d7204865dfa07c5ece1019ed9a229b4f\"\u003e\u003ccode\u003e50e0165\u003c/code\u003e\u003c/a\u003e Sync eng/common directory with azure-sdk-tools for PR 14461 (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/45646\"\u003e#45646\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/5333117e0e181404ff4deaa757e9b6ef86dabf8b\"\u003e\u003ccode\u003e5333117\u003c/code\u003e\u003c/a\u003e Add Bo to /sdk/ai/azure-ai-projects owner list (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/45664\"\u003e#45664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/775d6942e4335422fc69da8e997a6069e356b104\"\u003e\u003ccode\u003e775d694\u003c/code\u003e\u003c/a\u003e Doc and automation updates for .github sync directory changes (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/45630\"\u003e#45630\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/c6e48b5cd71adf5728a5e2f33bc9f62fb221221f\"\u003e\u003ccode\u003ec6e48b5\u003c/code\u003e\u003c/a\u003e [Core] Prepare release (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/45656\"\u003e#45656\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/ae769c4e9379c8d309bffa5ccb76dcfba64e1f71\"\u003e\u003ccode\u003eae769c4\u003c/code\u003e\u003c/a\u003e Fix custom Memory Stores LRO poller operation (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/45662\"\u003e#45662\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/6074492844d670316eb171756483f1394a6c94c7\"\u003e\u003ccode\u003e6074492\u003c/code\u003e\u003c/a\u003e Add asset id none check in dt (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/45618\"\u003e#45618\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Azure/azure-sdk-for-python/commit/e1a986aeb7a8001bd3a4f336cf096c2b050aa480\"\u003e\u003ccode\u003ee1a986a\u003c/code\u003e\u003c/a\u003e Bump tar from 7.5.10 to 7.5.11 in /eng/common/tsp-client (\u003ca href=\"https://redirect.github.com/Azure/azure-sdk-for-python/issues/45640\"\u003e#45640\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Azure/azure-sdk-for-python/compare/azure-identity_1.23.0...azure-identity_1.25.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `websocket-client` from 1.9.0 to 1.9.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/websocket-client/websocket-client/releases\"\u003ewebsocket-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.9.2\u003c/h2\u003e\n\u003ch1\u003e1.9.2\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix race in \u003ccode\u003eWebSocketApp.close()\u003c/code\u003e when \u003ccode\u003erun_forever()\u003c/code\u003e thread clears the socket during the close handshake (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1057\"\u003e#1057\u003c/a\u003e, fixes \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1055\"\u003e#1055\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.9.1\u003c/h2\u003e\n\u003ch1\u003e1.9.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support to setup config and CI (f2bc97a)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e dropping close frame when reason is str (2f22e2e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e type annotation and docstring for timeout and reason (d69f730)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eabort()\u003c/code\u003e robust for sockets that cannot shutdown, same logic as \u003ccode\u003eshutdown()\u003c/code\u003e (1904e3d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects missing a \u003ccode\u003eLocation\u003c/code\u003e header (97e34db)\u003c/li\u003e\n\u003cli\u003eRaise when WebSocket connect redirect limit is exhausted (be0d38d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects to invalid targets (62ef6af)\u003c/li\u003e\n\u003cli\u003eFix unformatted ABNF validation error messages (0145b7b)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003evalidate_utf8()\u003c/code\u003e crash on str input (4a8e6ed)\u003c/li\u003e\n\u003cli\u003eStore \u003ccode\u003estatus_message\u003c/code\u003e on \u003ccode\u003eWebSocketBadStatusException\u003c/code\u003e (368aeda)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for \u003ccode\u003echeck_hostname\u003c/code\u003e with \u003ccode\u003eCERT_NONE\u003c/code\u003e (0232aca)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ehandleDisconnect\u003c/code\u003e type annotation: None default requires Optional (20f3712)\u003c/li\u003e\n\u003cli\u003eRemove unreachable \u003ccode\u003enot frame\u003c/code\u003e check in \u003ccode\u003erecv_data_frame()\u003c/code\u003e (b684242)\u003c/li\u003e\n\u003cli\u003eSet \u003ccode\u003eproxy_timeout\u003c/code\u003e on \u003ccode\u003eproxy_info\u003c/code\u003e without a proxy host (68f0aed)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e_wsdump.py\u003c/code\u003e bytes annotations and remove dead code (5ecc6e4)\u003c/li\u003e\n\u003cli\u003eExport \u003ccode\u003eSTATUS_SERVICE_RESTART\u003c/code\u003e and \u003ccode\u003eSTATUS_TRY_AGAIN_LATER\u003c/code\u003e close codes (22279c4)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eextract_err_message()\u003c/code\u003e to always return str (e2091bd)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketProxyException\u003c/code\u003e for SOCKS proxy without a port, correct proxy port docs (3c62bdf)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for malformed HTTP responses (04f4d94)\u003c/li\u003e\n\u003cli\u003eFix docs examples using dead or unreachable endpoints (2fc92c0)\u003c/li\u003e\n\u003cli\u003eAdd pyproject.toml, drop deprecated setup.py metadata (8b34f50)\u003c/li\u003e\n\u003cli\u003eApply linting (3b4ffab)\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/websocket-client/websocket-client/blob/master/ChangeLog\"\u003ewebsocket-client's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e1.9.2\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix race in \u003ccode\u003eWebSocketApp.close()\u003c/code\u003e when \u003ccode\u003erun_forever()\u003c/code\u003e thread clears the socket during the close handshake (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1057\"\u003e#1057\u003c/a\u003e, fixes \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1055\"\u003e#1055\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e1.9.1\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support to setup config and CI (f2bc97a)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e dropping close frame when reason is str (2f22e2e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eclose()\u003c/code\u003e type annotation and docstring for timeout and reason (d69f730)\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eabort()\u003c/code\u003e robust for sockets that cannot shutdown, same logic as \u003ccode\u003eshutdown()\u003c/code\u003e (1904e3d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects missing a \u003ccode\u003eLocation\u003c/code\u003e header (97e34db)\u003c/li\u003e\n\u003cli\u003eRaise when WebSocket connect redirect limit is exhausted (be0d38d)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for redirects to invalid targets (62ef6af)\u003c/li\u003e\n\u003cli\u003eFix unformatted ABNF validation error messages (0145b7b)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003evalidate_utf8()\u003c/code\u003e crash on str input (4a8e6ed)\u003c/li\u003e\n\u003cli\u003eStore \u003ccode\u003estatus_message\u003c/code\u003e on \u003ccode\u003eWebSocketBadStatusException\u003c/code\u003e (368aeda)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for \u003ccode\u003echeck_hostname\u003c/code\u003e with \u003ccode\u003eCERT_NONE\u003c/code\u003e (0232aca)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ehandleDisconnect\u003c/code\u003e type annotation: None default requires Optional (20f3712)\u003c/li\u003e\n\u003cli\u003eRemove unreachable \u003ccode\u003enot frame\u003c/code\u003e check in \u003ccode\u003erecv_data_frame()\u003c/code\u003e (b684242)\u003c/li\u003e\n\u003cli\u003eSet \u003ccode\u003eproxy_timeout\u003c/code\u003e on \u003ccode\u003eproxy_info\u003c/code\u003e without a proxy host (68f0aed)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e_wsdump.py\u003c/code\u003e bytes annotations and remove dead code (5ecc6e4)\u003c/li\u003e\n\u003cli\u003eExport \u003ccode\u003eSTATUS_SERVICE_RESTART\u003c/code\u003e and \u003ccode\u003eSTATUS_TRY_AGAIN_LATER\u003c/code\u003e close codes (22279c4)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eextract_err_message()\u003c/code\u003e to always return str (e2091bd)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketProxyException\u003c/code\u003e for SOCKS proxy without a port, correct proxy port docs (3c62bdf)\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003eWebSocketException\u003c/code\u003e for malformed HTTP responses (04f4d94)\u003c/li\u003e\n\u003cli\u003eFix docs examples using dead or unreachable endpoints (2fc92c0)\u003c/li\u003e\n\u003cli\u003eAdd pyproject.toml, drop deprecated setup.py metadata (8b34f50)\u003c/li\u003e\n\u003cli\u003eApply linting (3b4ffab)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/12225f5ce6e27536be3b0da85fd763ed75581bcc\"\u003e\u003ccode\u003e12225f5\u003c/code\u003e\u003c/a\u003e 1.9.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/09f2828f2496323ec6b95630ac69b79f51e65562\"\u003e\u003ccode\u003e09f2828\u003c/code\u003e\u003c/a\u003e Fix race in WebSocketApp.close() when run_forever thread clears sock (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1057\"\u003e#1057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/b5435d66b152230777c0530b7af81c3549fae5d8\"\u003e\u003ccode\u003eb5435d6\u003c/code\u003e\u003c/a\u003e 1.9.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/26f1c6439eb71489f2c5a2869942e049b78c2e41\"\u003e\u003ccode\u003e26f1c64\u003c/code\u003e\u003c/a\u003e Fix custom dispatcher SSL errors and socket timeouts (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1049\"\u003e#1049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/2a1b4893241250ed1337c24b322b0d66e0b7d5ca\"\u003e\u003ccode\u003e2a1b489\u003c/code\u003e\u003c/a\u003e Add ConnectionResetError to improve custom dispatcher error handling when ser...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/10d9159af9ba1ecb76e0ebb6a04edfd990eacbbb\"\u003e\u003ccode\u003e10d9159\u003c/code\u003e\u003c/a\u003e Improve close frame handling to fix \u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1043\"\u003e#1043\u003c/a\u003e and add tests (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1044\"\u003e#1044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/websocket-client/websocket-client/commit/75a361a80374dd624ef711410317c51489c7b256\"\u003e\u003ccode\u003e75a361a\u003c/code\u003e\u003c/a\u003e Closing open issues (\u003ca href=\"https://redirect.github.com/websocket-client/websocket-client/issues/1037\"\u003e#1037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/websocket-client/websocket-client/compare/v1.9.0...v1.9.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.14.9 to 0.16.5\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.16.5\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-27.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow rules without codes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28049\"\u003e#28049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIntroduce category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27666\"\u003e#27666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate preview default rules and categories (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27877\"\u003e#27877\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Detect blocking generic HTTP requests (\u003ccode\u003eASYNC210\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28024\"\u003e#28024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-datetimez\u003c/code\u003e] Allow timezone-safe \u003ccode\u003estrptime\u003c/code\u003e chains (\u003ccode\u003eDTZ007\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28023\"\u003e#28023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Respect side effects in \u003ccode\u003elambda\u003c/code\u003e defaults (\u003ccode\u003eSIM401\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28000\"\u003e#28000\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix duplicated \u0026quot;of\u0026quot; in \u003ccode\u003eClientOptions\u003c/code\u003e doc comment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27978\"\u003e#27978\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument rule acceptance guidelines (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27910\"\u003e#27910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument the new category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27906\"\u003e#27906\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/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sharkdp\"\u003e\u003ccode\u003e@​sharkdp\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelle-openai\"\u003e\u003ccode\u003e@​jelle-openai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aarushkandukoori\"\u003e\u003ccode\u003e@​aarushkandukoori\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.16.5\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.16.5/ruff-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eInstall prebuilt binaries via powershell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003epowershell -ExecutionPolicy Bypass -c \u0026quot;irm https://releases.astral.sh/github/ruff/releases/download/0.16.5/ruff-installer.ps1 | iex\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eDownload ruff 0.16.5\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/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.16.5\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-27.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow rules without codes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28049\"\u003e#28049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIntroduce category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27666\"\u003e#27666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate preview default rules and categories (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27877\"\u003e#27877\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Detect blocking generic HTTP requests (\u003ccode\u003eASYNC210\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28024\"\u003e#28024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-datetimez\u003c/code\u003e] Allow timezone-safe \u003ccode\u003estrptime\u003c/code\u003e chains (\u003ccode\u003eDTZ007\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28023\"\u003e#28023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Respect side effects in \u003ccode\u003elambda\u003c/code\u003e defaults (\u003ccode\u003eSIM401\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28000\"\u003e#28000\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix duplicated \u0026quot;of\u0026quot; in \u003ccode\u003eClientOptions\u003c/code\u003e doc comment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27978\"\u003e#27978\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument rule acceptance guidelines (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27910\"\u003e#27910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument the new category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27906\"\u003e#27906\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/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sharkdp\"\u003e\u003ccode\u003e@​sharkdp\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelle-openai\"\u003e\u003ccode\u003e@​jelle-openai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aarushkandukoori\"\u003e\u003ccode\u003e@​aarushkandukoori\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.16.4\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-20.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-use-pathlib\u003c/code\u003e] Add autofix for \u003ccode\u003ePTH116\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26460\"\u003e#26460\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Restrict \u003ccode\u003edelete-full-slice\u003c/code\u003e to lists (\u003ccode\u003eFURB131\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27711\"\u003e#27711\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Skip \u003ccode\u003eFURB101\u003c/code\u003e and \u003ccode\u003eFURB103\u003c/code\u003e when the \u003ccode\u003eopen\u003c/code\u003e argument is a file descriptor (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27643\"\u003e#27643\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eInvalidInstruction\u003c/code\u003e on Windows CPUs that do not support \u003ccode\u003ePOPCNT\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27803\"\u003e#27803\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Emit semantic syntax errors in string type definitions as \u003ccode\u003eF722\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27835\"\u003e#27835\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Allow \u003ccode\u003eos._exit\u003c/code\u003e imports in \u003ccode\u003eimport-private-name\u003c/code\u003e (\u003ccode\u003ePLC2701\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27738\"\u003e#27738\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/9e4938c4a60bed3e87a11ee1e1db1bd23f4d964a\"\u003e\u003ccode\u003e9e4938c\u003c/code\u003e\u003c/a\u003e Bump 0.16.5 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28110\"\u003e#28110\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/aad0e909ef1390f4b2a3ba8aa0a67fb8ea5cbacd\"\u003e\u003ccode\u003eaad0e90\u003c/code\u003e\u003c/a\u003e Allow rules without codes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28049\"\u003e#28049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5fdab73c5052350400c36b08c5d7710210343bc4\"\u003e\u003ccode\u003e5fdab73\u003c/code\u003e\u003c/a\u003e Update preview default rules and categories (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27877\"\u003e#27877\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/29c8e5b2d0a46eb7dc4ff11c1b0a0dc5ccea52e4\"\u003e\u003ccode\u003e29c8e5b\u003c/code\u003e\u003c/a\u003e Document rule acceptance guidelines (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27910\"\u003e#27910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/50a4d7fd106603a5616b01ac3bef3306252b248f\"\u003e\u003ccode\u003e50a4d7f\u003c/code\u003e\u003c/a\u003e Document the new category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27906\"\u003e#27906\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ada87950ea188f882f69b7bd6e2213a9696e3ee2\"\u003e\u003ccode\u003eada8795\u003c/code\u003e\u003c/a\u003e Introduce category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27666\"\u003e#27666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d8947238863b61922bfc83f07edcc697c1cc07c0\"\u003e\u003ccode\u003ed894723\u003c/code\u003e\u003c/a\u003e [ty] Infer lambda parameters through callable type aliases (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28109\"\u003e#28109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/2685fdebbcf9938736fed8c45886a629f9c99a06\"\u003e\u003ccode\u003e2685fde\u003c/code\u003e\u003c/a\u003e [ty] Narrow functional enum members in \u003ccode\u003e==\u003c/code\u003e and \u003ccode\u003ematch\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28103\"\u003e#28103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/efcffd2178ce62e9951a53d4c50cadc225a0cfec\"\u003e\u003ccode\u003eefcffd2\u003c/code\u003e\u003c/a\u003e [ty] Intersection simplifications with subtype-related generic specialization...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/eb780488037504e11f145ed778654fd8a825028b\"\u003e\u003ccode\u003eeb78048\u003c/code\u003e\u003c/a\u003e [ty] Bump ecosystem-analyzer for HTML escaping (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28104\"\u003e#28104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.14.9...0.16.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.18.2 to 2.3.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003eMypy 2.3.1\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix mypyc crash on double yielding Iterators (Daniël van Noord, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21826\"\u003e21826\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix mypyc \u003ccode\u003edefault_factory\u003c/code\u003e for inherited dataclass (Daniël van Noord, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21785\"\u003e21785\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClear mypyc coroutine env on coroutine completion (Piotr Sawicki, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21734\"\u003e21734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash when unpacking return value from overload (Shantanu, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21830\"\u003e21830\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAcknowledgements\u003c/h3\u003e\n\u003cp\u003eThanks to all mypy contributors who contributed to this release:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAgriya Khetarpal\u003c/li\u003e\n\u003cli\u003eEthan Sarp\u003c/li\u003e\n\u003cli\u003eIvan Levkivskyi\u003c/li\u003e\n\u003cli\u003eJingchen Ye\u003c/li\u003e\n\u003cli\u003eJukka Lehtosalo\u003c/li\u003e\n\u003cli\u003ePiotr Sawicki\u003c/li\u003e\n\u003cli\u003eShantanu\u003c/li\u003e\n\u003cli\u003eTom Bannink\u003c/li\u003e\n\u003cli\u003eViktor Szépe\u003c/li\u003e\n\u003cli\u003eygale\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eI'd also like to thank my employer, Dropbox, for supporting mypy development.\u003c/p\u003e\n\u003ch2\u003eMypy 2.2\u003c/h2\u003e\n\u003cp\u003eWe've just uploaded mypy 2.2.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\u003eSupport for Closed TypedDicts (PEP 728)\u003c/h3\u003e\n\u003cp\u003eMypy now supports closed TypedDicts as specified in PEP 728. A closed TypedDict cannot have extra\nkeys beyond those explicitly defined. This allows the type checker to determine that certain\noperations are safe when they otherwise wouldn't be due to the potential presence of unknown keys.\u003c/p\u003e\n\u003cp\u003eYou can use the \u003ccode\u003eclosed\u003c/code\u003e keyword argument with \u003ccode\u003eTypedDict\u003c/code\u003e:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003eHasName = TypedDict(\u0026quot;HasName\u0026quot;, {\u0026quot;name\u0026quot;: str})\nHasOnlyName = TypedDict(\u0026quot;HasOnlyName\u0026quot;, {\u0026quot;name\u0026quot;: str}, closed=True)\nMovie = TypedDict(\u0026quot;Movie\u0026quot;, {\u0026quot;name\u0026quot;: str, \u0026quot;year\u0026quot;: int})\n\u003cp\u003emovie: Movie = {\u0026quot;name\u0026quot;: \u0026quot;Nimona\u0026quot;, \u0026quot;year\u0026quot;: 2023}\nhas_name: HasName = movie  # OK: HasName is open (default)\nhas_only_name: HasOnlyName = movie  # Error: HasOnlyName is closed and Movie has extra \u0026quot;year\u0026quot; key\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt;\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/d642c4478e9e3acbe9233edbe17ffc569a1a778c\"\u003e\u003ccode\u003ed642c44\u003c/code\u003e\u003c/a\u003e Bump version to 2.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/a39242983d3c2cb85886a1eb6d5869180672784c\"\u003e\u003ccode\u003ea392429\u003c/code\u003e\u003c/a\u003e [mypyc] Fix crash on double yielding Iterators (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21826\"\u003e#21826\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/4843e7773e7dc8fe3f1fd1319277d6d11cd6cdb3\"\u003e\u003ccode\u003e4843e77\u003c/code\u003e\u003c/a\u003e [mypyc] Fix \u003ccode\u003edefault_factory\u003c/code\u003e for inherited dataclass (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21785\"\u003e#21785\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/14f5df93ed8d1be4f4cc9c447eb2e6e619362e05\"\u003e\u003ccode\u003e14f5df9\u003c/code\u003e\u003c/a\u003e [mypyc] Clear coroutine env on coroutine completion (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21734\"\u003e#21734\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/6dfa06dda6e34912279e498d35a43ba6dc30bfee\"\u003e\u003ccode\u003e6dfa06d\u003c/code\u003e\u003c/a\u003e Fix crash when unpacking return value from overload (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21830\"\u003e#21830\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/a3857467da126d28b55724e8bb682019df9a503e\"\u003e\u003ccode\u003ea385746\u003c/code\u003e\u003c/a\u003e Bump version to 2.3.1+dev\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/8aabf8435357eaffceca7237f371e293b8168e54\"\u003e\u003ccode\u003e8aabf84\u003c/code\u003e\u003c/a\u003e Drop +dev from version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/4d8ad2ab5e86c99581b73775f2c00b9b8265b589\"\u003e\u003ccode\u003e4d8ad2a\u003c/code\u003e\u003c/a\u003e Update changelog for 2.3 release (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21728\"\u003e#21728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/2c2154672040c52e481f423854d104e6cf172585\"\u003e\u003ccode\u003e2c21546\u003c/code\u003e\u003c/a\u003e [mypyc] Update documentation of race conditions under free threading (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21726\"\u003e#21726\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/a9f62a3cf98a58a7a2607b7c81695802b39f5edc\"\u003e\u003ccode\u003ea9f62a3\u003c/code\u003e\u003c/a\u003e [mypyc] Make attribute access memory safe on free-threaded builds (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21705\"\u003e#21705\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.18.2...v2.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bandit` from 1.9.2 to 1.9.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/bandit/releases\"\u003ebandit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: fixed some typos in comments by \u003ca href=\"https://github.com/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/login-action from 3.6.0 to 3.7.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/PyCQA/bandit/pull/1353\"\u003ePyCQA/bandit#1353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.18.0 to 6.19.2 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/PyCQA/bandit/pull/1357\"\u003ePyCQA/bandit#1357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B613 crash when reading from stdin by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude filename in nosec 'no failed test' warning by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1363\"\u003ePyCQA/bandit#1363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B615 false positive when revision is set via variable by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1358\"\u003ePyCQA/bandit#1358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLower version guard in check_ast_node to Python 3.12 by \u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B106 reporting wrong line number on multiline function calls by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1360\"\u003ePyCQA/bandit#1360\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/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1334\"\u003ePyCQA/bandit#1334\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/PyCQA/bandit/pull/1335\"\u003ePyCQA/bandit#1335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B608 to detect \u003ccode\u003eVALUES(\u003c/code\u003e without space by \u003ca href=\"https://github.com/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd check for hardcoded passwords in dicts. by \u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\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/PyCQA/bandit/pull/1341\"\u003ePyCQA/bandit#1341\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate tox tests for Python 3.10 by \u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/setup-buildx-action from 3.11.1 to 3.12.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/PyCQA/bandit/pull/1347\"\u003ePyCQA/bandit#1347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimit B614 to torch.load deserializers by \u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\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/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/wi...\n\n_Description has been truncated_","html_url":"https://github.com/joelparkerhenderson/Integration-Hub-Beta/pull/12","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/joelparkerhenderson%2FIntegration-Hub-Beta/issues/12","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/12/packages"}},{"old_version":"1.8.6","new_version":"1.9.4","update_type":"minor","path":null,"pr_created_at":"2026-09-01T05:48:06.000Z","version_change":"1.8.6 → 1.9.4","issue":{"uuid":"5308278035","node_id":"PR_kwDOTLE0x88AAAABBs3W-w","number":5,"state":"closed","title":"Bump the python-dependencies group with 6 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-10-01T05:45:48.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-01T05:48:06.000Z","updated_at":"2026-10-01T05:45:50.000Z","time_to_close":2591862,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python-dependencies","update_count":6,"packages":[{"name":"netmiko","old_version":"4.6.0","new_version":"4.7.0","repository_url":"https://github.com/ktbyers/netmiko"},{"name":"bandit","old_version":"1.8.6","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"},{"name":"pip-audit","old_version":"2.9.0","new_version":"2.10.1","repository_url":"https://github.com/pypa/pip-audit"},{"name":"pyinstaller","old_version":"6.21.0","new_version":"6.22.2","repository_url":"https://github.com/pyinstaller/pyinstaller"},{"name":"pytest","old_version":"8.4.2","new_version":"9.1.1","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"ruff","old_version":"0.12.12","new_version":"0.16.5","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 6 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [netmiko](https://github.com/ktbyers/netmiko) | `4.6.0` | `4.7.0` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.8.6` | `1.9.4` |\n| [pip-audit](https://github.com/pypa/pip-audit) | `2.9.0` | `2.10.1` |\n| [pyinstaller](https://github.com/pyinstaller/pyinstaller) | `6.21.0` | `6.22.2` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.2` | `9.1.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.12.12` | `0.16.5` |\n\nUpdates `netmiko` from 4.6.0 to 4.7.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ktbyers/netmiko/releases\"\u003enetmiko's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eNetmiko 4.7.0 Release\u003c/h2\u003e\n\u003ch2\u003eNew Platforms\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eOptilink GOLT in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3583\"\u003ektbyers/netmiko#3583\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCisco Access Points in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3584\"\u003ektbyers/netmiko#3584\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIPInfusion OcNOS (commit model) in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3596\"\u003ektbyers/netmiko#3596\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAviat WTM in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3602\"\u003ektbyers/netmiko#3602\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eNokia ISAM in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3725\"\u003ektbyers/netmiko#3725\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePerle IOLAN Console in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3738\"\u003ektbyers/netmiko#3738\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmartoptics DWDM in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3760\"\u003ektbyers/netmiko#3760\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAPC AOS in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3768\"\u003ektbyers/netmiko#3768\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOpenGear in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3769\"\u003ektbyers/netmiko#3769\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCisco WLC IOS in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3777\"\u003ektbyers/netmiko#3777\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCalix EXA in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3781\"\u003ektbyers/netmiko#3781\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHioso OLT in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3799\"\u003ektbyers/netmiko#3799\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHuawei ONT in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3800\"\u003ektbyers/netmiko#3800\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRaisecom ROS in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3802\"\u003ektbyers/netmiko#3802\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIIJ Seilos in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3804\"\u003ektbyers/netmiko#3804\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvara in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3805\"\u003ektbyers/netmiko#3805\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLancom LCOSsx5 in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3806\"\u003ektbyers/netmiko#3806\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFujitsu SIR in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3807\"\u003ektbyers/netmiko#3807\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHirschmann HIOS in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3808\"\u003ektbyers/netmiko#3808\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFurukawa FITELnet in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3810\"\u003ektbyers/netmiko#3810\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eZPE Nodegrid in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3835\"\u003ektbyers/netmiko#3835\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixes 'enable' call issue when device prompt is a substring of literal 'password' string in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3708\"\u003ektbyers/netmiko#3708\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing flags in re.search call in enable() in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3709\"\u003ektbyers/netmiko#3709\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAruba OS: Add file transfer support in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3691\"\u003ektbyers/netmiko#3691\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMinor updates to Aruba OS file transfer in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3711\"\u003ektbyers/netmiko#3711\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOcnos commit description map to 'comment' argument in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3714\"\u003ektbyers/netmiko#3714\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove superfluous executable bits in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3722\"\u003ektbyers/netmiko#3722\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typing hints for timeouts: change from int to float in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3720\"\u003ektbyers/netmiko#3720\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd py.typed and fix include/MANIFEST.in issues in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3723\"\u003ektbyers/netmiko#3723\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMikrotik space fix issue in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3739\"\u003ektbyers/netmiko#3739\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse proper type hints for session_log argument of BaseConnection constructor in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3727\"\u003ektbyers/netmiko#3727\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMinor perle fixes in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3740\"\u003ektbyers/netmiko#3740\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Check Point Gaia double command echo issue in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3742\"\u003ektbyers/netmiko#3742\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove Check Point Gaia in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3748\"\u003ektbyers/netmiko#3748\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Garderos GRS alt_prompt in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3733\"\u003ektbyers/netmiko#3733\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eGH Actions: updating Python and MacOS runner versions in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3755\"\u003ektbyers/netmiko#3755\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix error in enable_secret_handler() in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3759\"\u003ektbyers/netmiko#3759\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003enokia_isam improvements in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3754\"\u003ektbyers/netmiko#3754\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd cleanup method for graceful cleanup for Gaia in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3772\"\u003ektbyers/netmiko#3772\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd save config method for Gaia in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3773\"\u003ektbyers/netmiko#3773\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd additional search pattern for AOS-CX (e.g. CX 6300M) in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3774\"\u003ektbyers/netmiko#3774\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdva driver fixes in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3595\"\u003ektbyers/netmiko#3595\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIOS-XR add 'replace' option to commit method in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3668\"\u003ektbyers/netmiko#3668\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove Paramiko Cleanup in \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/pull/3675\"\u003ektbyers/netmiko#3675\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/ktbyers/netmiko/commit/1e28a763860dbda1522dacabaf66353f011001bd\"\u003e\u003ccode\u003e1e28a76\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ktbyers/netmiko/issues/3851\"\u003e#3851\u003c/a\u003e from ktbyers/develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ktbyers/netmiko/commit/33f6f5ed6c8a81a428b0ac8b1289f99dee2de16c\"\u003e\u003ccode\u003e33f6f5e\u003c/code\u003e\u003c/a\u003e Merge branch 'master' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ktbyers/netmiko/commit/e781ac9d98838e1236619c7ec40e12a9ecbcbadc\"\u003e\u003ccode\u003ee781ac9\u003c/code\u003e\u003c/a\u003e Update poetry lock file including paramiko version 5 (\u003ca href=\"https://redirect.github.com/ktbyers/netmiko/issues/3852\"\u003e#3852\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ktbyers/netmiko/commit/706ca1ffb62fd0c36dc9d952645da592bee60b38\"\u003e\u003ccode\u003e706ca1f\u003c/code\u003e\u003c/a\u003e Netmiko 4.7.0 Release (\u003ca href=\"https://redirect.github.com/ktbyers/netmiko/issues/3850\"\u003e#3850\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ktbyers/netmiko/commit/c27bb919411bc6ed242575c4af84f320cfc74709\"\u003e\u003ccode\u003ec27bb91\u003c/code\u003e\u003c/a\u003e Doc update (\u003ca href=\"https://redirect.github.com/ktbyers/netmiko/issues/3849\"\u003e#3849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ktbyers/netmiko/commit/560538864801ba4d587c25fe28dd42dd9e51fa9b\"\u003e\u003ccode\u003e5605388\u003c/code\u003e\u003c/a\u003e Minor fix for tests (\u003ca href=\"https://redirect.github.com/ktbyers/netmiko/issues/3848\"\u003e#3848\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ktbyers/netmiko/commit/4570e14d9c574f9de4cec2f68fed25552db1057c\"\u003e\u003ccode\u003e4570e14\u003c/code\u003e\u003c/a\u003e Fix exit_enable_mode issue with not verifying command echo (\u003ca href=\"https://redirect.github.com/ktbyers/netmiko/issues/3847\"\u003e#3847\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ktbyers/netmiko/commit/6105c7292a96dc544fc43149653f72c5b8f03fa0\"\u003e\u003ccode\u003e6105c72\u003c/code\u003e\u003c/a\u003e Fix typing import issue on PY3.13 (\u003ca href=\"https://redirect.github.com/ktbyers/netmiko/issues/3846\"\u003e#3846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ktbyers/netmiko/commit/eadebd7f59314708e11d8e5acd143957d9d74ebd\"\u003e\u003ccode\u003eeadebd7\u003c/code\u003e\u003c/a\u003e Add unit tests for SessionLog (Layer 1 + Layer 2) (\u003ca href=\"https://redirect.github.com/ktbyers/netmiko/issues/3843\"\u003e#3843\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ktbyers/netmiko/commit/2c1286d062b9bd0faf07cfd1feb216fb2f7dbf48\"\u003e\u003ccode\u003e2c1286d\u003c/code\u003e\u003c/a\u003e Fix session_log flush so data is written immediately on write() (\u003ca href=\"https://redirect.github.com/ktbyers/netmiko/issues/3841\"\u003e#3841\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ktbyers/netmiko/compare/v4.6.0...v4.7.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bandit` from 1.8.6 to 1.9.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/bandit/releases\"\u003ebandit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: fixed some typos in comments by \u003ca href=\"https://github.com/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/login-action from 3.6.0 to 3.7.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/PyCQA/bandit/pull/1353\"\u003ePyCQA/bandit#1353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.18.0 to 6.19.2 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/PyCQA/bandit/pull/1357\"\u003ePyCQA/bandit#1357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B613 crash when reading from stdin by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude filename in nosec 'no failed test' warning by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1363\"\u003ePyCQA/bandit#1363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B615 false positive when revision is set via variable by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1358\"\u003ePyCQA/bandit#1358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLower version guard in check_ast_node to Python 3.12 by \u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B106 reporting wrong line number on multiline function calls by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1360\"\u003ePyCQA/bandit#1360\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/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1334\"\u003ePyCQA/bandit#1334\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/PyCQA/bandit/pull/1335\"\u003ePyCQA/bandit#1335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B608 to detect \u003ccode\u003eVALUES(\u003c/code\u003e without space by \u003ca href=\"https://github.com/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd check for hardcoded passwords in dicts. by \u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\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/PyCQA/bandit/pull/1341\"\u003ePyCQA/bandit#1341\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate tox tests for Python 3.10 by \u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/setup-buildx-action from 3.11.1 to 3.12.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/PyCQA/bandit/pull/1347\"\u003ePyCQA/bandit#1347\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimit B614 to torch.load deserializers by \u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\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/kfess\"\u003e\u003ccode\u003e@​kfess\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1337\"\u003ePyCQA/bandit#1337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alanverresen\"\u003e\u003ccode\u003e@​alanverresen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1338\"\u003ePyCQA/bandit#1338\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/willschlitzer\"\u003e\u003ccode\u003e@​willschlitzer\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1346\"\u003ePyCQA/bandit#1346\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dibussoc\"\u003e\u003ccode\u003e@​dibussoc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1348\"\u003ePyCQA/bandit#1348\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.2...1.9.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eArgparse Python 3.14 enhancements by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1331\"\u003ePyCQA/bandit#1331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCheck whether Constant value is str by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1333\"\u003ePyCQA/bandit#1333\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.1...1.9.2\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.1...1.9.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.9.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMore Python version related fixes by \u003ca href=\"https://github.com/ericwb\"\u003e\u003ccode\u003e@​ericwb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1327\"\u003ePyCQA/bandit#1327\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/PyCQA/bandit/commit/92ae8b82fb422a639f0ed8d99e96cea769594e08\"\u003e\u003ccode\u003e92ae8b8\u003c/code\u003e\u003c/a\u003e Fix B106 reporting wrong line number on multiline function calls (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1360\"\u003e#1360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c8c8a55c3307333b8eb46cb2ef46d49b1fad6546\"\u003e\u003ccode\u003ec8c8a55\u003c/code\u003e\u003c/a\u003e Lower version guard in check_ast_node to Python 3.12 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1355\"\u003e#1355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/8f2f9284fca830ca017b2e2cc3ddc2a7b74b7040\"\u003e\u003ccode\u003e8f2f928\u003c/code\u003e\u003c/a\u003e Fix B615 false positive when revision is set via variable (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1358\"\u003e#1358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e27493f71c114e0e5dfc0a475d225d7f9f4a7e2b\"\u003e\u003ccode\u003ee27493f\u003c/code\u003e\u003c/a\u003e Include filename in nosec 'no failed test' warning (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1363\"\u003e#1363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/b69b336450301d424e5ba04c9a58e8d41b7169b6\"\u003e\u003ccode\u003eb69b336\u003c/code\u003e\u003c/a\u003e Fix B613 crash when reading from stdin (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1361\"\u003e#1361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e418b798abcc3f2b00c07fd6315da8fe9aeead00\"\u003e\u003ccode\u003ee418b79\u003c/code\u003e\u003c/a\u003e Bump docker/build-push-action from 6.18.0 to 6.19.2 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1357\"\u003e#1357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/ff646fd7e0e34fb350196fc58448fad17178c27a\"\u003e\u003ccode\u003eff646fd\u003c/code\u003e\u003c/a\u003e Bump docker/login-action from 3.6.0 to 3.7.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1353\"\u003e#1353\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c0def6c7ebab60f98c28ba759d488f4fbe6dae89\"\u003e\u003ccode\u003ec0def6c\u003c/code\u003e\u003c/a\u003e chore: fixed some typos in comments (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1351\"\u003e#1351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/765f00d3f202f83f61d03f882f80a2d5142d81f8\"\u003e\u003ccode\u003e765f00d\u003c/code\u003e\u003c/a\u003e Limit B614 to torch.load deserializers (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1348\"\u003e#1348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/06fbbab0df3374ffa8ef24c6f601b2d5e1d4d429\"\u003e\u003ccode\u003e06fbbab\u003c/code\u003e\u003c/a\u003e Bump docker/setup-buildx-action from 3.11.1 to 3.12.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1347\"\u003e#1347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.8.6...1.9.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pip-audit` from 2.9.0 to 2.10.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/pip-audit/releases\"\u003epip-audit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.10.1\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a \u003ccode\u003eKeyError\u003c/code\u003e crash when an OSV vulnerability record contains an\n\u003ccode\u003eaffected\u003c/code\u003e entry that omits the optional \u003ccode\u003eranges\u003c/code\u003e field\n(\u003ca href=\"https://redirect.github.com/pypa/pip-audit/pull/1046\"\u003e#1046\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.10.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003epip-audit\u003c/code\u003e now supports the \u003ccode\u003e--osv-url URL\u003c/code\u003e flag, which can be used to\nretrieve vulnerabilities from a custom OSV service. This is useful for\norganizations that host their own mirror of the OSV database, or that\nhave custom OSV records\n(\u003ca href=\"https://redirect.github.com/pypa/pip-audit/pull/810\"\u003e#810\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003epip-audit\u003c/code\u003e now supports the Ecosyste.ms vulnerability service with\n\u003ccode\u003e--vulnerability-service=esms\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/pypa/pip-audit/pull/903\"\u003e#903\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe minimum version of Python is now 3.10\n(\u003ca href=\"https://redirect.github.com/pypa/pip-audit/pull/905\"\u003e#905\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed a bug where \u003ccode\u003epip-audit\u003c/code\u003e would fail to parse \u003ccode\u003epyproject.toml\u003c/code\u003e files\ncontaining TOML 1.0.0 features\n(\u003ca href=\"https://redirect.github.com/pypa/pip-audit/pull/910\"\u003e#910\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCycloneDX JSON/XML output now correctly links vulnerabilities to their\naffected components via the \u003ccode\u003eaffects\u003c/code\u003e field\n(\u003ca href=\"https://redirect.github.com/pypa/pip-audit/issues/980\"\u003e#980\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\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/pip-audit/blob/main/CHANGELOG.md\"\u003epip-audit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[2.10.1]\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a \u003ccode\u003eKeyError\u003c/code\u003e crash when an OSV vulnerability record contains an\n\u003ccode\u003eaffected\u003c/code\u003e entry that omits the optional \u003ccode\u003eranges\u003c/code\u003e field\n(\u003ca href=\"https://redirect.github.com/pypa/pip-audit/pull/1046\"\u003e#1046\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[2.10.0]\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003epip-audit\u003c/code\u003e now supports the \u003ccode\u003e--osv-url URL\u003c/code\u003e flag, which can be used to\nretrieve vulnerabilities from a custom OSV service. This is useful for\norganizations that host their own mirror of the OSV database, or that\nhave custom OSV records\n(\u003ca href=\"https://redirect.github.com/pypa/pip-audit/pull/810\"\u003e#810\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003epip-audit\u003c/code\u003e now supports the Ecosyste.ms vulnerability service with\n\u003ccode\u003e--vulnerability-service=esms\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/pypa/pip-audit/pull/903\"\u003e#903\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe minimum version of Python is now 3.10\n(\u003ca href=\"https://redirect.github.com/pypa/pip-audit/pull/905\"\u003e#905\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed a bug where \u003ccode\u003epip-audit\u003c/code\u003e would fail to parse \u003ccode\u003epyproject.toml\u003c/code\u003e files\ncontaining TOML 1.0.0 features\n(\u003ca href=\"https://redirect.github.com/pypa/pip-audit/pull/910\"\u003e#910\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eCycloneDX JSON/XML output now correctly links vulnerabilities to their\naffected components via the \u003ccode\u003eaffects\u003c/code\u003e field\n(\u003ca href=\"https://redirect.github.com/pypa/pip-audit/issues/980\"\u003e#980\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip-audit/commit/8894eb8cee033531a1fbd9f2fb160892531c14e3\"\u003e\u003ccode\u003e8894eb8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pypa/pip-audit/issues/1056\"\u003e#1056\u003c/a\u003e from pypa/copilot/release-2101\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip-audit/commit/1c625b7f4fd5790e6a05723b2ad9e670629a061d\"\u003e\u003ccode\u003e1c625b7\u003c/code\u003e\u003c/a\u003e Update version in README.md to 2.10.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip-audit/commit/fd2094bb7b58438176d65722d77c021750a16f84\"\u003e\u003ccode\u003efd2094b\u003c/code\u003e\u003c/a\u003e Prep 2.10.1 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip-audit/commit/58d24880a0053c9ec3ce7e3c35aef6d51d600921\"\u003e\u003ccode\u003e58d2488\u003c/code\u003e\u003c/a\u003e build(deps): bump github/codeql-action from 4.35.2 to 4.36.1 (\u003ca href=\"https://redirect.github.com/pypa/pip-audit/issues/1052\"\u003e#1052\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip-audit/commit/8df942058831baec6258f712d42a0bcb03729134\"\u003e\u003ccode\u003e8df9420\u003c/code\u003e\u003c/a\u003e build(deps): bump zizmorcore/zizmor-action from 0.5.3 to 0.5.6 (\u003ca href=\"https://redirect.github.com/pypa/pip-audit/issues/1044\"\u003e#1044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip-audit/commit/3f618d3cde900cd89545d6a3fa4d41612f3b83df\"\u003e\u003ccode\u003e3f618d3\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/checkout from 6.0.2 to 6.0.3 (\u003ca href=\"https://redirect.github.com/pypa/pip-audit/issues/1053\"\u003e#1053\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip-audit/commit/4849132c9ec7a2b0b160ec4276408659d0cdcede\"\u003e\u003ccode\u003e4849132\u003c/code\u003e\u003c/a\u003e Restrict OIDC token to publish job (\u003ca href=\"https://redirect.github.com/pypa/pip-audit/issues/1050\"\u003e#1050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip-audit/commit/c1eb69a71306be7a3ffbbf2bdb59a4cb4eeaa414\"\u003e\u003ccode\u003ec1eb69a\u003c/code\u003e\u003c/a\u003e Fix KeyError when OSV affected entry omits optional \u003ccode\u003eranges\u003c/code\u003e field (\u003ca href=\"https://redirect.github.com/pypa/pip-audit/issues/1046\"\u003e#1046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip-audit/commit/68de07fb9637027f61df7df2620da93f9deb11ec\"\u003e\u003ccode\u003e68de07f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pypa/pip-audit/issues/1054\"\u003e#1054\u003c/a\u003e from pypa/fix/1047\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/pip-audit/commit/ef31c9ea7ae844d6f9c1f85efceb9d4a2533ef5a\"\u003e\u003ccode\u003eef31c9e\u003c/code\u003e\u003c/a\u003e Formatting fixes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/pip-audit/compare/v2.9.0...v2.10.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyinstaller` from 6.21.0 to 6.22.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyinstaller/pyinstaller/releases\"\u003epyinstaller's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev6.22.2\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://pyinstaller.org/en/v6.22.2/CHANGES.html#id1\"\u003ev6.22.2 section of the changelog\u003c/a\u003e for a list of the changes since v6.22.1.\u003c/p\u003e\n\u003ch2\u003ev6.22.1\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://pyinstaller.org/en/v6.22.1/CHANGES.html#id1\"\u003ev6.22.1 section of the changelog\u003c/a\u003e for a list of the changes since v6.22.0.\u003c/p\u003e\n\u003ch2\u003ev6.22.0\u003c/h2\u003e\n\u003cp\u003ePlease see the \u003ca href=\"https://pyinstaller.org/en/v6.22.0/CHANGES.html#id1\"\u003ev6.22.0 section of the changelog\u003c/a\u003e for a list of the changes since v6.21.0.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyinstaller/pyinstaller/blob/develop/doc/CHANGES.rst\"\u003epyinstaller's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.22.2 (2026-08-17)\u003c/h2\u003e\n\u003cp\u003eBugfix\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* (Windows) Fix spurious security validation error when a ``onefile``\n  executable is launched from a symlinked directory or a junction.\n  (:issue:`9508`)\n\u003ch2\u003e6.22.1 (2026-08-15)\u003c/h2\u003e\n\u003cp\u003eBugfix\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix invalid spec file generation when :option:\u003ccode\u003e--hide-console\u003c/code\u003e option is\ngiven (regression introduced in v6.22.0). (:issue:\u003ccode\u003e9503\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e(NetBSD) Fix binary dependency analysis. (:issue:\u003ccode\u003e9505\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e(NetBSD) Fix/improve NetBSD support: add the \u003ccode\u003eis_netbsd\u003c/code\u003e platform\nflag, treat NetBSD as a Unix platform, and search \u003ccode\u003e/usr/local/lib\u003c/code\u003e for\nshared libraries, as is already done for FreeBSD and OpenBSD. (:issue:\u003ccode\u003e9496\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e(OpenBSD) Fix binary dependency analysis. (:issue:\u003ccode\u003e9505\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eIncompatible Changes\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* (POSIX) Executables built in ``onedir`` mode with ``setuid`` bit set\n  now validate the owner and permissions on their contents directory\n  (typically the ``_internal`` directory); the owner ID must match the\n  effective user ID under which the process is running, and the\n  permissions on the directory need to be `0700`. This aims to prevent\n  unprivileged users from modifying contents of an application that\n  runs in privileged mode. (:issue:`9492`)\n* (POSIX) When running as a ``onefile`` child process (on POSIX platforms\n  other than OpenBSD and AIX), the bootloader now attempts to verify\n  the parent process executable via ``procfs`` lookup. This check is\n  mandatory for ``onefile`` executables with ``setuid`` bit set; if the\n  relevant ``procfs`` entry is inaccessible (for example, due to ``procfs``\n  not being mounted, as is the case on FreeBSD by default, or due to access\n  being blocked by local security policy), the process will exit with\n  security validation error message. For regular ``onefile`` executables\n  (without ``setuid`` bit set), the parent-process check is enforced when the\n  relevant ``procfs`` entry is accessible, and skipped when it happens to be\n  inaccessible. (:issue:`9492`)\n* (POSIX) When running as a ``onefile`` child process and the executable\n  has ``setuid`` bit set, the bootloader now validates the owner and\n  permissions on the (inherited) temporary directory. The owner ID of the\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/pyinstaller/pyinstaller/commit/19f42e7f13d56cd880a4ced8bb3594875e5227c6\"\u003e\u003ccode\u003e19f42e7\u003c/code\u003e\u003c/a\u003e Release v6.22.2. [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyinstaller/pyinstaller/commit/72bbdb4bbe82f6b63bc5a21b4444c65c1e1a3220\"\u003e\u003ccode\u003e72bbdb4\u003c/code\u003e\u003c/a\u003e bootloader: Windows: use QueryFullProcessImageNameW for executable resolution\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyinstaller/pyinstaller/commit/0d6941c42760b0286dcf5405cc65f7e82568bea2\"\u003e\u003ccode\u003e0d6941c\u003c/code\u003e\u003c/a\u003e tests: add test to ensure security validation works with symlinked executables\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyinstaller/pyinstaller/commit/6e0036849ebe90b5b42d4168d5508138d70e378e\"\u003e\u003ccode\u003e6e00368\u003c/code\u003e\u003c/a\u003e Tests: Requirements: Scheduled weekly dependency update for week 33 (\u003ca href=\"https://redirect.github.com/pyinstaller/pyinstaller/issues/9506\"\u003e#9506\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyinstaller/pyinstaller/commit/22ea0f20c67c1337aa21b5ba383867cf2d9dcd6d\"\u003e\u003ccode\u003e22ea0f2\u003c/code\u003e\u003c/a\u003e Release v6.22.1. [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyinstaller/pyinstaller/commit/e709c0496cbfe150ebbc56ac7dec09d29d80d8eb\"\u003e\u003ccode\u003ee709c04\u003c/code\u003e\u003c/a\u003e bootloader: relax parent-process validation requirements on POSIX platforms\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyinstaller/pyinstaller/commit/e0388d3c74fb7ec852718be41f0fef14bd25523c\"\u003e\u003ccode\u003ee0388d3\u003c/code\u003e\u003c/a\u003e bootloader: relax parent-process validation requirements on FreeBSD\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyinstaller/pyinstaller/commit/92afdf8c1a6a1f9f945733482328c9800eccd237\"\u003e\u003ccode\u003e92afdf8\u003c/code\u003e\u003c/a\u003e tests: test_application_home_directory_hijack: handle 8.3 short paths\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyinstaller/pyinstaller/commit/4b509a28c8cefe173b1d75f35d9e9b1c2259732d\"\u003e\u003ccode\u003e4b509a2\u003c/code\u003e\u003c/a\u003e tests: improve logging in test_application_home_directory_hijack\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyinstaller/pyinstaller/commit/66b0249e1f2cbe9628f66d0a74dafbd1dab54138\"\u003e\u003ccode\u003e66b0249\u003c/code\u003e\u003c/a\u003e doc: document the new security validation and its implications\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pyinstaller/pyinstaller/compare/v6.21.0...v6.22.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest` from 8.4.2 to 9.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest/releases\"\u003epytest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.1.1\u003c/h2\u003e\n\u003ch1\u003epytest 9.1.1 (2026-06-19)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14220\"\u003e#14220\u003c/a\u003e: Fixed a logic bug in \u003ccode\u003epytest.RaisesGroup\u003c/code\u003e which would might cause it to display incorrect \u0026quot;It matches \u003c!-- raw HTML omitted --\u003eFooError()\u003c!-- raw HTML omitted --\u003e which was paired with \u003c!-- raw HTML omitted --\u003eBarError\u003c!-- raw HTML omitted --\u003e\u0026quot; messages.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14591\"\u003e#14591\u003c/a\u003e: Fixed a regression in pytest 9.1.0 which caused overriding a parametrized fixture with an indirect \u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pytest\"\u003e\u003ccode\u003e@​pytest\u003c/code\u003e\u003c/a\u003e.mark.parametrize\u003c!-- raw HTML omitted --\u003e to fail with \u0026quot;duplicate parametrization of '\u0026lt;fixture name\u0026gt;'\u0026quot;.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14606\"\u003e#14606\u003c/a\u003e: Fixed \u003ccode\u003elist-item\u003c/code\u003e typing errors from mypy in \u003ccode\u003e@pytest.mark.parametrize \u0026lt;pytest.mark.parametrize ref\u0026gt;\u003c/code\u003e \u003ccode\u003eargvalues\u003c/code\u003e parameter.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14608\"\u003e#14608\u003c/a\u003e: Fixed a regression in pytest 9.1.0 where \u003ccode\u003econftest.py\u003c/code\u003e files located in \u003ccode\u003e\u0026lt;invocation dir\u0026gt;/test*\u003c/code\u003e were no longer loaded as initial conftests when invoked without arguments.\nThis could cause certain hooks (like \u003ccode\u003epytest_addoption\u003c/code\u003e) in these files to not fire.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e9.1.0\u003c/h2\u003e\n\u003ch1\u003epytest 9.1.0 (2026-06-13)\u003c/h1\u003e\n\u003ch2\u003eRemovals and backward incompatible breaking changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14533\"\u003e#14533\u003c/a\u003e: When using \u003ccode\u003e--doctest-modules\u003c/code\u003e, autouse fixtures with \u003ccode\u003emodule\u003c/code\u003e, \u003ccode\u003epackage\u003c/code\u003e or \u003ccode\u003esession\u003c/code\u003e scope that are defined inline in Python test modules (not plugins or conftests) will now possibly execute twice.\u003c/p\u003e\n\u003cp\u003eIf this is undesirable, move the fixture definition to a \u003ccode\u003econftest.py\u003c/code\u003e file if possible.\u003c/p\u003e\n\u003cp\u003eTechnical explanation for those interested:\nWhen using \u003c!-- raw HTML omitted --\u003e--doctest-modules\u003c!-- raw HTML omitted --\u003e, pytest possibly collects Python modules twice, once as \u003ccode\u003epytest.Module\u003c/code\u003e and once as a \u003ccode\u003eDoctestModule\u003c/code\u003e (depending on the configuration).\nDue to improvements in pytest's fixture implementation, if e.g. the \u003ccode\u003eDoctestModule\u003c/code\u003e collects a fixture, it is now visible to it only, and not to the \u003ccode\u003eModule\u003c/code\u003e.\nThis means that both need to register the fixtures independently.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDeprecations (removal in next major release)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/10819\"\u003e#10819\u003c/a\u003e: Added a deprecation warning for class-scoped fixtures defined as instance methods (without \u003ccode\u003e@classmethod\u003c/code\u003e). Such fixtures set attributes on a different instance than the test methods use, leading to unexpected behavior. Use \u003ccode\u003e@classmethod\u003c/code\u003e decorator instead -- by \u003ccode\u003eyastcher\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eSee \u003ccode\u003e10819\u003c/code\u003e and \u003ccode\u003e14011\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12882\"\u003e#12882\u003c/a\u003e: Calling \u003ccode\u003erequest.getfixturevalue() \u0026lt;pytest.FixtureRequest.getfixturevalue\u0026gt;\u003c/code\u003e during teardown to request a fixture that was not already requested is now deprecated and will become an error in pytest 10.\u003c/p\u003e\n\u003cp\u003eSee \u003ccode\u003edynamic-fixture-request-during-teardown\u003c/code\u003e for details.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13409\"\u003e#13409\u003c/a\u003e: Using non-\u003ccode\u003e~collections.abc.Collection\u003c/code\u003e iterables (such as generators, iterators, or custom iterable objects) for the \u003ccode\u003eargvalues\u003c/code\u003e parameter in \u003ccode\u003e@pytest.mark.parametrize \u0026lt;pytest.mark.parametrize ref\u0026gt;\u003c/code\u003e and \u003ccode\u003emetafunc.parametrize \u0026lt;pytest.Metafunc.parametrize\u0026gt;\u003c/code\u003e is now deprecated.\u003c/p\u003e\n\u003cp\u003eThese iterables get exhausted after the first iteration,\nleading to tests getting unexpectedly skipped in cases such as running \u003ccode\u003epytest.main()\u003c/code\u003e multiple times,\nusing class-level parametrize decorators,\nor collecting tests multiple times.\u003c/p\u003e\n\u003cp\u003eSee \u003ccode\u003eparametrize-iterators\u003c/code\u003e for details and suggestions.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13946\"\u003e#13946\u003c/a\u003e: The private \u003ccode\u003econfig.inicfg\u003c/code\u003e attribute is now deprecated.\nUse \u003ccode\u003econfig.getini() \u0026lt;pytest.Config.getini\u0026gt;\u003c/code\u003e to access configuration values instead.\u003c/p\u003e\n\u003cp\u003eSee \u003ccode\u003econfig-inicfg\u003c/code\u003e for more details.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14004\"\u003e#14004\u003c/a\u003e: Passing \u003ccode\u003ebaseid\u003c/code\u003e to \u003ccode\u003e~pytest.FixtureDef\u003c/code\u003e or \u003ccode\u003enodeid\u003c/code\u003e strings to fixture registration APIs is now deprecated. These are internal pytest APIs that are used by some plugins.\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/pytest-dev/pytest/commit/cf470ec0bf7eb89cd97dd56df4859eae5db46447\"\u003e\u003ccode\u003ecf470ec\u003c/code\u003e\u003c/a\u003e Prepare release version 9.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/e0c8ce6cc5db1f08363be6f152c32e6838df2690\"\u003e\u003ccode\u003ee0c8ce6\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14625\"\u003e#14625\u003c/a\u003e from pytest-dev/patchback/backports/9.1.x/a07c31a97...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/1b82d1694fce22385ee7a4287917fbafbaf2e757\"\u003e\u003ccode\u003e1b82d16\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14624\"\u003e#14624\u003c/a\u003e from pytest-dev/patchback/backports/9.1.x/b375b79ec...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/501c4bc784da3b08bfcaa64858eba5d15dc59e53\"\u003e\u003ccode\u003e501c4bc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14596\"\u003e#14596\u003c/a\u003e from bluetech/doc-classmethod\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/b61f588e36e9377c3d1d3f06bece1da0fc31d9ca\"\u003e\u003ccode\u003eb61f588\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14622\"\u003e#14622\u003c/a\u003e from chrisburr/fix-14608-initial-conftest-test-subdir\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/9a567e009f4d2da3ce1721c6db3109cb5744d40a\"\u003e\u003ccode\u003e9a567e0\u003c/code\u003e\u003c/a\u003e [automated] Update plugin list (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14617\"\u003e#14617\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14618\"\u003e#14618\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/ef8b2993e5b48639e4a3d97d0525df9760781384\"\u003e\u003ccode\u003eef8b299\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14620\"\u003e#14620\u003c/a\u003e from pytest-dev/patchback/backports/9.1.x/680f9f3ed...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/66abd0784d4cb7c1ba44ab9a8896506cd4985acc\"\u003e\u003ccode\u003e66abd07\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14220\"\u003e#14220\u003c/a\u003e from bysiber/fix-stale-iexp-raisesgroup\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/79fbf93b666cac5f27c9dad047943d47b766c8d5\"\u003e\u003ccode\u003e79fbf93\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14612\"\u003e#14612\u003c/a\u003e from pytest-dev/patchback/backports/9.1.x/974ed48b6...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/0d312eb876177e9f1c04262b54060a41034ebf5c\"\u003e\u003ccode\u003e0d312eb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14611\"\u003e#14611\u003c/a\u003e from bluetech/parametrize-argvalues-typing\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest/compare/8.4.2...9.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.12.12 to 0.16.5\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.16.5\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-27.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow rules without codes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28049\"\u003e#28049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIntroduce category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27666\"\u003e#27666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate preview default rules and categories (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27877\"\u003e#27877\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Detect blocking generic HTTP requests (\u003ccode\u003eASYNC210\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28024\"\u003e#28024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-datetimez\u003c/code\u003e] Allow timezone-safe \u003ccode\u003estrptime\u003c/code\u003e chains (\u003ccode\u003eDTZ007\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28023\"\u003e#28023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Respect side effects in \u003ccode\u003elambda\u003c/code\u003e defaults (\u003ccode\u003eSIM401\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28000\"\u003e#28000\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix duplicated \u0026quot;of\u0026quot; in \u003ccode\u003eClientOptions\u003c/code\u003e doc comment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27978\"\u003e#27978\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument rule acceptance guidelines (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27910\"\u003e#27910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument the new category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27906\"\u003e#27906\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/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sharkdp\"\u003e\u003ccode\u003e@​sharkdp\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelle-openai\"\u003e\u003ccode\u003e@​jelle-openai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aarushkandukoori\"\u003e\u003ccode\u003e@​aarushkandukoori\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.16.5\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.16.5/ruff-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eInstall prebuilt binaries via powershell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003epowershell -ExecutionPolicy Bypass -c \u0026quot;irm https://releases.astral.sh/github/ruff/releases/download/0.16.5/ruff-installer.ps1 | iex\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eDownload ruff 0.16.5\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/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.16.5\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-27.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow rules without codes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28049\"\u003e#28049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIntroduce category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27666\"\u003e#27666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate preview default rules and categories (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27877\"\u003e#27877\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Detect blocking generic HTTP requests (\u003ccode\u003eASYNC210\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28024\"\u003e#28024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-datetimez\u003c/code\u003e] Allow timezone-safe \u003ccode\u003estrptime\u003c/code\u003e chains (\u003ccode\u003eDTZ007\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28023\"\u003e#28023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Respect side effects in \u003ccode\u003elambda\u003c/code\u003e defaults (\u003ccode\u003eSIM401\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28000\"\u003e#28000\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix duplicated \u0026quot;of\u0026quot; in \u003ccode\u003eClientOptions\u003c/code\u003e doc comment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27978\"\u003e#27978\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument rule acceptance guidelines (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27910\"\u003e#27910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument the new category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27906\"\u003e#27906\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/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sharkdp\"\u003e\u003ccode\u003e@​sharkdp\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelle-openai\"\u003e\u003ccode\u003e@​jelle-openai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aarushkandukoori\"\u003e\u003ccode\u003e@​aarushkandukoori\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.16.4\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-20.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-use-pathlib\u003c/code\u003e] Add autofix for \u003ccode\u003ePTH116\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26460\"\u003e#26460\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Restrict \u003ccode\u003edelete-full-slice\u003c/code\u003e to lists (\u003ccode\u003eFURB131\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27711\"\u003e#27711\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Skip \u003ccode\u003eFURB101\u003c/code\u003e and \u003ccode\u003eFURB103\u003c/code\u003e when the \u003ccode\u003eopen\u003c/code\u003e argument is a file descriptor (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27643\"\u003e#27643\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eInvalidInstruction\u003c/code\u003e on Windows CPUs that do not support \u003ccode\u003ePOPCNT\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27803\"\u003e#27803\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Emit semantic syntax errors in string type definitions as \u003ccode\u003eF722\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27835\"\u003e#27835\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Allow \u003ccode\u003eos._exit\u003c/code\u003e imports in \u003ccode\u003eimport-private-name\u003c/code\u003e (\u003ccode\u003ePLC2701\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27738\"\u003e#27738\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/9e4938c4a60bed3e87a11ee1e1db1bd23f4d964a\"\u003e\u003ccode\u003e9e4938c\u003c/code\u003e\u003c/a\u003e Bump 0.16.5 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28110\"\u003e#28110\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/aad0e909ef1390f4b2a3ba8aa0a67fb8ea5cbacd\"\u003e\u003ccode\u003eaad0e90\u003c/code\u003e\u003c/a\u003e Allow rules without codes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28049\"\u003e#28049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5fdab73c5052350400c36b08c5d7710210343bc4\"\u003e\u003ccode\u003e5fdab73\u003c/code\u003e\u003c/a\u003e Update preview default rules and categories (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27877\"\u003e#27877\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/29c8e5b2d0a46eb7dc4ff11c1b0a0dc5ccea52e4\"\u003e\u003ccode\u003e29c8e5b\u003c/code\u003e\u003c/a\u003e Document rule acceptance guidelines (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27910\"\u003e#27910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/50a4d7fd106603a5616b01ac3bef3306252b248f\"\u003e\u003ccode\u003e50a4d7f\u003c/code\u003e\u003c/a\u003e Document the new category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27906\"\u003e#27906\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ada87950ea188f882f69b7bd6e2213a9696e3ee2\"\u003e\u003ccode\u003eada8795\u003c/code\u003e\u003c/a\u003e Introduce category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27666\"\u003e#27666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d8947238863b61922bfc83f07edcc697c1cc07c0\"\u003e\u003ccode\u003ed894723\u003c/code\u003e\u003c/a\u003e [ty] Infer lambda parameters through callable type aliases (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28109\"\u003e#28109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/2685fdebbcf9938736fed8c45886a629f9c99a06\"\u003e\u003ccode\u003e2685fde\u003c/code\u003e\u003c/a\u003e [ty] Narrow functional enum members in \u003ccode\u003e==\u003c/code\u003e and \u003ccode\u003ematch\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28103\"\u003e#28103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/efcffd2178ce62e9951a53d4c50cadc225a0cfec\"\u003e\u003ccode\u003eefcffd2\u003c/code\u003e\u003c/a\u003e [ty] Intersection simplifications with subtype-related generic specialization...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/eb780488037504e11f145ed778654fd8a825028b\"\u003e\u003ccode\u003eeb78048\u003c/code\u003e\u003c/a\u003e [ty] Bump ecosystem-analyzer for HTML escaping (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28104\"\u003e#28104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.12.12...0.16.5\"\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/sebia1993/aruba-mm-session-cleanup/pull/5","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/sebia1993%2Faruba-mm-session-cleanup/issues/5","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/5/packages"}}]}